Mercurial > hg > xemacs-beta
comparison etc/NEWS @ 371:cc15677e0335 r21-2b1
Import from CVS: tag r21-2b1
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:03:08 +0200 |
parents | a4f53d9b3154 |
children | 6240c7796c7a |
comparison
equal
deleted
inserted
replaced
370:bd866891f083 | 371:cc15677e0335 |
---|---|
28 this program or to its predecessors "Era" and "Lucid Emacs". The | 28 this program or to its predecessors "Era" and "Lucid Emacs". The |
29 predecessor of all these program is called "Emacs 18". When no | 29 predecessor of all these program is called "Emacs 18". When no |
30 particular version is implied, "Emacs" will be used. | 30 particular version is implied, "Emacs" will be used. |
31 | 31 |
32 | 32 |
33 * Changes in XEmacs 21.2 | |
34 ======================== | |
35 None yet. | |
36 | |
33 * Changes in XEmacs 21.0 | 37 * Changes in XEmacs 21.0 |
34 ======================== | 38 ======================== |
35 | 39 |
36 ** XEmacs has been unbundled into constituent installable packages. | 40 ** XEmacs has been unbundled into constituent installable packages. |
37 See the Info documentation under "Packages" for more information. | 41 See the Info documentation under "Packages" for more information. |
38 See the file `etc/PACKAGES' in the distribution for a partial list of | 42 See the file `etc/PACKAGES' in the distribution for a partial list of |
39 packages available at the time of the 21.0 release. | 43 packages available at the time of the 21.0 release. |
40 | |
41 IMPORTANT NOTE: XEmacs currently expects the user-specific package | |
42 hierarchy in ~/.xemacs. This will probably change to | |
43 ~/.xemacs/packages in a future version of XEmacs. | |
44 | 44 |
45 ** XEmacs is now supported under Microsoft Windows 95/98 and Windows | 45 ** XEmacs is now supported under Microsoft Windows 95/98 and Windows |
46 NT operating systems. For starters, look at the XEmacs on Windows FAQ | 46 NT operating systems. For starters, look at the XEmacs on Windows FAQ |
47 at <URL:http://jagor.srce.hr/~hniksic/xemacs-on-windows-faq.txt>. To | 47 at <URL:http://jagor.srce.hr/~hniksic/xemacs-on-windows-faq.txt>. To |
48 discuss Windows-specific issues, subscribe to the mailing list at | 48 discuss Windows-specific issues, subscribe to the mailing list at |
61 .xemacs-options from your .emacs. | 61 .xemacs-options from your .emacs. |
62 | 62 |
63 ** When the Zmacs region is active, `M-x query-replace' and the other | 63 ** When the Zmacs region is active, `M-x query-replace' and the other |
64 replace commands now operate on the region contents only. | 64 replace commands now operate on the region contents only. |
65 | 65 |
66 ** XEmacs now is able to choose X visuals and use private colormaps. | 66 ** Using the new `-private' option, you can make XEmacs use a private |
67 The '-visual <visualStr>' command line option or the '.EmacsVisual' | 67 colormap. |
68 Xresource controls which visual XEmacs will use, and | |
69 '-privateColormap' or '.privateColormap' will force XEmacs to create a | |
70 private colormap for use. The syntax for the visual string is | |
71 "<visual><bitdepth>" where <visual> is one of 'StaticColor', | |
72 'TrueColor', 'GrayScale', 'PseudoColor' or 'DirectColor' and | |
73 <bitdepth> is the appropriate number of bits per pixel. If an invalid | |
74 or non-supported combination is entered, XEmacs attempts to find a happy | |
75 medium. The X creation mechanism will then determine if it needs to | |
76 create a colormap for use, or the presence of the private flags will | |
77 force it to create it. | |
78 | 68 |
79 ** The `imenu' package has been ported to XEmacs and is available as a | 69 ** The `imenu' package has been ported to XEmacs and is available as a |
80 package. | 70 package. |
81 | 71 |
82 ** `echo-keystrokes' can now be a floating-point number, so that you | 72 ** `echo-keystrokes' can now be a floating-point number, so that you |
99 when the function is called without arguments, it will return the | 89 when the function is called without arguments, it will return the |
100 value of the `user-full-name' variable. The `user-full-name' variable | 90 value of the `user-full-name' variable. The `user-full-name' variable |
101 is initialized using the environment variable NAME and (failing that) | 91 is initialized using the environment variable NAME and (failing that) |
102 the user's system name. | 92 the user's system name. |
103 | 93 |
104 The behavior of the `user-full-name' function with an argument | 94 The behaviour of the `user-full-name' function with an argument |
105 specified is unchanged. | 95 specified is unchanged. |
106 | 96 |
107 ** The new command `M-x customize-changed-options' lets you customize | 97 ** The new command `M-x customize-changed-options' lets you customize |
108 all the options whose default values have changed in recent Emacs | 98 all the options whose default values have changed in recent Emacs |
109 versions. You specify a previous Emacs version number as argument, | 99 versions. You specify a previous Emacs version number as argument, |
165 | 155 |
166 ** The package popper.el is now included in the edit-utils package. | 156 ** The package popper.el is now included in the edit-utils package. |
167 It has been greatly enhanced with respect to the one once included | 157 It has been greatly enhanced with respect to the one once included |
168 with the ilisp package and should work well under XEmacs 21.0. | 158 with the ilisp package and should work well under XEmacs 21.0. |
169 | 159 |
170 ** Gnuserv changes | |
171 | |
172 *** Like the old 'gnudoit' program. Gnuclient -batch now can read from stdin. | |
173 | |
174 *** Gnuclient -batch no longer breaks off the output at the first LF. | |
175 | |
176 ** C mode changes | 160 ** C mode changes |
177 | 161 |
178 *** Multiline macros are now handled, both as they affect indentation, | 162 *** Multiline macros are now handled, both as they affect indentation, |
179 and as recognized syntax. New syntactic symbol cpp-macro-cont is | 163 and as recognized syntax. New syntactic symbol cpp-macro-cont is |
180 assigned to second and subsequent lines of a multiline macro | 164 assigned to second and subsequent lines of a multiline macro |
314 | 298 |
315 ** The `dir' files are no longer essential for functioning of the Info | 299 ** The `dir' files are no longer essential for functioning of the Info |
316 subsystem. If the `dir' file does not exist in an Info directory, the | 300 subsystem. If the `dir' file does not exist in an Info directory, the |
317 relevant information will be generated on-the-fly. | 301 relevant information will be generated on-the-fly. |
318 | 302 |
319 This behavior can be customized, look for `Info-auto-generate-directory' | 303 This behaviour can be customized, look for `Info-auto-generate-directory' |
320 and `Info-save-auto-generated-dir' in the `info' customization group. | 304 and `Info-save-auto-generated-dir' in the `info' customization group. |
321 | 305 |
322 ** Version Control is no longer automatically loaded. Users must | |
323 add: | |
324 | |
325 (require 'vc-hooks) | |
326 | |
327 to their .emacs file to get version control functionality. | |
328 | |
329 ** The EDiff menus are no longer included in the default menubar. | |
330 Users must add: | |
331 | |
332 (require 'ediff-hook) | |
333 | |
334 to their .emacs file to get the menus. | |
335 | |
336 ** An experimental version of dynamic linking is supported. | |
337 | |
338 There is no documentation and we are making no guarantees about what | |
339 might change in the future with the "C" level API. Examples of how to | |
340 make DLLs are in the modules subdirectory of the XEmacs source | |
341 distribution. | |
342 | |
343 Please note that XEmacs is a GPL'ed program and there are restrictions | |
344 on what kinds of binaries that can be linked with it. In particular, | |
345 proprietary DLLs without source cannot be distributed. See the file | |
346 COPYING for more details. | |
347 | 306 |
348 * Lisp and internal changes in XEmacs 21.0 | 307 * Lisp and internal changes in XEmacs 21.0 |
349 ========================================== | 308 ========================================== |
350 | |
351 ** There is a new configure option '--with-clash-detection' to | |
352 enable/disable 'lockdir' based clash detection. (Actually, it has | |
353 been there since 20.4, but was not documented then). The | |
354 implementation based on a central locking directory can cause | |
355 severe slowdowns on networked file systems. Therefore the default | |
356 has been changed to build with clash detection disabled, pending | |
357 reimplementation of the feature (most likely compatible with the | |
358 new implementation in recent FSF verions and Interleaf) in an | |
359 upcoming version. | |
360 | 309 |
361 ** It is now possible to build XEmacs with support for 31-bit Lisp | 310 ** It is now possible to build XEmacs with support for 31-bit Lisp |
362 integers (normally, Lisp integers are only 28 bits wide on 32-bit | 311 integers (normally, Lisp integers are only 28 bits wide on 32-bit |
363 machines.) Configure with --use-minimal-tagbits to test. With this | 312 machines.) Configure with --use-minimal-tagbits to test. With this |
364 change, the maximum buffer size on 32-bit machines is increased from | 313 change, the maximum buffer size on 32-bit machines is increased from |
440 ** The arithmetic comparison functions <, >, =, /= now accept a | 389 ** The arithmetic comparison functions <, >, =, /= now accept a |
441 variable number of arguments. | 390 variable number of arguments. |
442 | 391 |
443 This means that if you want to test whether A < B < C, you can write | 392 This means that if you want to test whether A < B < C, you can write |
444 it as (< A B C) instead of (and (< A B) (< B C)). Likewise, | 393 it as (< A B C) instead of (and (< A B) (< B C)). Likewise, |
445 (apply #'> LIST) now tests if LIST is monotonically increasing -- and | 394 (apply #'> LIST) now tests if LIST is monotonously increasing -- and |
446 so on. | 395 so on. |
447 | 396 |
448 ** The XEmacs hashtables now have a consistent read/print syntax. | 397 ** The XEmacs hashtables now have a consistent read/print syntax. |
449 This means that a hashtable will be readably printed in a | 398 This means that a hashtable will be readably printed in a |
450 structure-like form: | 399 structure-like form: |
463 ** It is now possible to build XEmacs with LDAP support. | 412 ** It is now possible to build XEmacs with LDAP support. |
464 You will need to install a LDAP library first. The following have | 413 You will need to install a LDAP library first. The following have |
465 been tested: | 414 been tested: |
466 - LDAP 3.3 from the University of Michigan | 415 - LDAP 3.3 from the University of Michigan |
467 (get it from <URL:http://www.umich.edu/~dirsvcs/ldap/>) | 416 (get it from <URL:http://www.umich.edu/~dirsvcs/ldap/>) |
468 - OpenLDAP 1.0.3 from the OpenLDAP Foundation | |
469 (get it from <URL:http://www.openldap.org/>) | |
470 - LDAP SDK 1.0 from Netscape Corp. | 417 - LDAP SDK 1.0 from Netscape Corp. |
471 (get it from <URL:http://developer.netscape.com/>) | 418 (get it from <URL:http://developer.netscape.com/>) |
472 | 419 |
473 ** When profiling is in effect, a call-count of all recorded functions | 420 ** When profiling is in effect, a call-count of all recorded functions |
474 is now calculated. This information is stored in | 421 is now calculated. This information is stored in |
548 ** The code XEmacs uses to assemble its various paths into the | 495 ** The code XEmacs uses to assemble its various paths into the |
549 directory hierarchy has been rewritten to support the package system. | 496 directory hierarchy has been rewritten to support the package system. |
550 Look under "Startup Paths" in the Info documentation for more | 497 Look under "Startup Paths" in the Info documentation for more |
551 information. | 498 information. |
552 | 499 |
553 *** site-lisp is no longer part of the load-path by default. | 500 *** site-lisp is now longer part of the load-path by default. |
554 Its use is deprecated, but you can specify --with-site-lisp=yes at the | 501 Its use is deprecated, but you can specify --with-site-lisp=yes at the |
555 configure command line to get it back. | 502 configure command line to get it back. |
556 | 503 |
557 *** `Info-default-directory-list' is now obsolete. If you want to | 504 *** `Info-default-directory-list' is now obsolete. If you want to |
558 change the path which XEmacs uses to search for info files, set | 505 change the path which XEmacs uses to search for info files, set |
559 `Info-directory-list' instead. | 506 `Info-directory-list' instead. |
560 | |
561 | |
562 * Changes in XEmacs 20.4 | |
563 ======================== | |
564 | |
565 ** XEmacs 20.4 is a bugfix release with no user-visible changes. | |
566 | |
567 | |
568 * Changes in XEmacs 20.3 | |
569 ======================== | |
570 | |
571 ** Quail input method is now available. | |
572 | |
573 Quail is a simple key-translation system that allows users to input | |
574 any multilingual text from normal ASCII keyboard. This means that | |
575 XEmacs with Mule now supports a number of European languages. | |
576 | |
577 ** More Windows NT support. | |
578 | |
579 Thanks to efforts of many people, coordinated by David Hobley | |
580 <davidh@wr.com.au> and Marc Paquette <marcpa@cam.org>, beta versions | |
581 of XEmacs now run on 32-bit Windows platforms (Windows NT and Windows | |
582 95). The current betas require having an X server to run XEmacs; | |
583 however, a native NT/95 port is in alpha, thanks to Jonathan Harris | |
584 <jhar@tardis.ed.ac.uk>. | |
585 | |
586 The NT development is now coordinated by a mailing list at | |
587 <xemacs-nt@xemacs.org>. Mail to <xemacs-nt-request@xemacs.org> to | |
588 subscribe. | |
589 | |
590 ** Multiple TTY frames are now available. | |
591 | |
592 On consoles that display only one frame at a time (e.g. TTY consoles), | |
593 creating a new frame with `C-x 5 2' also raises and selects that | |
594 frame. The behavior of window system frames is unchanged. | |
595 | |
596 ** Package starting changes. | |
597 | |
598 State of Emacs should never be changed with loading a package. The | |
599 following XEmacs packages that used to break this have been changed. | |
600 | |
601 *** Loading `paren' no longer enables paren-blinking. Use | |
602 `paren-set-mode' explicitly, or customize `paren-mode'. | |
603 | |
604 *** Loading `uniquify' no longer enables uniquify. Set | |
605 `uniquify-buffer-name-style' to a legal value. | |
606 | |
607 *** Loading `time' no longer enables display time. Invoke | |
608 `display-time' explicitly. | |
609 | |
610 *** Loading `jka-compr' no longer enables on-the-fly compression. Use | |
611 `toggle-auto-compression' instead. | |
612 | |
613 *** Loading `id-select' no longer enables its behavior. Use | |
614 `id-select-install' instead. | |
615 | |
616 ** Zmacs region is not deactivated when an error is signaled. | |
617 | |
618 The behavior of the zmacs region can now be controlled in the event of | |
619 a signaled error. The new variable `errors-deactivate-region' may be | |
620 set to nil to revert to the old behavior. As before, typing C-g | |
621 deactivates the region. | |
622 | |
623 ** Multiple Info `dir' functionality has been merged with GNU Emacs | |
624 19.34. | |
625 | |
626 XEmacs will now correctly merge all the `dir' files in | |
627 `Info-directory-list' (initialized from either the `INFOPATH' | |
628 env. variable or `Info-default-directory-list'.) These files may be | |
629 full-fledged info files containing subnodes or menus. Previously | |
630 supported `localdir' files are looked for also, secondary to `dir's. | |
631 See the manual for details. | |
632 | |
633 ** Abbreviations can now contain non-word characters. | |
634 | |
635 This means that it is finally possible to do such simple things as | |
636 define `#in' to expand to `#include' in C mode, `s-c-b' to | |
637 `save-current-buffer' in Lisp mode, `call/cc' to | |
638 `call-with-current-continuation' in Scheme mode, etc. | |
639 | |
640 ** `C-x n d' now runs the new command `narrow-to-defun', | |
641 which narrows the accessible parts of the buffer to just | |
642 the current defun. | |
643 | |
644 ** The new command `C-x 4 0' (kill-buffer-and-window) kills the | |
645 current buffer and deletes the selected window. It asks for | |
646 confirmation first. | |
647 | |
648 ** `ESC ESC ESC' (keyboard-escape-quit) will now correctly abort | |
649 recursive edits (as documented.) | |
650 | |
651 ** arc-mode has a new function called `archive-quit' bound to q, which | |
652 quits archive mode in the same fashion dired-quit works. | |
653 | |
654 ** A `tetris' clone is now available within XEmacs, written by Glynn | |
655 Clements. Try it out with `M-x tetris'. | |
656 | |
657 ** The feature to teach the key bindings of extended commands now | |
658 prints the message after the command finishes. After some time, the | |
659 previous echo area contents are restored (in case the command prints | |
660 something useful). | |
661 | |
662 ** If you set scroll-conservatively to a small number, then when you | |
663 move point a short distance off the screen, XEmacs will scroll the | |
664 screen just far enough to bring point back on screen, provided that | |
665 does not exceed `scroll-conservatively' lines. | |
666 | |
667 ** Face background colors now take precedence over the default face | |
668 background pixmap, which means that background pixmaps no longer clash | |
669 with zmacs-regions, or clickable buttons. | |
670 | |
671 ** Regexps can now contain additional Perl-like constructs. | |
672 | |
673 ** Modifiers can be added to a keystroke by preceding it with a `C-x @ | |
674 <x>' sequence where <x> is one of letters `S', `c', `m', `a', `h', `s' | |
675 corresponding to shift, control, meta, alt, hyper, and super modifiers, | |
676 respectively. It is possible to add several modifiers by repeating this | |
677 sequence. This feature is especially useful on text terminals where it | |
678 allows one to enter keystrokes like, e.g., `M-home'. | |
679 | |
680 ** An arbitrary keystroke can be generated by entering `C-x @ k | |
681 <keysym-name> RET'. For example a sequence: | |
682 | |
683 C-x @ c C-x @ k b a c k s p a c e RET | |
684 | |
685 will result in a `C-backspace' keystroke even on text terminals. | |
686 | |
687 ** Customize changes. | |
688 | |
689 *** Customize has undergone a massive speedup, and should now operate | |
690 acceptably fast. Slowness of the interface used to be the biggest | |
691 gripe. | |
692 | |
693 *** Many more packages have been modified to use the facility, so | |
694 almost all of XEmacs options can now be examined through the Customize | |
695 groups. | |
696 | |
697 *** There is a new `browser' mode of traversing customizations, in | |
698 many ways easier to follow than the standard one. Try it out with | |
699 `M-x customize-browse'. | |
700 | |
701 ** Pending-delete changes. | |
702 | |
703 *** Pending-delete is now a minor mode, with the normal minor-mode | |
704 semantics and toggle functions. Old functions are left for | |
705 compatibility. | |
706 | |
707 *** Loading pending-del no longer turns on pending-delete mode. In | |
708 fact, it is no longer necessary to explicitly load pending-del. All | |
709 you need to do to turn on pending-delete is run the pending-delete | |
710 function: | |
711 | |
712 Within XEmacs: Type M-x pending-delete <ret> | |
713 not M-x load-library <ret> pending-delete <ret> | |
714 | |
715 In .emacs: Use (turn-on-pending-delete) | |
716 not (load "pending-del") | |
717 | |
718 ** XEmacs can now save the minibuffer histories from various | |
719 minibuffers. To use this feature, add the line: | |
720 | |
721 (savehist-load) | |
722 | |
723 to your .emacs. This will load the minibuffer histories (if any) at | |
724 startup, as well as instruct XEmacs to save them before exiting. You | |
725 can use Customize to add or remove the histories being saved. | |
726 | |
727 ** The default format for ChangeLog entries (as created by `C-x 4 a') | |
728 is now the international ISO 8601 format. | |
729 | |
730 To revert to the old behavior, use: | |
731 | |
732 (setq add-log-time-format 'current-time-string) | |
733 | |
734 Or `M-x customize RET add-log RET'. | |
735 | |
736 ** In ChangeLog mode, you can now press `C-c C-c' to save the file | |
737 and restore old window configuration, or `C-c C-k' to abandon the | |
738 changes. | |
739 | |
740 ** The key `C-x m' no longer runs the `mail' command directly. | |
741 Instead, it runs the command `compose-mail', which invokes the mail | |
742 composition mechanism you have selected with the variable | |
743 `mail-user-agent'. The default choice of user agent is | |
744 `sendmail-user-agent', which gives behavior compatible with the old | |
745 behavior. | |
746 | |
747 C-x 4 m now runs compose-mail-other-window, and C-x 5 m runs | |
748 compose-mail-other-frame. | |
749 | |
750 ** When you kill a buffer that visits a file, if there are any | |
751 registers that save positions in the file, these register values no | |
752 longer become completely useless. If you try to go to such a register | |
753 with `C-x j', then you are asked whether to visit the file again. If | |
754 you say yes, it visits the file and then goes to the same position. | |
755 | |
756 ** When you visit a file that changes frequently outside Emacs--for | |
757 example, a log of output from a process that continues to run--it may | |
758 be useful for Emacs to revert the file without querying you whenever | |
759 you visit the file afresh with `C-x C-f'. | |
760 | |
761 You can request this behavior for certain files by setting the | |
762 variable revert-without-query to a list of regular expressions. If a | |
763 file's name matches any of these regular expressions, find-file and | |
764 revert-buffer revert the buffer without asking for permission--but | |
765 only if you have not edited the buffer text yourself. | |
766 | |
767 ** Gnuserv changes | |
768 | |
769 *** The Lisp part of gnuserv has been rewritten to allow for more | |
770 flexibility and features. | |
771 | |
772 *** Many new options and variables are now customizable. Try | |
773 `M-x customize RET gnuserv RET'. | |
774 | |
775 *** The functionality of `gnuattach' and `gnudoit' programs is | |
776 provided by `gnuclient', which now accepts the standard `-nw', | |
777 `-display', `-eval' and `-f' options. | |
778 | |
779 ** Etags changes. | |
780 | |
781 *** In C, C++, Objective C and Java, Etags tags global variables by | |
782 default. The resulting tags files are inflated by 30% on average. | |
783 Use --no-globals to turn this feature off. Etags can also tag | |
784 variables that are members of structure-like constructs, but it does | |
785 not by default. Use --members to turn this feature on. | |
786 | |
787 *** C++ member functions are now recognized as tags. | |
788 | |
789 *** Java is tagged like C++. In addition, "extends" and "implements" | |
790 constructs are tagged. Files are recognised by the extension .java. | |
791 | |
792 *** Etags can now handle programs written in Postscript. Files are | |
793 recognised by the extensions .ps and .pdb (Postscript with C syntax). | |
794 In Postscript, tags are lines that start with a slash. | |
795 | |
796 *** Etags now handles Objective C and Objective C++ code. The usual C and | |
797 C++ tags are recognized in these languages; in addition, etags | |
798 recognizes special Objective C syntax for classes, class categories, | |
799 methods and protocols. | |
800 | |
801 *** Etags also handles Cobol. Files are recognised by the extension | |
802 .cobol. The tagged lines are those containing a word that begins in | |
803 column 8 and ends in a full stop, i.e. anything that could be a | |
804 paragraph name. | |
805 | |
806 *** Regexps in Etags now support intervals, as in ed or grep. The syntax of | |
807 an interval is \{M,N\}, and it means to match the preceding expression | |
808 at least M times and as many as N times. | |
809 | |
810 ** Ada mode changes. | |
811 | |
812 *** There is now better support for using find-file.el with Ada mode. | |
813 If you switch between spec and body, the cursor stays in the same | |
814 procedure (modulo overloading). If a spec has no body file yet, but | |
815 you try to switch to its body file, Ada mode now generates procedure | |
816 stubs. | |
817 | |
818 *** There are two new commands: | |
819 - `ada-make-local' : invokes gnatmake on the current buffer | |
820 - `ada-check-syntax' : check syntax of current buffer. | |
821 | |
822 The user options `ada-compiler-make', `ada-make-options', | |
823 `ada-language-version', `ada-compiler-syntax-check', and | |
824 `ada-compile-options' are used within these commands. | |
825 | |
826 *** Ada mode can now work with Outline minor mode. The outline level | |
827 is calculated from the indenting, not from syntactic constructs. | |
828 Outlining does not work if your code is not correctly indented. | |
829 | |
830 *** The new function `ada-gnat-style' converts the buffer to the style of | |
831 formatting used in GNAT. It places two blanks after a comment start, | |
832 places one blank between a word end and an opening '(', and puts one | |
833 space between a comma and the beginning of a word. | |
834 | |
835 ** New demand based locking implementation | |
836 | |
837 A faster, but experimental replacement for lazy-lock (called lazy-shot) is | |
838 provided. Like lazy-lock it provides demand based and idle time | |
839 font-lock-ing. However the lazy-lock versions that came with previous | |
840 versions slowed down XEmacs (possibly quite a lot). Lazy-shot solves | |
841 this problem by relying on new support from the C code part of XEmacs. | |
842 The support however is experimental and will cause some flashing as | |
843 parts of the buffer are colored. This likely to change in the future | |
844 as the C support is completed. | |
845 | |
846 The current lazy-shot implementation is mostly interface compatible | |
847 with lazy-lock v2.06 (the version shipped with XEmacs is v1.x). | |
848 | |
849 *** To enable: | |
850 1. Despite the flashing, lazy-shot was deemed such an improvement by | |
851 the majority of beta testers that it is now the standard method | |
852 provided by the options menu. Alternatively add | |
853 | |
854 (add-hook 'font-lock-mode-hook 'turn-on-lazy-shot) | |
855 | |
856 to '.emacs'. | |
857 2. If you were using lazy-lock before, just replace all occurrences of | |
858 "lazy-lock" by "lazy-shot" in your '.emacs' file. | |
859 | |
860 *** To disable: | |
861 | |
862 If prefer to use lazy-lock in stead of lazy-shot, put | |
863 | |
864 (remove-hook 'font-lock-mode-hook 'turn-on-lazy-shot) | |
865 (add-hook 'font-lock-mode-hook 'turn-on-lazy-lock) | |
866 | |
867 at the END of `.emacs'. | |
868 | |
869 ** RefTeX mode | |
870 | |
871 RefTeX mode is a new minor mode with special support for \label{}, \ref{} | |
872 and \cite{} macros in LaTeX documents. RefTeX distinguishes labels of | |
873 different environments (equation, figure, ...) and has full support for | |
874 multifile documents. To use it, select a buffer with a LaTeX document and | |
875 turn the mode on with M-x reftex-mode. Here are the main user commands: | |
876 | |
877 C-c ( reftex-label | |
878 Creates a label semi-automatically. RefTeX is context sensitive and | |
879 knows which kind of label is needed. | |
880 | |
881 C-c ) reftex-reference | |
882 Offers in a menu all labels in the document, along with context of the | |
883 label definition. The selected label is referenced as \ref{LABEL}. | |
884 | |
885 C-c [ reftex-citation | |
886 Prompts for a regular expression and displays a list of matching BibTeX | |
887 database entries. The selected entry is cited with a \cite{KEY} macro. | |
888 | |
889 C-c & reftex-view-crossref | |
890 Views the cross reference of a \ref{} or \cite{} command near point. | |
891 | |
892 C-c = reftex-toc | |
893 Shows a table of contents of the (multifile) document. From there you | |
894 can quickly jump to every section. | |
895 | |
896 Under X, RefTeX installs a "Ref" menu in the menu bar, with additional | |
897 commands. Full documentation and customization examples are in the file | |
898 reftex.el. You can use the finder to view this information: | |
899 C-h p --> tex --> reftex.el | |
900 | |
901 | |
902 * Lisp and internal changes in XEmacs 20.3 | |
903 ========================================== | |
904 | |
905 ** Autoconf 2 is supported, making XEmacs more conforming to | |
906 conventions used by other free software. | |
907 | |
908 ** `tty-erase-char' is a new variable that reports which character | |
909 was set up as the terminal's erase character at the time Emacs was | |
910 started. | |
911 | |
912 ** It is now possible to attach the menubar accelerator keys to menu | |
913 entries. Look at the Lispref under Menus->Menu Accelerators for | |
914 details. | |
915 | |
916 ** `insert-file-contents' can now read from a special file, | |
917 as long as the arguments VISIT and REPLACE are nil. | |
918 | |
919 ** `string-to-number' now accepts an optional BASE argument that | |
920 specifies which base to use. The default base is 10. | |
921 | |
922 ** The TIME argument to `format-time-string' is now optional and | |
923 defaults to the current time. | |
924 | |
925 ** The PATTERN argument to `split-string' is now optional and defaults | |
926 to whitespace ("[ \f\t\n\r\v]+"). | |
927 | |
928 ** `set-extent-properties' is a new function that can be used to | |
929 change properties of an extent at once, and is analogous to | |
930 `set-frame-properties'. | |
931 | |
932 ** If a format field width is specified as `*', the field width is | |
933 now assumed to have been specified as an argument (as in C.) | |
934 | |
935 (format "%*s" 10 "abc") | |
936 => " abc" | |
937 | |
938 ** The new macro `with-current-buffer' lets you evaluate an expression | |
939 conveniently with a different current buffer. It looks like this: | |
940 | |
941 (with-current-buffer BUFFER BODY-FORMS...) | |
942 | |
943 BUFFER is the expression that says which buffer to use. | |
944 BODY-FORMS say what to do in that buffer. | |
945 The old `eval-in-buffer' macro is obsoleted by `with-current-buffer'. | |
946 | |
947 ** The new primitive `save-current-buffer' saves and restores the | |
948 choice of current buffer, like `save-excursion', but without saving or | |
949 restoring the value of point or the mark. `with-current-buffer' | |
950 works using `save-current-buffer'. | |
951 | |
952 ** The new macro `with-temp-file' lets you do some work in a new buffer and | |
953 write the output to a specified file. Like `progn', it returns the value | |
954 of the last form. | |
955 | |
956 ** The variable `debug-ignored-errors' now works in XEmacs. It allows | |
957 one to ignore the debugger for some common errors, even when | |
958 `debug-on-error' is t. It has no effect when `debug-on-signal' is | |
959 non-nil. | |
960 | |
961 ** The new function `current-message' returns the message currently | |
962 displayed in the echo area, or nil if there is none. | |
963 | |
964 ** File-access primitive functions no longer discard an extra redundant | |
965 directory name from the beginning of the file name. In other words, | |
966 they no longer do anything special with // or /~. The same goes for | |
967 `expand-file-name'. That conversion is now done only in | |
968 `substitute-in-file-name'. | |
969 | |
970 This makes it possible for a Lisp program to open a file whose name | |
971 begins with ~. | |
972 | |
973 ** The regexp matcher has been extended to recognize the following | |
974 constructs, borrowed from Perl: | |
975 | |
976 *** Additional quantifiers. | |
977 | |
978 In addition to `*', `+' and `?', XEmacs now recognizes the following | |
979 quantifiers: | |
980 | |
981 \{n\} Match exactly n times | |
982 \{n,\} Match at least n times | |
983 \{n,m\} Match at least n but not more than m times | |
984 | |
985 *** Non-greedy quantifiers. | |
986 | |
987 Any of the standard quantifiers (`*', `+' and others) can now be | |
988 followed by an optional `?', which will make them become "non-greedy", | |
989 i.e. they will match as little text as possible. Note that the | |
990 meanings don't change, just the "gravity." | |
991 | |
992 *** Shy groups. | |
993 | |
994 The \(?: ... \) groups things like \( ... \), but doesn't record the | |
995 context for backreferences or future use. This is useful when you | |
996 need a lot of groups for the sake of priorities, but actually want to | |
997 record only one or two. | |
998 | |
999 ** The new function `regexp-opt' returns an efficient regexp to match | |
1000 a string. The arguments are STRINGS and (optionally) PAREN. This | |
1001 function can be used where regexp matching or searching is intensively | |
1002 used and speed is important, e.g., in Font Lock mode. | |
1003 | |
1004 ** The featurep syntax has been extended to resemble the Common Lisp | |
1005 one, as suggested by Erik Naggum. | |
1006 | |
1007 *** The `xemacs' feature is defined in XEmacs by default. | |
1008 | |
1009 *** The expression `#+fexp form' is equivalent to | |
1010 (when (featurep fexp) form), only it is evaluated at read-time. Also, | |
1011 `#-fexp form' is equivalent to (unless (featurep fexp) form). | |
1012 | |
1013 *** In addition to symbols, a FEXP can also be a number, or a logical | |
1014 operator. Here are some examples: | |
1015 ;; evaluates to non-nil on XEmacs: | |
1016 (featurep 'xemacs) | |
1017 ;; evaluates to non-nil on XEmacs 20.3 or later: | |
1018 (featurep '(and xemacs 20.03)) | |
1019 ;; evaluates to non-nil either on Emacs, or on XEmacs built without | |
1020 ;; X support: | |
1021 (featurep '(or emacs (and xemacs (not x)))) | |
1022 | |
1023 | |
1024 | |
1025 * Changes in XEmacs 20.2 | |
1026 ======================== | |
1027 | |
1028 ** Why XEmacs 20.1 is called 20.2 | |
1029 | |
1030 Testing of XEmacs 20.1 revealed a number of showstopping bugs at the | |
1031 very final moment. Instead of confusing the version numbers further, | |
1032 the `20.1' designation was abandoned, and the release was renamed to | |
1033 `20.2'. | |
1034 | |
1035 ** Delete/backspace keysyms have been separated | |
1036 | |
1037 The Delete and Backspace keysyms are now no longer identical. A better | |
1038 version of delbackspace.el has been added called delbs.el. | |
1039 | |
1040 ** XEmacs 20.0 MULE API supported for backwards compatibility | |
1041 | |
1042 XEmacs 20.2 primarily supports the MULE 3 API. It now also supports | |
1043 the XEmacs 20.0 MULE API. | |
1044 | |
1045 ** The logo has been changed, and the default background color is | |
1046 now a shade of gray instead of the eye-burning white. | |
1047 | |
1048 The sample .Xdefaults and .emacs files contain examples of how to | |
1049 revert to the old background color. | |
1050 | |
1051 ** Default modeline colors are now less of a color-salad. | |
1052 | |
1053 ** The `C-z' key now iconifies only the current X frame. You can use | |
1054 `C-x C-z' to get the old behavior. | |
1055 | |
1056 On the tty frames `C-z' behaves as before. | |
1057 | |
1058 ** The command `display-time' now draws a pretty image in the modeline | |
1059 when new mail arrives. It also supports balloon-help messages. | |
1060 | |
1061 ** Various commands that were previously disabled are now enabled, like | |
1062 eval-expression (`M-:') and upcase-region (`C-x C-u')/downcase-region | |
1063 (`C-x C-l'). | |
1064 | |
1065 ** It is now possible to customize the functions called by XEmacs toolbar. | |
1066 | |
1067 Type `M-x customize RET toolbar RET' to customize it. Customizations | |
1068 include the choice of functions for the buttons to invoke, as well as | |
1069 a wide choice of mailers and newsreaders to invoked by the respective | |
1070 functions. | |
1071 | |
1072 ** `temp-buffer-shrink-to-fit' now defaults to nil. | |
1073 | |
1074 There are unresolved issues regarding this feature, which is why the | |
1075 XEmacs developers decided to disable it by default. | |
1076 | |
1077 ** `ps-print-color-p' now defaults to nil. | |
1078 | |
1079 This is because the new default background color is non-white. The | |
1080 `Printing Options' in the `Options' menu now include an item that | |
1081 enables color printing, and sets the white background. | |
1082 | |
1083 ** `line-number-mode' should be used to get line numbers in the | |
1084 modeline, and `column-number-mode' to get column numbers. Line | |
1085 numbers now number from 1 by default. | |
1086 | |
1087 ** font-lock-mode will now correctly fontify `int a, b, c;' | |
1088 expressions in C mode. | |
1089 | |
1090 ** The blinking cursor is always "on" during movement. | |
1091 | |
1092 ** The XEmacs build process has been changed to make site | |
1093 administration easier. See lisp/site-load.el for details. | |
1094 | |
1095 ** Numerous causes of crashes have been fixed. XEmacs should now be | |
1096 even more stable than before. | |
1097 | |
1098 ** configure no longer defaults to using --with-xim=motif if Motif libraries | |
1099 are linked. | |
1100 | |
1101 There are many bugs in the Xlib XIM support in X11R6.3. | |
1102 | |
1103 ** A number of new packages are added, and many packages were | |
1104 updated. | |
1105 | |
1106 ** Gnus-5.4.52, courtesy of Lars Magne Ingebrigtsen | |
1107 | |
1108 *** nntp.el has been totally rewritten in an asynchronous fashion. | |
1109 | |
1110 *** Article prefetching functionality has been moved up into | |
1111 Gnus. | |
1112 | |
1113 *** Scoring can now be performed with logical operators like | |
1114 `and', `or', `not', and parent redirection. | |
1115 | |
1116 *** Article washing status can be displayed in the | |
1117 article mode line. | |
1118 | |
1119 *** gnus.el has been split into many smaller files. | |
1120 | |
1121 *** Suppression of duplicate articles based on Message-ID. | |
1122 | |
1123 (setq gnus-suppress-duplicates t) | |
1124 | |
1125 *** New variables for specifying what score and adapt files | |
1126 are to be considered home score and adapt files. See | |
1127 `gnus-home-score-file' and `gnus-home-adapt-files'. | |
1128 | |
1129 *** Groups can inherit group parameters from parent topics. | |
1130 | |
1131 *** Article editing has been revamped and is now usable. | |
1132 | |
1133 *** Signatures can be recognized in more intelligent fashions. | |
1134 See `gnus-signature-separator' and `gnus-signature-limit'. | |
1135 | |
1136 *** Summary pick mode has been made to look more nn-like. | |
1137 Line numbers are displayed and the `.' command can be | |
1138 used to pick articles. | |
1139 | |
1140 *** Commands for moving the .newsrc.eld from one server to | |
1141 another have been added. | |
1142 | |
1143 `M-x gnus-change-server' | |
1144 | |
1145 *** A way to specify that "uninteresting" fields be suppressed when | |
1146 generating lines in buffers. | |
1147 | |
1148 *** Several commands in the group buffer can be undone with | |
1149 `M-C-_'. | |
1150 | |
1151 *** Scoring can be done on words using the new score type `w'. | |
1152 | |
1153 *** Adaptive scoring can be done on a Subject word-by-word basis: | |
1154 | |
1155 (setq gnus-use-adaptive-scoring '(word)) | |
1156 | |
1157 *** Scores can be decayed. | |
1158 | |
1159 (setq gnus-decay-scores t) | |
1160 | |
1161 *** Scoring can be performed using a regexp on the Date header. The | |
1162 Date is normalized to compact ISO 8601 format first. | |
1163 | |
1164 *** A new command has been added to remove all data on articles from | |
1165 the native server. | |
1166 | |
1167 `M-x gnus-group-clear-data-on-native-groups' | |
1168 | |
1169 *** A new command for reading collections of documents | |
1170 (nndoc with nnvirtual on top) has been added -- `M-C-d'. | |
1171 | |
1172 *** Process mark sets can be pushed and popped. | |
1173 | |
1174 *** A new mail-to-news backend makes it possible to post | |
1175 even when the NNTP server doesn't allow posting. | |
1176 | |
1177 *** A new backend for reading searches from Web search engines | |
1178 (DejaNews, Alta Vista, InReference) has been added. | |
1179 | |
1180 Use the `G w' command in the group buffer to create such | |
1181 a group. | |
1182 | |
1183 *** Groups inside topics can now be sorted using the standard | |
1184 sorting functions, and each topic can be sorted independently. | |
1185 | |
1186 See the commands under the `T S' submap. | |
1187 | |
1188 *** Subsets of the groups can be sorted independently. | |
1189 | |
1190 See the commands under the `G P' submap. | |
1191 | |
1192 *** Cached articles can be pulled into the groups. | |
1193 | |
1194 Use the `Y c' command. | |
1195 | |
1196 *** Score files are now applied in a more reliable order. | |
1197 | |
1198 *** Reports on where mail messages end up can be generated. | |
1199 | |
1200 `M-x nnmail-split-history' | |
1201 | |
1202 *** More hooks and functions have been added to remove junk | |
1203 from incoming mail before saving the mail. | |
1204 | |
1205 See `nnmail-prepare-incoming-header-hook'. | |
1206 | |
1207 *** The nnml mail backend now understands compressed article files. | |
1208 | |
1209 ** Custom 1.86, courtesy of Per Abrahamsen | |
1210 | |
1211 The Customize library enables Emacs Lisp programmers to specify types | |
1212 of their variables, so that the users can customize them. | |
1213 | |
1214 Invoke the customizations buffer using the menus (Customize is at the | |
1215 top of the Options menu), or using commands `M-x customize', | |
1216 `M-x customize-variable' and `M-x customize-face'. Customize can save | |
1217 the changed settings to your `.emacs' file. | |
1218 | |
1219 Customize is now the preferred way to change XEmacs settings. Tens of | |
1220 packages have been converted to take advantage of the Customize | |
1221 features, including Gnus, Message, Supercite, Psgml, Comint, W3, | |
1222 cc-mode (and many other programming language modes), ispell.el, | |
1223 ps-print.el, id-select.el, most of the programming language modes, and | |
1224 many many more. | |
1225 | |
1226 See the "Lisp Changes" section later for a short description of why | |
1227 and how to add custom support to your Lisp packages. Custom is also | |
1228 documented in the XEmacs info manuals. | |
1229 | |
1230 ** W3-3.0.86, courtesy of William Perry | |
1231 | |
1232 Version 3 of Emacs/W3, the Emacs World Wide Web browser, has been | |
1233 included. It is significantly faster than any of the previous | |
1234 versions, and contains numerous new features. | |
1235 | |
1236 ** AUCTeX-9.7k, courtesy of Per Abrahamsen | |
1237 | |
1238 AUC TeX is a comprehensive customizable integrated environment for | |
1239 writing input files for LaTeX using Emacs. | |
1240 | |
1241 AUC TeX lets you run TeX/LaTeX and other LaTeX-related tools, such as | |
1242 a output filters or post processor from inside Emacs. Especially | |
1243 `running LaTeX' is interesting, as AUC TeX lets you browse through the | |
1244 errors TeX reported, while it moves the cursor directly to the | |
1245 reported error, and displays some documentation for that particular | |
1246 error. This will even work when the document is spread over several | |
1247 files. | |
1248 | |
1249 AUC TeX automatically indents your `LaTeX-source', not only as you | |
1250 write it -- you can also let it indent and format an entire document. | |
1251 It has a special outline feature, which can greatly help you `getting | |
1252 an overview' of a document. | |
1253 | |
1254 Apart from these special features, AUC TeX provides an large range of | |
1255 handy Emacs macros, which in several different ways can help you write | |
1256 your LaTeX documents fast and painless. | |
1257 | |
1258 ** redo.el-1.01, courtesy of Kyle Jones | |
1259 | |
1260 redo.el is a package that implements true redo mechanism in XEmacs | |
1261 buffers. Once you load it from your `.emacs', you can bind the `redo' | |
1262 command to a convenient key to use it. | |
1263 | |
1264 Emacs' normal undo system allows you to undo an arbitrary number of | |
1265 buffer changes. These undos are recorded as ordinary buffer changes | |
1266 themselves. So when you break the chain of undos by issuing some | |
1267 other command, you can then undo all the undos. The chain of recorded | |
1268 buffer modifications therefore grows without bound, truncated only at | |
1269 garbage collection time. | |
1270 | |
1271 The redo/undo system is different in two ways: | |
1272 | |
1273 *** The undo/redo command chain is only broken by a buffer modification. | |
1274 | |
1275 You can move around the buffer or switch buffers and still come back | |
1276 and do more undos or redos. | |
1277 | |
1278 *** The `redo' command rescinds the most recent undo without | |
1279 recording the change as a _new_ buffer change. | |
1280 | |
1281 It completely reverses the effect of the undo, which includes making | |
1282 the chain of buffer modification records shorter by one, to counteract | |
1283 the effect of the undo command making the record list longer by one. | |
1284 | |
1285 ** edmacro.el-3.10, courtesy of Dave Gillespie, ported to XEmacs by | |
1286 Hrvoje Niksic. | |
1287 | |
1288 Edmacro is a utility that provides easy editing of keyboard macros. | |
1289 Originally written by Dave Gillespie, it has been mostly rewritten by | |
1290 Hrvoje Niksic, in order to make it distinguish characters and integer, | |
1291 as well as to adapt it to XEmacs keysyms. | |
1292 | |
1293 Press `C-x C-k' to invoke the `edit-kbd-macro' command that lets you | |
1294 edit old as well as define new keyboard macros. You can also edit the | |
1295 last 100 keystrokes and insert them into a macro to be bound to a key | |
1296 or named as a command. The recorded/edited macros can be dumped to | |
1297 `.emacs' file. | |
1298 | |
1299 ** xmine.el-1.8, courtesy of Jens Lautenbacher | |
1300 | |
1301 XEmacs now includes a minesweeper game with a full-featured graphics | |
1302 and mouse interface. Invoke with `M-x xmine'. | |
1303 | |
1304 ** efs-1.15-x5 courtesy of Andy Norman and Michael Sperber | |
1305 | |
1306 EFS is now integrated with XEmacs, and replaces the old ange-ftp. It | |
1307 has many more features, including info documentation, support for many | |
1308 different FTP servers, and integration with dired. | |
1309 | |
1310 ** mic-paren.el-1.3.1, courtesy of Mikael Sjödin | |
1311 ** hyperbole-4.022, courtesy of Bob Weiner | |
1312 ** hm--html-menus-5.3, courtesy of Heiko Muenkel | |
1313 ** python-mode.el-2.90, courtesy of Barry Warsaw | |
1314 ** balloon-help-1.06, courtesy of Kyle Jones | |
1315 ** xrdb-mode.el-1.21, courtesy of Barry Warsaw | |
1316 ** igrep.el-2.56, courtesy of Kevin Rodgers | |
1317 ** frame-icon.el, courtesy of Michael Lamoureux and Bob Weiner | |
1318 ** itimer.el-1.05, courtesy of Kyle Jones | |
1319 ** VM-6.30, courtesy of Kyle Jones | |
1320 ** OO-Browser-2.10, courtesy of Bob Weiner | |
1321 ** viper-2.93, courtesy of Michael Kifer | |
1322 ** ediff-2.65, courtesy of Michael Kifer | |
1323 ** detached-minibuf-1.1, courtesy of Alvin Shelton | |
1324 ** whitespace-mode.el, courtesy of Heiko Muenkel | |
1325 ** winmgr-mode.el, courtesy of David Konerding, Stefan Strobel & Barry Warsaw | |
1326 ** fast-lock.el-3.11.01, courtesy of Simon Marshall | |
1327 ** lazy-lock.el-1.16, courtesy of Simon Marshall | |
1328 ** browse-cltl2.el-1.1, courtesy of Holger Schauer | |
1329 ** eldoc.el-1.10, courtesy of Noah Friedman | |
1330 ** tm-7.105, courtesy of MORIOKA Tomohiko | |
1331 ** verilog-mode.el-2.25, courtesy of Michael McNamara & Adrian Aichner | |
1332 ** overlay.el, courtesy of Joseph Nuspl | |
1333 ** live-icon.el-1.3, fixes courtesy of Karl Hegbloom | |
1334 ** tpu-edt.el, fixes courtesy of R. Kevin Oberman | |
1335 ** etags.c-11.86 Courtesy of F. Potortì | |
1336 | |
1337 | |
1338 * Lisp and internal changes in XEmacs 20.2 | |
1339 ========================================== | |
1340 | |
1341 ** `defcustom' and `defgroup' can now be used to specify types and | |
1342 placement of the user-settable variables. | |
1343 | |
1344 You can now specify the types of user-settable variables in your Lisp | |
1345 packages to be customized by users. To do so, use `defcustom' as a | |
1346 replacement for `defvar'. | |
1347 | |
1348 For example, the old declaration: | |
1349 | |
1350 (defvar foo-blurgoze nil | |
1351 "*non-nil means that foo will act very blurgozely.") | |
1352 | |
1353 can be rewritten as: | |
1354 | |
1355 (defcustom foo-blurgoze nil | |
1356 "*non-nil means that foo will act very blurgozely." | |
1357 :type 'boolean | |
1358 :group 'foo) | |
1359 | |
1360 From a package writer's point of view, nothing has been changed | |
1361 However, the user can now type `M-x customize RET foo-blurgoze RET' to | |
1362 customize the variable. | |
1363 | |
1364 Other, more complex data structures can be described with `defcustom' | |
1365 too, for instance: | |
1366 | |
1367 (defcustom foo-hairy-alist '((somekey . "somestring") | |
1368 (otherkey . (foo-doit)) | |
1369 (thirdkey . [1 2 3])) | |
1370 "*Alist describing the hairy options of the foo package. | |
1371 The CAR of each element is a symbol, whereas the CDR can be either a | |
1372 string, a form to evaluate, or a vector of integers. | |
1373 New Emacs users simply adore alists like this one." | |
1374 :type '(repeat (cons (symbol :tag "Key") | |
1375 (choice string | |
1376 (vector (repeat :inline t integer)) | |
1377 sexp))) | |
1378 :group 'foo) | |
1379 | |
1380 The user will be able to add and remove the entries to the list in a | |
1381 visually appealing way, as well as save the settings to his/her | |
1382 `.emacs'. | |
1383 | |
1384 Note that `defcustom' will also be included in GNU Emacs 19.35, and | |
1385 that both XEmacs and GNU Emacs will be using it in the future. | |
1386 Although the user-interface of customize may change, the Lisp | |
1387 interface will remain the same. This is why we recommend that you use | |
1388 `defcustom' for user-settable variables in your new Lisp packages. | |
1389 | |
1390 ** The `read-kbd-macro' function is now available. | |
1391 | |
1392 The `read-kbd-macro' function (as well as the read-time evaluated | |
1393 `kbd' macro) from the edmacro package is now available in XEmacs. For | |
1394 example: | |
1395 | |
1396 (define-key foo-mode-map (kbd "C-c <up>") 'foo-up) | |
1397 | |
1398 is completely equivalent to | |
1399 | |
1400 (define-key foo-mode-map [(control ?c) up] 'foo-up) | |
1401 | |
1402 The `kbd' macro is preferred over `read-kbd-macro' function , as it | |
1403 evaluates before compiling, thus having no loading overhead. | |
1404 | |
1405 Using `kbd' is not necessary for GNU Emacs compatibility (GNU Emacs | |
1406 supports the XEmacs-style keysyms), but adds to clarity. For example, | |
1407 (kbd "C-?") is usually easier to read than [(control ??)]. The full | |
1408 description of the syntax of keybindings accepted by `read-kbd-macro' | |
1409 is documented in the docstring of `edmacro-mode'. | |
1410 | |
1411 ** Overlay compatibility is implemented. | |
1412 | |
1413 The overlay support in XEmacs is now functional. Written by Joe | |
1414 Nuspl, the overlay compatibility library overlay.el is implemented on | |
1415 top of the native XEmacs extents, and can be used as a GNU | |
1416 Emacs-compatible way of changing display properties. | |
1417 | |
1418 ** You should use keysyms kp-* (kp-1, kp-2, ..., kp-enter etc.) | |
1419 rather than the old form kp_*. The new form is also compatible with | |
1420 GNU Emacs. | |
1421 | |
1422 ** The keysyms mouse-1, mouse-2, mouse-3 and down-mouse-1, | |
1423 down-mouse-2, and down-mouse-3 have been added for GNU Emacs | |
1424 compatibility. | |
1425 | |
1426 ** A new user variable `signal-error-on-buffer-boundary' has been | |
1427 added. | |
1428 | |
1429 Set this to variable to nil to avoid XEmacs usual lossage of zmacs | |
1430 region when moving up against a buffer boundary. | |
1431 | |
1432 ** lib-complete.el was MULE-ized. | |
1433 | |
1434 The commands `find-library', `find-library-other-window' and | |
1435 `find-library-other-frame' now take an optional coding system | |
1436 argument. | |
1437 | |
1438 ** Experimental support for Lisp reader macros #-, #+. | |
1439 | |
1440 The Common Lisp reader macros for feature test are now supported. This | |
1441 feature is present for evaluation purposes and is subject to change. | |
1442 | |
1443 ** `values' now has a setf method | |
1444 | |
1445 ** The `eval-after-load' and `eval-next-after-load' functions are | |
1446 now available. | |
1447 | |
1448 ** A bug that prevented `current-display-table' to be correctly set | |
1449 with `set-specifier' has been fixed. | |
1450 | |
1451 ** The bug in easymenu which prevented multiple menus from being | |
1452 accessible through button3 has been fixed. | |
1453 | |
1454 You can now safely use easymenu to define multiple menu entries in a | |
1455 compatible way, with the added menus accessible via button3 as local | |
1456 submenus. | |
1457 | |
1458 ** Many bugs in the scrollbar code have been fixed. | |
1459 | |
1460 ** First alpha level support of MS Windows NT is available, courtesy | |
1461 of David Hobley and Marc Paquette. | |
1462 | |
1463 ** Wnn/egg now has initial support Courtesy of Jareth Hein. | |
1464 | |
1465 ** Some old non-working code has been removed until someone chooses | |
1466 to work on it. | |
1467 | |
1468 This includes much of the NeXTStep stuff. The VMS support is also | |
1469 likely to be removed in the future. | |
1470 | |
1471 ** Many files have been purged out of the etc/ directory. | |
1472 | |
1473 If you still need the purged files, look for them in the GNU Emacs | |
1474 distribution. | |
1475 | |
1476 | |
1477 * Major Differences Between 19.14 and 20.0 | |
1478 =========================================== | |
1479 | |
1480 XEmacs 20.0 is the first public release to have support for MULE | |
1481 (Multi-Lingual Emacs). The --with-mule configuration flag must be | |
1482 used to enable Mule support. | |
1483 | |
1484 Many bugs have been fixed. An effort has been made to eradicate all | |
1485 XEmacs crashes, although we are not quite done yet. The overall | |
1486 quality of XEmacs should be higher than any previous release. XEmacs | |
1487 now compiles with nary a warning with some compilers. | |
1488 | |
1489 -- Multiple character sets can be displayed in a buffer. The file | |
1490 mule-doc/demo in the distribution contains a greeting in many | |
1491 different languages. | |
1492 | |
1493 -- Although the Mule work is for all languages, particular effort has | |
1494 been invested in Japanese, with particular focus on Japanese users | |
1495 of Sun WorkShop. Many menubar labels have been translated into | |
1496 Japanese. Martin Buchholz, the maintainer of MULE features within | |
1497 XEmacs normally runs XEmacs in a Japanese language environment. | |
1498 Some of the other contributors are Japanese, most importantly | |
1499 Morioka Tomohiko, author of the TM package, providing MIME support | |
1500 for Mail and News. | |
1501 | |
1502 -- Input for complex Asian languages is supported via XIM, a mechanism | |
1503 introduced in X11R5 to allow applications to get localized input | |
1504 without knowledge of the language. The way XIM works is that when | |
1505 the locale has a complex character set, such as Japanese, and extra | |
1506 minibuffer-like status window appears attached to various | |
1507 application windows, and indicates the status of the input method. | |
1508 Composed input in XEmacs should work the same as with other | |
1509 applications. If Motif and Mule support is configured into XEmacs, | |
1510 then XIM support is automatically configured in as well. | |
1511 | |
1512 -- TM (Tools for Mime) now comes with XEmacs. This provides MIME | |
1513 (Multipurpose Internet Mail Extensions) support for Mail and News. | |
1514 The primary author is Morioka Tomohiko. | |
1515 | |
1516 -- Japanese input can also be input using the `canna' input method. | |
1517 This support was contributed by Morioka Tomohiko. Setting up canna | |
1518 usually requires more user effort (and better knowledge of Japanese!) | |
1519 than XIM, but provides a better-integrated input method. | |
1520 | |
1521 -- A mini-tutorial on using Mule: | |
1522 | |
1523 -- Every time data passes between XEmacs and the rest of the | |
1524 environment, via file or process input or output, XEmacs must | |
1525 convert between its internal multi-character representation and | |
1526 the external representation (`coding system'). Many | |
1527 difficulties with Mule are related to controlling these coding | |
1528 system conversions. | |
1529 | |
1530 -- file-coding-system, file-coding-system-for-read, | |
1531 overriding-file-coding-system, and file-coding-system-alist | |
1532 are used to determine the coding systems used on file input | |
1533 and output. | |
1534 | |
1535 -- For each process, (set-process-input-coding-system) and | |
1536 (set-process-output-coding-system) determine the coding | |
1537 system used for I/O from the process. | |
1538 | |
1539 -- Many other things are encoded using pathname-coding-system: | |
1540 -- file and directory names | |
1541 -- window manager properties: window title, icon name | |
1542 -- process names and process arguments | |
1543 -- XIM input. | |
1544 | |
1545 -- In many cases, you will want to have the same values for all | |
1546 the above variables in many cases. For example, in a | |
1547 Japanese environment, you will want to use the 'euc-japan | |
1548 coding system consistently, except when running certain | |
1549 processes that do byte-oriented, rather than | |
1550 character-oriented I/O, such as gzip, or when processing Mail | |
1551 or News, where ISO2022-based coding systems are the norm, | |
1552 since they support multiple character sets. | |
1553 | |
1554 -- To add support for a new language or character set, start by | |
1555 trying to copy code in japanese-hooks.el. | |
1556 | |
1557 -- The traditional pre-Mule data conversion is equivalent to the | |
1558 'binary coding system under Mule. In this case all characters | |
1559 are treated as iso8859-1 (i.e. characters for English + Western | |
1560 European languages). | |
1561 | |
1562 -- many fileio-related commands such as find-file and write-file | |
1563 take an extra argument, coding-system, which specifies the | |
1564 encoding to be used with the file on disk. For example, here is | |
1565 a command that converts from the Japanese EUC to ISO2022 format: | |
1566 | |
1567 xemacs -batch -eval '(progn (find-file | |
1568 "locale-start.el.euc" (quote euc-japan)) (write-file | |
1569 "locale-start.el" nil (quote iso-2022-8-unix)))' | |
1570 | |
1571 Interactively, you can be prompted for a coding system by | |
1572 providing a prefix argument to the fileio command. In | |
1573 particular, C-u C-x C-f is a useful sequence to edit a file | |
1574 using a particular coding system. | |
1575 | |
1576 -- In an Asian locale (i.e. if $LANG is set to ja, ko, or zh), | |
1577 XEmacs automatically sets up a language environment assuming | |
1578 that the operating system encodes information in the national | |
1579 version of EUC, which supports English and the national | |
1580 language, but typically no other character sets. | |
1581 | |
1582 -- Command line processing should work much better now - no more order | |
1583 dependencies. | |
1584 | |
1585 -- Many many package upgraded (thanks go to countless maintainers): | |
1586 | |
1587 -- ediff 2.64 (Michael Kifer) | |
1588 -- Gnus 5.2.40 (Lars Magne Ingebrigtsen) | |
1589 -- w3 3.0.51 (Bill Perry) | |
1590 -- ilisp 5.8 (Chris McConnell, Ivan Vasquez, Marco Antoniotti, Rick | |
1591 Campbell) | |
1592 -- VM 5.97 (Kyle Jones) | |
1593 -- etags 11.78 (Francesco Potorti`) | |
1594 -- ksh-mode.el 2.9 | |
1595 -- vhdl-mode.el 2.73 (Rod Whitby) | |
1596 -- id-select.el (Bob Weiner) | |
1597 -- EDT/TPU emulation modes should work now for the first time. | |
1598 -- viper 2.92 (Michael Kifer) is now the `official' vi emulator for XEmacs. | |
1599 -- big-menubar should work much better now. | |
1600 -- mode-motion+.el 3.16 | |
1601 -- backup-dir 2.0 (Greg Klanderman) | |
1602 -- ps-print.el-3.05 (Jacques Duthen Prestataire) | |
1603 -- lazy-lock-1.15 (Simon Marshall) | |
1604 -- reporter 3.3 (Barry Warsaw) | |
1605 -- hm--html-menus 5.0 (Heiko Muenkel) | |
1606 -- cc-mode 4.322 (Barry Warsaw) | |
1607 -- elp 2.37 (Barry Warsaw) | |
1608 | |
1609 | |
1610 -- Many new packages have been added: | |
1611 -- m4-mode 1.8 (Andrew Csillag) | |
1612 -- crisp.el - crisp/brief emulation (Gary D. Foster) | |
1613 -- Johan Vroman's iso-acc.el has been ported to XEmacs by Alexandre Oliva | |
1614 -- psgml-1.01 (Lennart Staflin, James Clark) | |
1615 -- python-mode.el 2.83 (Barry Warsaw) | |
1616 -- vrml-mode.el (Ben Wing) | |
1617 -- enriched.el, face-menu.el (Boris Goldowsky, Michael Sperber) | |
1618 -- sh-script.el (Daniel Pfeiffer) | |
1619 -- decipher.el (Christopher J. Madsen) | |
1620 | |
1621 -- New function x-keysym-on-keyboard-p helps determine keyboard | |
1622 characteristics for key rebinding: | |
1623 | |
1624 x-keysym-on-keyboard-p: (KEYSYM &optional DEVICE) | |
1625 -- a built-in function. | |
1626 Return true if KEYSYM names a key on the keyboard of DEVICE. | |
1627 More precisely, return true if pressing a physical key | |
1628 on the keyboard of DEVICE without any modifier keys generates KEYSYM. | |
1629 Valid keysyms are listed in the files /usr/include/X11/keysymdef.h and in | |
1630 /usr/lib/X11/XKeysymDB, or whatever the equivalents are on your system. | |
1631 | |
1632 -- Installed info files are now compressed (support courtesy of Joseph J Nuspl) | |
1633 | |
1634 -- (load-average) works on Solaris, even if you're not root. Thanks to | |
1635 Hrvoje Niksic. | |
1636 | |
1637 -- OffiX drag-and-drop support added | |
1638 | |
1639 -- lots of syncing with 19.34 elisp files, most by Steven Baur | |
1640 | |
1641 | |
1642 ** Major Differences Between 19.13 and 19.14 | |
1643 ============================================ | |
1644 | |
1645 XEmacs has a new address! The canonical ftp site is now | |
1646 ftp.xemacs.org:/pub/xemacs and the Web page is now at | |
1647 http://www.xemacs.org/. All mailing lists now have @xemacs.org | |
1648 addresses. For the time being the @cs.uiuc.edu addresses will | |
1649 continue to function. | |
1650 | |
1651 This is a major new release. Many features have been added, as well | |
1652 as many bugs fixed. The Motif menubar has still _NOT_ been fixed for | |
1653 19.14. You should use the Lucid menubar instead. | |
1654 | |
1655 | |
1656 | |
1657 Major user-visible changes: | |
1658 --------------------------- | |
1659 | |
1660 -- Color support in TTY mode is provided. You have to have a TTY capable | |
1661 of displaying them, such as color xterm or the console under Linux. | |
1662 If your terminal type supports colors (e.g. `xterm-color'), XEmacs | |
1663 will automatically notice this and start using color. | |
1664 | |
1665 -- blink-cursor-mode enables a blinking text cursor. There is a | |
1666 menubar option for this also. | |
1667 | |
1668 -- auto-show-mode is turned on by default; this means that XEmacs | |
1669 will automatically scroll a window horizontally as necessary to | |
1670 keep point in view. | |
1671 | |
1672 -- a file dialog box is provided and will be used whenever you | |
1673 are prompted for a filename as a result of a menubar selection. | |
1674 | |
1675 -- XEmacs can be compiled with built-in GIF, JPEG, and PNG support. | |
1676 The GIF libraries are supplied with XEmacs; for JPEG and PNG, | |
1677 you have to obtain the appropriate libraries (this is well- | |
1678 documented). This makes image display much easier and faster under | |
1679 W3 (the web browser) and TM (adds MIME support to VM and GNUS; | |
1680 not yet included with XEmacs but will be in 19.15). | |
1681 | |
1682 -- XEmacs provides a really nice mode (PSGML with "Wing improvements") | |
1683 for editing HTML and other SGML documents. It parses the document, | |
1684 and as a result it does proper indentation, can show you the context | |
1685 you're in, the allowed tags at a particular position, etc. | |
1686 | |
1687 -- XEmacs comes standard with modes for editing Java and VRML code, | |
1688 including font-lock support. | |
1689 | |
1690 -- GNUS 5.2 comes standard with XEmacs. | |
1691 | |
1692 -- You can now embed colors in the modeline, with different sections | |
1693 of the modeline responding appropriately to various mouse gestures: | |
1694 For example, clicking on the "read-only" indicator toggles the | |
1695 read-only status of a buffer, and clicking on the buffer name | |
1696 cycles to the next buffer. Pressing button3 on these areas brings | |
1697 up a popup menu of appropriate commands. | |
1698 | |
1699 -- There is a much nicer mode for completion lists and such. | |
1700 At the minibuffer prompt, if you hit page-up or Meta-V, the completion | |
1701 buffer will be displayed (if it wasn't already), you're moved into | |
1702 it, and can move around and select filenames using the arrow keys | |
1703 and the return key. Rather than a cursor, a filename is highlighted, | |
1704 and the arrow keys change which filename is highlighted. | |
1705 | |
1706 -- The edit-faces subsystem has also been much improved, in somewhat | |
1707 similar ways to the completion list improvements. | |
1708 | |
1709 -- Many improvements were made to the multi-device support. | |
1710 We now provide an auxiliary utility called "gnuattach" that | |
1711 lets you connect to an existing XEmacs process and display | |
1712 a TTY frame on the current TTY connection, and commands | |
1713 `make-frame-on-display' (with a corresponding menubar entry) | |
1714 and `make-frame-on-tty' for more easily creating frames on | |
1715 new TTY or X connections. | |
1716 | |
1717 -- We have incorporated nearly all of the functionality of GNU Emacs | |
1718 19.30 into XEmacs. This includes support for lazy-loaded | |
1719 byte code and documentation strings, improved paragraph filling, | |
1720 better support for margins within documents, v19 regular expression | |
1721 routines (including caching of compiled regexps), etc. | |
1722 | |
1723 -- In accordance with GNU Emacs 19.30, the following key binding | |
1724 changes have been made: | |
1725 | |
1726 C-x ESC -> C-x ESC ESC | |
1727 ESC ESC -> ESC : | |
1728 ESC ESC ESC is "abort anything" (keyboard-escape-quit). | |
1729 | |
1730 -- All major packages have been updated to their latest-released | |
1731 versions. | |
1732 | |
1733 -- XEmacs now gracefully handles a full colormap (such as typically | |
1734 results when running Netscape). The nearest available color | |
1735 is automatically substituted. | |
1736 | |
1737 -- Many bug fixes to the subprocess/PTY code, ps-print, menubar | |
1738 functions, `set-text-properties', DEC Alpha support, toolbar | |
1739 resizing (the "phantom VM toolbar" bug), and lots and lots | |
1740 of other things were made. | |
1741 | |
1742 -- The ncurses library (a replacement for curses, found especially | |
1743 under Linux) is supported, and will be automatically used | |
1744 if it can be found. | |
1745 | |
1746 -- You can now undo in the minibuffer. | |
1747 | |
1748 -- Surrogate minibuffers now work. These are also sometimes referred | |
1749 to as "global" minibuffers. | |
1750 | |
1751 -- font-lock has been merged with GNU Emacs 19.30, improved defaults | |
1752 have been added, and changes have been made to the way it is | |
1753 configured. | |
1754 | |
1755 -- Many, many modes have menubar entries for them. | |
1756 | |
1757 -- `recover-session' lets you recover whatever files can be recovered | |
1758 after your XEmacs process has died unexpectedly. | |
1759 | |
1760 -- C-h k followed by a toolbar button press correctly reports | |
1761 the binding of the toolbar button. | |
1762 | |
1763 -- `function-key-map', `key-translation-map', and `keyboard-translate-table' | |
1764 are now correctly implemented. | |
1765 | |
1766 -- `show-message-log' (and its menubar entry under Edit) have been | |
1767 removed; instead use `view-lossage' (and its menubar entry under | |
1768 Help). | |
1769 | |
1770 -- There is a standard menubar entry for specifying which browser | |
1771 (Netscape, W3, Mosaic, etc.) to use when dispatching URL's | |
1772 in mail, Usenet news, etc. | |
1773 | |
1774 -- Improved native sound support under Linux. | |
1775 | |
1776 -- Lots of other things we forgot to mention. | |
1777 | |
1778 | |
1779 | |
1780 Significant Lisp-level changes: | |
1781 ------------------------------- | |
1782 | |
1783 -- Many improvements to the E-Lisp documentation have been made; | |
1784 it should now be up-to-date and complete in nearly all cases. | |
1785 | |
1786 -- XEmacs has extensive documentation on its internals, for | |
1787 would-be C hackers. | |
1788 | |
1789 -- Common-Lisp support (the CL package) is now dumped standard | |
1790 into XEmacs. No more need for (require 'cl) or anything | |
1791 like that. | |
1792 | |
1793 -- Full support for extents and text properties over strings is | |
1794 provided. | |
1795 | |
1796 -- The extent properties `start-open', `end-open', `start-closed', | |
1797 and `end-closed' now work correctly w.r.t. text properties. | |
1798 | |
1799 -- The `face' property of extents and text properties can now | |
1800 be a list. | |
1801 | |
1802 -- The `mouse-face' property from GNU Emacs is now supported. | |
1803 It supersedes the `highlight' property. | |
1804 | |
1805 -- `enriched' and `facemenu' packages from GNU Emacs have been ported. | |
1806 | |
1807 -- New functions for easier creation of dialog boxes: | |
1808 `get-dialog-box-response', `message-box', and `message-or-box'. | |
1809 | |
1810 -- `function-min-args' and `function-max-args' allow you to determine | |
1811 the minimum and maximum allowed arguments for any type of | |
1812 function (i.e. subr, lambda expression, byte-compiled function, etc.). | |
1813 | |
1814 -- Some C-level support for doing E-Lisp profiling is provided. | |
1815 See `start-profiling', `stop-profiling', and | |
1816 `pretty-print-profiling-info'. | |
1817 | |
1818 -- `current-process-time' reports the user, system, and real times | |
1819 for the currently running XEmacs process. | |
1820 | |
1821 -- `next-window', `previous-window', `next-frame', `previous-frame', | |
1822 `other-window', `get-lru-window', etc. have an extra device | |
1823 argument that allows you to restrict which devices it includes | |
1824 (normally all devices). Some functions that incorrectly ignored | |
1825 frames on different devices (e.g. C-x 0) are fixed. | |
1826 | |
1827 -- new functions `run-hook-with-args-until-success', | |
1828 `run-hook-with-args-until-failure'. | |
1829 | |
1830 -- generalized facility for local vs. global hooks. See `make-local-hook', | |
1831 `add-hook'. | |
1832 | |
1833 -- New functions for querying the window tree: `frame-leftmost-window', | |
1834 `frame-rightmost-window', `window-first-hchild', `window-first-vchild', | |
1835 `window-next-child', `window-previous-child', and `window-parent'. | |
1836 | |
1837 -- Epoch support works. This gets you direct access to some X events | |
1838 and objects (e.g. properties and property-notify events). | |
1839 | |
1840 -- The multi-device support has been majorly revamped. There is now | |
1841 a new concept of "consoles" (devices grouped together under a | |
1842 common keyboard/mouse), console-local variables, and a generalized | |
1843 concept of device/console connection. | |
1844 | |
1845 -- `display-buffer' synched with GNU Emacs 19.30, giving you lots of | |
1846 wondrous cruft such as | |
1847 -- unsplittable frames | |
1848 -- pop-up-frames, pop-up-frame-function | |
1849 -- special-display-buffer-names, special-display-regexps, | |
1850 special-display-function | |
1851 -- same-window-buffer-names, same-window-regexps | |
1852 | |
1853 -- XEmacs has support for accessing DBM- and/or DB-format databases, | |
1854 provided that you have the appropriate libraries on your system. | |
1855 | |
1856 -- There is a new font style: "strikethru" fonts. | |
1857 | |
1858 -- New data type "weak list", which is a list with special | |
1859 garbage-collection properties, similar to weak hash tables. | |
1860 | |
1861 -- `set-face-parent' makes one face inherit all properties from another. | |
1862 | |
1863 -- The junky frame parameters mechanism has been revamped as | |
1864 frame properties, which a standard property-list interface. | |
1865 | |
1866 -- Lots and lots of functions for working with property lists have | |
1867 been added. | |
1868 | |
1869 -- New functions `push-window-configuration', `pop-window-configuration', | |
1870 `unpop-window-configuration' for maintain a stack of window | |
1871 configurations. | |
1872 | |
1873 -- Many fixups to the glyph code; icons and mouse pointers are now | |
1874 properly merged into the glyph mechanism. | |
1875 | |
1876 -- `set-specifier' works more sensibly, like `set-face-property'. | |
1877 | |
1878 -- Many new specifiers for individually controlling toolbar height/width | |
1879 and visibility and text cursor visibility. | |
1880 | |
1881 -- New face `text-cursor' controls the colors of the text cursor. | |
1882 | |
1883 -- Many new variables for turning on debug information about the | |
1884 inner workings of XEmacs. | |
1885 | |
1886 -- Hash tables can now compare their keys using `equal' or `eql' | |
1887 as well as `eq'. | |
1888 | |
1889 -- Other things too numerous to mention. | |
1890 | |
1891 | |
1892 | |
1893 Significant configuration/build changes: | |
1894 ---------------------------------------- | |
1895 | |
1896 -- You can disable TTY support, toolbar support, scrollbar support, | |
1897 menubar support, and/or dialog box support at configure time | |
1898 to save memory. | |
1899 | |
1900 -- New configure option `--extra-verbose' shows the diagnostic | |
1901 output from feature testing; this should help track down | |
1902 problems with incorrect feature detection. | |
1903 | |
1904 -- `dont-have-xmu' is now `with-xmu', with the reversed sense. | |
1905 (It defaults to `yes'.) | |
1906 | |
1907 -- `with-mocklisp' lets you add Mocklisp support if you really | |
1908 need this. | |
1909 | |
1910 -- `with-term' for adding TERM support for Linux users. | |
1911 | |
1912 | |
1913 | |
1914 ** Major Differences Between 19.12 and 19.13 | |
1915 ============================================ | |
1916 | |
1917 This is primarily a bug-fix release. Lots of bugs have been fixed. | |
1918 Hopefully only a few have been introduced. The most noteworthy bug | |
1919 fixes are: | |
1920 | |
1921 -- There should be no more problems connecting XEmacs to an X | |
1922 server over SLIP or other slow connections. | |
1923 -- Periodic crashes when using the Buffers menu should be gone. | |
1924 -- etags would sometimes erase the current buffer; it doesn't | |
1925 any more. | |
1926 -- XEmacs will correctly exit if the X server dies. | |
1927 -- uniconified frames are displayed properly under TVTWM. | |
1928 -- Breakage in `add-menu-item' / `add-menu-button' is fixed. | |
1929 | |
1930 The Motif menubar has _NOT_ been fixed for 19.13. You should use the | |
1931 Lucid menubar instead. | |
1932 | |
1933 Multi-device support should now be working properly. You can now open | |
1934 an X device after having started out on a TTY device. | |
1935 | |
1936 Background pixmaps now work. See `set-face-background-pixmap'. | |
1937 | |
1938 Echo area messages are now saved to a buffer, " *Message Log*". To | |
1939 see this buffer, use the command `show-message-log'. It is possible | |
1940 to filter the message which are actually included by modifying the | |
1941 variables `log-message-ignore-regexps' and `log-message-ignore-labels'. | |
1942 | |
1943 You can now control which warnings you want to see. See | |
1944 `display-warning-suppressed-classes' and friends. | |
1945 | |
1946 You can now set the default location of an "other window" from the | |
1947 Options menu. | |
1948 | |
1949 "Save Options" now saves the state of all faces. | |
1950 | |
1951 You can choose which file "Save Options" writes into; see | |
1952 `save-options-file'. | |
1953 | |
1954 XPM support is no longer required for the toolbar. | |
1955 | |
1956 The relocating allocator is now enabled by default whenever possible. | |
1957 This allows buffer memory to be returned to the system when no longer | |
1958 in use which helps keep XEmacs process size down. | |
1959 | |
1960 The ability to have captioned toolbars has been added. Currently only | |
1961 the default toolbar actually has a captioned version provided. A new | |
1962 specifier variable, `toolbar-buttons-captioned-p' controls whether the | |
1963 toolbar is captioned. | |
1964 | |
1965 A copy of the XEmacs FAQ is now included and is available through info. | |
1966 | |
1967 The on-line E-Lisp reference manual has been significantly updated. | |
1968 | |
1969 There is now audio support under Linux. | |
1970 | |
1971 Modifier keys can now be sticky. This is controlled by the variable | |
1972 `modifier-keys-are-sticky'. | |
1973 | |
1974 manual-entry should now work correctly under Irix with the penalty of | |
1975 a longer startup time the first time it is invoked. If you are having | |
1976 problems with this on another system try setting | |
1977 `Manual-use-subdirectory-list' to t. | |
1978 | |
1979 make-tty-device no longer automatically creates the first frame. | |
1980 | |
1981 Rectangular regions now work correctly. | |
1982 | |
1983 ediff no longer sets synchronize-minibuffers to t unless you first set | |
1984 ediff-synchronize-minibuffers | |
1985 | |
1986 keyboard-translate-table has been implemented. This means that the | |
1987 `enable-flow-control' command for dealing with TTY connections that | |
1988 filter out ^S and ^Q now works. | |
1989 | |
1990 You can now create frames that are initially unmapped and frames that | |
1991 are "transient for another frame", meaning that they behave more like | |
1992 dialog-box frames. | |
1993 | |
1994 Other E-Lisp changes: | |
1995 | |
1996 -- Specifier `menubar-visible-p' for controlling menubar visibility | |
1997 -- Local command hooks should be set using `local-pre-command-hook' | |
1998 and `local-post-command-hook' instead of making the global | |
1999 equivalents be buffer-local. | |
2000 -- `quit-char', `help-char', `meta-prefix-char' can be any key specifier | |
2001 instead of just an integer. | |
2002 -- new functions `add-async-timeout' and `disable-async-timeout'. | |
2003 These let you create asynchronous timeouts, which are like | |
2004 normal timeouts except that they're executed even during | |
2005 running Lisp code. Use this with care! | |
2006 -- `debug-on-error' and `stack-trace-on-error' now enter the debugger | |
2007 only when an *unhandled* error occurs. If you want the old | |
2008 behavior, use `debug-on-signal' and `stack-trace-on-signal'. | |
2009 -- \U, \L, \u, \l, \E recognized specially in `replace-match'. | |
2010 These are standard ex/perl commands for changing the case of | |
2011 replaced text. | |
2012 -- New function event-matches-key-specifier-p. This provides | |
2013 a clean way of comparing keypress events with key specifiers | |
2014 such as 65, (shift home), etc. without having to resort | |
2015 to ugly `character-to-event' / `event-to-character' hacks. | |
2016 -- New function `add-to-list' | |
2017 -- New Common-Lisp functions `some', `every', `notevery', `notany', | |
2018 `adjoin', `union', `intersection', `set-difference', | |
2019 `set-exclusive-or', `subsetp' | |
2020 -- `remove-face-property' provides a clean way of removing a | |
2021 face property. | |
2022 | |
2023 Many of the Emacs Lisp packages have been updated. Some of the new | |
2024 Emacs Lisp packages --- | |
2025 | |
2026 ada-mode: major mode for editing Ada source | |
2027 | |
2028 arc-mode: simple editing of archives | |
2029 | |
2030 auto-show-mode: automatically scrolls horizontally to keep point on-screen | |
2031 | |
2032 completion: dynamic word completion mode | |
2033 | |
2034 dabbrev: the dynamic abbrev package has been rewritten and is much | |
2035 more powerful -- e.g. it searches in other buffers as well | |
2036 as the current one | |
2037 | |
2038 easymenu: menu support package | |
2039 | |
2040 live-icon: makes frame icons represent the current frame contents | |
2041 | |
2042 mailcrypt 3.2: mail encryption with PGP; included but v2.4 is still | |
2043 the default | |
2044 | |
2045 two-column: for editing two-column text | |
2046 | |
2047 | |
2048 ** Major Differences Between 19.11 and 19.12 | |
2049 ============================================ | |
2050 | |
2051 This is a huge new release. Almost every aspect of XEmacs has been changed | |
2052 at least somewhat. The highlights are: | |
2053 | |
2054 -- TTY support (includes face support) | |
2055 -- new redisplay engine; should be faster, less buggy, and more powerful | |
2056 -- terminology change from "screen" to "frame" | |
2057 -- built-in toolbar | |
2058 -- toolbar support added to many packages | |
2059 -- multiple device support (still in beta; improvements to come in | |
2060 19.13) | |
2061 -- Purify used to ensure that there are no memory leaks or memory corruption | |
2062 problems | |
2063 -- horizontal and vertical scrollbars in all windows | |
2064 -- new Lucid (i.e. look-alike Motif) scrollbar widget | |
2065 -- stay-up menus in the Lucid (look-alike Motif) menubar widget | |
2066 -- 3-d modeline | |
2067 -- new extents engine; should be faster, less buggy, and more powerful | |
2068 -- much more powerful control over faces | |
2069 -- expanded menubar | |
2070 -- more work on synching with GNU Emacs 19.28 | |
2071 -- new packages: Hyperbole, OOBR (object browser), hm--html-menus, viper, | |
2072 lazy-lock.el, ksh-mode.el, rsz-minibuf.el | |
2073 -- package updates for all major packages | |
2074 -- dynodump package for Solaris: provides proper undumping and portable | |
2075 binaries across different OS versions and machine types | |
2076 -- Greatly expanded concept of "glyphs" (pixmaps etc. in a buffer) | |
2077 -- built-in support for displaying X-Faces, if the X-Face library is | |
2078 available | |
2079 -- built-in support for SOCKS if the SOCKS library is available | |
2080 -- graceful behavior when the colormap is full (e.g. Netscape ate | |
2081 all the colors) | |
2082 -- built-in MD5 (secure hashing function) support | |
2083 | |
2084 | |
2085 More specific information: | |
2086 | |
2087 *** TTY Support | |
2088 --------------- | |
2089 | |
2090 The long-awaited TTY support is now available. XEmacs will start up | |
2091 in TTY mode (using the tty you started XEmacs from) if the DISPLAY | |
2092 environment variable is not set or if you use the `-nw' option. | |
2093 | |
2094 Faces are available on TTY's. For a demonstration, try editing a C | |
2095 file and turning on font-lock-mode. | |
2096 | |
2097 You can also connect to additional TTY's using `make-tty-device', | |
2098 whether your first frame was a TTY or an X window. This ability is | |
2099 not yet completely finished. | |
2100 | |
2101 The full event-loop capabilities (processes, timeouts, etc.) are | |
2102 available on TTY's. | |
2103 | |
2104 | |
2105 | |
2106 *** New Redisplay Engine | |
2107 ------------------------ | |
2108 | |
2109 The redisplay engine has been rewritten to improve its efficiency and | |
2110 to increase its functionality. It should also be significantly more | |
2111 bug-free than the previous redisplay engine. | |
2112 | |
2113 A line that is not big enough to display at the bottom of the window | |
2114 will normally be clipped (so that it is partially visible) rather than | |
2115 not displayed at all. The variable `pixel-vertical-clip-threshold' | |
2116 can be used to control the minimum space that must be available for a | |
2117 line to be clipped rather than not displayed at all. | |
2118 | |
2119 Tabs are displayed in such a way that things line up fairly well even | |
2120 in the presence of variable-width fonts and/or lines with | |
2121 multiply-sized fonts. | |
2122 | |
2123 Display tables are implemented, through the specifier variable | |
2124 `current-display-table'. They can be buffer-local, window-local, | |
2125 frame-local, or device-local. See below for info about specifiers. | |
2126 | |
2127 | |
2128 | |
2129 *** Toolbar | |
2130 ----------- | |
2131 | |
2132 There is now built-in support for a toolbar. A sample toolbar is | |
2133 visible by default at the top of the frame. Four separate toolbars | |
2134 can be configured (at the top, bottom, left, and right of the frame). | |
2135 The toolbar specification is similar to the menubar specification. | |
2136 The up, down, and disabled glyphs of a toolbar button can be | |
2137 separately controlled. Explanatory text can be echoed in the echo | |
2138 area when the mouse passes over a toolbar button. The size, contents, | |
2139 and visibility of the various toolbars can be controlled on a | |
2140 per-buffer, per-window, per-frame, and per-device basis through the | |
2141 use of specifiers. See the chapter on toolbars in the Lisp Reference | |
2142 Manual (included with XEmacs) for more information. | |
2143 | |
2144 The toolbar color and shadow thicknesses are currently controlled only | |
2145 through `modify-frame-parameters' and through X resources. We are | |
2146 planning on making these controllable through specifiers as well. (Our | |
2147 hope is to make `modify-frame-parameters' obsolete, as it is a clunky | |
2148 and not very powerful mechanism.) | |
2149 | |
2150 Info, GNUS, VM, W3, and various other packages include custom toolbars | |
2151 with them. | |
2152 | |
2153 | |
2154 | |
2155 *** Menubar | |
2156 ----------- | |
2157 | |
2158 Stay-up menus are implemented in the look-alike Motif menubar. | |
2159 | |
2160 The default menubar has been expanded to include most commonly-used | |
2161 functions in XEmacs. | |
2162 | |
2163 The options menu has been greatly expanded to include many more | |
2164 options. | |
2165 | |
2166 The menubar specification format has been greatly expanded. Per-menu | |
2167 activation hooks can be specified through the :filter keyword (thus | |
2168 obsoleting `activate-menubar-hook'); this allows for fast response | |
2169 time when you have a large and complex menu. You can dynamically | |
2170 control whether menu items are present through the :included and | |
2171 :config keywords. (The latter keyword implements a simple menubar | |
2172 configuration scheme, in conjunction with the variable | |
2173 `menubar-configuration'.) Many different menu-item separators (single | |
2174 or double line; solid or dashed; flat, etched-in, or etched-out) are | |
2175 available. See the chapter on menus in the Lisp Reference Manual for | |
2176 more information about all of this. | |
2177 | |
2178 New functions `add-submenu' and `add-menu-button' are available. | |
2179 These supersede the older `add-menu' and `add-menu-item' functions, | |
2180 and provide a more powerful and consistent interface. | |
2181 | |
2182 New convenience functions for popping up the part or all of the | |
2183 menubar in a pop-up menu are available: `popup-menubar-menu' and | |
2184 `popup-buffer-menu'. | |
2185 | |
2186 Menus are now incrementally constructed greatly improving menubar | |
2187 response time. | |
2188 | |
2189 | |
2190 | |
2191 *** Scrollbars | |
2192 -------------- | |
2193 | |
2194 A look-alike Motif scrollbar is now included with XEmacs. No longer | |
2195 will you have to suffer with ugly Athena scrollbars. | |
2196 | |
2197 Windows can now have horizontal scrollbars. Normally they are visible | |
2198 when the window's buffer is set to truncate lines rather than wrap | |
2199 them (e.g. `(setq truncate-lines t)'). | |
2200 | |
2201 All windows, not only the right-most ones, can have vertical | |
2202 scrollbars. | |
2203 | |
2204 The functions to change a scrollbar's width have been superseded by | |
2205 the specifier variables `scrollbar-width' and `scrollbar-height'. | |
2206 This allows their values to be controlled on a buffer-local, | |
2207 window-local, frame-local, and device-local basis. See below. | |
2208 | |
2209 The scrollbars interact better with the event loop (for example, you | |
2210 can type `C-h k', do a scrollbar action, and see a description of this | |
2211 scrollbar action printed as if you had pressed a key sequence or | |
2212 selected a menu item). | |
2213 | |
2214 The scrollbar behavior can be reprogrammed, by advising the | |
2215 `scrollbar-*' functions. | |
2216 | |
2217 | |
2218 | |
2219 *** Key Bindings | |
2220 ---------------- | |
2221 | |
2222 The oft-used function `goto-line' now has its own binding: M-g. | |
2223 | |
2224 New bindings are available for scrolling the "other" window: M-next, | |
2225 M-prior, M-home, M-end. (On many keyboards, `next' and `prior' | |
2226 labelled `PgUp' and `PgDn'.) | |
2227 | |
2228 You can reactivate a deactivated Zmacs region, without having any | |
2229 other effects, with the binding M-C-z. | |
2230 | |
2231 The bindings `M-u', `M-l', and `M-c' now work on the region (if a | |
2232 region is active) or work on a word, as before. | |
2233 | |
2234 Shift-Control-G forces a "critical quit", which drops immediately into | |
2235 the debugger; see below. | |
2236 | |
2237 | |
2238 | |
2239 *** Modeline | |
2240 ------------ | |
2241 | |
2242 The modeline can now have a 3-d look; this is enabled by default. The | |
2243 specifier variable `modeline-shadow-thickness' controls the size. | |
2244 | |
2245 The modeline can now be turned off on a per-buffer, per-window, | |
2246 per-frame, or per-device basis. The specifier variable | |
2247 `has-modeline-p' controls whether the modeline is visible. See below | |
2248 for details about the vastly powerful specifier mechanism. | |
2249 | |
2250 The modeline functions and variables have been renamed to be | |
2251 `*-modeline-*' rather than `*-mode-line-*'. Aliases are provided for | |
2252 all the old names. | |
2253 | |
2254 Variable width fonts now work correctly when used in the modeline. | |
2255 | |
2256 | |
2257 | |
2258 *** Minibuffer, Echo Area | |
2259 ------------------------- | |
2260 | |
2261 The minibuffer is no longer constrained to be one line high. The | |
2262 package rsz-minibuf.el is included to automatically resize the | |
2263 minibuffer when its contents are too big; enable this with | |
2264 `resize-minibuffer-mode'. | |
2265 | |
2266 The echo area is now a true buffer, called " *Echo Area*". This | |
2267 allows you to customize the echo area behavior through | |
2268 before-change-functions and after-change-functions. | |
2269 | |
2270 | |
2271 | |
2272 *** Specifiers | |
2273 -------------- | |
2274 | |
2275 XEmacs has a new concept called "specifiers", used to configure most | |
2276 display options (toolbar size and contents, scrollbar size, face | |
2277 properties, modeline visibility and shadow-thickness, glyphs, display | |
2278 tables, etc.). We are planning on converting all display | |
2279 characteristics to use specifiers, and obsoleting the clunky functions | |
2280 `frame-parameters' and `modify-frame-parameters'. Specifically: | |
2281 | |
2282 -- You can specify values (called "instantiators") for particular | |
2283 "locales" (i.e. buffers, windows, frames, devices, or a global value). | |
2284 When determining what the actual value (or "instance") of a specifier | |
2285 is, the specifications that are provided are searched from most | |
2286 specific (i.e. buffer-local) to most general (i.e. global), looking | |
2287 for a matching one. | |
2288 | |
2289 -- You can specify multiple instantiators for a particular locale. | |
2290 For example, when specifying what the foreground color of a face | |
2291 is in a particular buffer, you could specify two instantiators: | |
2292 "dark sea green" and "green". The color would then be dark sea | |
2293 green on devices that recognize that color, and green on other | |
2294 devices. You have effectively provided a fallback value to make | |
2295 sure you get reasonable behavior on all devices. | |
2296 | |
2297 -- You can add one or more tags to an instantiator, where a tag | |
2298 is a symbol that has been previously registered with XEmacs. | |
2299 This allows you to identify your instantiators for later | |
2300 removal in a way that won't interfere with other applications | |
2301 using the same specifier. Furthermore, particular tags can | |
2302 be restricted to match only particular sorts of devices. | |
2303 Any tagged instantiator will be ignored if the device over which | |
2304 it is being instanced does not match any of its tags. This | |
2305 allows you, for example, to restrict an instantiator to a | |
2306 particular device type (X or TTY) and/or class (color, grayscale, | |
2307 or mono). (You might want to specify, for example, that a | |
2308 particular face is displayed in green on color devices and is | |
2309 underlined on mono devices.) | |
2310 | |
2311 -- A full API is provided for manipulating specifiers, and full | |
2312 documentation is provided in the Lisp Reference Manual. | |
2313 | |
2314 | |
2315 | |
2316 *** Basic Lisp Stuff | |
2317 -------------------- | |
2318 | |
2319 Common-Lisp backquote syntax is recognized. For example, the old | |
2320 expression | |
2321 | |
2322 (` (a b (, c))) | |
2323 | |
2324 can now be written | |
2325 | |
2326 `(a b ,c) | |
2327 | |
2328 The old backquote syntax is still accepted. | |
2329 | |
2330 The new function `type-of' returns a symbol describing the type of a | |
2331 Lisp object (`integer', `string', `symbol', etc.) | |
2332 | |
2333 Symbols beginning with a colon (called "keywords") are treated | |
2334 specially in that they are automatically made self-evaluating when | |
2335 they are interned into `obarray'. The new function `keywordp' returns | |
2336 whether a symbol begins with a colon. | |
2337 | |
2338 `get', `put', and `remprop' have been generalized to allow you to set | |
2339 and retrieve properties on many different kinds of objects: symbols, | |
2340 strings, faces, glyphs, and extents (for extents, however, this is not | |
2341 yet implemented). They are joined by a new function `object-props' | |
2342 that returns all of the properties that have been set on an object. | |
2343 | |
2344 New functions `plists-eq' and `plists-equal' are provided for | |
2345 comparing property lists (a property list is an alternating list | |
2346 of keys and values). | |
2347 | |
2348 The Common-Lisp functions `caar', `cadr', `cdar', `cddr', `caaar', etc. | |
2349 (up to four a's and/or d's), `first', `second', `third', etc. (up to | |
2350 `tenth'), `last', `rest', and `endp' have been added, for more | |
2351 convenient manipulation of lists. | |
2352 | |
2353 New function `mapvector' maps over a sequence and returns a vector | |
2354 of the results, analogous to `mapcar'. | |
2355 | |
2356 New functions `rassoc', `remassoc', `remassq', `remrassoc', and | |
2357 `remrassq' are provided for working with alists. | |
2358 | |
2359 New functions `defvaralias', `variable-alias' and `indirect-variable' | |
2360 are provided for creating variable aliases. | |
2361 | |
2362 Strings have a modified-tick that is bumped every time a string | |
2363 is modified in-place with `aset' or `fillarray'. This is retrieved | |
2364 with the new function `string-modified-tick'. | |
2365 | |
2366 New macro `push' destructively adds an element to the beginning of a | |
2367 list. New macro `pop' destructively removes and returns the first | |
2368 element of a list. | |
2369 | |
2370 | |
2371 | |
2372 *** Buffers | |
2373 ----------- | |
2374 | |
2375 Most functions that operate on buffer text now take an optional BUFFER | |
2376 argument, specifying which buffer they operate on. (Previously, they | |
2377 always operated on the current buffer.) | |
2378 | |
2379 The new function `transpose-regions' is provided, ported from GNU | |
2380 Emacs. | |
2381 | |
2382 The new function `save-current-buffer' works like `save-excursion' | |
2383 but only saves the current buffer, not the location of point in | |
2384 that buffer. | |
2385 | |
2386 | |
2387 | |
2388 *** Devices | |
2389 ----------- | |
2390 | |
2391 XEmacs has a new concept of "device", which is represents a particular | |
2392 X display or TTY connection. `make-frame' has a new, optional device | |
2393 parameter that allows you to specify which device the frame is to be | |
2394 created on. | |
2395 | |
2396 Multiple simultaneous TTY and/or X connections may be made. The | |
2397 specifier mechanism provides reasonable behavior of glyphs, faces, | |
2398 etc. over heterogeneous device types and over devices whose individual | |
2399 capabilities may vary. | |
2400 | |
2401 There is also a device type called "stream" that represents a STDIO | |
2402 device that has no redisplay or cursor-motion capabilities, such as | |
2403 the "glass terminal" that XEmacs uses when it is run noninteractively. | |
2404 There is not all that much you can do with stream devices currently; | |
2405 please let us know if there are good uses you can think of for this | |
2406 capability. (For example, log files?) | |
2407 | |
2408 A new device API is provided. Functions are provided such as | |
2409 `device-name' (the name of the device, which generally is based on the | |
2410 X display or TTY file name), `device-type' (X, TTY, or stream), | |
2411 `device-class' (color, grayscale, or mono), etc. See the Lisp | |
2412 Reference Manual. | |
2413 | |
2414 Many functions have been extended to contain an additional, optional | |
2415 device argument, where such an extension makes sense. In general, if | |
2416 the argument is omitted, it is equivalent to specifying | |
2417 `(selected-device)'. | |
2418 | |
2419 Many previous functions and variables are obsoleted in favor of the | |
2420 device API. For example, `window-system' is obsoleted by | |
2421 `device-type', and `x-color-display-p' and friends are obsoleted by | |
2422 `device-class'. | |
2423 | |
2424 ** NOTE **: The obsolete variable `window-system' is going | |
2425 to be deleted soon, probably in 19.14. Please correct all | |
2426 your code to use `device-type'. | |
2427 | |
2428 ** INCOMPATIBLE CHANGE **: The function `x-display-visual-class' | |
2429 returns different values from previous versions of XEmacs. | |
2430 | |
2431 | |
2432 | |
2433 *** Errors, Warnings, C-g | |
2434 ------------------------- | |
2435 | |
2436 There is a new warnings system implemented. Many warnings that were | |
2437 formerly displayed in various ad-hoc ways (e.g. warnings about screwy | |
2438 modifier mappings, messages about failures handling the mouse cursor | |
2439 and errors in a gc-hook) have been regularized through this system. | |
2440 The new function `warn' displays a warning before the next redisplay | |
2441 (the actually display of the warning messages is accomplished through | |
2442 `display-warning-buffer'). Both `warn' and `display-warning-buffer' | |
2443 are Lisp functions (the C code calls out to them as necessary), and | |
2444 thus you can customize the warning system. | |
2445 | |
2446 Under an X display, you can press Shift-Control-G to force a "critical | |
2447 quit". This will immediately display a backtrace and pop you into the | |
2448 debugger, regardless of the settings of `inhibit-quit' and | |
2449 `debug-on-quit'. | |
2450 | |
2451 C-g now works properly even on systems that don't implement SIGIO or | |
2452 for which SIGIO is broken (e.g. IRIX 5.3 and older versions of Linux). | |
2453 In addition, the SIGIO support has been fixed for many systems on | |
2454 which it didn't always work properly before (e.g. HPUX and Solaris). | |
2455 | |
2456 | |
2457 | |
2458 *** Events | |
2459 ---------- | |
2460 | |
2461 ** INCOMPATIBLE CHANGE **: Many event functions have been changed to | |
2462 accept and return windows instead of frames. | |
2463 | |
2464 New function: `event-live-p', specifying whether `deallocate-event' | |
2465 has been called on an event. | |
2466 | |
2467 The "menu event" type has been renamed to "misc-user event", and | |
2468 encompasses scrollbar events as well as menu events. We are planning | |
2469 on making it also encompass toolbar events in a future release. | |
2470 | |
2471 New functions are provided for determining whether an particular | |
2472 sections of a frame: `event-over-border-p', `event-over-glyph-p', | |
2473 `event-over-modeline-p', `event-over-text-area-p', and | |
2474 `event-over-toolbar-p'. The old, kludgey methods of checking the | |
2475 window-height, the internal-border-width, etc. are unreliable and | |
2476 should not be used. | |
2477 | |
2478 New functions `event-window-x-pixel' and `event-window-y-pixel' are | |
2479 provided for determining where in a particular window an event | |
2480 happened. | |
2481 | |
2482 New functions `event-glyph-x-pixel' and `event-glyph-y-pixel' are | |
2483 provided for determining where in a particular glyph an event | |
2484 happened. | |
2485 | |
2486 New function `event-closest-point', which returns the closest buffer | |
2487 position to the event even if the event did not occur over any text. | |
2488 | |
2489 New variable `unread-command-events', superseding the older | |
2490 `unread-command-event'. | |
2491 | |
2492 Many event-loop bugs have been fixed. | |
2493 | |
2494 | |
2495 | |
2496 *** Extents | |
2497 ----------- | |
2498 | |
2499 The extent code has been largely rewritten. It should be faster and | |
2500 more reliable. | |
2501 | |
2502 The text-property implementation has been greatly improved. | |
2503 | |
2504 Some new extent primitives are provided to return the position of the | |
2505 next or previous property change in a buffer. | |
2506 | |
2507 Extents can now have a parent specified; then all of its properties | |
2508 (except for the buffer it's in and its position in that buffer) come | |
2509 from that extent. Hierarchies of such extents can be created. | |
2510 | |
2511 Extents now have a `detachable' property that controls what happens | |
2512 (they either get detached or shrink down to zero-length) when their | |
2513 text is deleted. Previously, such extents would always be detached. | |
2514 | |
2515 The `invisible' property on extents now works. | |
2516 | |
2517 `map-extents' has three additional parameters that provide more | |
2518 control over which extents are mapped. | |
2519 | |
2520 `map-extents' deals better with changes made to extents in the | |
2521 buffer being mapped over. | |
2522 | |
2523 A new function `mapcar-extents' (an alternative to `map-extents') has | |
2524 been provided and should be easier to use than `map-extents'. | |
2525 | |
2526 | |
2527 | |
2528 *** Faces | |
2529 --------- | |
2530 | |
2531 Faces can now be buffer-local, window-local, and device-local as well | |
2532 as frame-local, and can be further restricted to a particular device | |
2533 type or class. The way in which faces can be controlled is now based | |
2534 on the general and powerful specifier mechanism; see above. | |
2535 | |
2536 The new function `set-face-property' generalizes `set-face-font', | |
2537 `set-face-foreground', etc. and takes many new optional arguments, in | |
2538 accordance with the new specifier mechanism. | |
2539 | |
2540 The new functions `face-property' and `face-property-instance' | |
2541 generalize `face-font', `face-foreground', etc. and take many new | |
2542 optional arguments, in accordance with the new specifier mechanism. | |
2543 (`face-property' returns the value, if any, that was specified for a | |
2544 particular locale, and `face-property-instance' returns the actual | |
2545 value that will be used for display. See the section on specifiers.) | |
2546 | |
2547 The functions `face-font', `face-foreground', `face-background', | |
2548 `set-face-font', `set-face-foreground', `set-face-background', | |
2549 etc. are now convenience functions, trivially implemented using | |
2550 `face-property' and `set-face-property' and take new optional | |
2551 arguments in accordance with those functions. New convenience | |
2552 functions `face-font-instance', `face-foreground-instance', | |
2553 `face-background-instance', etc. are provided and are trivially | |
2554 implemented using `face-property-instance'. | |
2555 | |
2556 Inheritance of face properties can now be specified. Each individual | |
2557 face property can inherit differently from other properties, or not | |
2558 inherit at all. | |
2559 | |
2560 You can set user-defined properties on faces using | |
2561 `set-face-property'. | |
2562 | |
2563 You can create "temporary" faces, which are faces that disappear | |
2564 when they are no longer in use. This is as opposed to normal | |
2565 faces, which stay around forever. | |
2566 | |
2567 The function `make-face' takes a new optional argument specifying | |
2568 whether a face should be permanent or temporary, and returns the | |
2569 actual face object rather than the face symbol, as in previous | |
2570 versions of XEmacs. | |
2571 | |
2572 The function `face-list' takes a new optional argument specifying | |
2573 whether permanent, temporary, or both kinds of faces should be | |
2574 returned. | |
2575 | |
2576 Faces have new TTY-specific properties: `highlight', `reverse', | |
2577 `alternate', `blinking', and `dim'. | |
2578 | |
2579 Redisplay is smarter about dealing with face changes: changes to a | |
2580 particular face no longer cause all frames to be cleared and | |
2581 redisplayed. | |
2582 | |
2583 The Edit-Faces package is provided for interactively changing faces. | |
2584 A menu item on the options menu is provided for this. | |
2585 | |
2586 New functions are provided for retrieving the ascent, descent, height, | |
2587 and width of a character in a particular face. | |
2588 | |
2589 | |
2590 | |
2591 *** Fonts, Colors | |
2592 ----------------- | |
2593 | |
2594 ** INCOMPATIBLE CHANGE **: The old "font" and "pixel" objects are gone. | |
2595 In place are new objects "font specifier", "font instance", "color | |
2596 specifier", and "color instance". Functions `font-name', `pixel-name' | |
2597 (an obsolete alias for `color-name'), etc. are now convenience | |
2598 functions for working with font and color specifiers. Old code that | |
2599 is not too sophisticated about working with font and pixel objects may | |
2600 still work, though. (For example, the idiom `(font-name (face-font | |
2601 'default))' still works.) | |
2602 | |
2603 You can now extract the RGB components of a color-instance object | |
2604 (similar to the old pixel object) with the function | |
2605 `color-instance-rgb-components'. There is also a convenience function | |
2606 `color-rgb-components' for working with color specifiers. | |
2607 | |
2608 If there are no more colors available in the colormap, the nearest | |
2609 existing color will be used when allocating a new color. | |
2610 | |
2611 | |
2612 | |
2613 *** Frames | |
2614 ---------- | |
2615 | |
2616 What used to be called "screens" are now called "frames", for clarity | |
2617 and consistency with GNU Emacs. Aliases are provided for all the old | |
2618 screen functions and variables, to avoid introducing a huge E-Lisp | |
2619 incompatibility. | |
2620 | |
2621 The frame code has been merged with GNU Emacs 19.28, providing | |
2622 improved functionality for many functions. | |
2623 | |
2624 | |
2625 | |
2626 *** Glyphs, Images, and Pixmaps | |
2627 ------------------------------- | |
2628 | |
2629 Glyphs (used in various places, i.e. as begin-glyphs and end-glyphs | |
2630 attached to extents and appearing in a buffer or in marginal | |
2631 annotations; as the truncator and continuor glyphs marking line wrap | |
2632 or truncation; as an overlay at the beginning of a line; as the | |
2633 displayable element in a toolbar button; etc.) can now be | |
2634 buffer-local, window-local, frame-local, and device-local, and can be | |
2635 further restricted to a particular device type or class. The way in | |
2636 which faces can be controlled is now based on the general and powerful | |
2637 specifier mechanism; see above. | |
2638 | |
2639 ** INCOMPATIBLE CHANGE **: The glyph and pixmap API has been completely | |
2640 overhauled. A new Lisp object "glyph" is provided and should be used | |
2641 where the old "pixmap" object would have been used. The pixmap object | |
2642 exists no longer. There are also new Lisp objects "image specifier" | |
2643 and "image instance" (an image-instance is the closest equivalent to | |
2644 what a pixmap object was). More work on glyphs and images is slated | |
2645 for 19.13. The glyph and image docs in the Lisp Reference Manual are | |
2646 incomplete and will be finished in 19.13. | |
2647 | |
2648 The new function `set-glyph-property' allows setting of all the | |
2649 glyph properties (`baseline', `contrib-p', etc.). Convenience | |
2650 functions for particular properties are also provided, just like | |
2651 for faces. | |
2652 | |
2653 You can set user-defined properties on glyphs using the new function | |
2654 `set-glyph-property'. | |
2655 | |
2656 When displaying pixmaps, existing, closest-matching colors will be | |
2657 used if the colormap is full. | |
2658 | |
2659 If the compface library is compiled into XEmacs, there is built-in | |
2660 support for displaying X-Face bitmaps. (These are typically small | |
2661 pictures of people's faces, included in a mail message through the | |
2662 X-Face: header.) VM and highlight-headers will automatically use the | |
2663 built-in X-Face support if it is available. | |
2664 | |
2665 Annotations in the right margin (as well as the left margin) are now | |
2666 implemented. The left and right margin width functions have been | |
2667 superseded by the specifier variables `left-margin-width' and | |
2668 `right-margin-width', allowing much more flexible control through the | |
2669 specifier mechanism. | |
2670 | |
2671 ** INCOMPATIBLE CHANGE **: The variable `use-left-overflow', | |
2672 for controlling annotations in the left margin, is now a specifier | |
2673 variable instead of a buffer-local variable. (There is also a new | |
2674 variable `use-right-overflow', that is complementary.) | |
2675 | |
2676 | |
2677 | |
2678 *** Hashing | |
2679 ----------- | |
2680 | |
2681 Two new types of weak hashtables can be created: key-weak and | |
2682 value-weak. In a key-weak hashtable, an entry remains around | |
2683 if its key is referenced elsewhere, regardless of whether this | |
2684 is also the case for the value. Value-weak hashtables are | |
2685 complementary. (This is as opposed to the traditional weak | |
2686 hashtables, where an entry remains around only if both the | |
2687 key and value are referenced elsewhere.) New functions | |
2688 `make-key-weak-hashtable' and `make-value-weak-hashtable' | |
2689 are provided for creating these hashtables. | |
2690 | |
2691 The new function `md5' is provided for performing an MD5 | |
2692 hash of an object. MD5 is a secure message digest algorithm | |
2693 developed by RSA, inc. | |
2694 | |
2695 | |
2696 | |
2697 *** Keymaps | |
2698 ----------- | |
2699 | |
2700 The GNU Emacs concept of `function-key-map' is now partially | |
2701 implemented. This allows conversion of function-key escape sequences | |
2702 such as `ESC [ 1 1 ~' into an equivalent human-readable keysym such as | |
2703 `F1'. This work will be completed in 19.14. The function-key map is | |
2704 device-local and controllable through the functions | |
2705 `device-function-key-map' and `set-device-function-key-map'. | |
2706 | |
2707 `where-is-internal' now correctly searches minor-mode keymaps, | |
2708 extent-local keymaps, etc. As a side effect of this, menu items will | |
2709 now correctly show the keyboard equivalent for commands that are | |
2710 available through a minor-mode keymap, extent-local keymap, etc. | |
2711 | |
2712 ** INCOMPATIBLE CHANGE **: The modifier key "Symbol" has | |
2713 been renamed to "Alt", for compatibility with the rest of the world. | |
2714 Keep in mind that on many keyboards, the key labelled "Alt" actually | |
2715 generates the "Meta" modifier. (On Sun keyboards, however, the key | |
2716 labelled "Alt" does indeed generate the "Alt" modifier, and the key | |
2717 labelled with a diamond generates the "Meta" modifier.) | |
2718 | |
2719 | |
2720 | |
2721 *** Mouse, Active Region | |
2722 ------------------------ | |
2723 | |
2724 The mouse internals in mouse.el have been rewritten. Hooks have been | |
2725 provided for easier customization of mouse behavior. For example, you | |
2726 can now easily specify an action to be invoked on single-click | |
2727 (i.e. down-up without appreciable motion), double-click, drag-up, etc. | |
2728 | |
2729 Some code from GNU Emacs has been ported over, generalizing some of | |
2730 the X-specific mouse stuff. | |
2731 | |
2732 ** INCOMPATIBLE CHANGE **: The function `set-mouse-position' accepts | |
2733 a window instead of a frame. | |
2734 | |
2735 New function `mouse-position' that obsoletes and is more powerful than | |
2736 `read-mouse-position'. | |
2737 | |
2738 New functions `mouse-pixel-position' and `set-mouse-pixel-position' for | |
2739 working with pixels instead of characters. | |
2740 | |
2741 The active (Zmacs) region is now highlighted using the `zmacs-region-face' | |
2742 instead of the `primary-selection-face'; this generalizes what used | |
2743 to be X-specific. | |
2744 | |
2745 New functions `region-active-p', `region-exists-p', and `activate-region' | |
2746 provide a uniform API for dealing with the region irrespective of | |
2747 whether the variable `zmacs-regions' is set. | |
2748 | |
2749 XEmacs is now a better X citizen with respect to the primary selection: | |
2750 it does not stomp on the primary selection quite so much. This makes | |
2751 things more manageable if you set `zmacs-regions' to nil. | |
2752 | |
2753 | |
2754 | |
2755 *** Processes | |
2756 ------------- | |
2757 | |
2758 Various process race conditions and bugs have been fixed. Problems | |
2759 with process termination not getting noticed until much later (if at | |
2760 all) should be gone now, as well as problems with zombie processes | |
2761 under some systems. | |
2762 | |
2763 SOCKS support is now included. SOCKS is a package that allows hosts | |
2764 behind a firewall to gain full access to the Internet without | |
2765 requiring direct IP reachability. | |
2766 | |
2767 | |
2768 | |
2769 *** Windows | |
2770 ----------- | |
2771 | |
2772 Windows 95 is still not out yet. | |
2773 | |
2774 ** INCOMPATIBLE CHANGE **: The functions `locate-window-from-coordinates' | |
2775 and `window-edges' have been eliminated. It no longer makes sense to | |
2776 work with windows in terms of character positions, because windows can | |
2777 (and often do) have many differently-sized fonts in them, because the | |
2778 3-D modeline is not exactly one line high, etc. | |
2779 | |
2780 The new functions `window-pixel-edges', `window-highest-p', | |
2781 `window-lowest-p', `frame-highest-window', and `frame-lowest-window' | |
2782 are provided as substitutes for the above-mentioned, deleted | |
2783 functions. | |
2784 | |
2785 The function `window-end' now takes an optional GUARANTEE argument | |
2786 that will ensure that the value is actually correct as of the next | |
2787 redisplay. | |
2788 | |
2789 The window code has been merged with GNU Emacs 19.28, providing | |
2790 improved functionality for many functions. | |
2791 | |
2792 | |
2793 | |
2794 *** System-Specific Information | |
2795 ------------------------------- | |
2796 | |
2797 Georg Nikodym's dynodump package is provided, for proper unexec()ing | |
2798 on Solaris systems. Executables built on Solaris 2.3 can now run on | |
2799 Solaris 2.4 without crashing; similarly with executables built on one | |
2800 type of Sun machine and run on another. | |
2801 | |
2802 AIX 4.x is supported. | |
2803 | |
2804 The NeXTstep operating system is supported in TTY mode (this is still | |
2805 in beta). There are plans to port XEmacs to the NeXTstep window | |
2806 system, but it may be awhile before this is complete. | |
2807 | |
2808 Problems with the `round' function causing arithmetic errors on HPUX 9 | |
2809 have been fixed. | |
2810 | |
2811 You can now build XEmacs as an ELF executable on Linux systems that | |
2812 support ELF. | |
2813 | |
2814 Various other new system configurations are supported. | |
2815 | |
2816 | |
2817 | |
2818 *** Packages | |
2819 ------------ | |
2820 | |
2821 Most packages have been updated to the latest available versions. | |
2822 | |
2823 | |
2824 Some of the new Emacs Lisp packages --- | |
2825 | |
2826 Hyperbole: the everyday information manager. Provides a Rolodex, | |
2827 allows links to be embedded in text, etc. | |
2828 | |
2829 OOBR: a sophisticated class browser for object-oriented languages. | |
2830 | |
2831 viper: a better VI emulator that allows Emacs and VI features | |
2832 to coexist happily. | |
2833 | |
2834 hm--html-menus: a sophisticated package for editing HTML code, | |
2835 from Heiko Muenkel. | |
2836 | |
2837 ksh-mode.el: for editing shell scripts. | |
2838 | |
2839 lazy-lock.el: a lazy, on-the-fly fontifier. | |
2840 | |
2841 paren.el: an improved matching paren highlighter | |
2842 | |
2843 | |
2844 | |
2845 Major changes to existing packages -- | |
2846 | |
2847 VM: has a toolbar, many other nice features. | |
2848 | |
2849 w3: has a toolbar, many other nice features. | |
2850 | |
2851 ediff: provides three-way merging, has a better user interface. | |
2852 | |
2853 info: has a toolbar. | |
2854 | |
2855 highlight-headers.el: now highlights URL's and makes them active so | |
2856 that when clicked either Netscape 1.1 is called | |
2857 or Emacs W3 is run. | |
2858 | |
2859 | |
2860 ** Major Differences Between 19.10 and 19.11 | |
2861 ============================================ | |
2862 | |
2863 The name has changed from "Lucid Emacs" to "XEmacs". Along with this is a | |
2864 new canonical ftp site: cs.uiuc.edu:/pub/xemacs. | |
2865 | |
2866 XEmacs now has its very own World Wide Web page! It contains a | |
2867 complete list of the FTP distribution sites, the most recent FAQ, | |
2868 pointers to Emacs Lisp packages not included with the distribution, and | |
2869 other useful stuff. Check it out at http://xemacs.cs.uiuc.edu/. | |
2870 | |
2871 A preliminary New Users Guide. | |
2872 | |
2873 cc-mode.el now provides the default C, C++ and Objective-C modes. | |
2874 | |
2875 The primary goal of this release is stability. Very few new features have | |
2876 been introduced but lots of bugs have been fixed. Many of the Emacs Lisp | |
2877 packages have been updated. | |
2878 | |
2879 Some of the new Emacs Lisp packages --- | |
2880 | |
2881 tcl-mode.el: major mode for editing TCL code | |
2882 | |
2883 fast-lock.el: saves and restores font-lock highlighting, greatly | |
2884 reducing the time necessary for loading a font-lock'ed | |
2885 file | |
2886 | |
2887 ps-print.el: prints buffers to Postscript printers preserving the | |
2888 buffer's bold and italic text attributes | |
2889 | |
2890 toolbar.el: provides a "fake" toolbar for use with XEmacs (an | |
2891 integrated one will be included with 19.12) | |
2892 | |
2893 | |
2894 ** Major Differences Between 19.9 and 19.10 | |
2895 =========================================== | |
2896 | |
2897 The GNU `configure' system is now used to build lemacs. | |
2898 | |
2899 The Emacs Manual and Emacs Lisp Reference Manual now document version 19.10. | |
2900 If you notice any errors, please let us know. | |
2901 | |
2902 When pixmaps are displayed in a buffer, they contribute to the line height - | |
2903 that is, if the glyph is taller than the rest of the text on the line, the | |
2904 line will be as tall as necessary to display the glyph. | |
2905 | |
2906 In addition to using arbitrary sound files as emacs beeps, one can control | |
2907 the pitch and duration of the standard X beep, on X servers which allow that | |
2908 (Note: most don't.) | |
2909 | |
2910 There is support for playing sounds on systems with NetAudio servers. | |
2911 | |
2912 Minor modes may have mode-specific key bindings; keymaps may have an arbitrary | |
2913 number of parent maps. | |
2914 | |
2915 Menus can have toggle and radio buttons in them. | |
2916 | |
2917 There is a font selection menu. | |
2918 | |
2919 Some default key bindings have changed to match FSF19; the new bindings are | |
2920 | |
2921 Screen-related commands: | |
2922 C-x 5 2 make-screen | |
2923 C-x 5 0 delete-screen | |
2924 C-x 5 b switch-to-buffer-other-screen | |
2925 C-x 5 f find-file-other-screen | |
2926 C-x 5 C-f find-file-other-screen | |
2927 C-x 5 m mail-other-screen | |
2928 C-x 5 o other-screen | |
2929 C-x 5 r find-file-read-only-other-screen | |
2930 Abbrev-related commands: | |
2931 C-x a l add-mode-abbrev | |
2932 C-x a C-a add-mode-abbrev | |
2933 C-x a g add-global-abbrev | |
2934 C-x a + add-mode-abbrev | |
2935 C-x a i g inverse-add-global-abbrev | |
2936 C-x a i l inverse-add-mode-abbrev | |
2937 C-x a - inverse-add-global-abbrev | |
2938 C-x a e expand-abbrev | |
2939 C-x a ' expand-abbrev | |
2940 Register-related commands: | |
2941 C-x r C-SPC point-to-register | |
2942 C-x r SPC point-to-register | |
2943 C-x r j jump-to-register | |
2944 C-x r s copy-to-register | |
2945 C-x r x copy-to-register | |
2946 C-x r i insert-register | |
2947 C-x r g insert-register | |
2948 C-x r r copy-rectangle-to-register | |
2949 C-x r c clear-rectangle | |
2950 C-x r k kill-rectangle | |
2951 C-x r y yank-rectangle | |
2952 C-x r o open-rectangle | |
2953 C-x r t string-rectangle | |
2954 C-x r w window-configuration-to-register | |
2955 Narrowing-related commands: | |
2956 C-x n n narrow-to-region | |
2957 C-x n w widen | |
2958 Other changes: | |
2959 C-x 3 split-window-horizontally (was undefined) | |
2960 C-x - shrink-window-if-larger-than-buffer | |
2961 C-x + balance-windows | |
2962 | |
2963 The variable allow-deletion-of-last-visible-screen has been removed, since | |
2964 it was widely hated. You can now always delete the last visible screen if | |
2965 there are other iconified screens in existence. | |
2966 | |
2967 ToolTalk support is provided. | |
2968 | |
2969 An Emacs screen can be placed within an "external client widget" managed | |
2970 by another application. This allows an application to use an Emacs screen | |
2971 as its text pane rather than the standard Text widget that is provided | |
2972 with Motif or Athena. | |
2973 | |
2974 Additional compatibility with Epoch is provided (though this is not yet | |
2975 complete.) | |
2976 | |
2977 | |
2978 ** Major Differences Between 19.8 and 19.9 | |
2979 ========================================== | |
2980 | |
2981 Scrollbars! If you have Motif, these are real Motif scrollbars; otherwise, | |
2982 Athena scrollbars are used. They obey all the usual resources of their | |
2983 respective toolkits. | |
2984 | |
2985 There is now an implementation of dialog boxes based on the Athena | |
2986 widgets, as well as the existing Motif implementation. | |
2987 | |
2988 This release works with Motif 1.2 as well as 1.1. If you link with Motif, | |
2989 you do not also need to link with Athena. | |
2990 | |
2991 If you compile lwlib with both USE_MOTIF and USE_LUCID defined (which is the | |
2992 recommended configuration) then the Lucid menus will draw text using the Motif | |
2993 string-drawing library, instead of the Xlib one. The reason for this is that | |
2994 one can take advantage of the XmString facilities for including non-Latin1 | |
2995 characters in resource specifications. However, this is a user-visible change | |
2996 in that, in this configuration, the menubar will use the "*fontList" resource | |
2997 in preference to the "*font" resource, if it is set. | |
2998 | |
2999 It's possible to make extents which are copied/pasted by kill and undo. | |
3000 There is an implementation of FSF19-style text properties based on this. | |
3001 | |
3002 There is a new variable, minibuffer-max-depth, which is intended to circumvent | |
3003 a common source of confusion among new Emacs users. Since, under a window | |
3004 system, it's easy to jump out of the minibuffer (by doing M-x, then getting | |
3005 distracted, and clicking elsewhere) many, many novice users have had the | |
3006 problem of having multiple minibuffers build up, even to the point of | |
3007 exhausting the lisp stack. So the default behavior is to disallow the | |
3008 minibuffer to ever be reinvoked while active; if you attempt to do so, you | |
3009 will be prompted about it. | |
3010 | |
3011 There is a new variable, teach-extended-commands-p, which if set, will cause | |
3012 `M-x' to remind you of any key bindings of the command you just invoked the | |
3013 "long way." | |
3014 | |
3015 There are menus in Dired, Tar, Comint, Compile, and Grep modes. | |
3016 | |
3017 There is a menu of window management commands on the right mouse button over | |
3018 the modelines. | |
3019 | |
3020 Popup menus now have titles at the top; this is controlled by the new | |
3021 variable `popup-menu-titles'. | |
3022 | |
3023 The `Find' key on Sun keyboards will search for the next (or previous) | |
3024 occurrence of the selected text, as in OpenWindows programs. | |
3025 | |
3026 The `timer' package has been renamed to `itimer' to avoid a conflict with | |
3027 a different package called `timer'. | |
3028 | |
3029 VM 5.40 is included. | |
3030 | |
3031 W3, the emacs interface to the World Wide Web, is included. | |
3032 | |
3033 Felix Lee's GNUS speedups have been installed, including his new version of | |
3034 nntp.el which makes GNUS efficiently utilize the NNTP XOVER command if | |
3035 available (which is much faster.) | |
3036 | |
3037 GNUS should also be much friendlier to new users: it starts up much faster, | |
3038 and doesn't (necessarily) subscribe you to every single newsgroup. | |
3039 | |
3040 The byte-compiler issues a new class of warnings: variables which are | |
3041 bound but not used. This is merely an advisory, and does not mean the | |
3042 code is incorrect; you can disable these warnings in the usual way with | |
3043 the `byte-compiler-options' macro. | |
3044 | |
3045 the `start-open' and `end-open' extent properties, for specifying whether | |
3046 characters inserted exactly at a boundary of an extent should go into the | |
3047 extent or out of it, now work correctly. | |
3048 | |
3049 The `extent-data' slot has been generalized/replaced with a property list, | |
3050 so it's easier to attach arbitrary data to extent objects. | |
3051 | |
3052 The `event-modifiers' and `event-modifier-bits' functions work on motion | |
3053 events as well as other mouse and keyboard events. | |
3054 | |
3055 Forms-mode uses fonts and read-only regions. | |
3056 | |
3057 The behavior of the -geometry command line option should be correct now. | |
3058 | |
3059 The `iconic' screen parameter works when passed to x-create-screen. | |
3060 | |
3061 The user's manual now documents Lucid Emacs 19.9. | |
3062 | |
3063 The relocating buffer allocator is turned on by default; this means that when | |
3064 buffers are killed, their storage will be returned to the operating system, | |
3065 and the size of the emacs process will shrink. | |
3066 | |
3067 CAVEAT: code which contains calls to certain `face' accessor functions will | |
3068 need to be recompiled by version 19.9 before it will work. The functions | |
3069 whose callers must be recompiled are: face-font, face-foreground, | |
3070 face-background, face-background-pixmap, and face-underline-p. The symptom | |
3071 of this problem is the error "Wrong type argument, arrayp, #<face ... >". | |
3072 The .elc files generated by version 19.9 will work in 19.6 and 19.8, but | |
3073 older .elc files which contain calls to these functions will not work in 19.9. | |
3074 | |
3075 Work In Progress: | |
3076 | |
3077 - We have been in the process of internationalizing Lucid Emacs. This code is | |
3078 ***not*** ready for general use yet. However, the code is included (and | |
3079 turned off by default) in this release. | |
3080 | |
3081 - If you define I18N2 at compile-time, then sorting/collation will be done | |
3082 according to the locale returned by setlocale(). | |
3083 | |
3084 - If you define I18N3 at compile-time, then all messages printed by lemacs | |
3085 will be filtered through the gettext() library routine, to enable the use | |
3086 of locale-specific translation catalogues. The current implementation of | |
3087 this is quite dependent on Solaris 2, and has a very large impact on | |
3088 existing code, therefore we are going to be making major changes soon. | |
3089 (You'll notice calls to `gettext' and `GETTEXT' scattered around much of | |
3090 the lisp and C code; ignore it, this will be going away.) | |
3091 | |
3092 - If you define I18N4 at compile-time, then lemacs will internally use a | |
3093 wide representation of characters, enabling the use of large character | |
3094 sets such as Kanji. This code is very OS dependent: it requires X11R5, | |
3095 and several OS-supplied library routines for reading and writing wide | |
3096 characters (getwc(), putwc(), and a few others.) Performance is also a | |
3097 problem. This code is also scheduled for a major overhaul, with the | |
3098 intent of improving performance and portability. | |
3099 | |
3100 Our eventual goal is to merge with MULE, or at least provide the same base | |
3101 level of functionality. If you would like to help out with this, let us | |
3102 know. | |
3103 | |
3104 - Other work-in-progress includes Motif drag-and-drop support, ToolTalk | |
3105 support, and support for embedding an Emacs widget inside another | |
3106 application (where it can function as that other application's text-entry | |
3107 area). This code has not been extensively tested, and may (or may not) | |
3108 have portability problems, but it's there for the adventurous. Comments, | |
3109 suggestions, bug reports, and especially fixes are welcome. But have no | |
3110 expectations that this experimental code will work at all. | |
3111 | |
3112 | |
3113 ** Major Differences Between 19.6 and 19.8 | |
3114 ========================================== | |
3115 | |
3116 There were almost no differences between versions 19.6 and 19.7; version 19.7 | |
3117 was a bug-fix release that was distributed with Energize 2.1. | |
3118 | |
3119 Lucid Emacs 19.8 represents the first stage of the Lucid Emacs/Epoch merger. | |
3120 The redisplay engine now in lemacs is an improved descendant of the Epoch | |
3121 redisplay. As a result, many bugs have been eliminated, and several disabled | |
3122 features have been re-enabled. Notably: | |
3123 | |
3124 Selective display (and outline-mode) work. | |
3125 | |
3126 Horizontally split windows work. | |
3127 | |
3128 The height of a line is the height of the tallest font displayed on that line; | |
3129 it is possible for a screen to display lines of differing heights. (Previously, | |
3130 the height of all lines was the height of the tallest font loaded.) | |
3131 | |
3132 There is lisp code to scale fonts up and down, for example, to load the next- | |
3133 taller version of a font. | |
3134 | |
3135 There is a new internal representation for lisp objects, giving emacs-lisp 28 | |
3136 bit integers and a 28 bit address space, up from the previous maximum of 26. | |
3137 We expect eventually to increase this to 30 bit integers and a 32 bit address | |
3138 space, eliminating the need for DATA_SEG_BITS on some architectures. (On 64 | |
3139 bit machines, add 32 to all of these numbers.) | |
3140 | |
3141 GC performance is improved. | |
3142 | |
3143 Various X objects (fonts, colors, cursors, pixmaps) are accessible as first- | |
3144 class lisp objects, with finalization. | |
3145 | |
3146 An alternate interface to embedding images in the text is provided, called | |
3147 "annotations." You may create an "annotation margin" which is whitespace at | |
3148 the left side of the screen that contains only annotations, not buffer text. | |
3149 | |
3150 When using XPM files, one can specify the values of logical color names to be | |
3151 used when loading the files. | |
3152 | |
3153 It is possible to resize windows by dragging their modelines up and down. More | |
3154 generally, it is possible to add bindings for mouse gestures on the modelines. | |
3155 | |
3156 There is support for playing sound files on HP machines. | |
3157 | |
3158 ILISP version 5.5 is included. | |
3159 | |
3160 The Common Lisp #' read syntax is supported (#' is to "function" as ' is to | |
3161 "quote".) | |
3162 | |
3163 The `active-p' slot of menu items is now evaluated, so one can put arbitrary | |
3164 lisp code in a menu to decide whether that item should be selectable, rather | |
3165 than doing this with an `activate-menubar-hook'. | |
3166 | |
3167 The X resource hierarchy has changed slightly, to be more consistent. It used | |
3168 to be | |
3169 argv[0] SCREEN-NAME pane screen | |
3170 ApplicationShell EmacsShell Paned EmacsFrame | |
3171 | |
3172 now it is | |
3173 | |
3174 argv[0] shell pane SCREEN-NAME | |
3175 ApplicationShell EmacsShell Paned EmacsFrame | |
3176 | |
3177 The Lucid Emacs sources have been largely merged with FSF version 19; this | |
3178 means that the lisp library contains the most recent releases of various | |
3179 packages, and many new features of FSF 19 have been incorporated. | |
3180 | |
3181 Because of this, the lemacs sources should also be substantially more portable. | |
3182 | |
3183 | |
3184 ** Major Differences Between 19.4 and 19.6 | |
3185 ========================================== | |
3186 | |
3187 There were almost no differences between versions 19.4 and 19.5; we fixed | |
3188 a few minor bugs and repacked 19.4 as 19.5 for a CD-ROM that we gave away | |
3189 as a trade show promotion. | |
3190 | |
3191 The primary goal of the 19.6 release is stability, rather than improved | |
3192 functionality, so there aren't many user-visible changes. The most notable | |
3193 changes are: | |
3194 | |
3195 - The -geometry command-line option now correctly overrides geometry | |
3196 specifications in the resource database. | |
3197 - The `width' and `height' screen-parameters work. | |
3198 - Font-lock-mode considers the comment start and end characters to be | |
3199 a part of the comment. | |
3200 - The lhilit package has been removed. Use font-lock-mode instead. | |
3201 - vm-isearch has been fixed to work with isearch-mode. | |
3202 - new versions of ispell and calendar. | |
3203 - sccs.el has menus. | |
3204 | |
3205 Lots of bugs were fixed, including the problem that lemacs occasionally | |
3206 grabbed the keyboard focus. | |
3207 | |
3208 Also, as of Lucid Emacs 19.6 and Energize 2.0 (shipping now) it is possible | |
3209 to compile the public release of Lucid Emacs with support for Energize; so | |
3210 now Energize users will be able to build their own Energize-aware versions | |
3211 of lemacs, and will be able to use newer versions of lemacs as they are | |
3212 released to the net. (Of course, this is not behavior covered by your | |
3213 Energize support contract; you do it at your own risk.) | |
3214 | |
3215 I have not incorporated all portability patches that I have been sent since | |
3216 19.4; I will try to get to them soon. However, if you need to make any | |
3217 changes to lemacs to get it to compile on your system, it would be quite | |
3218 helpful if you would send me context diffs (diff -c) against version 19.6. | |
3219 | |
3220 | |
3221 ** Major Differences Between 19.3 and 19.4 | |
3222 ========================================== | |
3223 | |
3224 Prototypes have been added for all functions. Emacs compiles in the strict | |
3225 ANSI modes of lcc and gcc, so portability should be vastly improved. | |
3226 | |
3227 Many many many many core leaks have been plugged, especially in screen | |
3228 creation and deletion. | |
3229 | |
3230 The float support reworked to be more portable and ANSI conformant. This | |
3231 resulted in these new configuration parameters: HAVE_INVERSE_HYPERBOLIC, | |
3232 HAVE_CBRT, HAVE_RINT, FLOAT_CHECK_ERRNO, FLOAT_CATCH_SIGILL, | |
3233 FLOAT_CHECK_DOMAIN. Let us know if you had to change the defaults on your | |
3234 architecture. | |
3235 | |
3236 The SunOS unexec has been rewritten, and now works with either static or | |
3237 dynamic libraries, depending on whether -Bstatic or -Bdynamic were specified | |
3238 at link-time. | |
3239 | |
3240 Small (character-sized) bitmaps can be mixed in with buffer text via the new | |
3241 functions set-extent-begin-glyph and set-extent-end-glyph. (This is actually | |
3242 a piece of functionality that Energize has been using for a while, but we've | |
3243 just gotten around to making it possible to use it without Energize. See how | |
3244 nice we are? Go buy our product.) | |
3245 | |
3246 If compiled with Motif support, one can pop up dialog boxes from emacs lisp. | |
3247 We encourage someone to contribute Athena an version of this code; it | |
3248 shouldn't be much work. | |
3249 | |
3250 If dialog boxes are available, then y-or-n-p and yes-or-no-p use dialog boxes | |
3251 instead of the minibuffer if invoked as a result of a command that was | |
3252 executed from a menu instead of from the keyboard. | |
3253 | |
3254 Multiple screen support works better; check out doc of get-screen-for-buffer. | |
3255 | |
3256 The default binding of backspace is the same as delete. (C-h is still help.) | |
3257 | |
3258 A middle click while the minibuffer is active does completion if you click on | |
3259 a highlighted completion, otherwise it executes the global binding of button2. | |
3260 | |
3261 New versions of Barry Warsaw's c++-mode and syntax.c. Font-lock-mode works | |
3262 with C++ mode now. | |
3263 | |
3264 The semantics of activate-menubar-hook has changed; the functions are called | |
3265 with no arguments now. | |
3266 | |
3267 `truename' no longer hacks the automounter; use directory-abbrev-alist instead. | |
3268 | |
3269 Most minibuffer handling has been reimplemented in emacs-lisp. | |
3270 | |
3271 There is now a builtin minibuffer history mechanism which replaces gmhist. | |
3272 | |
3273 | |
3274 ** Major Differences Between 19.2 and 19.3 | |
3275 ========================================== | |
3276 | |
3277 The ISO characters have correct case and syntax tables now, so the word-motion | |
3278 and case-converting commands work sensibly on them. | |
3279 | |
3280 If you set ctl-arrow to an integer, you can control exactly which characters | |
3281 are printable. (There will be a less crufty way to do this eventually.) | |
3282 | |
3283 Menubars can now be buffer local; the function set-screen-menubar no longer | |
3284 exists. Look at GNUS and VM for examples of how to do this, or read | |
3285 menubar.el. | |
3286 | |
3287 When emacs is reading from the minibuffer with completions, any completions | |
3288 which are visible on the screen will highlight when the mouse moves over them; | |
3289 clicking middle on a completion is the same as typing it at the minibuffer. | |
3290 Some implications of this: The *Completions* buffer is always mousable. If | |
3291 you're using the completion feature of find-tag, your source code will be | |
3292 mousable when you type M-. Dired buffers will be mousable as soon as you | |
3293 type ^X^F. And so on. | |
3294 | |
3295 The old isearch code has been replaced with a descendant of Dan LaLiberte's | |
3296 excellent isearch-mode; it is more customizable, and generally less bogus. | |
3297 You can search for "composed" characters. There are new commands, too; see | |
3298 the doc for ^S, or the NEWS file. | |
3299 | |
3300 A patched GNUS 3.14 is included. | |
3301 | |
3302 The user's manual now documents Lucid Emacs 19.3. | |
3303 | |
3304 A few more modes have mouse and menu support. | |
3305 | |
3306 The startup code should be a little more robust, and give you more reasonable | |
3307 error messages when things aren't installed quite right (instead of the | |
3308 ubiquitous "cannot open DISPLAY"...) | |
3309 | |
3310 Subdirectories of the lisp directory whose names begin with a hyphen or dot | |
3311 are not automatically added to the load-path, so you can use this to avoid | |
3312 accidentally inflicting experimental software on your users. | |
3313 | |
3314 I've tried to incorporate all of the portability patches that were sent to | |
3315 me; I tried to solve some of the problems in different ways than the | |
3316 patches did, so let me know if I missed something. | |
3317 | |
3318 Some systems will need to define NEED_STRDUP, NEED_REALPATH, HAVE_DREM, or | |
3319 HAVE_REMAINDER in config.h. Really this should be done in the appropriate | |
3320 s- or m- files, but I don't know which systems need these and which don't. | |
3321 If yours does, let me know which file it should be in. | |
3322 | |
3323 Check out these new packages: | |
3324 | |
3325 blink-paren.el: causes the matching parenthesis to flash on and off whenever | |
3326 the cursor is sitting on a paren-syntax character. | |
3327 | |
3328 pending-del.el: Certain commands implicitly delete the highlighted region: | |
3329 Typing a character when there is a highlighted region replaces | |
3330 that region with the typed character. | |
3331 | |
3332 font-lock.el: A code-highlighting package, driven off of syntax tables, so | |
3333 that it understands block comments, strings, etc. The | |
3334 insertion hook is used to fontify text as you type it in. | |
3335 | |
3336 shell-font.el: Displays your shell-buffer prompt in boldface. | |
3337 | |
3338 * The History of XEmacs | |
3339 ======================= | |
3340 | |
3341 This product is an extension of GNU Emacs, previously known to some as | |
3342 "Lucid Emacs" or "ERA". It was initially based on an early version of Emacs | |
3343 Version 19 from the Free Software Foundation and has since been kept | |
3344 up-to-date with recent versions of that product. It stems from a | |
3345 collaboration of Lucid, Inc. with SunSoft DevPro (a division of Sun | |
3346 Microsystems, Inc.; formerly called SunPro) and the University of Illinois. | |
3347 | |
3348 NOTE: Lucid, Inc. is currently out of business but development on XEmacs | |
3349 continues strong. Recently, Amdahl Corporation and INS Engineering have | |
3350 both contributed significantly to the development of XEmacs. | |
3351 | |
3352 | |
3353 * What's Different? | |
3354 =================== | |
3355 | |
3356 | |
3357 ** Differences between XEmacs and GNU Emacs 19 | |
3358 ================================================== | |
3359 In XEmacs 20, characters are first-class objects. Characters can be | |
3360 converted to integers, but are not integers. FSF 19, XEmacs 19, and Mule | |
3361 represent them as integers. | |
3362 | |
3363 In XEmacs, events are first-class objects. FSF 19 represents them as | |
3364 integers, which obscures the differences between a key gesture and the | |
3365 ancient ASCII code used to represent a particular overlapping subset of them. | |
3366 | |
3367 In XEmacs, keymaps are first-class opaque objects. FSF 19 represents them as | |
3368 complicated combinations of association lists and vectors. If you use the | |
3369 advertised functional interface to manipulation of keymaps, the same code | |
3370 will work in XEmacs, Emacs 18, and GNU Emacs 19; if your code depends | |
3371 on the underlying implementation of keymaps, it will not. | |
3372 | |
3373 XEmacs uses "extents" to represent all non-textual aspects of buffers; | |
3374 FSF 19 uses two distinct objects, "text properties" and "overlays", | |
3375 which divide up the functionality between them. Extents are a | |
3376 superset of the functionality of the two FSF data types. The full FSF | |
3377 19 interface to text properties and overlays is supported in XEmacs | |
3378 (with extents being the underlying representation). | |
3379 | |
3380 Extents can be made to be copied into strings, and thus restored by kill | |
3381 and yank. Thus, one can specify this behavior on either "extents" or | |
3382 "text properties", whereas in FSF 19 text properties always have this | |
3383 behavior and overlays never do. | |
3384 | |
3385 Many more packages are provided standard with XEmacs than with FSF 19. | |
3386 | |
3387 Images of arbitrary size can be embedded in a buffer. | |
3388 | |
3389 Variable width fonts work. | |
3390 | |
3391 The height of a line is the height of the tallest font on that line, instead | |
3392 of all lines having the same height. | |
3393 | |
3394 XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which | |
3395 makes it be a more well-behaved X citizen (and also improves | |
3396 portability). A result of this is that it is possible to include | |
3397 other Xt "Widgets" in the XEmacs window. Also, XEmacs understands the | |
3398 standard Xt command-line arguments. | |
3399 | |
3400 XEmacs provides support for ToolTalk on systems that have it. | |
3401 | |
3402 XEmacs can ask questions using popup dialog boxes. Any command executed from | |
3403 a menu will ask yes/no questions with dialog boxes, while commands executed | |
3404 via the keyboard will use the minibuffer. | |
3405 | |
3406 XEmacs has a built-in toolbar. Four toolbars can actually be configured: | |
3407 top, bottom, left, and right toolbars. | |
3408 | |
3409 XEmacs has vertical and horizontal scrollbars. Unlike in FSF 19 (which | |
3410 provides a primitive form of vertical scrollbar), these are true toolkit | |
3411 scrollbars. A look-alike Motif scrollbar is provided for those who | |
3412 don't have Motif. (Even for those who do, the look-alike may be preferable | |
3413 as it is faster.) | |
3414 | |
3415 If you're running on a machine with audio hardware, you can specify sound | |
3416 files for XEmacs to play instead of the default X beep. See the documentation | |
3417 of the function load-sound-file and the variable sound-alist. | |
3418 | |
3419 An XEmacs frame can be placed within an "external client widget" managed by | |
3420 another application. This allows an application to use an XEmacs frame as its | |
3421 text pane rather than the standard Text widget that is provided with Motif or | |
3422 Athena. XEmacs supports Motif applications, generic Xt (e.g. Athena) | |
3423 applications, and raw Xlib applications. | |
3424 | |
3425 Here are some more specifics about the XEmacs implementation: | |
3426 | |
3427 *** The Input Model | |
3428 ------------------- | |
3429 | |
3430 The fundamental unit of input is an "event" instead of a character. An | |
3431 event is a new data type that contains several pieces of information. | |
3432 There are several kinds of event, and corresponding accessor and utility | |
3433 functions. We tried to abstract them so that they would apply equally | |
3434 well to a number of window systems. | |
3435 | |
3436 NOTE: All timestamps are measured as milliseconds since Emacs started. | |
3437 | |
3438 key_press_event | |
3439 event_channel A token representing which keyboard generated it. | |
3440 For this kind of event, this is a console object. | |
3441 timestamp When it happened | |
3442 key What keysym this is; a character or a symbol. | |
3443 If it is a character, it will be a printing | |
3444 ASCII character. | |
3445 modifiers Bucky-bits on that key: control, meta, etc. | |
3446 For most keys, Shift is not a bit; that is implicit | |
3447 in the keyboard layout. | |
3448 | |
3449 button_press_event | |
3450 button_release_event | |
3451 event_channel A token representing which mouse generated it. | |
3452 For this kind of event, this is a frame object. | |
3453 timestamp When it happened | |
3454 button What button went down or up. | |
3455 modifiers Bucky-bits on that button: shift, control, meta, etc. | |
3456 x, y Where it was at the button-state-change (in pixels). | |
3457 | |
3458 pointer_motion_event | |
3459 event_channel A token representing which mouse generated it. | |
3460 For this kind of event, this is a frame object. | |
3461 timestamp When it happened | |
3462 x, y Where it was after it moved (in pixels). | |
3463 modifiers Bucky-bits down when the motion was detected. | |
3464 (Possibly not all window systems will provide this?) | |
3465 | |
3466 process_event | |
3467 timestamp When it happened | |
3468 process the emacs "process" object in question | |
3469 | |
3470 timeout_event | |
3471 timestamp Now (really, when the timeout was signaled) | |
3472 interval_id The ID returned when the associated call to | |
3473 add_timeout_cb() was made | |
3474 ------ the rest of the fields are filled in by Emacs ----- | |
3475 id_number The Emacs timeout ID for this timeout (more | |
3476 than one timeout event can have the same value | |
3477 here, since Emacs timeouts, as opposed to | |
3478 add_timeout_cb() timeouts, can resignal | |
3479 themselves) | |
3480 function An elisp function to call when this timeout is | |
3481 processed. | |
3482 object The object passed to that function. | |
3483 | |
3484 eval_event | |
3485 timestamp When it happened | |
3486 function An elisp function to call with this event object. | |
3487 object Anything. | |
3488 This kind of event is used internally; sometimes the | |
3489 window system interface would like to inform emacs of | |
3490 some user action (such as focusing on another frame) | |
3491 but needs that to happen synchronously with the other | |
3492 user input, like keypresses. This is useful when | |
3493 events are reported through callbacks rather | |
3494 than in the standard event stream. | |
3495 | |
3496 misc_user_event | |
3497 timestamp When it happened | |
3498 function An elisp function to call with this event object. | |
3499 object Anything. | |
3500 This is similar to an eval_event, except that it is | |
3501 generated by user actions: selections in the | |
3502 menubar or scrollbar actions. It is a "command" | |
3503 event, like key and mouse presses (and unlike mouse | |
3504 motion, process output, and enter and leave window | |
3505 hooks). In many ways, eval_events are not the same | |
3506 as keypresses or misc_user_events. | |
3507 | |
3508 magic_event | |
3509 No user-serviceable parts within. This is for things | |
3510 like KeymapNotify and ExposeRegion events and so on | |
3511 that emacs itself doesn't care about, but which it | |
3512 must do something with for proper interaction with | |
3513 the window system. | |
3514 | |
3515 Magic_events are handled somewhat asynchronously, just | |
3516 like subprocess filters. However, occasionally a | |
3517 magic_event needs to be handled synchronously; in that | |
3518 case, the asynchronous handling of the magic_event will | |
3519 push an eval_event back onto the queue, which will be | |
3520 handled synchronously later. This is one of the | |
3521 reasons why eval_events exist; I'm not entirely happy | |
3522 with this aspect of this event model. | |
3523 | |
3524 | |
3525 The function `next-event' blocks and returns one of the above-described | |
3526 event objects. The function `dispatch-event' takes an event and processes | |
3527 it in the appropriate way. | |
3528 | |
3529 For a process-event, dispatch-event calls the process's handler; for a | |
3530 mouse-motion event, the mouse-motion-handler hook is called, and so on. | |
3531 For magic-events, dispatch-event does window-system-dependent things, | |
3532 including calling some non-window-system-dependent hooks: map-frame-hook, | |
3533 unmap-frame-hook, mouse-enter-frame-hook, and mouse-leave-frame-hook. | |
3534 | |
3535 The function `next-command-event' calls `next-event' until it gets a key or | |
3536 button from the user (that is, not a process, motion, timeout, or magic | |
3537 event). If it gets an event that is not a key or button, it calls | |
3538 `dispatch-event' on it immediately and reads another one. The | |
3539 next-command-event function could be implemented in Emacs Lisp, though it | |
3540 isn't. Generally one should call `next-command-event' instead of | |
3541 `next-event'. | |
3542 | |
3543 read-char calls next-command-event; if it doesn't get an event that can be | |
3544 converted to an ASCII character, it signals an error. Otherwise it returns | |
3545 an integer. | |
3546 | |
3547 The variable `last-command-char' always contains an integer, or nil (if the | |
3548 last read event has no ASCII equivalent, as when it is a mouse-click or a | |
3549 non-ASCII character chord.) | |
3550 | |
3551 The new variable `last-command-event' holds an event object, that could be | |
3552 a non-ASCII character, a button click, a menu selection, etc. | |
3553 | |
3554 The variable `unread-command-char' no longer exists, and has been replaced | |
3555 by `unread-command-events'. With the new event model, it is incorrect for | |
3556 code to do (setq unread-command-char (read-char)), because all user-input | |
3557 can't be represented as ASCII characters. *** This is an incompatible | |
3558 change. Code which sets `unread-command-char' must be updated to use the | |
3559 combination of `next-command-event' and `unread-command-events' instead. | |
3560 | |
3561 The functions `this-command-keys' and `recent-keys' return a vector of | |
3562 event objects, instead of a string of ASCII characters. *** This also | |
3563 is an incompatible change. | |
3564 | |
3565 Almost nothing happens at interrupt level; the SIGIO handler simply sets a | |
3566 flag, and later, the X event queue is scanned for KeyPress events which map | |
3567 to ^G. All redisplay happens in the main thread of the process. | |
3568 | |
3569 | |
3570 *** Keymaps | |
3571 ----------- | |
3572 | |
3573 Instead of keymaps being alists or obarrays, they are a new primary data | |
3574 type. The only user access to the contents of a keymap is through the | |
3575 existing keymap-manipulation functions, and a new function, map-keymap. | |
3576 This means that existing code that manipulates keymaps may need to | |
3577 be changed. | |
3578 | |
3579 One of our goals with the new input and keymap code was to make more | |
3580 character combinations available for binding, besides just ASCII and | |
3581 function keys. We want to be able bind different commands to Control-a | |
3582 and Control-Shift-a; we also want it to be possible for the keys Control-h | |
3583 and Backspace (and Control-M and Return, and Control-I and Tab, etc) to | |
3584 be distinct. | |
3585 | |
3586 One of the most common complaints that new Emacs users have is that backspace | |
3587 is help. The answer is to play around with the keyboard-translate-table, or | |
3588 be lucky enough to have a system administrator who has done this for you | |
3589 already; but if it were possible to bind backspace and C-h to different | |
3590 things, then (under a window manager at least) both backspace and delete | |
3591 would delete a character, and ^H would be help. There's no need to deal | |
3592 with xmodmap, kbd-translate-table, etc. | |
3593 | |
3594 Here are some more examples: suppose you want to bind one function to Tab, | |
3595 and another to Control-Tab. This can't be done if Tab and Control-I are the | |
3596 same thing. What about control keys that have no ASCII equivalent, like | |
3597 Control-< ? One might want that to be bound to set-mark-at-point-min. We | |
3598 want M-C-Backspace to be kill-backward-sexp. But we want M-Backspace to be | |
3599 kill-backward-word. Again, this can't be done if Backspace and C-h are | |
3600 indistinguishable. | |
3601 | |
3602 The user represents keys as a string of ASCII characters (when possible and | |
3603 convenient), or as a vector of event objects, or as a vector of "key | |
3604 description lists", that looks like (control a), or (control meta delete) | |
3605 or (shift f1). The order of the modifier-names is not significant, so | |
3606 (meta control x) and (control meta x) are the same. | |
3607 | |
3608 `define-key' knows how to take any of the above representations and store them | |
3609 into a keymap. When Emacs wants to return a key sequence (this-command-keys, | |
3610 recent-keys, keyboard-macros, and read-key-sequence, for example) it returns | |
3611 a vector of event objects. Keyboard macros can also be represented as ASCII | |
3612 strings or as vectors of key description lists. | |
3613 | |
3614 This is an incompatible change: code which calls `this-command-keys', | |
3615 `recent-keys', `read-key-sequence', or manipulates keyboard-macros probably | |
3616 needs to be changed so that it no longer assumes that the returned value is a | |
3617 string. | |
3618 | |
3619 Control-Shift-a is specified as (control A), not (control shift a), since A | |
3620 is a two-case character. But for keys that don't have an upper case | |
3621 version, like F1, Backspace, and Escape, you use the (shift backspace) syntax. | |
3622 | |
3623 See the doc string for our version of define-key, reproduced below in the | |
3624 `Changed Functions' section. Note that when the KEYS argument is a string, | |
3625 it has the same semantics as the v18 define-key. | |
3626 | |
3627 | |
3628 *** Xt Integration | |
3629 ------------------ | |
3630 | |
3631 The heart of the event loop is implemented in terms of the Xt event functions | |
3632 (specifically XtAppProcessEvent), and uses Xt's concept of timeouts and | |
3633 file-descriptor callbacks, eliminating a large amount of system-dependent code | |
3634 (Xt does it for you.) | |
3635 | |
3636 If Emacs is compiled with support for X, it uses the Xt event loop even when | |
3637 Emacs is not running on an X display (the Xt event loop supports this). This | |
3638 makes it possible to run Emacs on a dumb TTY, and later connect it to one or | |
3639 more X servers. It should also be possible to later connect an existing Emacs | |
3640 process to additional TTY's, although this code is still experimental. (Our | |
3641 intent at this point is not to have an Emacs that is being used by multiple | |
3642 people at the same time: it is to make it possible for someone to go home, log | |
3643 in on a dialup line, and connect to the same Emacs process that is running | |
3644 under X in their office without having to recreate their buffer state and so | |
3645 on.) | |
3646 | |
3647 If Emacs is not compiled with support for X, then it instead uses more general | |
3648 code, something like what v18 does; but this way of doing things is a lot more | |
3649 modular. | |
3650 | |
3651 (Linking Emacs with Xt seems to only add about 300k to the executable size, | |
3652 compared with an Emacs linked with Xlib only.) | |
3653 | |
3654 | |
3655 *** Region Highlighting | |
3656 ----------------------- | |
3657 | |
3658 If the variable `zmacs-regions' is true, then the region between point and | |
3659 mark will be highlighted when "active". Those commands which push a mark | |
3660 (such as C-SPC, and C-x C-x) make the region become "active" and thus | |
3661 highlighted. Most commands (all non-motion commands, basically) cause it to | |
3662 become non-highlighted (non-"active"). Commands that operate on the region | |
3663 (such as C-w, C-x C-l, etc.) only work if the region is in the highlighted | |
3664 state. | |
3665 | |
3666 zmacs-activate-region-hook and zmacs-deactivate-region-hook are run at the | |
3667 appropriate times; under X, zmacs-activate-region-hook makes the X selection | |
3668 be the region between point and mark, thus doing two things at once: making | |
3669 the region and the X selection be the same; and making the region highlight | |
3670 in the same way as the X selection. | |
3671 | |
3672 If `zmacs-regions' is true, then the `mark-marker' command returns nil unless | |
3673 the region is currently in the active (highlighted) state. With an argument | |
3674 of t, this returns the mark (if there is one) regardless of the active-region | |
3675 state. You should *generally* not use the mark unless the region is active, | |
3676 if the user has expressed a preference for the active-region model. Watch | |
3677 out! Moving this marker changes the mark position. If you set the marker not | |
3678 to point anywhere, the buffer will have no mark. | |
3679 | |
3680 In this way, the primary selection is a fairly transitory entity; but | |
3681 when something is copied to the kill ring, it is made the Clipboard | |
3682 selection. It is also stored into CUT_BUFFER0, for compatibility with | |
3683 X applications that don't understand selections (like Emacs18). | |
3684 | |
3685 Compatibility note: if you have code which uses (mark) or (mark-marker), | |
3686 then you need to either: change those calls to (mark t) or (mark-marker t); | |
3687 or simply bind `zmacs-regions' to nil around the call to mark or mark-marker. | |
3688 This is probably the best solution, since it will work in Emacs 18 as well. | |
3689 | |
3690 | |
3691 *** Menubars and Dialog Boxes | |
3692 ----------------------------- | |
3693 | |
3694 Here is an example of a menubar definition: | |
3695 | |
3696 (defvar default-menubar | |
3697 '(("File" ["Open File..." find-file t] | |
3698 ["Save Buffer" save-buffer t] | |
3699 ["Save Buffer As..." write-file t] | |
3700 ["Revert Buffer" revert-buffer t] | |
3701 "-----" | |
3702 ["Print Buffer" lpr-buffer t] | |
3703 "-----" | |
3704 ["Delete Frame" delete-frame t] | |
3705 ["Kill Buffer..." kill-buffer t] | |
3706 ["Exit Emacs" save-buffers-kill-emacs t] | |
3707 ) | |
3708 ("Edit" ["Undo" advertised-undo t] | |
3709 ["Cut" kill-primary-selection t] | |
3710 ["Copy" copy-primary-selection t] | |
3711 ["Paste" yank-clipboard-selection t] | |
3712 ["Clear" delete-primary-selection t] | |
3713 ) | |
3714 ...)) | |
3715 | |
3716 The first element of each menu item is the string to print on the menu. | |
3717 | |
3718 The second element is the callback function; if it is a symbol, it is | |
3719 invoked with `call-interactively.' If it is a list, it is invoked with | |
3720 `eval'. | |
3721 | |
3722 If the second element is a symbol, then the menu also displays the key that | |
3723 is bound to that command (if any). | |
3724 | |
3725 The third element of the menu items determines whether the item is selectable. | |
3726 It may be t, nil, or a form to evaluate. Also, a hook is run just before a | |
3727 menu is exposed, which can be used to change the value of these slots. | |
3728 For example, there is a hook that makes the "undo" menu item be selectable | |
3729 only in the cases when `advertised-undo' would not signal an error. | |
3730 | |
3731 Menus may have other menus nested within them; they will cascade. | |
3732 | |
3733 There are utility functions for adding items to menus, deleting items, | |
3734 disabling them, etc. | |
3735 | |
3736 The function `popup-menu' takes a menu description and pops it up. | |
3737 | |
3738 The function `popup-dialog-box' takes a dialog-box description and pops | |
3739 it up. Dialog box descriptions look a lot like menu descriptions. | |
3740 | |
3741 The menubar, menu, and dialog-box code is implemented as a library, | |
3742 with an interface which hides the toolkit that implements it. | |
3743 | |
3744 | |
3745 *** Isearch Changes | |
3746 ------------------- | |
3747 | |
3748 Isearch has been reimplemented in a different way, adding some new features, | |
3749 and causing a few incompatible changes. | |
3750 | |
3751 - the old isearch-*-char variables are no longer supported. In the old | |
3752 system, one could make ^A mean "repeat the search" by doing something | |
3753 like (setq search-repeat-char ?C-a). In the new system, this is | |
3754 accomplished with | |
3755 | |
3756 (define-key isearch-mode-map "\C-a" 'isearch-repeat-forward) | |
3757 | |
3758 - The advantage of using the normal keymap mechanism for this is that you | |
3759 can bind more than one key to an isearch command: for example, both C-a | |
3760 and C-s could do the same thing inside isearch mode. You can also bind | |
3761 multi-key sequences inside of isearch mode, and bind non-ASCII keys. | |
3762 For example, to use the F1 key to terminate a search: | |
3763 | |
3764 (define-key isearch-mode-map 'f1 'isearch-exit) | |
3765 | |
3766 or to make ``C-c C-c'' terminate a search: | |
3767 | |
3768 (define-key isearch-mode-map "\C-c\C-c" 'isearch-exit) | |
3769 | |
3770 - If isearch is behaving case-insensitively (the default) and you type an | |
3771 upper case character, then the search will become case-sensitive. This | |
3772 can be disabled by setting `search-caps-disable-folding' to nil. | |
3773 | |
3774 - There is a history ring of the strings previously searched for; typing | |
3775 M-p or M-n while searching will cycle through this ring. Typing M-TAB | |
3776 will do completion across the set of items in the history ring. | |
3777 | |
3778 - The ESC key is no longer used to terminate an incremental search. The | |
3779 RET key should be used instead. This change is necessary for it to be | |
3780 possible to bind "meta" characters to isearch commands. | |
3781 | |
3782 | |
3783 *** Startup Code Changes | |
3784 ------------------------ | |
3785 | |
3786 The initial X frame is mapped before the user's .emacs file is executed. | |
3787 Without this, there is no way for the user to see any error messages | |
3788 generated by their .emacs file, any windows created by the .emacs file | |
3789 don't show up, and the copyleft notice isn't shown. | |
3790 | |
3791 The default values for load-path, exec-path, lock-directory, and | |
3792 Info-directory-list are not (necessarily) built into Emacs, but are | |
3793 computed at startup time. | |
3794 | |
3795 First, Emacs looks at the directory in which its executable file resides: | |
3796 | |
3797 o If that directory contains subdirectories named "lisp" and "lib-src", | |
3798 then those directories are used as the lisp library and exec directory. | |
3799 | |
3800 o If the parent of the directory in which the emacs executable is located | |
3801 contains "lisp" and "lib-src" subdirectories, then those are used. | |
3802 | |
3803 o If ../lib/xemacs-<version> (starting from the directory in which the | |
3804 emacs executable is located) contains a "lisp" subdirectory and either | |
3805 a "lib-src" subdirectory or a <configuration-name> subdirectory, then | |
3806 those are used. | |
3807 | |
3808 o If the emacs executable that was run is a symbolic link, then the link | |
3809 is chased, and the resultant directory is checked as above. | |
3810 | |
3811 (Actually, it doesn't just look for "lisp/", it looks for "lisp/prim/", | |
3812 which reduces the chances of a false positive.) | |
3813 | |
3814 If the lisp directory contains subdirectories, they are added to the default | |
3815 load-path as well. If the site-lisp directory exists and contains | |
3816 subdirectories, they are then added. Subdirectories whose names begin with | |
3817 a dot or a hyphen are not added to the load-path. | |
3818 | |
3819 These heuristics fail if the Emacs binary was copied from the main Emacs | |
3820 tree to some other directory, and links for the lisp directory were not put | |
3821 in. This isn't much of a restriction: either make there be subdirectories | |
3822 (or symbolic links) of the directory of the emacs executable, or make the | |
3823 "installed" emacs executable be a symbolic link to an executable in a more | |
3824 appropriate directory structure. For example, this setup works: | |
3825 | |
3826 /usr/local/xemacs/xemacs* ; The executable. | |
3827 /usr/local/xemacs/lisp/ ; The associated directories. | |
3828 /usr/local/xemacs/etc/ ; Any of the files in this list | |
3829 /usr/local/xemacs/lock/ ; could be symbolic links as well. | |
3830 /usr/local/xemacs/info/ | |
3831 | |
3832 As does this: | |
3833 | |
3834 /usr/local/bin/xemacs -> ../xemacs/src/xemacs-19.14 ; A link... | |
3835 /usr/local/xemacs/src/xemacs-19.14* ; The executable, | |
3836 /usr/local/xemacs/lisp/ ; and the rest of | |
3837 /usr/local/xemacs/etc/ ; the source tree | |
3838 /usr/local/xemacs/lock/ | |
3839 /usr/local/xemacs/info/ | |
3840 | |
3841 This configuration might be used for a multi-architecture installation; assume | |
3842 that $LOCAL refers to a directory which contains only files specific to a | |
3843 particular architecture (i.e., executables) and $SHARED refers to those files | |
3844 which are not machine specific (i.e., lisp code and documentation.) | |
3845 | |
3846 $LOCAL/bin/xemacs@ -> $LOCAL/xemacs-19.14/xemacs* | |
3847 $LOCAL/xemacs-19.14/lisp@ -> $SHARED/xemacs-19.14/lisp/ | |
3848 $LOCAL/xemacs-19.14/etc@ -> $SHARED/xemacs-19.14/etc/ | |
3849 $LOCAL/xemacs-19.14/info@ -> $SHARED/xemacs-19.14/info/ | |
3850 | |
3851 The following would also work, but the above is probably more attractive: | |
3852 | |
3853 $LOCAL/bin/xemacs* | |
3854 $LOCAL/bin/lisp@ -> $SHARED/xemacs-19.14/lisp/ | |
3855 $LOCAL/bin/etc@ -> $SHARED/xemacs-19.14/etc/ | |
3856 $LOCAL/bin/info@ -> $SHARED/xemacs-19.14/info/ | |
3857 | |
3858 If Emacs can't find the requisite directories, it writes a message like this | |
3859 (or some appropriate subset of it) to stderr: | |
3860 | |
3861 WARNING: | |
3862 couldn't find an obvious default for load-path, exec-directory, and | |
3863 lock-directory, and there were no defaults specified in paths.h when | |
3864 Emacs was built. Perhaps some directories don't exist, or the Emacs | |
3865 executable, /cadillac-th/jwz/somewhere/xemacs is in a strange place? | |
3866 | |
3867 Without both exec-directory and load-path, Emacs will be very broken. | |
3868 Consider making a symbolic link from /cadillac-th/jwz/somewhere/etc | |
3869 to wherever the appropriate Emacs etc/ directory is, and from | |
3870 /cadillac-th/jwz/somewhere/lisp/ to wherever the appropriate Emacs | |
3871 lisp library is. | |
3872 | |
3873 Without lock-directory set, file locking won't work. Consider | |
3874 creating /cadillac-th/jwz/somewhere/lock as a directory or symbolic | |
3875 link for use as the lock directory. | |
3876 | |
3877 The default installation tree is the following: | |
3878 | |
3879 /usr/local/bin/b2m ; | |
3880 ctags ; executables that | |
3881 emacsclient ; should be in | |
3882 etags ; user's path | |
3883 xemacs -> xemacs-<version> ; | |
3884 xemacs ; | |
3885 /usr/local/lib/xemacs/site-lisp | |
3886 /usr/local/lib/xemacs/lock | |
3887 /usr/local/lib/xemacs-<version>/etc ; architecture ind. files | |
3888 /usr/local/lib/xemacs-<version>/info | |
3889 /usr/local/lib/xemacs-<version>/lisp | |
3890 /usr/local/lib/xemacs-<version>/<configuration> ; binaries emacs may run | |
3891 | |
3892 | |
3893 *** X Resources | |
3894 --------------- | |
3895 | |
3896 (Note: This section is copied verbatim from the XEmacs Reference Manual.) | |
3897 | |
3898 The Emacs resources are generally set per-frame. Each Emacs frame | |
3899 can have its own name or the same name as another, depending on the | |
3900 name passed to the `make-frame' function. | |
3901 | |
3902 You can specify resources for all frames with the syntax: | |
3903 | |
3904 Emacs*parameter: value | |
3905 | |
3906 or | |
3907 | |
3908 Emacs*EmacsFrame.parameter:value | |
3909 | |
3910 You can specify resources for a particular frame with the syntax: | |
3911 | |
3912 Emacs*FRAME-NAME.parameter: value | |
3913 | |
3914 | |
3915 **** Geometry Resources | |
3916 ----------------------- | |
3917 | |
3918 To make the default size of all Emacs frames be 80 columns by 55 | |
3919 lines, do this: | |
3920 | |
3921 Emacs*EmacsFrame.geometry: 80x55 | |
3922 | |
3923 To set the geometry of a particular frame named `fred', do this: | |
3924 | |
3925 Emacs*fred.geometry: 80x55 | |
3926 | |
3927 Important! Do not use the following syntax: | |
3928 | |
3929 Emacs*geometry: 80x55 | |
3930 | |
3931 You should never use `*geometry' with any X application. It does not | |
3932 say "make the geometry of Emacs be 80 columns by 55 lines." It really | |
3933 says, "make Emacs and all subwindows thereof be 80x55 in whatever units | |
3934 they care to measure in." In particular, that is both telling the | |
3935 Emacs text pane to be 80x55 in characters, and telling the menubar pane | |
3936 to be 80x55 pixels, which is surely not what you want. | |
3937 | |
3938 As a special case, this geometry specification also works (and sets | |
3939 the default size of all Emacs frames to 80 columns by 55 lines): | |
3940 | |
3941 Emacs.geometry: 80x55 | |
3942 | |
3943 since that is the syntax used with most other applications (since most | |
3944 other applications have only one top-level window, unlike Emacs). In | |
3945 general, however, the top-level shell (the unmapped ApplicationShell | |
3946 widget named `Emacs' that is the parent of the shell widgets that | |
3947 actually manage the individual frames) does not have any interesting | |
3948 resources on it, and you should set the resources on the frames instead. | |
3949 | |
3950 The `-geometry' command-line argument sets only the geometry of the | |
3951 initial frame created by Emacs. | |
3952 | |
3953 A more complete explanation of geometry-handling is | |
3954 | |
3955 * The `-geometry' command-line option sets the `Emacs.geometry' | |
3956 resource, that is, the geometry of the ApplicationShell. | |
3957 | |
3958 * For the first frame created, the size of the frame is taken from | |
3959 the ApplicationShell if it is specified, otherwise from the | |
3960 geometry of the frame. | |
3961 | |
3962 * For subsequent frames, the order is reversed: First the frame, and | |
3963 then the ApplicationShell. | |
3964 | |
3965 * For the first frame created, the position of the frame is taken | |
3966 from the ApplicationShell (`Emacs.geometry') if it is specified, | |
3967 otherwise from the geometry of the frame. | |
3968 | |
3969 * For subsequent frames, the position is taken only from the frame, | |
3970 and never from the ApplicationShell. | |
3971 | |
3972 This is rather complicated, but it does seem to provide the most | |
3973 intuitive behavior with respect to the default sizes and positions of | |
3974 frames created in various ways. | |
3975 | |
3976 | |
3977 **** Iconic Resources | |
3978 --------------------- | |
3979 | |
3980 Analogous to `-geometry', the `-iconic' command-line option sets the | |
3981 iconic flag of the ApplicationShell (`Emacs.iconic') and always applies | |
3982 to the first frame created regardless of its name. However, it is | |
3983 possible to set the iconic flag on particular frames (by name) by using | |
3984 the `Emacs*FRAME-NAME.iconic' resource. | |
3985 | |
3986 | |
3987 **** Resource List | |
3988 ------------------ | |
3989 | |
3990 Emacs frames accept the following resources: | |
3991 | |
3992 `geometry' (class `Geometry'): string | |
3993 Initial geometry for the frame. *Note Geometry Resources:: for a | |
3994 complete discussion of how this works. | |
3995 | |
3996 `iconic' (class `Iconic'): boolean | |
3997 Whether this frame should appear in the iconified state. | |
3998 | |
3999 `internalBorderWidth' (class `InternalBorderWidth'): int | |
4000 How many blank pixels to leave between the text and the edge of the | |
4001 window. | |
4002 | |
4003 `interline' (class `Interline'): int | |
4004 How many pixels to leave between each line (may not be | |
4005 implemented). | |
4006 | |
4007 `menubar' (class `Menubar'): boolean | |
4008 Whether newly-created frames should initially have a menubar. Set | |
4009 to true by default. | |
4010 | |
4011 `initiallyUnmapped' (class `InitiallyUnmapped'): boolean | |
4012 Whether XEmacs should leave the initial frame unmapped when it | |
4013 starts up. This is useful if you are starting XEmacs as a server | |
4014 (e.g. in conjunction with gnuserv or the external client widget). | |
4015 You can also control this with the `-unmapped' command-line option. | |
4016 | |
4017 `barCursor' (class `BarColor'): boolean | |
4018 Whether the cursor should be displayed as a bar, or the | |
4019 traditional box. | |
4020 | |
4021 `textPointer' (class `Cursor'): cursor-name | |
4022 The cursor to use when the mouse is over text. This resource is | |
4023 used to initialize the variable `x-pointer-shape'. | |
4024 | |
4025 `selectionPointer' (class `Cursor'): cursor-name | |
4026 The cursor to use when the mouse is over a selectable text region | |
4027 (an extent with the `highlight' property; for example, an Info | |
4028 cross-reference). This resource is used to initialize the variable | |
4029 `x-selection-pointer-shape'. | |
4030 | |
4031 `spacePointer' (class `Cursor'): cursor-name | |
4032 The cursor to use when the mouse is over a blank space in a buffer | |
4033 (that is, after the end of a line or after the end-of-file). This | |
4034 resource is used to initialize the variable | |
4035 `x-nontext-pointer-shape'. | |
4036 | |
4037 `modeLinePointer' (class `Cursor'): cursor-name | |
4038 The cursor to use when the mouse is over a mode line. This | |
4039 resource is used to initialize the variable `x-mode-pointer-shape'. | |
4040 | |
4041 `gcPointer' (class `Cursor'): cursor-name | |
4042 The cursor to display when a garbage-collection is in progress. | |
4043 This resource is used to initialize the variable | |
4044 `x-gc-pointer-shape'. | |
4045 | |
4046 `scrollbarPointer' (class `Cursor'): cursor-name | |
4047 The cursor to use when the mouse is over the scrollbar. This | |
4048 resource is used to initialize the variable | |
4049 `x-scrollbar-pointer-shape'. | |
4050 | |
4051 `pointerColor' (class `Foreground'): color-name | |
4052 `pointerBackground' (class `Background'): color-name | |
4053 The foreground and background colors of the mouse cursor. These | |
4054 resources are used to initialize the variables | |
4055 `x-pointer-foreground-color' and `x-pointer-background-color'. | |
4056 | |
4057 `scrollBarWidth' (class `ScrollBarWidth'): integer | |
4058 How wide the vertical scrollbars should be, in pixels; 0 means no | |
4059 vertical scrollbars. You can also use a resource specification of | |
4060 the form `*scrollbar.width', or the usual toolkit scrollbar | |
4061 resources: `*XmScrollBar.width' (Motif), `*XlwScrollBar.width' | |
4062 (Lucid), or `*Scrollbar.thickness' (Athena). We don't recommend | |
4063 that you use the toolkit resources, though, because they're | |
4064 dependent on how exactly your particular build of XEmacs was | |
4065 configured. | |
4066 | |
4067 `scrollBarHeight' (class `ScrollBarHeight'): integer | |
4068 How high the horizontal scrollbars should be, in pixels; 0 means no | |
4069 horizontal scrollbars. You can also use a resource specification | |
4070 of the form `*scrollbar.height', or the usual toolkit scrollbar | |
4071 resources: `*XmScrollBar.height' (Motif), `*XlwScrollBar.height' | |
4072 (Lucid), or `*Scrollbar.thickness' (Athena). We don't recommend | |
4073 that you use the toolkit resources, though, because they're | |
4074 dependent on how exactly your particular build of XEmacs was | |
4075 configured. | |
4076 | |
4077 `scrollBarPlacement' (class `ScrollBarPlacement'): string | |
4078 Where the horizontal and vertical scrollbars should be positioned. | |
4079 This should be one of the four strings `bottom-left', | |
4080 `bottom-right', `top-left', and `top-right'. Default is | |
4081 `bottom-right' for the Motif and Lucid scrollbars and | |
4082 `bottom-left' for the Athena scrollbars. | |
4083 | |
4084 `topToolBarHeight' (class `TopToolBarHeight'): integer | |
4085 `bottomToolBarHeight' (class `BottomToolBarHeight'): integer | |
4086 `leftToolBarWidth' (class `LeftToolBarWidth'): integer | |
4087 `rightToolBarWidth' (class `RightToolBarWidth'): integer | |
4088 Height and width of the four possible toolbars. | |
4089 | |
4090 `topToolBarShadowColor' (class `TopToolBarShadowColor'): color-name | |
4091 `bottomToolBarShadowColor' (class `BottomToolBarShadowColor'): color-name | |
4092 Color of the top and bottom shadows for the toolbars. NOTE: These | |
4093 resources do *not* have anything to do with the top and bottom | |
4094 toolbars (i.e. the toolbars at the top and bottom of the frame)! | |
4095 Rather, they affect the top and bottom shadows around the edges of | |
4096 all four kinds of toolbars. | |
4097 | |
4098 `topToolBarShadowPixmap' (class `TopToolBarShadowPixmap'): pixmap-name | |
4099 `bottomToolBarShadowPixmap' (class `BottomToolBarShadowPixmap'): pixmap-name | |
4100 Pixmap of the top and bottom shadows for the toolbars. If set, | |
4101 these resources override the corresponding color resources. NOTE: | |
4102 These resources do *not* have anything to do with the top and | |
4103 bottom toolbars (i.e. the toolbars at the top and bottom of the | |
4104 frame)! Rather, they affect the top and bottom shadows around the | |
4105 edges of all four kinds of toolbars. | |
4106 | |
4107 `toolBarShadowThickness' (class `ToolBarShadowThickness'): integer | |
4108 Thickness of the shadows around the toolbars, in pixels. | |
4109 | |
4110 `visualBell' (class `VisualBell'): boolean | |
4111 Whether XEmacs should flash the screen rather than making an | |
4112 audible beep. | |
4113 | |
4114 `bellVolume' (class `BellVolume'): integer | |
4115 Volume of the audible beep. | |
4116 | |
4117 `useBackingStore' (class `UseBackingStore'): boolean | |
4118 Whether XEmacs should set the backing-store attribute of the X | |
4119 windows it creates. This increases the memory usage of the X | |
4120 server but decreases the amount of X traffic necessary to update | |
4121 the screen, and is useful when the connection to the X server goes | |
4122 over a low-bandwidth line such as a modem connection. | |
4123 | |
4124 | |
4125 **** Face Resources | |
4126 ------------------- | |
4127 | |
4128 The attributes of faces are also per-frame. They can be specified as: | |
4129 | |
4130 Emacs.FACE_NAME.parameter: value | |
4131 | |
4132 (*do not* use `Emacs*FACE_NAME...') | |
4133 | |
4134 or | |
4135 | |
4136 Emacs*FRAME_NAME.FACE_NAME.parameter: value | |
4137 | |
4138 Faces accept the following resources: | |
4139 | |
4140 `attributeFont' (class `AttributeFont'): font-name | |
4141 The font of this face. | |
4142 | |
4143 `attributeForeground' (class `AttributeForeground'): color-name | |
4144 `attributeBackground' (class `AttributeBackground'): color-name | |
4145 The foreground and background colors of this face. | |
4146 | |
4147 `attributeBackgroundPixmap' (class `AttributeBackgroundPixmap'): file-name | |
4148 The name of an XBM file (or XPM file, if your version of Emacs | |
4149 supports XPM), to use as a background stipple. | |
4150 | |
4151 `attributeUnderline' (class `AttributeUnderline'): boolean | |
4152 Whether text in this face should be underlined. | |
4153 | |
4154 All text is displayed in some face, defaulting to the face named | |
4155 `default'. To set the font of normal text, use | |
4156 `Emacs*default.attributeFont'. To set it in the frame named `fred', use | |
4157 `Emacs*fred.default.attributeFont'. | |
4158 | |
4159 These are the names of the predefined faces: | |
4160 | |
4161 `default' | |
4162 Everything inherits from this. | |
4163 | |
4164 `bold' | |
4165 If this is not specified in the resource database, Emacs tries to | |
4166 find a bold version of the font of the default face. | |
4167 | |
4168 `italic' | |
4169 If this is not specified in the resource database, Emacs tries to | |
4170 find an italic version of the font of the default face. | |
4171 | |
4172 `bold-italic' | |
4173 If this is not specified in the resource database, Emacs tries to | |
4174 find a bold-italic version of the font of the default face. | |
4175 | |
4176 `modeline' | |
4177 This is the face that the modeline is displayed in. If not | |
4178 specified in the resource database, it is determined from the | |
4179 default face by reversing the foreground and background colors. | |
4180 | |
4181 `highlight' | |
4182 This is the face that highlighted extents (for example, Info | |
4183 cross-references and possible completions, when the mouse passes | |
4184 over them) are displayed in. | |
4185 | |
4186 `left-margin' | |
4187 `right-margin' | |
4188 These are the faces that the left and right annotation margins are | |
4189 displayed in. | |
4190 | |
4191 `zmacs-region' | |
4192 This is the face that mouse selections are displayed in. | |
4193 | |
4194 `text-cursor' | |
4195 This is the face that the cursor is displayed in. | |
4196 | |
4197 `isearch' | |
4198 This is the face that the matched text being searched for is | |
4199 displayed in. | |
4200 | |
4201 `info-node' | |
4202 This is the face of info menu items. If unspecified, it is copied | |
4203 from `bold-italic'. | |
4204 | |
4205 `info-xref' | |
4206 This is the face of info cross-references. If unspecified, it is | |
4207 copied from `bold'. (Note that, when the mouse passes over a | |
4208 cross-reference, the cross-reference's face is determined from a | |
4209 combination of the `info-xref' and `highlight' faces.) | |
4210 | |
4211 Other packages might define their own faces; to see a list of all | |
4212 faces, use any of the interactive face-manipulation commands such as | |
4213 `set-face-font' and type `?' when you are prompted for the name of a | |
4214 face. | |
4215 | |
4216 If the `bold', `italic', and `bold-italic' faces are not specified | |
4217 in the resource database, then XEmacs attempts to derive them from the | |
4218 font of the default face. It can only succeed at this if you have | |
4219 specified the default font using the XLFD (X Logical Font Description) | |
4220 format, which looks like | |
4221 | |
4222 *-courier-medium-r-*-*-*-120-*-*-*-*-*-* | |
4223 | |
4224 If you use any of the other, less strict font name formats, some of | |
4225 which look like | |
4226 | |
4227 lucidasanstypewriter-12 | |
4228 fixed | |
4229 9x13 | |
4230 | |
4231 then XEmacs won't be able to guess the names of the bold and italic | |
4232 versions. All X fonts can be referred to via XLFD-style names, so you | |
4233 should use those forms. See the man pages for `X(1)', `xlsfonts(1)', | |
4234 and `xfontsel(1)'. | |
4235 | |
4236 | |
4237 **** Widgets | |
4238 ------------ | |
4239 | |
4240 There are several structural widgets between the terminal EmacsFrame | |
4241 widget and the top level ApplicationShell; the exact names and types of | |
4242 these widgets change from release to release (for example, they changed | |
4243 in 19.9, 19.10, 19.12, and 19.13) and are subject to further change in | |
4244 the future, so you should avoid mentioning them in your resource database. | |
4245 The above-mentioned syntaxes should be forward-compatible. As of 19.14, | |
4246 the exact widget hierarchy is as follows: | |
4247 | |
4248 INVOCATION-NAME "shell" "container" FRAME-NAME | |
4249 x-emacs-application-class "TopLevelEmacsShell" "EmacsManager" "EmacsFrame" | |
4250 | |
4251 (for normal frames) | |
4252 | |
4253 or | |
4254 | |
4255 INVOCATION-NAME "shell" "container" FRAME-NAME | |
4256 x-emacs-application-class "TransientEmacsShell" "EmacsManager" "EmacsFrame" | |
4257 | |
4258 (for popup/dialog-box frames) | |
4259 | |
4260 where INVOCATION-NAME is the terminal component of the name of the | |
4261 XEmacs executable (usually `xemacs'), and `x-emacs-application-class' | |
4262 is generally `Emacs'. | |
4263 | |
4264 | |
4265 **** Menubar Resources | |
4266 ---------------------- | |
4267 | |
4268 As the menubar is implemented as a widget which is not a part of | |
4269 XEmacs proper, it does not use the face mechanism for specifying fonts | |
4270 and colors: It uses whatever resources are appropriate to the type of | |
4271 widget which is used to implement it. | |
4272 | |
4273 If Emacs was compiled to use only the Motif-lookalike menu widgets, | |
4274 then one way to specify the font of the menubar would be | |
4275 | |
4276 Emacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-* | |
4277 | |
4278 If the Motif library is being used, then one would have to use | |
4279 | |
4280 Emacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-* | |
4281 | |
4282 because the Motif library uses the `fontList' resource name instead | |
4283 of `font', which has subtly different semantics. | |
4284 | |
4285 The same is true of the scrollbars: They accept whichever resources | |
4286 are appropriate for the toolkit in use. | |
4287 | |
4288 | |
4289 *** Source Code Highlighting | |
4290 ---------------------------- | |
4291 | |
4292 It's possible to have your buffers "decorated" with fonts or colors | |
4293 indicating syntactic structures (such as strings, comments, function names, | |
4294 "reserved words", etc.). In XEmacs, the preferred way to do this is with | |
4295 font-lock-mode; activate it by adding the following code to your .emacs file: | |
4296 | |
4297 (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock) | |
4298 (add-hook 'c-mode-hook 'turn-on-font-lock) | |
4299 (add-hook 'c++-mode-hook 'turn-on-font-lock) | |
4300 (add-hook 'dired-mode-hook 'turn-on-font-lock) | |
4301 ...etc... | |
4302 | |
4303 To customize it, see the descriptions of the function `font-lock-mode' and | |
4304 the variables `font-lock-keywords', `c-font-lock-keywords', etc. | |
4305 | |
4306 There exist several other source code highlighting packages, but font-lock | |
4307 does one thing that most others don't do: highlights as you type new text; | |
4308 and one thing that no others do: bases part of its decoration on the | |
4309 syntax table of the major mode. Font-lock has C-level support to do this | |
4310 efficiently, so it should also be significantly faster than the others. | |
4311 | |
4312 If there's something that another highlighting package does that you can't | |
4313 make font-lock do, let us know. We would prefer to consolidate all of the | |
4314 desired functionality into one package rather than ship several different | |
4315 packages which do essentially the same thing in different ways. | |
4316 | |
4317 | |
4318 ** Differences Between XEmacs and Emacs 18 | |
4319 ========================================== | |
4320 | |
4321 Auto-configure support has been added, so it should be fairly easy to compile | |
4322 XEmacs on different systems. If you have any problems or feedback about | |
4323 compiling on your system, please let us know. | |
4324 | |
4325 We have reimplemented the basic input model in a more general way; instead of | |
4326 X input being a special-case of the normal ASCII input stream, XEmacs has a | |
4327 concept of "input events", and ASCII characters are a subset of that. The | |
4328 events that XEmacs knows about are not X events, but are a generalization of | |
4329 them, so that XEmacs can eventually be ported to different window systems. | |
4330 | |
4331 We have reimplemented keymaps so that sequences of events can be stored into | |
4332 them instead of just ASCII codes; it is possible to, for example, bind | |
4333 different commands to each of the chords Control-h, Control-H, Backspace, | |
4334 Control-Backspace, and Super-Shift-Backspace. Key bindings, function key | |
4335 bindings, and mouse bindings live in the same keymaps. | |
4336 | |
4337 Input and display of all ISO-8859-1 characters is supported. | |
4338 | |
4339 You can have multiple X windows ("frames" in XEmacs terminology). | |
4340 | |
4341 XEmacs has objects called "extents" and "faces", which are roughly | |
4342 analogous to Epoch's "buttons," "zones," and "styles." An extent is a | |
4343 region of text (a start position and an end position) and a face is a | |
4344 collection of textual attributes like fonts and colors. Every extent | |
4345 is displayed in some "face", so changing the properties of a face | |
4346 immediately updates the display of all associated extents. Faces can | |
4347 be frame-local: you can have a region of text which displays with | |
4348 completely different attributes when its buffer is viewed from a | |
4349 different X window. | |
4350 | |
4351 The display attributes of faces may be specified either in lisp or through | |
4352 the X resource manager. | |
4353 | |
4354 Pixmaps of arbitrary size can be embedded in a buffer. | |
4355 | |
4356 Variable width fonts work. | |
4357 | |
4358 The height of a line is the height of the tallest font on that line, instead | |
4359 of all lines having the same height. | |
4360 | |
4361 XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which | |
4362 makes it be a more well-behaved X citizen (and also improves | |
4363 portability). A result of this is that it is possible to include | |
4364 other Xt "Widgets" in the XEmacs window. Also, XEmacs understands the | |
4365 standard Xt command-line arguments. | |
4366 | |
4367 XEmacs understands the X11 "Selection" mechanism; it's possible to define | |
4368 and customize selection converter functions and new selection types from | |
4369 Emacs Lisp, without having to recompile XEmacs. | |
4370 | |
4371 XEmacs provides support for ToolTalk on systems that have it. | |
4372 | |
4373 XEmacs supports the Zmacs/Lispm style of region highlighting, where the | |
4374 region between the point and mark is highlighted when in its "active" state. | |
4375 | |
4376 XEmacs has a menubar, whose contents are customizable from emacs-lisp. | |
4377 This menubar looks Motif-ish, but does not require Motif. If you already | |
4378 own Motif, however, you can configure XEmacs to use a *real* Motif menubar | |
4379 instead. | |
4380 | |
4381 XEmacs can ask questions using popup dialog boxes. Any command executed from | |
4382 a menu will ask yes/no questions with dialog boxes, while commands executed | |
4383 via the keyboard will use the minibuffer. | |
4384 | |
4385 XEmacs has vertical and horizontal scrollbars. | |
4386 | |
4387 The initial load-path is computed at run-time, instead of at compile-time. | |
4388 This means that if you move the XEmacs executable and associated directories | |
4389 to somewhere else, you don't have to recompile anything. | |
4390 | |
4391 You can specify what the title of the XEmacs windows and icons should be | |
4392 with the variables `frame-title-format' and `frame-icon-title-format', | |
4393 which have the same syntax as `mode-line-format'. | |
4394 | |
4395 XEmacs now supports floating-point numbers. | |
4396 | |
4397 XEmacs now knows about timers directly, instead of them being simulated by | |
4398 a subprocess. | |
4399 | |
4400 XEmacs understands truenames, and can be configured to notice when you are | |
4401 visiting two names of the same file. See the variables find-file-use-truenames | |
4402 and find-file-compare-truenames. | |
4403 | |
4404 If you're running on a machine with audio hardware, you can specify sound | |
4405 files for XEmacs to play instead of the default X beep. See the documentation | |
4406 of the function load-sound-file and the variable sound-alist. | |
4407 | |
4408 An XEmacs frame can be placed within an "external client widget" managed by | |
4409 another application. This allows an application to use an XEmacs frame as its | |
4410 text pane rather than the standard Text widget that is provided with Motif or | |
4411 Athena. XEmacs supports Motif applications, generic Xt (e.g. Athena) | |
4412 applications, and raw Xlib applications. | |
4413 | |
4414 Random changes to the emacs-lisp library: (some of this was not written by | |
4415 us, but is included because it's free software and we think it's good stuff) | |
4416 | |
4417 - there is a new optimizing byte-compiler | |
4418 - there is a new abbrev-based mail-alias mechanism | |
4419 - the -*- line can contain local-variable settings | |
4420 - there is a new TAGS package | |
4421 - there is a new VI-emulation mode (viper) | |
4422 - there is a new implementation of Dired | |
4423 - there is a new implementation of Isearch | |
4424 - the VM package for reading mail is provided | |
4425 - the W3 package for browsing the World Wide Web hypertext information | |
4426 system is provided | |
4427 - the Hyperbole package, a programmable information management and | |
4428 hypertext system | |
4429 - the OO-Browser package, a multi-language object-oriented browser | |
4430 | |
4431 There are many more specifics in the "Miscellaneous Changes" section, below. | |
4432 | |
4433 The online Emacs Manual and Emacs-Lisp Manual are now both relatively | |
4434 up-to-date. |