comparison etc/NEWS @ 124:9b50b4588a93 r20-1b15

Import from CVS: tag r20-1b15
author cvs
date Mon, 13 Aug 2007 09:26:39 +0200
parents 9f59509498e1
children 1370575f1259
comparison
equal deleted inserted replaced
123:c77884c6318d 124:9b50b4588a93
82 C-c C-l make body under heading and under its subheadings invisible. 82 C-c C-l make body under heading and under its subheadings invisible.
83 The subheadings remain visible. 83 The subheadings remain visible.
84 C-c C-k make all subheadings at all levels visible.x1 84 C-c C-k make all subheadings at all levels visible.x1
85 85
86 86
87 * The History of XEmacs
88 =======================
89
90 This product is an extension of GNU Emacs, previously known to some as
91 "Lucid Emacs" or "ERA". It was initially based on an early version of Emacs
92 Version 19 from the Free Software Foundation and has since been kept
93 up-to-date with recent versions of that product. It stems from a
94 collaboration of Lucid, Inc. with SunSoft DevPro (a division of Sun
95 Microsystems, Inc.; formerly called SunPro) and the University of Illinois.
96
97 NOTE: Lucid, Inc. is currently out of business but development on XEmacs
98 continues strong. Recently, Amdahl Corporation and INS Engineering have
99 both contributed significantly to the development of XEmacs.
100
101
102 * What's Different?
103 ===================
104
105
106 ** Differences between XEmacs and GNU Emacs 19
107 ==================================================
108 In XEmacs 20, characters are first-class objects. Characters can be
109 converted to integers, but are not integers. FSF 19, XEmacs 19, and Mule
110 represent them as integers.
111
112 In XEmacs, events are first-class objects. FSF 19 represents them as
113 integers, which obscures the differences between a key gesture and the
114 ancient ASCII code used to represent a particular overlapping subset of them.
115
116 In XEmacs, keymaps are first-class opaque objects. FSF 19 represents them as
117 complicated combinations of association lists and vectors. If you use the
118 advertised functional interface to manipulation of keymaps, the same code
119 will work in XEmacs, Emacs 18, and GNU Emacs 19; if your code depends
120 on the underlying implementation of keymaps, it will not.
121
122 XEmacs uses "extents" to represent all non-textual aspects of buffers;
123 FSF 19 uses two distinct objects, "text properties" and "overlays",
124 which divide up the functionality between them. Extents are a
125 superset of the functionality of the two FSF data types. The full FSF
126 19 interface to text properties is supported in XEmacs (with extents
127 being the underlying representation).
128
129 Extents can be made to be copied into strings, and thus restored by kill
130 and yank. Thus, one can specify this behavior on either "extents" or
131 "text properties", whereas in FSF 19 text properties always have this
132 behavior and overlays never do.
133
134 Many more packages are provided standard with XEmacs than with FSF 19.
135
136 Pixmaps of arbitrary size can be embedded in a buffer.
137
138 Variable width fonts work.
139
140 The height of a line is the height of the tallest font on that line, instead
141 of all lines having the same height.
142
143 XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which
144 makes it be a more well-behaved X citizen (and also improves
145 portability). A result of this is that it is possible to include
146 other Xt "Widgets" in the XEmacs window. Also, XEmacs understands the
147 standard Xt command-line arguments.
148
149 XEmacs provides support for ToolTalk on systems that have it.
150
151 XEmacs can ask questions using popup dialog boxes. Any command executed from
152 a menu will ask yes/no questions with dialog boxes, while commands executed
153 via the keyboard will use the minibuffer.
154
155 XEmacs has a built-in toolbar. Four toolbars can actually be configured:
156 top, bottom, left, and right toolbars.
157
158 XEmacs has vertical and horizontal scrollbars. Unlike in FSF 19 (which
159 provides a primitive form of vertical scrollbar), these are true toolkit
160 scrollbars. A look-alike Motif scrollbar is provided for those who
161 don't have Motif. (Even for those who do, the look-alike may be preferable
162 as it is faster.)
163
164 If you're running on a machine with audio hardware, you can specify sound
165 files for XEmacs to play instead of the default X beep. See the documentation
166 of the function load-sound-file and the variable sound-alist.
167
168 An XEmacs frame can be placed within an "external client widget" managed by
169 another application. This allows an application to use an XEmacs frame as its
170 text pane rather than the standard Text widget that is provided with Motif or
171 Athena. XEmacs supports Motif applications, generic Xt (e.g. Athena)
172 applications, and raw Xlib applications.
173
174 Here are some more specifics about the XEmacs implementation:
175
176 *** The Input Model
177 -------------------
178
179 The fundamental unit of input is an "event" instead of a character. An
180 event is a new data type that contains several pieces of information.
181 There are several kinds of event, and corresponding accessor and utility
182 functions. We tried to abstract them so that they would apply equally
183 well to a number of window systems.
184
185 NOTE: All timestamps are measured as milliseconds since Emacs started.
186
187 key_press_event
188 event_channel A token representing which keyboard generated it.
189 For this kind of event, this is a console object.
190 timestamp When it happened
191 key What keysym this is; a character or a symbol.
192 If it is a character, it will be a printing
193 ASCII character.
194 modifiers Bucky-bits on that key: control, meta, etc.
195 For most keys, Shift is not a bit; that is implicit
196 in the keyboard layout.
197
198 button_press_event
199 button_release_event
200 event_channel A token representing which mouse generated it.
201 For this kind of event, this is a frame object.
202 timestamp When it happened
203 button What button went down or up.
204 modifiers Bucky-bits on that button: shift, control, meta, etc.
205 x, y Where it was at the button-state-change (in pixels).
206
207 pointer_motion_event
208 event_channel A token representing which mouse generated it.
209 For this kind of event, this is a frame object.
210 timestamp When it happened
211 x, y Where it was after it moved (in pixels).
212 modifiers Bucky-bits down when the motion was detected.
213 (Possibly not all window systems will provide this?)
214
215 process_event
216 timestamp When it happened
217 process the emacs "process" object in question
218
219 timeout_event
220 timestamp Now (really, when the timeout was signaled)
221 interval_id The ID returned when the associated call to
222 add_timeout_cb() was made
223 ------ the rest of the fields are filled in by Emacs -----
224 id_number The Emacs timeout ID for this timeout (more
225 than one timeout event can have the same value
226 here, since Emacs timeouts, as opposed to
227 add_timeout_cb() timeouts, can resignal
228 themselves)
229 function An elisp function to call when this timeout is
230 processed.
231 object The object passed to that function.
232
233 eval_event
234 timestamp When it happened
235 function An elisp function to call with this event object.
236 object Anything.
237 This kind of event is used internally; sometimes the
238 window system interface would like to inform emacs of
239 some user action (such as focusing on another frame)
240 but needs that to happen synchronously with the other
241 user input, like keypresses. This is useful when
242 events are reported through callbacks rather
243 than in the standard event stream.
244
245 misc_user_event
246 timestamp When it happened
247 function An elisp function to call with this event object.
248 object Anything.
249 This is similar to an eval_event, except that it is
250 generated by user actions: selections in the
251 menubar or scrollbar actions. It is a "command"
252 event, like key and mouse presses (and unlike mouse
253 motion, process output, and enter and leave window
254 hooks). In many ways, eval_events are not the same
255 as keypresses or misc_user_events.
256
257 magic_event
258 No user-serviceable parts within. This is for things
259 like KeymapNotify and ExposeRegion events and so on
260 that emacs itself doesn't care about, but which it
261 must do something with for proper interaction with
262 the window system.
263
264 Magic_events are handled somewhat asynchronously, just
265 like subprocess filters. However, occasionally a
266 magic_event needs to be handled synchronously; in that
267 case, the asynchronous handling of the magic_event will
268 push an eval_event back onto the queue, which will be
269 handled synchronously later. This is one of the
270 reasons why eval_events exist; I'm not entirely happy
271 with this aspect of this event model.
272
273
274 The function `next-event' blocks and returns one of the above-described
275 event objects. The function `dispatch-event' takes an event and processes
276 it in the appropriate way.
277
278 For a process-event, dispatch-event calls the process's handler; for a
279 mouse-motion event, the mouse-motion-handler hook is called, and so on.
280 For magic-events, dispatch-event does window-system-dependent things,
281 including calling some non-window-system-dependent hooks: map-frame-hook,
282 unmap-frame-hook, mouse-enter-frame-hook, and mouse-leave-frame-hook.
283
284 The function `next-command-event' calls `next-event' until it gets a key or
285 button from the user (that is, not a process, motion, timeout, or magic
286 event). If it gets an event that is not a key or button, it calls
287 `dispatch-event' on it immediately and reads another one. The
288 next-command-event function could be implemented in Emacs Lisp, though it
289 isn't. Generally one should call `next-command-event' instead of
290 `next-event'.
291
292 read-char calls next-command-event; if it doesn't get an event that can be
293 converted to an ASCII character, it signals an error. Otherwise it returns
294 an integer.
295
296 The variable `last-command-char' always contains an integer, or nil (if the
297 last read event has no ASCII equivalent, as when it is a mouse-click or a
298 non-ASCII character chord.)
299
300 The new variable `last-command-event' holds an event object, that could be
301 a non-ASCII character, a button click, a menu selection, etc.
302
303 The variable `unread-command-char' no longer exists, and has been replaced
304 by `unread-command-events'. With the new event model, it is incorrect for
305 code to do (setq unread-command-char (read-char)), because all user-input
306 can't be represented as ASCII characters. *** This is an incompatible
307 change. Code which sets `unread-command-char' must be updated to use the
308 combination of `next-command-event' and `unread-command-events' instead.
309
310 The functions `this-command-keys' and `recent-keys' return a vector of
311 event objects, instead of a string of ASCII characters. *** This also
312 is an incompatible change.
313
314 Almost nothing happens at interrupt level; the SIGIO handler simply sets a
315 flag, and later, the X event queue is scanned for KeyPress events which map
316 to ^G. All redisplay happens in the main thread of the process.
317
318
319 *** Keymaps
320 -----------
321
322 Instead of keymaps being alists or obarrays, they are a new primary data
323 type. The only user access to the contents of a keymap is through the
324 existing keymap-manipulation functions, and a new function, map-keymap.
325 This means that existing code that manipulates keymaps may need to
326 be changed.
327
328 One of our goals with the new input and keymap code was to make more
329 character combinations available for binding, besides just ASCII and
330 function keys. We want to be able bind different commands to Control-a
331 and Control-Shift-a; we also want it to be possible for the keys Control-h
332 and Backspace (and Control-M and Return, and Control-I and Tab, etc) to
333 be distinct.
334
335 One of the most common complaints that new Emacs users have is that backspace
336 is help. The answer is to play around with the keyboard-translate-table, or
337 be lucky enough to have a system administrator who has done this for you
338 already; but if it were possible to bind backspace and C-h to different
339 things, then (under a window manager at least) both backspace and delete
340 would delete a character, and ^H would be help. There's no need to deal
341 with xmodmap, kbd-translate-table, etc.
342
343 Here are some more examples: suppose you want to bind one function to Tab,
344 and another to Control-Tab. This can't be done if Tab and Control-I are the
345 same thing. What about control keys that have no ASCII equivalent, like
346 Control-< ? One might want that to be bound to set-mark-at-point-min. We
347 want M-C-Backspace to be kill-backward-sexp. But we want M-Backspace to be
348 kill-backward-word. Again, this can't be done if Backspace and C-h are
349 indistinguishable.
350
351 The user represents keys as a string of ASCII characters (when possible and
352 convenient), or as a vector of event objects, or as a vector of "key
353 description lists", that looks like (control a), or (control meta delete)
354 or (shift f1). The order of the modifier-names is not significant, so
355 (meta control x) and (control meta x) are the same.
356
357 `define-key' knows how to take any of the above representations and store them
358 into a keymap. When Emacs wants to return a key sequence (this-command-keys,
359 recent-keys, keyboard-macros, and read-key-sequence, for example) it returns
360 a vector of event objects. Keyboard macros can also be represented as ASCII
361 strings or as vectors of key description lists.
362
363 This is an incompatible change: code which calls `this-command-keys',
364 `recent-keys', `read-key-sequence', or manipulates keyboard-macros probably
365 needs to be changed so that it no longer assumes that the returned value is a
366 string.
367
368 Control-Shift-a is specified as (control A), not (control shift a), since A
369 is a two-case character. But for keys that don't have an upper case
370 version, like F1, Backspace, and Escape, you use the (shift backspace) syntax.
371
372 See the doc string for our version of define-key, reproduced below in the
373 `Changed Functions' section. Note that when the KEYS argument is a string,
374 it has the same semantics as the v18 define-key.
375
376
377 *** Xt Integration
378 ------------------
379
380 The heart of the event loop is implemented in terms of the Xt event functions
381 (specifically XtAppProcessEvent), and uses Xt's concept of timeouts and
382 file-descriptor callbacks, eliminating a large amount of system-dependent code
383 (Xt does it for you.)
384
385 If Emacs is compiled with support for X, it uses the Xt event loop even when
386 Emacs is not running on an X display (the Xt event loop supports this). This
387 makes it possible to run Emacs on a dumb TTY, and later connect it to one or
388 more X servers. It should also be possible to later connect an existing Emacs
389 process to additional TTY's, although this code is still experimental. (Our
390 intent at this point is not to have an Emacs that is being used by multiple
391 people at the same time: it is to make it possible for someone to go home, log
392 in on a dialup line, and connect to the same Emacs process that is running
393 under X in their office without having to recreate their buffer state and so
394 on.)
395
396 If Emacs is not compiled with support for X, then it instead uses more general
397 code, something like what v18 does; but this way of doing things is a lot more
398 modular.
399
400 (Linking Emacs with Xt seems to only add about 300k to the executable size,
401 compared with an Emacs linked with Xlib only.)
402
403
404 *** Region Highlighting
405 -----------------------
406
407 If the variable `zmacs-regions' is true, then the region between point and
408 mark will be highlighted when "active". Those commands which push a mark
409 (such as C-SPC, and C-x C-x) make the region become "active" and thus
410 highlighted. Most commands (all non-motion commands, basically) cause it to
411 become non-highlighted (non-"active"). Commands that operate on the region
412 (such as C-w, C-x C-l, etc.) only work if the region is in the highlighted
413 state.
414
415 zmacs-activate-region-hook and zmacs-deactivate-region-hook are run at the
416 appropriate times; under X, zmacs-activate-region-hook makes the X selection
417 be the region between point and mark, thus doing two things at once: making
418 the region and the X selection be the same; and making the region highlight
419 in the same way as the X selection.
420
421 If `zmacs-regions' is true, then the `mark-marker' command returns nil unless
422 the region is currently in the active (highlighted) state. With an argument
423 of t, this returns the mark (if there is one) regardless of the active-region
424 state. You should *generally* not use the mark unless the region is active,
425 if the user has expressed a preference for the active-region model. Watch
426 out! Moving this marker changes the mark position. If you set the marker not
427 to point anywhere, the buffer will have no mark.
428
429 In this way, the primary selection is a fairly transitory entity; but
430 when something is copied to the kill ring, it is made the Clipboard
431 selection. It is also stored into CUT_BUFFER0, for compatibility with
432 X applications that don't understand selections (like Emacs18).
433
434 Compatibility note: if you have code which uses (mark) or (mark-marker),
435 then you need to either: change those calls to (mark t) or (mark-marker t);
436 or simply bind `zmacs-regions' to nil around the call to mark or mark-marker.
437 This is probably the best solution, since it will work in Emacs 18 as well.
438
439
440 *** Menubars and Dialog Boxes
441 -----------------------------
442
443 Here is an example of a menubar definition:
444
445 (defvar default-menubar
446 '(("File" ["Open File..." find-file t]
447 ["Save Buffer" save-buffer t]
448 ["Save Buffer As..." write-file t]
449 ["Revert Buffer" revert-buffer t]
450 "-----"
451 ["Print Buffer" lpr-buffer t]
452 "-----"
453 ["Delete Frame" delete-frame t]
454 ["Kill Buffer..." kill-buffer t]
455 ["Exit Emacs" save-buffers-kill-emacs t]
456 )
457 ("Edit" ["Undo" advertised-undo t]
458 ["Cut" kill-primary-selection t]
459 ["Copy" copy-primary-selection t]
460 ["Paste" yank-clipboard-selection t]
461 ["Clear" delete-primary-selection t]
462 )
463 ...))
464
465 The first element of each menu item is the string to print on the menu.
466
467 The second element is the callback function; if it is a symbol, it is
468 invoked with `call-interactively.' If it is a list, it is invoked with
469 `eval'.
470
471 If the second element is a symbol, then the menu also displays the key that
472 is bound to that command (if any).
473
474 The third element of the menu items determines whether the item is selectable.
475 It may be t, nil, or a form to evaluate. Also, a hook is run just before a
476 menu is exposed, which can be used to change the value of these slots.
477 For example, there is a hook that makes the "undo" menu item be selectable
478 only in the cases when `advertised-undo' would not signal an error.
479
480 Menus may have other menus nested within them; they will cascade.
481
482 There are utility functions for adding items to menus, deleting items,
483 disabling them, etc.
484
485 The function `popup-menu' takes a menu description and pops it up.
486
487 The function `popup-dialog-box' takes a dialog-box description and pops
488 it up. Dialog box descriptions look a lot like menu descriptions.
489
490 The menubar, menu, and dialog-box code is implemented as a library,
491 with an interface which hides the toolkit that implements it.
492
493
494 *** Isearch Changes
495 -------------------
496
497 Isearch has been reimplemented in a different way, adding some new features,
498 and causing a few incompatible changes.
499
500 - the old isearch-*-char variables are no longer supported. In the old
501 system, one could make ^A mean "repeat the search" by doing something
502 like (setq search-repeat-char ?C-a). In the new system, this is
503 accomplished with
504
505 (define-key isearch-mode-map "\C-a" 'isearch-repeat-forward)
506
507 - The advantage of using the normal keymap mechanism for this is that you
508 can bind more than one key to an isearch command: for example, both C-a
509 and C-s could do the same thing inside isearch mode. You can also bind
510 multi-key sequences inside of isearch mode, and bind non-ASCII keys.
511 For example, to use the F1 key to terminate a search:
512
513 (define-key isearch-mode-map 'f1 'isearch-exit)
514
515 or to make ``C-c C-c'' terminate a search:
516
517 (define-key isearch-mode-map "\C-c\C-c" 'isearch-exit)
518
519 - If isearch is behaving case-insensitively (the default) and you type an
520 upper case character, then the search will become case-sensitive. This
521 can be disabled by setting `search-caps-disable-folding' to nil.
522
523 - There is a history ring of the strings previously searched for; typing
524 M-p or M-n while searching will cycle through this ring. Typing M-TAB
525 will do completion across the set of items in the history ring.
526
527 - The ESC key is no longer used to terminate an incremental search. The
528 RET key should be used instead. This change is necessary for it to be
529 possible to bind "meta" characters to isearch commands.
530
531
532 *** Startup Code Changes
533 ------------------------
534
535 The initial X frame is mapped before the user's .emacs file is executed.
536 Without this, there is no way for the user to see any error messages
537 generated by their .emacs file, any windows created by the .emacs file
538 don't show up, and the copyleft notice isn't shown.
539
540 The default values for load-path, exec-path, lock-directory, and
541 Info-directory-list are not (necessarily) built into Emacs, but are
542 computed at startup time.
543
544 First, Emacs looks at the directory in which its executable file resides:
545
546 o If that directory contains subdirectories named "lisp" and "lib-src",
547 then those directories are used as the lisp library and exec directory.
548
549 o If the parent of the directory in which the emacs executable is located
550 contains "lisp" and "lib-src" subdirectories, then those are used.
551
552 o If ../lib/xemacs-<version> (starting from the directory in which the
553 emacs executable is located) contains a "lisp" subdirectory and either
554 a "lib-src" subdirectory or a <configuration-name> subdirectory, then
555 those are used.
556
557 o If the emacs executable that was run is a symbolic link, then the link
558 is chased, and the resultant directory is checked as above.
559
560 (Actually, it doesn't just look for "lisp/", it looks for "lisp/prim/",
561 which reduces the chances of a false positive.)
562
563 If the lisp directory contains subdirectories, they are added to the default
564 load-path as well. If the site-lisp directory exists and contains
565 subdirectories, they are then added. Subdirectories whose names begin with
566 a dot or a hyphen are not added to the load-path.
567
568 These heuristics fail if the Emacs binary was copied from the main Emacs
569 tree to some other directory, and links for the lisp directory were not put
570 in. This isn't much of a restriction: either make there be subdirectories
571 (or symbolic links) of the directory of the emacs executable, or make the
572 "installed" emacs executable be a symbolic link to an executable in a more
573 appropriate directory structure. For example, this setup works:
574
575 /usr/local/xemacs/xemacs* ; The executable.
576 /usr/local/xemacs/lisp/ ; The associated directories.
577 /usr/local/xemacs/etc/ ; Any of the files in this list
578 /usr/local/xemacs/lock/ ; could be symbolic links as well.
579 /usr/local/xemacs/info/
580
581 As does this:
582
583 /usr/local/bin/xemacs -> ../xemacs/src/xemacs-19.14 ; A link...
584 /usr/local/xemacs/src/xemacs-19.14* ; The executable,
585 /usr/local/xemacs/lisp/ ; and the rest of
586 /usr/local/xemacs/etc/ ; the source tree
587 /usr/local/xemacs/lock/
588 /usr/local/xemacs/info/
589
590 This configuration might be used for a multi-architecture installation; assume
591 that $LOCAL refers to a directory which contains only files specific to a
592 particular architecture (i.e., executables) and $SHARED refers to those files
593 which are not machine specific (i.e., lisp code and documentation.)
594
595 $LOCAL/bin/xemacs@ -> $LOCAL/xemacs-19.14/xemacs*
596 $LOCAL/xemacs-19.14/lisp@ -> $SHARED/xemacs-19.14/lisp/
597 $LOCAL/xemacs-19.14/etc@ -> $SHARED/xemacs-19.14/etc/
598 $LOCAL/xemacs-19.14/info@ -> $SHARED/xemacs-19.14/info/
599
600 The following would also work, but the above is probably more attractive:
601
602 $LOCAL/bin/xemacs*
603 $LOCAL/bin/lisp@ -> $SHARED/xemacs-19.14/lisp/
604 $LOCAL/bin/etc@ -> $SHARED/xemacs-19.14/etc/
605 $LOCAL/bin/info@ -> $SHARED/xemacs-19.14/info/
606
607 If Emacs can't find the requisite directories, it writes a message like this
608 (or some appropriate subset of it) to stderr:
609
610 WARNING:
611 couldn't find an obvious default for load-path, exec-directory, and
612 lock-directory, and there were no defaults specified in paths.h when
613 Emacs was built. Perhaps some directories don't exist, or the Emacs
614 executable, /cadillac-th/jwz/somewhere/xemacs is in a strange place?
615
616 Without both exec-directory and load-path, Emacs will be very broken.
617 Consider making a symbolic link from /cadillac-th/jwz/somewhere/etc
618 to wherever the appropriate Emacs etc/ directory is, and from
619 /cadillac-th/jwz/somewhere/lisp/ to wherever the appropriate Emacs
620 lisp library is.
621
622 Without lock-directory set, file locking won't work. Consider
623 creating /cadillac-th/jwz/somewhere/lock as a directory or symbolic
624 link for use as the lock directory.
625
626 The default installation tree is the following:
627
628 /usr/local/bin/b2m ;
629 ctags ; executables that
630 emacsclient ; should be in
631 etags ; user's path
632 xemacs -> xemacs-<version> ;
633 xemacs ;
634 /usr/local/lib/xemacs/site-lisp
635 /usr/local/lib/xemacs/lock
636 /usr/local/lib/xemacs-<version>/etc ; architecture ind. files
637 /usr/local/lib/xemacs-<version>/info
638 /usr/local/lib/xemacs-<version>/lisp
639 /usr/local/lib/xemacs-<version>/<configuration> ; binaries emacs may run
640
641
642 *** X Resources
643 ---------------
644
645 (Note: This section is copied verbatim from the XEmacs Reference Manual.)
646
647 The Emacs resources are generally set per-frame. Each Emacs frame
648 can have its own name or the same name as another, depending on the
649 name passed to the `make-frame' function.
650
651 You can specify resources for all frames with the syntax:
652
653 Emacs*parameter: value
654
655 or
656
657 Emacs*EmacsFrame.parameter:value
658
659 You can specify resources for a particular frame with the syntax:
660
661 Emacs*FRAME-NAME.parameter: value
662
663
664 **** Geometry Resources
665 -----------------------
666
667 To make the default size of all Emacs frames be 80 columns by 55
668 lines, do this:
669
670 Emacs*EmacsFrame.geometry: 80x55
671
672 To set the geometry of a particular frame named `fred', do this:
673
674 Emacs*fred.geometry: 80x55
675
676 Important! Do not use the following syntax:
677
678 Emacs*geometry: 80x55
679
680 You should never use `*geometry' with any X application. It does not
681 say "make the geometry of Emacs be 80 columns by 55 lines." It really
682 says, "make Emacs and all subwindows thereof be 80x55 in whatever units
683 they care to measure in." In particular, that is both telling the
684 Emacs text pane to be 80x55 in characters, and telling the menubar pane
685 to be 80x55 pixels, which is surely not what you want.
686
687 As a special case, this geometry specification also works (and sets
688 the default size of all Emacs frames to 80 columns by 55 lines):
689
690 Emacs.geometry: 80x55
691
692 since that is the syntax used with most other applications (since most
693 other applications have only one top-level window, unlike Emacs). In
694 general, however, the top-level shell (the unmapped ApplicationShell
695 widget named `Emacs' that is the parent of the shell widgets that
696 actually manage the individual frames) does not have any interesting
697 resources on it, and you should set the resources on the frames instead.
698
699 The `-geometry' command-line argument sets only the geometry of the
700 initial frame created by Emacs.
701
702 A more complete explanation of geometry-handling is
703
704 * The `-geometry' command-line option sets the `Emacs.geometry'
705 resource, that is, the geometry of the ApplicationShell.
706
707 * For the first frame created, the size of the frame is taken from
708 the ApplicationShell if it is specified, otherwise from the
709 geometry of the frame.
710
711 * For subsequent frames, the order is reversed: First the frame, and
712 then the ApplicationShell.
713
714 * For the first frame created, the position of the frame is taken
715 from the ApplicationShell (`Emacs.geometry') if it is specified,
716 otherwise from the geometry of the frame.
717
718 * For subsequent frames, the position is taken only from the frame,
719 and never from the ApplicationShell.
720
721 This is rather complicated, but it does seem to provide the most
722 intuitive behavior with respect to the default sizes and positions of
723 frames created in various ways.
724
725
726 **** Iconic Resources
727 ---------------------
728
729 Analogous to `-geometry', the `-iconic' command-line option sets the
730 iconic flag of the ApplicationShell (`Emacs.iconic') and always applies
731 to the first frame created regardless of its name. However, it is
732 possible to set the iconic flag on particular frames (by name) by using
733 the `Emacs*FRAME-NAME.iconic' resource.
734
735
736 **** Resource List
737 ------------------
738
739 Emacs frames accept the following resources:
740
741 `geometry' (class `Geometry'): string
742 Initial geometry for the frame. *Note Geometry Resources:: for a
743 complete discussion of how this works.
744
745 `iconic' (class `Iconic'): boolean
746 Whether this frame should appear in the iconified state.
747
748 `internalBorderWidth' (class `InternalBorderWidth'): int
749 How many blank pixels to leave between the text and the edge of the
750 window.
751
752 `interline' (class `Interline'): int
753 How many pixels to leave between each line (may not be
754 implemented).
755
756 `menubar' (class `Menubar'): boolean
757 Whether newly-created frames should initially have a menubar. Set
758 to true by default.
759
760 `initiallyUnmapped' (class `InitiallyUnmapped'): boolean
761 Whether XEmacs should leave the initial frame unmapped when it
762 starts up. This is useful if you are starting XEmacs as a server
763 (e.g. in conjunction with gnuserv or the external client widget).
764 You can also control this with the `-unmapped' command-line option.
765
766 `barCursor' (class `BarColor'): boolean
767 Whether the cursor should be displayed as a bar, or the
768 traditional box.
769
770 `textPointer' (class `Cursor'): cursor-name
771 The cursor to use when the mouse is over text. This resource is
772 used to initialize the variable `x-pointer-shape'.
773
774 `selectionPointer' (class `Cursor'): cursor-name
775 The cursor to use when the mouse is over a selectable text region
776 (an extent with the `highlight' property; for example, an Info
777 cross-reference). This resource is used to initialize the variable
778 `x-selection-pointer-shape'.
779
780 `spacePointer' (class `Cursor'): cursor-name
781 The cursor to use when the mouse is over a blank space in a buffer
782 (that is, after the end of a line or after the end-of-file). This
783 resource is used to initialize the variable
784 `x-nontext-pointer-shape'.
785
786 `modeLinePointer' (class `Cursor'): cursor-name
787 The cursor to use when the mouse is over a mode line. This
788 resource is used to initialize the variable `x-mode-pointer-shape'.
789
790 `gcPointer' (class `Cursor'): cursor-name
791 The cursor to display when a garbage-collection is in progress.
792 This resource is used to initialize the variable
793 `x-gc-pointer-shape'.
794
795 `scrollbarPointer' (class `Cursor'): cursor-name
796 The cursor to use when the mouse is over the scrollbar. This
797 resource is used to initialize the variable
798 `x-scrollbar-pointer-shape'.
799
800 `pointerColor' (class `Foreground'): color-name
801 `pointerBackground' (class `Background'): color-name
802 The foreground and background colors of the mouse cursor. These
803 resources are used to initialize the variables
804 `x-pointer-foreground-color' and `x-pointer-background-color'.
805
806 `scrollBarWidth' (class `ScrollBarWidth'): integer
807 How wide the vertical scrollbars should be, in pixels; 0 means no
808 vertical scrollbars. You can also use a resource specification of
809 the form `*scrollbar.width', or the usual toolkit scrollbar
810 resources: `*XmScrollBar.width' (Motif), `*XlwScrollBar.width'
811 (Lucid), or `*Scrollbar.thickness' (Athena). We don't recommend
812 that you use the toolkit resources, though, because they're
813 dependent on how exactly your particular build of XEmacs was
814 configured.
815
816 `scrollBarHeight' (class `ScrollBarHeight'): integer
817 How high the horizontal scrollbars should be, in pixels; 0 means no
818 horizontal scrollbars. You can also use a resource specification
819 of the form `*scrollbar.height', or the usual toolkit scrollbar
820 resources: `*XmScrollBar.height' (Motif), `*XlwScrollBar.height'
821 (Lucid), or `*Scrollbar.thickness' (Athena). We don't recommend
822 that you use the toolkit resources, though, because they're
823 dependent on how exactly your particular build of XEmacs was
824 configured.
825
826 `scrollBarPlacement' (class `ScrollBarPlacement'): string
827 Where the horizontal and vertical scrollbars should be positioned.
828 This should be one of the four strings `bottom-left',
829 `bottom-right', `top-left', and `top-right'. Default is
830 `bottom-right' for the Motif and Lucid scrollbars and
831 `bottom-left' for the Athena scrollbars.
832
833 `topToolBarHeight' (class `TopToolBarHeight'): integer
834 `bottomToolBarHeight' (class `BottomToolBarHeight'): integer
835 `leftToolBarWidth' (class `LeftToolBarWidth'): integer
836 `rightToolBarWidth' (class `RightToolBarWidth'): integer
837 Height and width of the four possible toolbars.
838
839 `topToolBarShadowColor' (class `TopToolBarShadowColor'): color-name
840 `bottomToolBarShadowColor' (class `BottomToolBarShadowColor'): color-name
841 Color of the top and bottom shadows for the toolbars. NOTE: These
842 resources do *not* have anything to do with the top and bottom
843 toolbars (i.e. the toolbars at the top and bottom of the frame)!
844 Rather, they affect the top and bottom shadows around the edges of
845 all four kinds of toolbars.
846
847 `topToolBarShadowPixmap' (class `TopToolBarShadowPixmap'): pixmap-name
848 `bottomToolBarShadowPixmap' (class `BottomToolBarShadowPixmap'): pixmap-name
849 Pixmap of the top and bottom shadows for the toolbars. If set,
850 these resources override the corresponding color resources. NOTE:
851 These resources do *not* have anything to do with the top and
852 bottom toolbars (i.e. the toolbars at the top and bottom of the
853 frame)! Rather, they affect the top and bottom shadows around the
854 edges of all four kinds of toolbars.
855
856 `toolBarShadowThickness' (class `ToolBarShadowThickness'): integer
857 Thickness of the shadows around the toolbars, in pixels.
858
859 `visualBell' (class `VisualBell'): boolean
860 Whether XEmacs should flash the screen rather than making an
861 audible beep.
862
863 `bellVolume' (class `BellVolume'): integer
864 Volume of the audible beep.
865
866 `useBackingStore' (class `UseBackingStore'): boolean
867 Whether XEmacs should set the backing-store attribute of the X
868 windows it creates. This increases the memory usage of the X
869 server but decreases the amount of X traffic necessary to update
870 the screen, and is useful when the connection to the X server goes
871 over a low-bandwidth line such as a modem connection.
872
873
874 **** Face Resources
875 -------------------
876
877 The attributes of faces are also per-frame. They can be specified as:
878
879 Emacs.FACE_NAME.parameter: value
880
881 (*do not* use `Emacs*FACE_NAME...')
882
883 or
884
885 Emacs*FRAME_NAME.FACE_NAME.parameter: value
886
887 Faces accept the following resources:
888
889 `attributeFont' (class `AttributeFont'): font-name
890 The font of this face.
891
892 `attributeForeground' (class `AttributeForeground'): color-name
893 `attributeBackground' (class `AttributeBackground'): color-name
894 The foreground and background colors of this face.
895
896 `attributeBackgroundPixmap' (class `AttributeBackgroundPixmap'): file-name
897 The name of an XBM file (or XPM file, if your version of Emacs
898 supports XPM), to use as a background stipple.
899
900 `attributeUnderline' (class `AttributeUnderline'): boolean
901 Whether text in this face should be underlined.
902
903 All text is displayed in some face, defaulting to the face named
904 `default'. To set the font of normal text, use
905 `Emacs*default.attributeFont'. To set it in the frame named `fred', use
906 `Emacs*fred.default.attributeFont'.
907
908 These are the names of the predefined faces:
909
910 `default'
911 Everything inherits from this.
912
913 `bold'
914 If this is not specified in the resource database, Emacs tries to
915 find a bold version of the font of the default face.
916
917 `italic'
918 If this is not specified in the resource database, Emacs tries to
919 find an italic version of the font of the default face.
920
921 `bold-italic'
922 If this is not specified in the resource database, Emacs tries to
923 find a bold-italic version of the font of the default face.
924
925 `modeline'
926 This is the face that the modeline is displayed in. If not
927 specified in the resource database, it is determined from the
928 default face by reversing the foreground and background colors.
929
930 `highlight'
931 This is the face that highlighted extents (for example, Info
932 cross-references and possible completions, when the mouse passes
933 over them) are displayed in.
934
935 `left-margin'
936 `right-margin'
937 These are the faces that the left and right annotation margins are
938 displayed in.
939
940 `zmacs-region'
941 This is the face that mouse selections are displayed in.
942
943 `text-cursor'
944 This is the face that the cursor is displayed in.
945
946 `isearch'
947 This is the face that the matched text being searched for is
948 displayed in.
949
950 `info-node'
951 This is the face of info menu items. If unspecified, it is copied
952 from `bold-italic'.
953
954 `info-xref'
955 This is the face of info cross-references. If unspecified, it is
956 copied from `bold'. (Note that, when the mouse passes over a
957 cross-reference, the cross-reference's face is determined from a
958 combination of the `info-xref' and `highlight' faces.)
959
960 Other packages might define their own faces; to see a list of all
961 faces, use any of the interactive face-manipulation commands such as
962 `set-face-font' and type `?' when you are prompted for the name of a
963 face.
964
965 If the `bold', `italic', and `bold-italic' faces are not specified
966 in the resource database, then XEmacs attempts to derive them from the
967 font of the default face. It can only succeed at this if you have
968 specified the default font using the XLFD (X Logical Font Description)
969 format, which looks like
970
971 *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
972
973 If you use any of the other, less strict font name formats, some of
974 which look like
975
976 lucidasanstypewriter-12
977 fixed
978 9x13
979
980 then XEmacs won't be able to guess the names of the bold and italic
981 versions. All X fonts can be referred to via XLFD-style names, so you
982 should use those forms. See the man pages for `X(1)', `xlsfonts(1)',
983 and `xfontsel(1)'.
984
985
986 **** Widgets
987 ------------
988
989 There are several structural widgets between the terminal EmacsFrame
990 widget and the top level ApplicationShell; the exact names and types of
991 these widgets change from release to release (for example, they changed
992 in 19.9, 19.10, 19.12, and 19.13) and are subject to further change in
993 the future, so you should avoid mentioning them in your resource database.
994 The above-mentioned syntaxes should be forward-compatible. As of 19.14,
995 the exact widget hierarchy is as follows:
996
997 INVOCATION-NAME "shell" "container" FRAME-NAME
998 x-emacs-application-class "TopLevelEmacsShell" "EmacsManager" "EmacsFrame"
999
1000 (for normal frames)
1001
1002 or
1003
1004 INVOCATION-NAME "shell" "container" FRAME-NAME
1005 x-emacs-application-class "TransientEmacsShell" "EmacsManager" "EmacsFrame"
1006
1007 (for popup/dialog-box frames)
1008
1009 where INVOCATION-NAME is the terminal component of the name of the
1010 XEmacs executable (usually `xemacs'), and `x-emacs-application-class'
1011 is generally `Emacs'.
1012
1013
1014 **** Menubar Resources
1015 ----------------------
1016
1017 As the menubar is implemented as a widget which is not a part of
1018 XEmacs proper, it does not use the face mechanism for specifying fonts
1019 and colors: It uses whatever resources are appropriate to the type of
1020 widget which is used to implement it.
1021
1022 If Emacs was compiled to use only the Motif-lookalike menu widgets,
1023 then one way to specify the font of the menubar would be
1024
1025 Emacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
1026
1027 If the Motif library is being used, then one would have to use
1028
1029 Emacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
1030
1031 because the Motif library uses the `fontList' resource name instead
1032 of `font', which has subtly different semantics.
1033
1034 The same is true of the scrollbars: They accept whichever resources
1035 are appropriate for the toolkit in use.
1036
1037
1038 *** Source Code Highlighting
1039 ----------------------------
1040
1041 It's possible to have your buffers "decorated" with fonts or colors
1042 indicating syntactic structures (such as strings, comments, function names,
1043 "reserved words", etc.). In XEmacs, the preferred way to do this is with
1044 font-lock-mode; activate it by adding the following code to your .emacs file:
1045
1046 (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock)
1047 (add-hook 'c-mode-hook 'turn-on-font-lock)
1048 (add-hook 'c++-mode-hook 'turn-on-font-lock)
1049 (add-hook 'dired-mode-hook 'turn-on-font-lock)
1050 ...etc...
1051
1052 To customize it, see the descriptions of the function `font-lock-mode' and
1053 the variables `font-lock-keywords', `c-font-lock-keywords', etc.
1054
1055 There exist several other source code highlighting packages, but font-lock
1056 does one thing that most others don't do: highlights as you type new text;
1057 and one thing that no others do: bases part of its decoration on the
1058 syntax table of the major mode. Font-lock has C-level support to do this
1059 efficiently, so it should also be significantly faster than the others.
1060
1061 If there's something that another highlighting package does that you can't
1062 make font-lock do, let us know. We would prefer to consolidate all of the
1063 desired functionality into one package rather than ship several different
1064 packages which do essentially the same thing in different ways.
1065
1066
1067 ** Differences Between XEmacs and Emacs 18
1068 ==========================================
1069
1070 Auto-configure support has been added, so it should be fairly easy to compile
1071 XEmacs on different systems. If you have any problems or feedback about
1072 compiling on your system, please let us know.
1073
1074 We have reimplemented the basic input model in a more general way; instead of
1075 X input being a special-case of the normal ASCII input stream, XEmacs has a
1076 concept of "input events", and ASCII characters are a subset of that. The
1077 events that XEmacs knows about are not X events, but are a generalization of
1078 them, so that XEmacs can eventually be ported to different window systems.
1079
1080 We have reimplemented keymaps so that sequences of events can be stored into
1081 them instead of just ASCII codes; it is possible to, for example, bind
1082 different commands to each of the chords Control-h, Control-H, Backspace,
1083 Control-Backspace, and Super-Shift-Backspace. Key bindings, function key
1084 bindings, and mouse bindings live in the same keymaps.
1085
1086 Input and display of all ISO-8859-1 characters is supported.
1087
1088 You can have multiple X windows ("frames" in XEmacs terminology).
1089
1090 XEmacs has objects called "extents" and "faces", which are roughly
1091 analogous to Epoch's "buttons," "zones," and "styles." An extent is a
1092 region of text (a start position and an end position) and a face is a
1093 collection of textual attributes like fonts and colors. Every extent
1094 is displayed in some "face", so changing the properties of a face
1095 immediately updates the display of all associated extents. Faces can
1096 be frame-local: you can have a region of text which displays with
1097 completely different attributes when its buffer is viewed from a
1098 different X window.
1099
1100 The display attributes of faces may be specified either in lisp or through
1101 the X resource manager.
1102
1103 Pixmaps of arbitrary size can be embedded in a buffer.
1104
1105 Variable width fonts work.
1106
1107 The height of a line is the height of the tallest font on that line, instead
1108 of all lines having the same height.
1109
1110 XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which
1111 makes it be a more well-behaved X citizen (and also improves
1112 portability). A result of this is that it is possible to include
1113 other Xt "Widgets" in the XEmacs window. Also, XEmacs understands the
1114 standard Xt command-line arguments.
1115
1116 XEmacs understands the X11 "Selection" mechanism; it's possible to define
1117 and customize selection converter functions and new selection types from
1118 Emacs Lisp, without having to recompile XEmacs.
1119
1120 XEmacs provides support for ToolTalk on systems that have it.
1121
1122 XEmacs supports the Zmacs/Lispm style of region highlighting, where the
1123 region between the point and mark is highlighted when in its "active" state.
1124
1125 XEmacs has a menubar, whose contents are customizable from emacs-lisp.
1126 This menubar looks Motif-ish, but does not require Motif. If you already
1127 own Motif, however, you can configure XEmacs to use a *real* Motif menubar
1128 instead.
1129
1130 XEmacs can ask questions using popup dialog boxes. Any command executed from
1131 a menu will ask yes/no questions with dialog boxes, while commands executed
1132 via the keyboard will use the minibuffer.
1133
1134 XEmacs has vertical and horizontal scrollbars.
1135
1136 The initial load-path is computed at run-time, instead of at compile-time.
1137 This means that if you move the XEmacs executable and associated directories
1138 to somewhere else, you don't have to recompile anything.
1139
1140 You can specify what the title of the XEmacs windows and icons should be
1141 with the variables `frame-title-format' and `frame-icon-title-format',
1142 which have the same syntax as `mode-line-format'.
1143
1144 XEmacs now supports floating-point numbers.
1145
1146 XEmacs now knows about timers directly, instead of them being simulated by
1147 a subprocess.
1148
1149 XEmacs understands truenames, and can be configured to notice when you are
1150 visiting two names of the same file. See the variables find-file-use-truenames
1151 and find-file-compare-truenames.
1152
1153 If you're running on a machine with audio hardware, you can specify sound
1154 files for XEmacs to play instead of the default X beep. See the documentation
1155 of the function load-sound-file and the variable sound-alist.
1156
1157 An XEmacs frame can be placed within an "external client widget" managed by
1158 another application. This allows an application to use an XEmacs frame as its
1159 text pane rather than the standard Text widget that is provided with Motif or
1160 Athena. XEmacs supports Motif applications, generic Xt (e.g. Athena)
1161 applications, and raw Xlib applications.
1162
1163 Random changes to the emacs-lisp library: (some of this was not written by
1164 us, but is included because it's free software and we think it's good stuff)
1165
1166 - there is a new optimizing byte-compiler
1167 - there is a new abbrev-based mail-alias mechanism
1168 - the -*- line can contain local-variable settings
1169 - there is a new TAGS package
1170 - there is a new VI-emulation mode (viper)
1171 - there is a new implementation of Dired
1172 - there is a new implementation of Isearch
1173 - the VM package for reading mail is provided
1174 - the W3 package for browsing the World Wide Web hypertext information
1175 system is provided
1176 - the Hyperbole package, a programmable information management and
1177 hypertext system
1178 - the OO-Browser package, a multi-language object-oriented browser
1179
1180 There are many more specifics in the "Miscellaneous Changes" section, below.
1181
1182 The online Emacs Manual and Emacs-Lisp Manual are now both relatively
1183 up-to-date.
1184
1185 * XEmacs Release Notes 87 * XEmacs Release Notes
1186 ====================== 88 ======================
1187 89
1188 ** Future Plans for XEmacs 90 ** Future Plans for XEmacs
1189 ========================== 91 ==========================
1199 101
1200 -- More user-level documentation on using Mule. 102 -- More user-level documentation on using Mule.
1201 103
1202 ** Major Differences between 20.0 and 20.1 104 ** Major Differences between 20.0 and 20.1
1203 105
106 *** User Interface changes.
107
108 The keysyms mouse-1, mouse-2, mouse-3 and down-mouse-1, down-mouse-2,
109 and down-mouse-3 have been added for Emacs compatibility.
110
111 A new user customizable variable `signal-error-on-buffer-boundary' has
112 been added. Set this to nil to avoid XEmacs usual lossage of zmacs
113 region when moving up against a buffer boundary.
114
115 The logo has been changed, and the default background color is now
116 shade of gray instead of white.
117
1204 Many packages have been add and upgraded. 118 Many packages have been add and upgraded.
1205 119
1206 -- Gnus-5.4.17 Courtesy of Lars Magne Ingebrigtsen 120 -- Gnus-5.4.43 Courtesy of Lars Magne Ingebrigtsen
121
122 *** Gnus changes.
123
124 **** nntp.el has been totally rewritten in an asynchronous fashion.
125
126 **** Article prefetching functionality has been moved up into
127 Gnus.
128
129 **** Scoring can now be performed with logical operators like
130 `and', `or', `not', and parent redirection.
131
132 *** Article washing status can be displayed in the
133 article mode line.
134
135 **** gnus.el has been split into many smaller files.
136
137 **** Suppression of duplicate articles based on Message-ID.
138
139 (setq gnus-suppress-duplicates t)
140
141 **** New variables for specifying what score and adapt files
142 are to be considered home score and adapt files. See
143 `gnus-home-score-file' and `gnus-home-adapt-files'.
144
145 **** Groups can inherit group parameters from parent topics.
146
147 **** Article editing has been revamped and is now usable.
148
149 **** Signatures can be recognized in more intelligent fashions.
150 See `gnus-signature-separator' and `gnus-signature-limit'.
151
152 **** Summary pick mode has been made to look more nn-like.
153 Line numbers are displayed and the `.' command can be
154 used to pick articles.
155
156 **** Commands for moving the .newsrc.eld from one server to
157 another have been added.
158
159 `M-x gnus-change-server'
160
161 **** A way to specify that "uninteresting" fields be suppressed when
162 generating lines in buffers.
163
164 **** Several commands in the group buffer can be undone with
165 `M-C-_'.
166
167 **** Scoring can be done on words using the new score type `w'.
168
169 **** Adaptive scoring can be done on a Subject word-by-word basis:
170
171 (setq gnus-use-adaptive-scoring '(word))
172
173 **** Scores can be decayed.
174
175 (setq gnus-decay-scores t)
176
177 **** Scoring can be performed using a regexp on the Date header. The
178 Date is normalized to compact ISO 8601 format first.
179
180 **** A new command has been added to remove all data on articles from
181 the native server.
182
183 `M-x gnus-group-clear-data-on-native-groups'
184
185 **** A new command for reading collections of documents
186 (nndoc with nnvirtual on top) has been added -- `M-C-d'.
187
188 **** Process mark sets can be pushed and popped.
189
190 **** A new mail-to-news backend makes it possible to post
191 even when the NNTP server doesn't allow posting.
192
193 **** A new backend for reading searches from Web search engines
194 (DejaNews, Alta Vista, InReference) has been added.
195
196 Use the `G w' command in the group buffer to create such
197 a group.
198
199 **** Groups inside topics can now be sorted using the standard
200 sorting functions, and each topic can be sorted independently.
201
202 See the commands under the `T S' submap.
203
204 **** Subsets of the groups can be sorted independently.
205
206 See the commands under the `G P' submap.
207
208 **** Cached articles can be pulled into the groups.
209
210 Use the `Y c' command.
211
212 **** Score files are now applied in a more reliable order.
213
214 **** Reports on where mail messages end up can be generated.
215
216 `M-x nnmail-split-history'
217
218 **** More hooks and functions have been added to remove junk
219 from incoming mail before saving the mail.
220
221 See `nnmail-prepare-incoming-header-hook'.
222
223 **** The nnml mail backend now understands compressed article files.
224
225 -- custom-1.82 Courtesy of Per Abrahamsen
226
227 The Customize library enables Emacs Lisp programmers to specify types
228 of their variables, so that the users can customize them. For
229 example, the old declaration
230
231 (defvar foo-blurgoze nil
232 "*non-nil means that foo will act very blurgozely.")
233
234 now becomes:
235
236 (defcustom foo-blurgoze nil
237 "*non-nil means that foo will act very blurgozely."
238 :type 'boolean)
239
240 Now the user can type `M-x customize RET foo-blurgoze RET' to
241 customize the variable. Other, more complex data structures can be
242 represented and customized too, e.g.
243
244 (defcustom foo-hairy-alist '((somekey . "somestring")
245 (otherkey . (foo-doit))
246 (thirdkey . [1 2 3]))
247 "*Alist describing the hairy options of foo package.
248 The CAR of each element is a symbol, whereas the CDR can be either a
249 string, a form to evaluate, or a vector of integers."
250 :type '(repeat (cons (symbol :tag "Key")
251 (choice string
252 (vector (repeat :inline t integer))
253 sexp))))
254
255 The user will be able to add and remove the entries to the list, as
256 well as save the settings to his/her `.emacs'.
257
258 The Customize now has its submenu at the top of the Options menu, and
259 is the preferred way to change XEmacs settings. Tens of packages have
260 been converted to take advantage of the Customize features, including:
261 Gnus, Message, Supercite, Psgml, Comint, Calendar, W3, cc-mode (and
262 many other programming language modes), ispell.el, ps-print.el,
263 id-select.el, most of the programming language modes, and many many
264 more.
265
266 been converted to use the Customize features.
267
1207 -- mic-paren.el-1.3.1 Courtesy of Mikael Sjödin 268 -- mic-paren.el-1.3.1 Courtesy of Mikael Sjödin
1208 -- hyperbole-4.022 Courtesy of Bob Weiner 269 -- hyperbole-4.022 Courtesy of Bob Weiner
1209 -- W3-3.0.62 Courtesy of William Perry 270
271 -- W3-3.0.80 Courtesy of William Perry
272
273 Version 3 of Emacs/W3, the Emacs World Wide Web browser, has been
274 included. It is much faster than any of the previous versions, and
275 contains numerous other features.
276
1210 -- AUCTeX-9.7k Courtesy of Per Abrahamsen 277 -- AUCTeX-9.7k Courtesy of Per Abrahamsen
278
279 AUC TeX is a comprehensive customizable integrated environment for
280 writing input files for LaTeX using GNU Emacs.
281
282 AUC TeX lets you run TeX/LaTeX and other LaTeX-related tools, such
283 as a output filters or post processor from inside Emacs. Especially
284 `running LaTeX' is interesting, as AUC TeX lets you browse through the
285 errors TeX reported, while it moves the cursor directly to the reported
286 error, and displays some documentation for that particular error. This
287 will even work when the document is spread over several files.
288
289 AUC TeX automatically indents your `LaTeX-source', not only as you
290 write it -- you can also let it indent and format an entire document.
291 It has a special outline feature, which can greatly help you `getting an
292 overview' of a document.
293
294 Apart from these special features, AUC TeX provides an large range of
295 handy Emacs macros, which in several different ways can help you write
296 your LaTeX documents fast and painless.
297
1211 -- hm--html-menus-5.3 Courtesy of Heiko Muenkel 298 -- hm--html-menus-5.3 Courtesy of Heiko Muenkel
1212 -- custom-1.46 Courtesy of Per Abrahamsen
1213 -- python-mode.el-2.90 Courtesy of Barry Warsaw 299 -- python-mode.el-2.90 Courtesy of Barry Warsaw
1214 -- balloon-help-1.04 Courtesy of Kyle Jones 300 -- balloon-help-1.04 Courtesy of Kyle Jones
1215 -- xrdb-mode.el-1.21 Courtesy of Barry Warsaw 301 -- xrdb-mode.el-1.21 Courtesy of Barry Warsaw
1216 -- igrep.el-2.56 Courtesy of Kevin Rodgers 302 -- igrep.el-2.56 Courtesy of Kevin Rodgers
1217 -- frame-icon.el Courtesy of Michael Lamoureux and Bob Weiner 303 -- frame-icon.el Courtesy of Michael Lamoureux and Bob Weiner
1218 -- itimer.el-1.01 Courtesy of Kyle Jones 304 -- itimer.el-1.01 Courtesy of Kyle Jones
305
1219 -- redo.el-1.01 Courtesy of Kyle Jones 306 -- redo.el-1.01 Courtesy of Kyle Jones
307
308 redo.el is a package that implements true redo mechanism in XEmacs
309 buffers. You can bind the `redo' command to a convenient key to use
310 it.
311
312 Emacs' normal undo system allows you to undo an arbitrary
313 number of buffer changes. These undos are recorded as ordinary
314 buffer changes themselves. So when you break the chain of
315 undos by issuing some other command, you can then undo all
316 the undos. The chain of recorded buffer modifications
317 therefore grows without bound, truncated only at garbage
318 collection time.
319
320 The redo/undo system is different in two ways:
321 1. The undo/redo command chain is only broken by a buffer
322 modification. You can move around the buffer or switch
323 buffers and still come back and do more undos or redos.
324 2. The `redo' command rescinds the most recent undo without
325 recording the change as a _new_ buffer change. It
326 completely reverses the effect of the undo, which
327 includes making the chain of buffer modification records
328 shorter by one, to counteract the effect of the undo
329 command making the record list longer by one.
330
1220 -- VM-6.15 Courtesy of Kyle Jones 331 -- VM-6.15 Courtesy of Kyle Jones
1221 -- OO-Browser-2.10 Courtesy of Bob Weiner 332 -- OO-Browser-2.10 Courtesy of Bob Weiner
1222 -- viper-2.93 Courtesy of Michael Kifer 333 -- viper-2.93 Courtesy of Michael Kifer
1223 -- ediff-2.64 Courtesy of Michael Kifer 334 -- ediff-2.64 Courtesy of Michael Kifer
335
1224 -- edmacro.el-3.05 Courtesy of Dave Gillespie, port to XEmacs by 336 -- edmacro.el-3.05 Courtesy of Dave Gillespie, port to XEmacs by
1225 Hrvoje Niksic. 337 Hrvoje Niksic.
338
339 Edmacro is a utility that provides easy editing of keyboard macros.
340 Press `C-x C-k' to invoke the `edit-kbd-macro' command that lets you
341 edit and define new keyboard macros. You can also edit the last 100
342 keystrokes and insert them into a macro to be bound to a key. The
343 macros can be conveniently dumped to `.emacs' file.
344
345 The `read-kbd-macro' function is now available in XEmacs. The short
346 form `kbd' that evaluates at compile-time can be used instead.
347
1226 -- detached-minibuf.el Courtesy of Alvin Shelton 348 -- detached-minibuf.el Courtesy of Alvin Shelton
1227 -- whitespace-mode.el Courtesy of Heiko Muenkel 349 -- whitespace-mode.el Courtesy of Heiko Muenkel
1228 -- winmgr-mode.el Courtesy of David Konerding, Stefan Strobel & Barry Warsaw 350 -- winmgr-mode.el Courtesy of David Konerding, Stefan Strobel & Barry Warsaw
1229 -- mine.el-1.17 Courtesy of Jacques Duthen 351
352 -- xmine.el-1.4 Courtesy of Jens Lautenbacher
353
354 XEmacs now includes a minesweeper game with a full-featured graphics
355 and mouse interface. Invoke with `M-x xmine'.
356
1230 -- fast-lock.el-3.11.01 Courtesy of Simon Marshall 357 -- fast-lock.el-3.11.01 Courtesy of Simon Marshall
1231 -- lazy-lock.el-1.16 Courtesy of Simon Marshall 358 -- lazy-lock.el-1.16 Courtesy of Simon Marshall
1232 -- browse-cltl2.el-1.1 Courtesy of Holger Schauer 359 -- browse-cltl2.el-1.1 Courtesy of Holger Schauer
1233 -- eldoc.el-1.8 Courtesy of Noah Friedman 360 -- eldoc.el-1.8 Courtesy of Noah Friedman
1234 -- tm-7.105 Courtesy of MORIOKA Tomohiko 361 -- tm-7.105 Courtesy of MORIOKA Tomohiko
362
1235 -- efs-1.15 courtesy of Andy Norman and Michael Sperber 363 -- efs-1.15 courtesy of Andy Norman and Michael Sperber
364
365 EFS is now integrated with XEmacs, and replaces the old ange-ftp. It
366 has many more features, including info documentation, support for many
367 different FTP servers, and integration with dired.
368
1236 -- verilog-mode.el Courtesy of Michael McNamara & Adrian Aichner 369 -- verilog-mode.el Courtesy of Michael McNamara & Adrian Aichner
370
1237 -- overlay.el Courtesy of Joseph Nuspl 371 -- overlay.el Courtesy of Joseph Nuspl
1238 372
1239 *** User Interface changes. 373 The overlay support in XEmacs is now functional. Overlays are
1240 374 implemented on top of native extents, and can be used as a GNU
1241 The keysyms mouse-1, mouse-2, mouse-3 and down-mouse-1, down-mouse-2, 375 Emacs-compatible way of changing display properties.
1242 and down-mouse-3 have been added for Emacs compatibility.
1243
1244 A new user customizable variable `signal-error-on-buffer-boundary' has
1245 been added. Set this to nil to avoid XEmacs usual lossage of zmacs
1246 region when moving up against a buffer boundary.
1247
1248 The logo has been changed, and the default background color is now
1249 shade of gray instead of white.
1250 376
1251 *** Other changes 377 *** Other changes
1252 378
1253 First alpha level support of MS Windows NT is available courtesy of 379 First alpha level support of MS Windows NT is available courtesy of
1254 David Hobley. 380 David Hobley.
3119 font-lock.el: A code-highlighting package, driven off of syntax tables, so 2245 font-lock.el: A code-highlighting package, driven off of syntax tables, so
3120 that it understands block comments, strings, etc. The 2246 that it understands block comments, strings, etc. The
3121 insertion hook is used to fontify text as you type it in. 2247 insertion hook is used to fontify text as you type it in.
3122 2248
3123 shell-font.el: Displays your shell-buffer prompt in boldface. 2249 shell-font.el: Displays your shell-buffer prompt in boldface.
2250
2251 * The History of XEmacs
2252 =======================
2253
2254 This product is an extension of GNU Emacs, previously known to some as
2255 "Lucid Emacs" or "ERA". It was initially based on an early version of Emacs
2256 Version 19 from the Free Software Foundation and has since been kept
2257 up-to-date with recent versions of that product. It stems from a
2258 collaboration of Lucid, Inc. with SunSoft DevPro (a division of Sun
2259 Microsystems, Inc.; formerly called SunPro) and the University of Illinois.
2260
2261 NOTE: Lucid, Inc. is currently out of business but development on XEmacs
2262 continues strong. Recently, Amdahl Corporation and INS Engineering have
2263 both contributed significantly to the development of XEmacs.
2264
2265
2266 * What's Different?
2267 ===================
2268
2269
2270 ** Differences between XEmacs and GNU Emacs 19
2271 ==================================================
2272 In XEmacs 20, characters are first-class objects. Characters can be
2273 converted to integers, but are not integers. FSF 19, XEmacs 19, and Mule
2274 represent them as integers.
2275
2276 In XEmacs, events are first-class objects. FSF 19 represents them as
2277 integers, which obscures the differences between a key gesture and the
2278 ancient ASCII code used to represent a particular overlapping subset of them.
2279
2280 In XEmacs, keymaps are first-class opaque objects. FSF 19 represents them as
2281 complicated combinations of association lists and vectors. If you use the
2282 advertised functional interface to manipulation of keymaps, the same code
2283 will work in XEmacs, Emacs 18, and GNU Emacs 19; if your code depends
2284 on the underlying implementation of keymaps, it will not.
2285
2286 XEmacs uses "extents" to represent all non-textual aspects of buffers;
2287 FSF 19 uses two distinct objects, "text properties" and "overlays",
2288 which divide up the functionality between them. Extents are a
2289 superset of the functionality of the two FSF data types. The full FSF
2290 19 interface to text properties is supported in XEmacs (with extents
2291 being the underlying representation).
2292
2293 Extents can be made to be copied into strings, and thus restored by kill
2294 and yank. Thus, one can specify this behavior on either "extents" or
2295 "text properties", whereas in FSF 19 text properties always have this
2296 behavior and overlays never do.
2297
2298 Many more packages are provided standard with XEmacs than with FSF 19.
2299
2300 Pixmaps of arbitrary size can be embedded in a buffer.
2301
2302 Variable width fonts work.
2303
2304 The height of a line is the height of the tallest font on that line, instead
2305 of all lines having the same height.
2306
2307 XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which
2308 makes it be a more well-behaved X citizen (and also improves
2309 portability). A result of this is that it is possible to include
2310 other Xt "Widgets" in the XEmacs window. Also, XEmacs understands the
2311 standard Xt command-line arguments.
2312
2313 XEmacs provides support for ToolTalk on systems that have it.
2314
2315 XEmacs can ask questions using popup dialog boxes. Any command executed from
2316 a menu will ask yes/no questions with dialog boxes, while commands executed
2317 via the keyboard will use the minibuffer.
2318
2319 XEmacs has a built-in toolbar. Four toolbars can actually be configured:
2320 top, bottom, left, and right toolbars.
2321
2322 XEmacs has vertical and horizontal scrollbars. Unlike in FSF 19 (which
2323 provides a primitive form of vertical scrollbar), these are true toolkit
2324 scrollbars. A look-alike Motif scrollbar is provided for those who
2325 don't have Motif. (Even for those who do, the look-alike may be preferable
2326 as it is faster.)
2327
2328 If you're running on a machine with audio hardware, you can specify sound
2329 files for XEmacs to play instead of the default X beep. See the documentation
2330 of the function load-sound-file and the variable sound-alist.
2331
2332 An XEmacs frame can be placed within an "external client widget" managed by
2333 another application. This allows an application to use an XEmacs frame as its
2334 text pane rather than the standard Text widget that is provided with Motif or
2335 Athena. XEmacs supports Motif applications, generic Xt (e.g. Athena)
2336 applications, and raw Xlib applications.
2337
2338 Here are some more specifics about the XEmacs implementation:
2339
2340 *** The Input Model
2341 -------------------
2342
2343 The fundamental unit of input is an "event" instead of a character. An
2344 event is a new data type that contains several pieces of information.
2345 There are several kinds of event, and corresponding accessor and utility
2346 functions. We tried to abstract them so that they would apply equally
2347 well to a number of window systems.
2348
2349 NOTE: All timestamps are measured as milliseconds since Emacs started.
2350
2351 key_press_event
2352 event_channel A token representing which keyboard generated it.
2353 For this kind of event, this is a console object.
2354 timestamp When it happened
2355 key What keysym this is; a character or a symbol.
2356 If it is a character, it will be a printing
2357 ASCII character.
2358 modifiers Bucky-bits on that key: control, meta, etc.
2359 For most keys, Shift is not a bit; that is implicit
2360 in the keyboard layout.
2361
2362 button_press_event
2363 button_release_event
2364 event_channel A token representing which mouse generated it.
2365 For this kind of event, this is a frame object.
2366 timestamp When it happened
2367 button What button went down or up.
2368 modifiers Bucky-bits on that button: shift, control, meta, etc.
2369 x, y Where it was at the button-state-change (in pixels).
2370
2371 pointer_motion_event
2372 event_channel A token representing which mouse generated it.
2373 For this kind of event, this is a frame object.
2374 timestamp When it happened
2375 x, y Where it was after it moved (in pixels).
2376 modifiers Bucky-bits down when the motion was detected.
2377 (Possibly not all window systems will provide this?)
2378
2379 process_event
2380 timestamp When it happened
2381 process the emacs "process" object in question
2382
2383 timeout_event
2384 timestamp Now (really, when the timeout was signaled)
2385 interval_id The ID returned when the associated call to
2386 add_timeout_cb() was made
2387 ------ the rest of the fields are filled in by Emacs -----
2388 id_number The Emacs timeout ID for this timeout (more
2389 than one timeout event can have the same value
2390 here, since Emacs timeouts, as opposed to
2391 add_timeout_cb() timeouts, can resignal
2392 themselves)
2393 function An elisp function to call when this timeout is
2394 processed.
2395 object The object passed to that function.
2396
2397 eval_event
2398 timestamp When it happened
2399 function An elisp function to call with this event object.
2400 object Anything.
2401 This kind of event is used internally; sometimes the
2402 window system interface would like to inform emacs of
2403 some user action (such as focusing on another frame)
2404 but needs that to happen synchronously with the other
2405 user input, like keypresses. This is useful when
2406 events are reported through callbacks rather
2407 than in the standard event stream.
2408
2409 misc_user_event
2410 timestamp When it happened
2411 function An elisp function to call with this event object.
2412 object Anything.
2413 This is similar to an eval_event, except that it is
2414 generated by user actions: selections in the
2415 menubar or scrollbar actions. It is a "command"
2416 event, like key and mouse presses (and unlike mouse
2417 motion, process output, and enter and leave window
2418 hooks). In many ways, eval_events are not the same
2419 as keypresses or misc_user_events.
2420
2421 magic_event
2422 No user-serviceable parts within. This is for things
2423 like KeymapNotify and ExposeRegion events and so on
2424 that emacs itself doesn't care about, but which it
2425 must do something with for proper interaction with
2426 the window system.
2427
2428 Magic_events are handled somewhat asynchronously, just
2429 like subprocess filters. However, occasionally a
2430 magic_event needs to be handled synchronously; in that
2431 case, the asynchronous handling of the magic_event will
2432 push an eval_event back onto the queue, which will be
2433 handled synchronously later. This is one of the
2434 reasons why eval_events exist; I'm not entirely happy
2435 with this aspect of this event model.
2436
2437
2438 The function `next-event' blocks and returns one of the above-described
2439 event objects. The function `dispatch-event' takes an event and processes
2440 it in the appropriate way.
2441
2442 For a process-event, dispatch-event calls the process's handler; for a
2443 mouse-motion event, the mouse-motion-handler hook is called, and so on.
2444 For magic-events, dispatch-event does window-system-dependent things,
2445 including calling some non-window-system-dependent hooks: map-frame-hook,
2446 unmap-frame-hook, mouse-enter-frame-hook, and mouse-leave-frame-hook.
2447
2448 The function `next-command-event' calls `next-event' until it gets a key or
2449 button from the user (that is, not a process, motion, timeout, or magic
2450 event). If it gets an event that is not a key or button, it calls
2451 `dispatch-event' on it immediately and reads another one. The
2452 next-command-event function could be implemented in Emacs Lisp, though it
2453 isn't. Generally one should call `next-command-event' instead of
2454 `next-event'.
2455
2456 read-char calls next-command-event; if it doesn't get an event that can be
2457 converted to an ASCII character, it signals an error. Otherwise it returns
2458 an integer.
2459
2460 The variable `last-command-char' always contains an integer, or nil (if the
2461 last read event has no ASCII equivalent, as when it is a mouse-click or a
2462 non-ASCII character chord.)
2463
2464 The new variable `last-command-event' holds an event object, that could be
2465 a non-ASCII character, a button click, a menu selection, etc.
2466
2467 The variable `unread-command-char' no longer exists, and has been replaced
2468 by `unread-command-events'. With the new event model, it is incorrect for
2469 code to do (setq unread-command-char (read-char)), because all user-input
2470 can't be represented as ASCII characters. *** This is an incompatible
2471 change. Code which sets `unread-command-char' must be updated to use the
2472 combination of `next-command-event' and `unread-command-events' instead.
2473
2474 The functions `this-command-keys' and `recent-keys' return a vector of
2475 event objects, instead of a string of ASCII characters. *** This also
2476 is an incompatible change.
2477
2478 Almost nothing happens at interrupt level; the SIGIO handler simply sets a
2479 flag, and later, the X event queue is scanned for KeyPress events which map
2480 to ^G. All redisplay happens in the main thread of the process.
2481
2482
2483 *** Keymaps
2484 -----------
2485
2486 Instead of keymaps being alists or obarrays, they are a new primary data
2487 type. The only user access to the contents of a keymap is through the
2488 existing keymap-manipulation functions, and a new function, map-keymap.
2489 This means that existing code that manipulates keymaps may need to
2490 be changed.
2491
2492 One of our goals with the new input and keymap code was to make more
2493 character combinations available for binding, besides just ASCII and
2494 function keys. We want to be able bind different commands to Control-a
2495 and Control-Shift-a; we also want it to be possible for the keys Control-h
2496 and Backspace (and Control-M and Return, and Control-I and Tab, etc) to
2497 be distinct.
2498
2499 One of the most common complaints that new Emacs users have is that backspace
2500 is help. The answer is to play around with the keyboard-translate-table, or
2501 be lucky enough to have a system administrator who has done this for you
2502 already; but if it were possible to bind backspace and C-h to different
2503 things, then (under a window manager at least) both backspace and delete
2504 would delete a character, and ^H would be help. There's no need to deal
2505 with xmodmap, kbd-translate-table, etc.
2506
2507 Here are some more examples: suppose you want to bind one function to Tab,
2508 and another to Control-Tab. This can't be done if Tab and Control-I are the
2509 same thing. What about control keys that have no ASCII equivalent, like
2510 Control-< ? One might want that to be bound to set-mark-at-point-min. We
2511 want M-C-Backspace to be kill-backward-sexp. But we want M-Backspace to be
2512 kill-backward-word. Again, this can't be done if Backspace and C-h are
2513 indistinguishable.
2514
2515 The user represents keys as a string of ASCII characters (when possible and
2516 convenient), or as a vector of event objects, or as a vector of "key
2517 description lists", that looks like (control a), or (control meta delete)
2518 or (shift f1). The order of the modifier-names is not significant, so
2519 (meta control x) and (control meta x) are the same.
2520
2521 `define-key' knows how to take any of the above representations and store them
2522 into a keymap. When Emacs wants to return a key sequence (this-command-keys,
2523 recent-keys, keyboard-macros, and read-key-sequence, for example) it returns
2524 a vector of event objects. Keyboard macros can also be represented as ASCII
2525 strings or as vectors of key description lists.
2526
2527 This is an incompatible change: code which calls `this-command-keys',
2528 `recent-keys', `read-key-sequence', or manipulates keyboard-macros probably
2529 needs to be changed so that it no longer assumes that the returned value is a
2530 string.
2531
2532 Control-Shift-a is specified as (control A), not (control shift a), since A
2533 is a two-case character. But for keys that don't have an upper case
2534 version, like F1, Backspace, and Escape, you use the (shift backspace) syntax.
2535
2536 See the doc string for our version of define-key, reproduced below in the
2537 `Changed Functions' section. Note that when the KEYS argument is a string,
2538 it has the same semantics as the v18 define-key.
2539
2540
2541 *** Xt Integration
2542 ------------------
2543
2544 The heart of the event loop is implemented in terms of the Xt event functions
2545 (specifically XtAppProcessEvent), and uses Xt's concept of timeouts and
2546 file-descriptor callbacks, eliminating a large amount of system-dependent code
2547 (Xt does it for you.)
2548
2549 If Emacs is compiled with support for X, it uses the Xt event loop even when
2550 Emacs is not running on an X display (the Xt event loop supports this). This
2551 makes it possible to run Emacs on a dumb TTY, and later connect it to one or
2552 more X servers. It should also be possible to later connect an existing Emacs
2553 process to additional TTY's, although this code is still experimental. (Our
2554 intent at this point is not to have an Emacs that is being used by multiple
2555 people at the same time: it is to make it possible for someone to go home, log
2556 in on a dialup line, and connect to the same Emacs process that is running
2557 under X in their office without having to recreate their buffer state and so
2558 on.)
2559
2560 If Emacs is not compiled with support for X, then it instead uses more general
2561 code, something like what v18 does; but this way of doing things is a lot more
2562 modular.
2563
2564 (Linking Emacs with Xt seems to only add about 300k to the executable size,
2565 compared with an Emacs linked with Xlib only.)
2566
2567
2568 *** Region Highlighting
2569 -----------------------
2570
2571 If the variable `zmacs-regions' is true, then the region between point and
2572 mark will be highlighted when "active". Those commands which push a mark
2573 (such as C-SPC, and C-x C-x) make the region become "active" and thus
2574 highlighted. Most commands (all non-motion commands, basically) cause it to
2575 become non-highlighted (non-"active"). Commands that operate on the region
2576 (such as C-w, C-x C-l, etc.) only work if the region is in the highlighted
2577 state.
2578
2579 zmacs-activate-region-hook and zmacs-deactivate-region-hook are run at the
2580 appropriate times; under X, zmacs-activate-region-hook makes the X selection
2581 be the region between point and mark, thus doing two things at once: making
2582 the region and the X selection be the same; and making the region highlight
2583 in the same way as the X selection.
2584
2585 If `zmacs-regions' is true, then the `mark-marker' command returns nil unless
2586 the region is currently in the active (highlighted) state. With an argument
2587 of t, this returns the mark (if there is one) regardless of the active-region
2588 state. You should *generally* not use the mark unless the region is active,
2589 if the user has expressed a preference for the active-region model. Watch
2590 out! Moving this marker changes the mark position. If you set the marker not
2591 to point anywhere, the buffer will have no mark.
2592
2593 In this way, the primary selection is a fairly transitory entity; but
2594 when something is copied to the kill ring, it is made the Clipboard
2595 selection. It is also stored into CUT_BUFFER0, for compatibility with
2596 X applications that don't understand selections (like Emacs18).
2597
2598 Compatibility note: if you have code which uses (mark) or (mark-marker),
2599 then you need to either: change those calls to (mark t) or (mark-marker t);
2600 or simply bind `zmacs-regions' to nil around the call to mark or mark-marker.
2601 This is probably the best solution, since it will work in Emacs 18 as well.
2602
2603
2604 *** Menubars and Dialog Boxes
2605 -----------------------------
2606
2607 Here is an example of a menubar definition:
2608
2609 (defvar default-menubar
2610 '(("File" ["Open File..." find-file t]
2611 ["Save Buffer" save-buffer t]
2612 ["Save Buffer As..." write-file t]
2613 ["Revert Buffer" revert-buffer t]
2614 "-----"
2615 ["Print Buffer" lpr-buffer t]
2616 "-----"
2617 ["Delete Frame" delete-frame t]
2618 ["Kill Buffer..." kill-buffer t]
2619 ["Exit Emacs" save-buffers-kill-emacs t]
2620 )
2621 ("Edit" ["Undo" advertised-undo t]
2622 ["Cut" kill-primary-selection t]
2623 ["Copy" copy-primary-selection t]
2624 ["Paste" yank-clipboard-selection t]
2625 ["Clear" delete-primary-selection t]
2626 )
2627 ...))
2628
2629 The first element of each menu item is the string to print on the menu.
2630
2631 The second element is the callback function; if it is a symbol, it is
2632 invoked with `call-interactively.' If it is a list, it is invoked with
2633 `eval'.
2634
2635 If the second element is a symbol, then the menu also displays the key that
2636 is bound to that command (if any).
2637
2638 The third element of the menu items determines whether the item is selectable.
2639 It may be t, nil, or a form to evaluate. Also, a hook is run just before a
2640 menu is exposed, which can be used to change the value of these slots.
2641 For example, there is a hook that makes the "undo" menu item be selectable
2642 only in the cases when `advertised-undo' would not signal an error.
2643
2644 Menus may have other menus nested within them; they will cascade.
2645
2646 There are utility functions for adding items to menus, deleting items,
2647 disabling them, etc.
2648
2649 The function `popup-menu' takes a menu description and pops it up.
2650
2651 The function `popup-dialog-box' takes a dialog-box description and pops
2652 it up. Dialog box descriptions look a lot like menu descriptions.
2653
2654 The menubar, menu, and dialog-box code is implemented as a library,
2655 with an interface which hides the toolkit that implements it.
2656
2657
2658 *** Isearch Changes
2659 -------------------
2660
2661 Isearch has been reimplemented in a different way, adding some new features,
2662 and causing a few incompatible changes.
2663
2664 - the old isearch-*-char variables are no longer supported. In the old
2665 system, one could make ^A mean "repeat the search" by doing something
2666 like (setq search-repeat-char ?C-a). In the new system, this is
2667 accomplished with
2668
2669 (define-key isearch-mode-map "\C-a" 'isearch-repeat-forward)
2670
2671 - The advantage of using the normal keymap mechanism for this is that you
2672 can bind more than one key to an isearch command: for example, both C-a
2673 and C-s could do the same thing inside isearch mode. You can also bind
2674 multi-key sequences inside of isearch mode, and bind non-ASCII keys.
2675 For example, to use the F1 key to terminate a search:
2676
2677 (define-key isearch-mode-map 'f1 'isearch-exit)
2678
2679 or to make ``C-c C-c'' terminate a search:
2680
2681 (define-key isearch-mode-map "\C-c\C-c" 'isearch-exit)
2682
2683 - If isearch is behaving case-insensitively (the default) and you type an
2684 upper case character, then the search will become case-sensitive. This
2685 can be disabled by setting `search-caps-disable-folding' to nil.
2686
2687 - There is a history ring of the strings previously searched for; typing
2688 M-p or M-n while searching will cycle through this ring. Typing M-TAB
2689 will do completion across the set of items in the history ring.
2690
2691 - The ESC key is no longer used to terminate an incremental search. The
2692 RET key should be used instead. This change is necessary for it to be
2693 possible to bind "meta" characters to isearch commands.
2694
2695
2696 *** Startup Code Changes
2697 ------------------------
2698
2699 The initial X frame is mapped before the user's .emacs file is executed.
2700 Without this, there is no way for the user to see any error messages
2701 generated by their .emacs file, any windows created by the .emacs file
2702 don't show up, and the copyleft notice isn't shown.
2703
2704 The default values for load-path, exec-path, lock-directory, and
2705 Info-directory-list are not (necessarily) built into Emacs, but are
2706 computed at startup time.
2707
2708 First, Emacs looks at the directory in which its executable file resides:
2709
2710 o If that directory contains subdirectories named "lisp" and "lib-src",
2711 then those directories are used as the lisp library and exec directory.
2712
2713 o If the parent of the directory in which the emacs executable is located
2714 contains "lisp" and "lib-src" subdirectories, then those are used.
2715
2716 o If ../lib/xemacs-<version> (starting from the directory in which the
2717 emacs executable is located) contains a "lisp" subdirectory and either
2718 a "lib-src" subdirectory or a <configuration-name> subdirectory, then
2719 those are used.
2720
2721 o If the emacs executable that was run is a symbolic link, then the link
2722 is chased, and the resultant directory is checked as above.
2723
2724 (Actually, it doesn't just look for "lisp/", it looks for "lisp/prim/",
2725 which reduces the chances of a false positive.)
2726
2727 If the lisp directory contains subdirectories, they are added to the default
2728 load-path as well. If the site-lisp directory exists and contains
2729 subdirectories, they are then added. Subdirectories whose names begin with
2730 a dot or a hyphen are not added to the load-path.
2731
2732 These heuristics fail if the Emacs binary was copied from the main Emacs
2733 tree to some other directory, and links for the lisp directory were not put
2734 in. This isn't much of a restriction: either make there be subdirectories
2735 (or symbolic links) of the directory of the emacs executable, or make the
2736 "installed" emacs executable be a symbolic link to an executable in a more
2737 appropriate directory structure. For example, this setup works:
2738
2739 /usr/local/xemacs/xemacs* ; The executable.
2740 /usr/local/xemacs/lisp/ ; The associated directories.
2741 /usr/local/xemacs/etc/ ; Any of the files in this list
2742 /usr/local/xemacs/lock/ ; could be symbolic links as well.
2743 /usr/local/xemacs/info/
2744
2745 As does this:
2746
2747 /usr/local/bin/xemacs -> ../xemacs/src/xemacs-19.14 ; A link...
2748 /usr/local/xemacs/src/xemacs-19.14* ; The executable,
2749 /usr/local/xemacs/lisp/ ; and the rest of
2750 /usr/local/xemacs/etc/ ; the source tree
2751 /usr/local/xemacs/lock/
2752 /usr/local/xemacs/info/
2753
2754 This configuration might be used for a multi-architecture installation; assume
2755 that $LOCAL refers to a directory which contains only files specific to a
2756 particular architecture (i.e., executables) and $SHARED refers to those files
2757 which are not machine specific (i.e., lisp code and documentation.)
2758
2759 $LOCAL/bin/xemacs@ -> $LOCAL/xemacs-19.14/xemacs*
2760 $LOCAL/xemacs-19.14/lisp@ -> $SHARED/xemacs-19.14/lisp/
2761 $LOCAL/xemacs-19.14/etc@ -> $SHARED/xemacs-19.14/etc/
2762 $LOCAL/xemacs-19.14/info@ -> $SHARED/xemacs-19.14/info/
2763
2764 The following would also work, but the above is probably more attractive:
2765
2766 $LOCAL/bin/xemacs*
2767 $LOCAL/bin/lisp@ -> $SHARED/xemacs-19.14/lisp/
2768 $LOCAL/bin/etc@ -> $SHARED/xemacs-19.14/etc/
2769 $LOCAL/bin/info@ -> $SHARED/xemacs-19.14/info/
2770
2771 If Emacs can't find the requisite directories, it writes a message like this
2772 (or some appropriate subset of it) to stderr:
2773
2774 WARNING:
2775 couldn't find an obvious default for load-path, exec-directory, and
2776 lock-directory, and there were no defaults specified in paths.h when
2777 Emacs was built. Perhaps some directories don't exist, or the Emacs
2778 executable, /cadillac-th/jwz/somewhere/xemacs is in a strange place?
2779
2780 Without both exec-directory and load-path, Emacs will be very broken.
2781 Consider making a symbolic link from /cadillac-th/jwz/somewhere/etc
2782 to wherever the appropriate Emacs etc/ directory is, and from
2783 /cadillac-th/jwz/somewhere/lisp/ to wherever the appropriate Emacs
2784 lisp library is.
2785
2786 Without lock-directory set, file locking won't work. Consider
2787 creating /cadillac-th/jwz/somewhere/lock as a directory or symbolic
2788 link for use as the lock directory.
2789
2790 The default installation tree is the following:
2791
2792 /usr/local/bin/b2m ;
2793 ctags ; executables that
2794 emacsclient ; should be in
2795 etags ; user's path
2796 xemacs -> xemacs-<version> ;
2797 xemacs ;
2798 /usr/local/lib/xemacs/site-lisp
2799 /usr/local/lib/xemacs/lock
2800 /usr/local/lib/xemacs-<version>/etc ; architecture ind. files
2801 /usr/local/lib/xemacs-<version>/info
2802 /usr/local/lib/xemacs-<version>/lisp
2803 /usr/local/lib/xemacs-<version>/<configuration> ; binaries emacs may run
2804
2805
2806 *** X Resources
2807 ---------------
2808
2809 (Note: This section is copied verbatim from the XEmacs Reference Manual.)
2810
2811 The Emacs resources are generally set per-frame. Each Emacs frame
2812 can have its own name or the same name as another, depending on the
2813 name passed to the `make-frame' function.
2814
2815 You can specify resources for all frames with the syntax:
2816
2817 Emacs*parameter: value
2818
2819 or
2820
2821 Emacs*EmacsFrame.parameter:value
2822
2823 You can specify resources for a particular frame with the syntax:
2824
2825 Emacs*FRAME-NAME.parameter: value
2826
2827
2828 **** Geometry Resources
2829 -----------------------
2830
2831 To make the default size of all Emacs frames be 80 columns by 55
2832 lines, do this:
2833
2834 Emacs*EmacsFrame.geometry: 80x55
2835
2836 To set the geometry of a particular frame named `fred', do this:
2837
2838 Emacs*fred.geometry: 80x55
2839
2840 Important! Do not use the following syntax:
2841
2842 Emacs*geometry: 80x55
2843
2844 You should never use `*geometry' with any X application. It does not
2845 say "make the geometry of Emacs be 80 columns by 55 lines." It really
2846 says, "make Emacs and all subwindows thereof be 80x55 in whatever units
2847 they care to measure in." In particular, that is both telling the
2848 Emacs text pane to be 80x55 in characters, and telling the menubar pane
2849 to be 80x55 pixels, which is surely not what you want.
2850
2851 As a special case, this geometry specification also works (and sets
2852 the default size of all Emacs frames to 80 columns by 55 lines):
2853
2854 Emacs.geometry: 80x55
2855
2856 since that is the syntax used with most other applications (since most
2857 other applications have only one top-level window, unlike Emacs). In
2858 general, however, the top-level shell (the unmapped ApplicationShell
2859 widget named `Emacs' that is the parent of the shell widgets that
2860 actually manage the individual frames) does not have any interesting
2861 resources on it, and you should set the resources on the frames instead.
2862
2863 The `-geometry' command-line argument sets only the geometry of the
2864 initial frame created by Emacs.
2865
2866 A more complete explanation of geometry-handling is
2867
2868 * The `-geometry' command-line option sets the `Emacs.geometry'
2869 resource, that is, the geometry of the ApplicationShell.
2870
2871 * For the first frame created, the size of the frame is taken from
2872 the ApplicationShell if it is specified, otherwise from the
2873 geometry of the frame.
2874
2875 * For subsequent frames, the order is reversed: First the frame, and
2876 then the ApplicationShell.
2877
2878 * For the first frame created, the position of the frame is taken
2879 from the ApplicationShell (`Emacs.geometry') if it is specified,
2880 otherwise from the geometry of the frame.
2881
2882 * For subsequent frames, the position is taken only from the frame,
2883 and never from the ApplicationShell.
2884
2885 This is rather complicated, but it does seem to provide the most
2886 intuitive behavior with respect to the default sizes and positions of
2887 frames created in various ways.
2888
2889
2890 **** Iconic Resources
2891 ---------------------
2892
2893 Analogous to `-geometry', the `-iconic' command-line option sets the
2894 iconic flag of the ApplicationShell (`Emacs.iconic') and always applies
2895 to the first frame created regardless of its name. However, it is
2896 possible to set the iconic flag on particular frames (by name) by using
2897 the `Emacs*FRAME-NAME.iconic' resource.
2898
2899
2900 **** Resource List
2901 ------------------
2902
2903 Emacs frames accept the following resources:
2904
2905 `geometry' (class `Geometry'): string
2906 Initial geometry for the frame. *Note Geometry Resources:: for a
2907 complete discussion of how this works.
2908
2909 `iconic' (class `Iconic'): boolean
2910 Whether this frame should appear in the iconified state.
2911
2912 `internalBorderWidth' (class `InternalBorderWidth'): int
2913 How many blank pixels to leave between the text and the edge of the
2914 window.
2915
2916 `interline' (class `Interline'): int
2917 How many pixels to leave between each line (may not be
2918 implemented).
2919
2920 `menubar' (class `Menubar'): boolean
2921 Whether newly-created frames should initially have a menubar. Set
2922 to true by default.
2923
2924 `initiallyUnmapped' (class `InitiallyUnmapped'): boolean
2925 Whether XEmacs should leave the initial frame unmapped when it
2926 starts up. This is useful if you are starting XEmacs as a server
2927 (e.g. in conjunction with gnuserv or the external client widget).
2928 You can also control this with the `-unmapped' command-line option.
2929
2930 `barCursor' (class `BarColor'): boolean
2931 Whether the cursor should be displayed as a bar, or the
2932 traditional box.
2933
2934 `textPointer' (class `Cursor'): cursor-name
2935 The cursor to use when the mouse is over text. This resource is
2936 used to initialize the variable `x-pointer-shape'.
2937
2938 `selectionPointer' (class `Cursor'): cursor-name
2939 The cursor to use when the mouse is over a selectable text region
2940 (an extent with the `highlight' property; for example, an Info
2941 cross-reference). This resource is used to initialize the variable
2942 `x-selection-pointer-shape'.
2943
2944 `spacePointer' (class `Cursor'): cursor-name
2945 The cursor to use when the mouse is over a blank space in a buffer
2946 (that is, after the end of a line or after the end-of-file). This
2947 resource is used to initialize the variable
2948 `x-nontext-pointer-shape'.
2949
2950 `modeLinePointer' (class `Cursor'): cursor-name
2951 The cursor to use when the mouse is over a mode line. This
2952 resource is used to initialize the variable `x-mode-pointer-shape'.
2953
2954 `gcPointer' (class `Cursor'): cursor-name
2955 The cursor to display when a garbage-collection is in progress.
2956 This resource is used to initialize the variable
2957 `x-gc-pointer-shape'.
2958
2959 `scrollbarPointer' (class `Cursor'): cursor-name
2960 The cursor to use when the mouse is over the scrollbar. This
2961 resource is used to initialize the variable
2962 `x-scrollbar-pointer-shape'.
2963
2964 `pointerColor' (class `Foreground'): color-name
2965 `pointerBackground' (class `Background'): color-name
2966 The foreground and background colors of the mouse cursor. These
2967 resources are used to initialize the variables
2968 `x-pointer-foreground-color' and `x-pointer-background-color'.
2969
2970 `scrollBarWidth' (class `ScrollBarWidth'): integer
2971 How wide the vertical scrollbars should be, in pixels; 0 means no
2972 vertical scrollbars. You can also use a resource specification of
2973 the form `*scrollbar.width', or the usual toolkit scrollbar
2974 resources: `*XmScrollBar.width' (Motif), `*XlwScrollBar.width'
2975 (Lucid), or `*Scrollbar.thickness' (Athena). We don't recommend
2976 that you use the toolkit resources, though, because they're
2977 dependent on how exactly your particular build of XEmacs was
2978 configured.
2979
2980 `scrollBarHeight' (class `ScrollBarHeight'): integer
2981 How high the horizontal scrollbars should be, in pixels; 0 means no
2982 horizontal scrollbars. You can also use a resource specification
2983 of the form `*scrollbar.height', or the usual toolkit scrollbar
2984 resources: `*XmScrollBar.height' (Motif), `*XlwScrollBar.height'
2985 (Lucid), or `*Scrollbar.thickness' (Athena). We don't recommend
2986 that you use the toolkit resources, though, because they're
2987 dependent on how exactly your particular build of XEmacs was
2988 configured.
2989
2990 `scrollBarPlacement' (class `ScrollBarPlacement'): string
2991 Where the horizontal and vertical scrollbars should be positioned.
2992 This should be one of the four strings `bottom-left',
2993 `bottom-right', `top-left', and `top-right'. Default is
2994 `bottom-right' for the Motif and Lucid scrollbars and
2995 `bottom-left' for the Athena scrollbars.
2996
2997 `topToolBarHeight' (class `TopToolBarHeight'): integer
2998 `bottomToolBarHeight' (class `BottomToolBarHeight'): integer
2999 `leftToolBarWidth' (class `LeftToolBarWidth'): integer
3000 `rightToolBarWidth' (class `RightToolBarWidth'): integer
3001 Height and width of the four possible toolbars.
3002
3003 `topToolBarShadowColor' (class `TopToolBarShadowColor'): color-name
3004 `bottomToolBarShadowColor' (class `BottomToolBarShadowColor'): color-name
3005 Color of the top and bottom shadows for the toolbars. NOTE: These
3006 resources do *not* have anything to do with the top and bottom
3007 toolbars (i.e. the toolbars at the top and bottom of the frame)!
3008 Rather, they affect the top and bottom shadows around the edges of
3009 all four kinds of toolbars.
3010
3011 `topToolBarShadowPixmap' (class `TopToolBarShadowPixmap'): pixmap-name
3012 `bottomToolBarShadowPixmap' (class `BottomToolBarShadowPixmap'): pixmap-name
3013 Pixmap of the top and bottom shadows for the toolbars. If set,
3014 these resources override the corresponding color resources. NOTE:
3015 These resources do *not* have anything to do with the top and
3016 bottom toolbars (i.e. the toolbars at the top and bottom of the
3017 frame)! Rather, they affect the top and bottom shadows around the
3018 edges of all four kinds of toolbars.
3019
3020 `toolBarShadowThickness' (class `ToolBarShadowThickness'): integer
3021 Thickness of the shadows around the toolbars, in pixels.
3022
3023 `visualBell' (class `VisualBell'): boolean
3024 Whether XEmacs should flash the screen rather than making an
3025 audible beep.
3026
3027 `bellVolume' (class `BellVolume'): integer
3028 Volume of the audible beep.
3029
3030 `useBackingStore' (class `UseBackingStore'): boolean
3031 Whether XEmacs should set the backing-store attribute of the X
3032 windows it creates. This increases the memory usage of the X
3033 server but decreases the amount of X traffic necessary to update
3034 the screen, and is useful when the connection to the X server goes
3035 over a low-bandwidth line such as a modem connection.
3036
3037
3038 **** Face Resources
3039 -------------------
3040
3041 The attributes of faces are also per-frame. They can be specified as:
3042
3043 Emacs.FACE_NAME.parameter: value
3044
3045 (*do not* use `Emacs*FACE_NAME...')
3046
3047 or
3048
3049 Emacs*FRAME_NAME.FACE_NAME.parameter: value
3050
3051 Faces accept the following resources:
3052
3053 `attributeFont' (class `AttributeFont'): font-name
3054 The font of this face.
3055
3056 `attributeForeground' (class `AttributeForeground'): color-name
3057 `attributeBackground' (class `AttributeBackground'): color-name
3058 The foreground and background colors of this face.
3059
3060 `attributeBackgroundPixmap' (class `AttributeBackgroundPixmap'): file-name
3061 The name of an XBM file (or XPM file, if your version of Emacs
3062 supports XPM), to use as a background stipple.
3063
3064 `attributeUnderline' (class `AttributeUnderline'): boolean
3065 Whether text in this face should be underlined.
3066
3067 All text is displayed in some face, defaulting to the face named
3068 `default'. To set the font of normal text, use
3069 `Emacs*default.attributeFont'. To set it in the frame named `fred', use
3070 `Emacs*fred.default.attributeFont'.
3071
3072 These are the names of the predefined faces:
3073
3074 `default'
3075 Everything inherits from this.
3076
3077 `bold'
3078 If this is not specified in the resource database, Emacs tries to
3079 find a bold version of the font of the default face.
3080
3081 `italic'
3082 If this is not specified in the resource database, Emacs tries to
3083 find an italic version of the font of the default face.
3084
3085 `bold-italic'
3086 If this is not specified in the resource database, Emacs tries to
3087 find a bold-italic version of the font of the default face.
3088
3089 `modeline'
3090 This is the face that the modeline is displayed in. If not
3091 specified in the resource database, it is determined from the
3092 default face by reversing the foreground and background colors.
3093
3094 `highlight'
3095 This is the face that highlighted extents (for example, Info
3096 cross-references and possible completions, when the mouse passes
3097 over them) are displayed in.
3098
3099 `left-margin'
3100 `right-margin'
3101 These are the faces that the left and right annotation margins are
3102 displayed in.
3103
3104 `zmacs-region'
3105 This is the face that mouse selections are displayed in.
3106
3107 `text-cursor'
3108 This is the face that the cursor is displayed in.
3109
3110 `isearch'
3111 This is the face that the matched text being searched for is
3112 displayed in.
3113
3114 `info-node'
3115 This is the face of info menu items. If unspecified, it is copied
3116 from `bold-italic'.
3117
3118 `info-xref'
3119 This is the face of info cross-references. If unspecified, it is
3120 copied from `bold'. (Note that, when the mouse passes over a
3121 cross-reference, the cross-reference's face is determined from a
3122 combination of the `info-xref' and `highlight' faces.)
3123
3124 Other packages might define their own faces; to see a list of all
3125 faces, use any of the interactive face-manipulation commands such as
3126 `set-face-font' and type `?' when you are prompted for the name of a
3127 face.
3128
3129 If the `bold', `italic', and `bold-italic' faces are not specified
3130 in the resource database, then XEmacs attempts to derive them from the
3131 font of the default face. It can only succeed at this if you have
3132 specified the default font using the XLFD (X Logical Font Description)
3133 format, which looks like
3134
3135 *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
3136
3137 If you use any of the other, less strict font name formats, some of
3138 which look like
3139
3140 lucidasanstypewriter-12
3141 fixed
3142 9x13
3143
3144 then XEmacs won't be able to guess the names of the bold and italic
3145 versions. All X fonts can be referred to via XLFD-style names, so you
3146 should use those forms. See the man pages for `X(1)', `xlsfonts(1)',
3147 and `xfontsel(1)'.
3148
3149
3150 **** Widgets
3151 ------------
3152
3153 There are several structural widgets between the terminal EmacsFrame
3154 widget and the top level ApplicationShell; the exact names and types of
3155 these widgets change from release to release (for example, they changed
3156 in 19.9, 19.10, 19.12, and 19.13) and are subject to further change in
3157 the future, so you should avoid mentioning them in your resource database.
3158 The above-mentioned syntaxes should be forward-compatible. As of 19.14,
3159 the exact widget hierarchy is as follows:
3160
3161 INVOCATION-NAME "shell" "container" FRAME-NAME
3162 x-emacs-application-class "TopLevelEmacsShell" "EmacsManager" "EmacsFrame"
3163
3164 (for normal frames)
3165
3166 or
3167
3168 INVOCATION-NAME "shell" "container" FRAME-NAME
3169 x-emacs-application-class "TransientEmacsShell" "EmacsManager" "EmacsFrame"
3170
3171 (for popup/dialog-box frames)
3172
3173 where INVOCATION-NAME is the terminal component of the name of the
3174 XEmacs executable (usually `xemacs'), and `x-emacs-application-class'
3175 is generally `Emacs'.
3176
3177
3178 **** Menubar Resources
3179 ----------------------
3180
3181 As the menubar is implemented as a widget which is not a part of
3182 XEmacs proper, it does not use the face mechanism for specifying fonts
3183 and colors: It uses whatever resources are appropriate to the type of
3184 widget which is used to implement it.
3185
3186 If Emacs was compiled to use only the Motif-lookalike menu widgets,
3187 then one way to specify the font of the menubar would be
3188
3189 Emacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
3190
3191 If the Motif library is being used, then one would have to use
3192
3193 Emacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-*
3194
3195 because the Motif library uses the `fontList' resource name instead
3196 of `font', which has subtly different semantics.
3197
3198 The same is true of the scrollbars: They accept whichever resources
3199 are appropriate for the toolkit in use.
3200
3201
3202 *** Source Code Highlighting
3203 ----------------------------
3204
3205 It's possible to have your buffers "decorated" with fonts or colors
3206 indicating syntactic structures (such as strings, comments, function names,
3207 "reserved words", etc.). In XEmacs, the preferred way to do this is with
3208 font-lock-mode; activate it by adding the following code to your .emacs file:
3209
3210 (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock)
3211 (add-hook 'c-mode-hook 'turn-on-font-lock)
3212 (add-hook 'c++-mode-hook 'turn-on-font-lock)
3213 (add-hook 'dired-mode-hook 'turn-on-font-lock)
3214 ...etc...
3215
3216 To customize it, see the descriptions of the function `font-lock-mode' and
3217 the variables `font-lock-keywords', `c-font-lock-keywords', etc.
3218
3219 There exist several other source code highlighting packages, but font-lock
3220 does one thing that most others don't do: highlights as you type new text;
3221 and one thing that no others do: bases part of its decoration on the
3222 syntax table of the major mode. Font-lock has C-level support to do this
3223 efficiently, so it should also be significantly faster than the others.
3224
3225 If there's something that another highlighting package does that you can't
3226 make font-lock do, let us know. We would prefer to consolidate all of the
3227 desired functionality into one package rather than ship several different
3228 packages which do essentially the same thing in different ways.
3229
3230
3231 ** Differences Between XEmacs and Emacs 18
3232 ==========================================
3233
3234 Auto-configure support has been added, so it should be fairly easy to compile
3235 XEmacs on different systems. If you have any problems or feedback about
3236 compiling on your system, please let us know.
3237
3238 We have reimplemented the basic input model in a more general way; instead of
3239 X input being a special-case of the normal ASCII input stream, XEmacs has a
3240 concept of "input events", and ASCII characters are a subset of that. The
3241 events that XEmacs knows about are not X events, but are a generalization of
3242 them, so that XEmacs can eventually be ported to different window systems.
3243
3244 We have reimplemented keymaps so that sequences of events can be stored into
3245 them instead of just ASCII codes; it is possible to, for example, bind
3246 different commands to each of the chords Control-h, Control-H, Backspace,
3247 Control-Backspace, and Super-Shift-Backspace. Key bindings, function key
3248 bindings, and mouse bindings live in the same keymaps.
3249
3250 Input and display of all ISO-8859-1 characters is supported.
3251
3252 You can have multiple X windows ("frames" in XEmacs terminology).
3253
3254 XEmacs has objects called "extents" and "faces", which are roughly
3255 analogous to Epoch's "buttons," "zones," and "styles." An extent is a
3256 region of text (a start position and an end position) and a face is a
3257 collection of textual attributes like fonts and colors. Every extent
3258 is displayed in some "face", so changing the properties of a face
3259 immediately updates the display of all associated extents. Faces can
3260 be frame-local: you can have a region of text which displays with
3261 completely different attributes when its buffer is viewed from a
3262 different X window.
3263
3264 The display attributes of faces may be specified either in lisp or through
3265 the X resource manager.
3266
3267 Pixmaps of arbitrary size can be embedded in a buffer.
3268
3269 Variable width fonts work.
3270
3271 The height of a line is the height of the tallest font on that line, instead
3272 of all lines having the same height.
3273
3274 XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which
3275 makes it be a more well-behaved X citizen (and also improves
3276 portability). A result of this is that it is possible to include
3277 other Xt "Widgets" in the XEmacs window. Also, XEmacs understands the
3278 standard Xt command-line arguments.
3279
3280 XEmacs understands the X11 "Selection" mechanism; it's possible to define
3281 and customize selection converter functions and new selection types from
3282 Emacs Lisp, without having to recompile XEmacs.
3283
3284 XEmacs provides support for ToolTalk on systems that have it.
3285
3286 XEmacs supports the Zmacs/Lispm style of region highlighting, where the
3287 region between the point and mark is highlighted when in its "active" state.
3288
3289 XEmacs has a menubar, whose contents are customizable from emacs-lisp.
3290 This menubar looks Motif-ish, but does not require Motif. If you already
3291 own Motif, however, you can configure XEmacs to use a *real* Motif menubar
3292 instead.
3293
3294 XEmacs can ask questions using popup dialog boxes. Any command executed from
3295 a menu will ask yes/no questions with dialog boxes, while commands executed
3296 via the keyboard will use the minibuffer.
3297
3298 XEmacs has vertical and horizontal scrollbars.
3299
3300 The initial load-path is computed at run-time, instead of at compile-time.
3301 This means that if you move the XEmacs executable and associated directories
3302 to somewhere else, you don't have to recompile anything.
3303
3304 You can specify what the title of the XEmacs windows and icons should be
3305 with the variables `frame-title-format' and `frame-icon-title-format',
3306 which have the same syntax as `mode-line-format'.
3307
3308 XEmacs now supports floating-point numbers.
3309
3310 XEmacs now knows about timers directly, instead of them being simulated by
3311 a subprocess.
3312
3313 XEmacs understands truenames, and can be configured to notice when you are
3314 visiting two names of the same file. See the variables find-file-use-truenames
3315 and find-file-compare-truenames.
3316
3317 If you're running on a machine with audio hardware, you can specify sound
3318 files for XEmacs to play instead of the default X beep. See the documentation
3319 of the function load-sound-file and the variable sound-alist.
3320
3321 An XEmacs frame can be placed within an "external client widget" managed by
3322 another application. This allows an application to use an XEmacs frame as its
3323 text pane rather than the standard Text widget that is provided with Motif or
3324 Athena. XEmacs supports Motif applications, generic Xt (e.g. Athena)
3325 applications, and raw Xlib applications.
3326
3327 Random changes to the emacs-lisp library: (some of this was not written by
3328 us, but is included because it's free software and we think it's good stuff)
3329
3330 - there is a new optimizing byte-compiler
3331 - there is a new abbrev-based mail-alias mechanism
3332 - the -*- line can contain local-variable settings
3333 - there is a new TAGS package
3334 - there is a new VI-emulation mode (viper)
3335 - there is a new implementation of Dired
3336 - there is a new implementation of Isearch
3337 - the VM package for reading mail is provided
3338 - the W3 package for browsing the World Wide Web hypertext information
3339 system is provided
3340 - the Hyperbole package, a programmable information management and
3341 hypertext system
3342 - the OO-Browser package, a multi-language object-oriented browser
3343
3344 There are many more specifics in the "Miscellaneous Changes" section, below.
3345
3346 The online Emacs Manual and Emacs-Lisp Manual are now both relatively
3347 up-to-date.