diff options
| author | Kim F. Storm | 2006-06-04 01:01:51 +0000 |
|---|---|---|
| committer | Kim F. Storm | 2006-06-04 01:01:51 +0000 |
| commit | 9a21d88ba1c249264c225cb64d24cdb3b57b73e1 (patch) | |
| tree | 7176b48a33f88583cd7ffd452c551e8a681e9b3b | |
| parent | 71ee3e042e4bc6464430e25574a440d15e14a328 (diff) | |
| download | emacs-9a21d88ba1c249264c225cb64d24cdb3b57b73e1.tar.gz emacs-9a21d88ba1c249264c225cb64d24cdb3b57b73e1.zip | |
Reorganize NEWS and ONEWS.* files into NEWS for current major version
and NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 for older version.
Update copyright notices.
| -rw-r--r-- | etc/NEWS | 9351 | ||||
| -rw-r--r-- | etc/NEWS.1-17 (renamed from etc/ONEWS.2) | 1188 | ||||
| -rw-r--r-- | etc/NEWS.18 (renamed from etc/ONEWS.3) | 19 | ||||
| -rw-r--r-- | etc/NEWS.19 (renamed from etc/ONEWS) | 69 | ||||
| -rw-r--r-- | etc/NEWS.20 | 4513 | ||||
| -rw-r--r-- | etc/NEWS.21 | 4900 | ||||
| -rw-r--r-- | etc/ONEWS.1 | 1167 | ||||
| -rw-r--r-- | etc/ONEWS.4 | 1693 |
8 files changed, 10686 insertions, 12214 deletions
| @@ -1,12 +1,18 @@ | |||
| 1 | GNU Emacs NEWS -- history of user-visible changes. 2006-05-21 | 1 | GNU Emacs NEWS -- history of user-visible changes. 2006-06-04 |
| 2 | Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 | 2 | Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 |
| 3 | Free Software Foundation, Inc. | 3 | Free Software Foundation, Inc. |
| 4 | See the end for copying conditions. | 4 | See the end for copying conditions. |
| 5 | 5 | ||
| 6 | Please send Emacs bug reports to bug-gnu-emacs@gnu.org. | 6 | Please send Emacs bug reports to bug-gnu-emacs@gnu.org. |
| 7 | For older news, see the file ONEWS | 7 | If possible, use M-x report-emacs-bug. |
| 8 | You can narrow news to the specific version by calling | 8 | |
| 9 | `view-emacs-news' with a prefix argument or by typing C-u C-h C-n. | 9 | This file is about changes in emacs version 22. |
| 10 | |||
| 11 | See files NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 for changes | ||
| 12 | in older emacs versions. | ||
| 13 | |||
| 14 | You can narrow news to a specific version by calling `view-emacs-news' | ||
| 15 | with a prefix argument or by typing C-u C-h C-n. | ||
| 10 | 16 | ||
| 11 | Temporary note: | 17 | Temporary note: |
| 12 | +++ indicates that the appropriate manual has already been updated. | 18 | +++ indicates that the appropriate manual has already been updated. |
| @@ -5656,9345 +5662,14 @@ red splotch. It is an error if the argument to `noreturn' does | |||
| 5656 | return. The macro `1value' suppresses a brown splotch for its argument. | 5662 | return. The macro `1value' suppresses a brown splotch for its argument. |
| 5657 | This macro is a no-op except during test-coverage -- then it signals | 5663 | This macro is a no-op except during test-coverage -- then it signals |
| 5658 | an error if the argument actually returns differing values. | 5664 | an error if the argument actually returns differing values. |
| 5659 | |||
| 5660 | * Installation changes in Emacs 21.3 | ||
| 5661 | |||
| 5662 | ** Support for GNU/Linux on little-endian MIPS and on IBM S390 has | ||
| 5663 | been added. | ||
| 5664 | |||
| 5665 | |||
| 5666 | * Changes in Emacs 21.3 | ||
| 5667 | |||
| 5668 | ** The obsolete C mode (c-mode.el) has been removed to avoid problems | ||
| 5669 | with Custom. | ||
| 5670 | |||
| 5671 | ** UTF-16 coding systems are available, encoding the same characters | ||
| 5672 | as mule-utf-8. | ||
| 5673 | |||
| 5674 | ** There is a new language environment for UTF-8 (set up automatically | ||
| 5675 | in UTF-8 locales). | ||
| 5676 | |||
| 5677 | ** Translation tables are available between equivalent characters in | ||
| 5678 | different Emacs charsets -- for instance `e with acute' coming from the | ||
| 5679 | Latin-1 and Latin-2 charsets. User options `unify-8859-on-encoding-mode' | ||
| 5680 | and `unify-8859-on-decoding-mode' respectively turn on translation | ||
| 5681 | between ISO 8859 character sets (`unification') on encoding | ||
| 5682 | (e.g. writing a file) and decoding (e.g. reading a file). Note that | ||
| 5683 | `unify-8859-on-encoding-mode' is useful and safe, but | ||
| 5684 | `unify-8859-on-decoding-mode' can cause text to change when you read | ||
| 5685 | it and write it out again without edits, so it is not generally advisable. | ||
| 5686 | By default `unify-8859-on-encoding-mode' is turned on. | ||
| 5687 | |||
| 5688 | ** In Emacs running on the X window system, the default value of | ||
| 5689 | `selection-coding-system' is now `compound-text-with-extensions'. | ||
| 5690 | |||
| 5691 | If you want the old behavior, set selection-coding-system to | ||
| 5692 | compound-text, which may be significantly more efficient. Using | ||
| 5693 | compound-text-with-extensions seems to be necessary only for decoding | ||
| 5694 | text from applications under XFree86 4.2, whose behavior is actually | ||
| 5695 | contrary to the compound text specification. | ||
| 5696 | |||
| 5697 | |||
| 5698 | * Installation changes in Emacs 21.2 | ||
| 5699 | |||
| 5700 | ** Support for BSD/OS 5.0 has been added. | ||
| 5701 | |||
| 5702 | ** Support for AIX 5.1 was added. | ||
| 5703 | |||
| 5704 | |||
| 5705 | * Changes in Emacs 21.2 | ||
| 5706 | |||
| 5707 | ** Emacs now supports compound-text extended segments in X selections. | ||
| 5708 | |||
| 5709 | X applications can use `extended segments' to encode characters in | ||
| 5710 | compound text that belong to character sets which are not part of the | ||
| 5711 | list of approved standard encodings for X, e.g. Big5. To paste | ||
| 5712 | selections with such characters into Emacs, use the new coding system | ||
| 5713 | compound-text-with-extensions as the value of selection-coding-system. | ||
| 5714 | |||
| 5715 | ** The default values of `tooltip-delay' and `tooltip-hide-delay' | ||
| 5716 | were changed. | ||
| 5717 | |||
| 5718 | ** On terminals whose erase-char is ^H (Backspace), Emacs | ||
| 5719 | now uses normal-erase-is-backspace-mode. | ||
| 5720 | |||
| 5721 | ** When the *scratch* buffer is recreated, its mode is set from | ||
| 5722 | initial-major-mode, which normally is lisp-interaction-mode, | ||
| 5723 | instead of using default-major-mode. | ||
| 5724 | |||
| 5725 | ** The new option `Info-scroll-prefer-subnodes' causes Info to behave | ||
| 5726 | like the stand-alone Info reader (from the GNU Texinfo package) as far | ||
| 5727 | as motion between nodes and their subnodes is concerned. If it is t | ||
| 5728 | (the default), Emacs behaves as before when you type SPC in a menu: it | ||
| 5729 | visits the subnode pointed to by the first menu entry. If this option | ||
| 5730 | is nil, SPC scrolls to the end of the current node, and only then goes | ||
| 5731 | to the first menu item, like the stand-alone reader does. | ||
| 5732 | |||
| 5733 | This change was already in Emacs 21.1, but wasn't advertised in the | ||
| 5734 | NEWS. | ||
| 5735 | |||
| 5736 | |||
| 5737 | * Lisp Changes in Emacs 21.2 | ||
| 5738 | |||
| 5739 | ** The meanings of scroll-up-aggressively and scroll-down-aggressively | ||
| 5740 | have been interchanged, so that the former now controls scrolling up, | ||
| 5741 | and the latter now controls scrolling down. | ||
| 5742 | |||
| 5743 | ** The variable `compilation-parse-errors-filename-function' can | ||
| 5744 | be used to transform filenames found in compilation output. | ||
| 5745 | |||
| 5746 | |||
| 5747 | * Installation Changes in Emacs 21.1 | ||
| 5748 | |||
| 5749 | See the INSTALL file for information on installing extra libraries and | ||
| 5750 | fonts to take advantage of the new graphical features and extra | ||
| 5751 | charsets in this release. | ||
| 5752 | |||
| 5753 | ** Support for GNU/Linux on IA64 machines has been added. | ||
| 5754 | |||
| 5755 | ** Support for LynxOS has been added. | ||
| 5756 | |||
| 5757 | ** There are new configure options associated with the support for | ||
| 5758 | images and toolkit scrollbars. Use the --help option in `configure' | ||
| 5759 | to list them. | ||
| 5760 | |||
| 5761 | ** You can build a 64-bit Emacs for SPARC/Solaris systems which | ||
| 5762 | support 64-bit executables and also on Irix 6.5. This increases the | ||
| 5763 | maximum buffer size. See etc/MACHINES for instructions. Changes to | ||
| 5764 | build on other 64-bit systems should be straightforward modulo any | ||
| 5765 | necessary changes to unexec. | ||
| 5766 | |||
| 5767 | ** There is a new configure option `--disable-largefile' to omit | ||
| 5768 | Unix-98-style support for large files if that is available. | ||
| 5769 | |||
| 5770 | ** There is a new configure option `--without-xim' that instructs | ||
| 5771 | Emacs to not use X Input Methods (XIM), if these are available. | ||
| 5772 | |||
| 5773 | ** `movemail' defaults to supporting POP. You can turn this off using | ||
| 5774 | the --without-pop configure option, should that be necessary. | ||
| 5775 | |||
| 5776 | ** This version can be built for the Macintosh, but does not implement | ||
| 5777 | all of the new display features described below. The port currently | ||
| 5778 | lacks unexec, asynchronous processes, and networking support. See the | ||
| 5779 | "Emacs and the Mac OS" appendix in the Emacs manual, for the | ||
| 5780 | description of aspects specific to the Mac. | ||
| 5781 | |||
| 5782 | ** Note that the MS-Windows port does not yet implement various of the | ||
| 5783 | new display features described below. | ||
| 5784 | |||
| 5785 | |||
| 5786 | * Changes in Emacs 21.1 | ||
| 5787 | |||
| 5788 | ** Emacs has a new redisplay engine. | ||
| 5789 | |||
| 5790 | The new redisplay handles characters of variable width and height. | ||
| 5791 | Italic text can be used without redisplay problems. Fonts containing | ||
| 5792 | oversized characters, i.e. characters larger than the logical height | ||
| 5793 | of a font can be used. Images of various formats can be displayed in | ||
| 5794 | the text. | ||
| 5795 | |||
| 5796 | ** Emacs has a new face implementation. | ||
| 5797 | |||
| 5798 | The new faces no longer fundamentally use X font names to specify the | ||
| 5799 | font. Instead, each face has several independent attributes--family, | ||
| 5800 | height, width, weight and slant--that it may or may not specify. | ||
| 5801 | These attributes can be merged from various faces, and then together | ||
| 5802 | specify a font. | ||
| 5803 | |||
| 5804 | Faces are supported on terminals that can display color or fonts. | ||
| 5805 | These terminal capabilities are auto-detected. Details can be found | ||
| 5806 | under Lisp changes, below. | ||
| 5807 | |||
| 5808 | ** Emacs can display faces on TTY frames. | ||
| 5809 | |||
| 5810 | Emacs automatically detects terminals that are able to display colors. | ||
| 5811 | Faces with a weight greater than normal are displayed extra-bright, if | ||
| 5812 | the terminal supports it. Faces with a weight less than normal and | ||
| 5813 | italic faces are displayed dimmed, if the terminal supports it. | ||
| 5814 | Underlined faces are displayed underlined if possible. Other face | ||
| 5815 | attributes such as `overline', `strike-through', and `box' are ignored | ||
| 5816 | on terminals. | ||
| 5817 | |||
| 5818 | The command-line options `-fg COLOR', `-bg COLOR', and `-rv' are now | ||
| 5819 | supported on character terminals. | ||
| 5820 | |||
| 5821 | Emacs automatically remaps all X-style color specifications to one of | ||
| 5822 | the colors supported by the terminal. This means you could have the | ||
| 5823 | same color customizations that work both on a windowed display and on | ||
| 5824 | a TTY or when Emacs is invoked with the -nw option. | ||
| 5825 | |||
| 5826 | ** New default font is Courier 12pt under X. | ||
| 5827 | |||
| 5828 | ** Sound support | ||
| 5829 | |||
| 5830 | Emacs supports playing sound files on GNU/Linux and FreeBSD (Voxware | ||
| 5831 | driver and native BSD driver, a.k.a. Luigi's driver). Currently | ||
| 5832 | supported file formats are RIFF-WAVE (*.wav) and Sun Audio (*.au). | ||
| 5833 | You must configure Emacs with the option `--with-sound=yes' to enable | ||
| 5834 | sound support. | ||
| 5835 | |||
| 5836 | ** Emacs now resizes mini-windows if appropriate. | ||
| 5837 | |||
| 5838 | If a message is longer than one line, or minibuffer contents are | ||
| 5839 | longer than one line, Emacs can resize the minibuffer window unless it | ||
| 5840 | is on a frame of its own. You can control resizing and the maximum | ||
| 5841 | minibuffer window size by setting the following variables: | ||
| 5842 | |||
| 5843 | - User option: max-mini-window-height | ||
| 5844 | |||
| 5845 | Maximum height for resizing mini-windows. If a float, it specifies a | ||
| 5846 | fraction of the mini-window frame's height. If an integer, it | ||
| 5847 | specifies a number of lines. | ||
| 5848 | |||
| 5849 | Default is 0.25. | ||
| 5850 | |||
| 5851 | - User option: resize-mini-windows | ||
| 5852 | |||
| 5853 | How to resize mini-windows. If nil, don't resize. If t, always | ||
| 5854 | resize to fit the size of the text. If `grow-only', let mini-windows | ||
| 5855 | grow only, until they become empty, at which point they are shrunk | ||
| 5856 | again. | ||
| 5857 | |||
| 5858 | Default is `grow-only'. | ||
| 5859 | |||
| 5860 | ** LessTif support. | ||
| 5861 | |||
| 5862 | Emacs now runs with the LessTif toolkit (see | ||
| 5863 | <http://www.lesstif.org>). You will need version 0.92.26, or later. | ||
| 5864 | |||
| 5865 | ** LessTif/Motif file selection dialog. | ||
| 5866 | |||
| 5867 | When Emacs is configured to use LessTif or Motif, reading a file name | ||
| 5868 | from a menu will pop up a file selection dialog if `use-dialog-box' is | ||
| 5869 | non-nil. | ||
| 5870 | |||
| 5871 | ** File selection dialog on MS-Windows is supported. | ||
| 5872 | |||
| 5873 | When a file is visited by clicking File->Open, the MS-Windows version | ||
| 5874 | now pops up a standard file selection dialog where you can select a | ||
| 5875 | file to visit. File->Save As also pops up that dialog. | ||
| 5876 | |||
| 5877 | ** Toolkit scroll bars. | ||
| 5878 | |||
| 5879 | Emacs now uses toolkit scroll bars if available. When configured for | ||
| 5880 | LessTif/Motif, it will use that toolkit's scroll bar. Otherwise, when | ||
| 5881 | configured for Lucid and Athena widgets, it will use the Xaw3d scroll | ||
| 5882 | bar if Xaw3d is available. You can turn off the use of toolkit scroll | ||
| 5883 | bars by specifying `--with-toolkit-scroll-bars=no' when configuring | ||
| 5884 | Emacs. | ||
| 5885 | |||
| 5886 | When you encounter problems with the Xaw3d scroll bar, watch out how | ||
| 5887 | Xaw3d is compiled on your system. If the Makefile generated from | ||
| 5888 | Xaw3d's Imakefile contains a `-DNARROWPROTO' compiler option, and your | ||
| 5889 | Emacs system configuration file `s/your-system.h' does not contain a | ||
| 5890 | define for NARROWPROTO, you might consider adding it. Take | ||
| 5891 | `s/freebsd.h' as an example. | ||
| 5892 | |||
| 5893 | Alternatively, if you don't have access to the Xaw3d source code, take | ||
| 5894 | a look at your system's imake configuration file, for example in the | ||
| 5895 | directory `/usr/X11R6/lib/X11/config' (paths are different on | ||
| 5896 | different systems). You will find files `*.cf' there. If your | ||
| 5897 | system's cf-file contains a line like `#define NeedWidePrototypes NO', | ||
| 5898 | add a `#define NARROWPROTO' to your Emacs system configuration file. | ||
| 5899 | |||
| 5900 | The reason for this is that one Xaw3d function uses `double' or | ||
| 5901 | `float' function parameters depending on the setting of NARROWPROTO. | ||
| 5902 | This is not a problem when Imakefiles are used because each system's | ||
| 5903 | imake configuration file contains the necessary information. Since | ||
| 5904 | Emacs doesn't use imake, this has do be done manually. | ||
| 5905 | |||
| 5906 | ** Tool bar support. | ||
| 5907 | |||
| 5908 | Emacs supports a tool bar at the top of a frame under X. For details | ||
| 5909 | of how to define a tool bar, see the page describing Lisp-level | ||
| 5910 | changes. Tool-bar global minor mode controls whether or not it is | ||
| 5911 | displayed and is on by default. The appearance of the bar is improved | ||
| 5912 | if Emacs has been built with XPM image support. Otherwise monochrome | ||
| 5913 | icons will be used. | ||
| 5914 | |||
| 5915 | To make the tool bar more useful, we need contributions of extra icons | ||
| 5916 | for specific modes (with copyright assignments). | ||
| 5917 | |||
| 5918 | ** Tooltips. | ||
| 5919 | |||
| 5920 | Tooltips are small X windows displaying a help string at the current | ||
| 5921 | mouse position. The Lisp package `tooltip' implements them. You can | ||
| 5922 | turn them off via the user option `tooltip-mode'. | ||
| 5923 | |||
| 5924 | Tooltips also provides support for GUD debugging. If activated, | ||
| 5925 | variable values can be displayed in tooltips by pointing at them with | ||
| 5926 | the mouse in source buffers. You can customize various aspects of the | ||
| 5927 | tooltip display in the group `tooltip'. | ||
| 5928 | |||
| 5929 | ** Automatic Hscrolling | ||
| 5930 | |||
| 5931 | Horizontal scrolling now happens automatically if | ||
| 5932 | `automatic-hscrolling' is set (the default). This setting can be | ||
| 5933 | customized. | ||
| 5934 | |||
| 5935 | If a window is scrolled horizontally with set-window-hscroll, or | ||
| 5936 | scroll-left/scroll-right (C-x <, C-x >), this serves as a lower bound | ||
| 5937 | for automatic horizontal scrolling. Automatic scrolling will scroll | ||
| 5938 | the text more to the left if necessary, but won't scroll the text more | ||
| 5939 | to the right than the column set with set-window-hscroll etc. | ||
| 5940 | |||
| 5941 | ** When using a windowing terminal, each Emacs window now has a cursor | ||
| 5942 | of its own. By default, when a window is selected, the cursor is | ||
| 5943 | solid; otherwise, it is hollow. The user-option | ||
| 5944 | `cursor-in-non-selected-windows' controls how to display the | ||
| 5945 | cursor in non-selected windows. If nil, no cursor is shown, if | ||
| 5946 | non-nil a hollow box cursor is shown. | ||
| 5947 | |||
| 5948 | ** Fringes to the left and right of windows are used to display | ||
| 5949 | truncation marks, continuation marks, overlay arrows and alike. The | ||
| 5950 | foreground, background, and stipple of these areas can be changed by | ||
| 5951 | customizing face `fringe'. | ||
| 5952 | |||
| 5953 | ** The mode line under X is now drawn with shadows by default. | ||
| 5954 | You can change its appearance by modifying the face `mode-line'. | ||
| 5955 | In particular, setting the `:box' attribute to nil turns off the 3D | ||
| 5956 | appearance of the mode line. (The 3D appearance makes the mode line | ||
| 5957 | occupy more space, and thus might cause the first or the last line of | ||
| 5958 | the window to be partially obscured.) | ||
| 5959 | |||
| 5960 | The variable `mode-line-inverse-video', which was used in older | ||
| 5961 | versions of emacs to make the mode-line stand out, is now deprecated. | ||
| 5962 | However, setting it to nil will cause the `mode-line' face to be | ||
| 5963 | ignored, and mode-lines to be drawn using the default text face. | ||
| 5964 | |||
| 5965 | ** Mouse-sensitive mode line. | ||
| 5966 | |||
| 5967 | Different parts of the mode line have been made mouse-sensitive on all | ||
| 5968 | systems which support the mouse. Moving the mouse to a | ||
| 5969 | mouse-sensitive part in the mode line changes the appearance of the | ||
| 5970 | mouse pointer to an arrow, and help about available mouse actions is | ||
| 5971 | displayed either in the echo area, or in the tooltip window if you | ||
| 5972 | have enabled one. | ||
| 5973 | |||
| 5974 | Currently, the following actions have been defined: | ||
| 5975 | |||
| 5976 | - Mouse-1 on the buffer name in the mode line goes to the next buffer. | ||
| 5977 | |||
| 5978 | - Mouse-3 on the buffer-name goes to the previous buffer. | ||
| 5979 | |||
| 5980 | - Mouse-2 on the read-only or modified status in the mode line (`%' or | ||
| 5981 | `*') toggles the status. | ||
| 5982 | |||
| 5983 | - Mouse-3 on the major mode name displays a major mode menu. | ||
| 5984 | |||
| 5985 | - Mouse-3 on the mode name displays a minor-mode menu. | ||
| 5986 | |||
| 5987 | ** Hourglass pointer | ||
| 5988 | |||
| 5989 | Emacs can optionally display an hourglass pointer under X. You can | ||
| 5990 | turn the display on or off by customizing group `cursor'. | ||
| 5991 | |||
| 5992 | ** Blinking cursor | ||
| 5993 | |||
| 5994 | M-x blink-cursor-mode toggles a blinking cursor under X and on | ||
| 5995 | terminals having terminal capabilities `vi', `vs', and `ve'. Blinking | ||
| 5996 | and related parameters like frequency and delay can be customized in | ||
| 5997 | the group `cursor'. | ||
| 5998 | |||
| 5999 | ** New font-lock support mode `jit-lock-mode'. | ||
| 6000 | |||
| 6001 | This support mode is roughly equivalent to `lazy-lock' but is | ||
| 6002 | generally faster. It supports stealth and deferred fontification. | ||
| 6003 | See the documentation of the function `jit-lock-mode' for more | ||
| 6004 | details. | ||
| 6005 | |||
| 6006 | Font-lock uses jit-lock-mode as default support mode, so you don't | ||
| 6007 | have to do anything to activate it. | ||
| 6008 | |||
| 6009 | ** The default binding of the Delete key has changed. | ||
| 6010 | |||
| 6011 | The new user-option `normal-erase-is-backspace' can be set to | ||
| 6012 | determine the effect of the Delete and Backspace function keys. | ||
| 6013 | |||
| 6014 | On window systems, the default value of this option is chosen | ||
| 6015 | according to the keyboard used. If the keyboard has both a Backspace | ||
| 6016 | key and a Delete key, and both are mapped to their usual meanings, the | ||
| 6017 | option's default value is set to t, so that Backspace can be used to | ||
| 6018 | delete backward, and Delete can be used to delete forward. On | ||
| 6019 | keyboards which either have only one key (usually labeled DEL), or two | ||
| 6020 | keys DEL and BS which produce the same effect, the option's value is | ||
| 6021 | set to nil, and these keys delete backward. | ||
| 6022 | |||
| 6023 | If not running under a window system, setting this option accomplishes | ||
| 6024 | a similar effect by mapping C-h, which is usually generated by the | ||
| 6025 | Backspace key, to DEL, and by mapping DEL to C-d via | ||
| 6026 | `keyboard-translate'. The former functionality of C-h is available on | ||
| 6027 | the F1 key. You should probably not use this setting on a text-only | ||
| 6028 | terminal if you don't have both Backspace, Delete and F1 keys. | ||
| 6029 | |||
| 6030 | Programmatically, you can call function normal-erase-is-backspace-mode | ||
| 6031 | to toggle the behavior of the Delete and Backspace keys. | ||
| 6032 | |||
| 6033 | ** The default for user-option `next-line-add-newlines' has been | ||
| 6034 | changed to nil, i.e. C-n will no longer add newlines at the end of a | ||
| 6035 | buffer by default. | ||
| 6036 | |||
| 6037 | ** The <home> and <end> keys now move to the beginning or end of the | ||
| 6038 | current line, respectively. C-<home> and C-<end> move to the | ||
| 6039 | beginning and end of the buffer. | ||
| 6040 | |||
| 6041 | ** Emacs now checks for recursive loads of Lisp files. If the | ||
| 6042 | recursion depth exceeds `recursive-load-depth-limit', an error is | ||
| 6043 | signaled. | ||
| 6044 | |||
| 6045 | ** When an error is signaled during the loading of the user's init | ||
| 6046 | file, Emacs now pops up the *Messages* buffer. | ||
| 6047 | |||
| 6048 | ** Emacs now refuses to load compiled Lisp files which weren't | ||
| 6049 | compiled with Emacs. Set `load-dangerous-libraries' to t to change | ||
| 6050 | this behavior. | ||
| 6051 | |||
| 6052 | The reason for this change is an incompatible change in XEmacs's byte | ||
| 6053 | compiler. Files compiled with XEmacs can contain byte codes that let | ||
| 6054 | Emacs dump core. | ||
| 6055 | |||
| 6056 | ** Toggle buttons and radio buttons in menus. | ||
| 6057 | |||
| 6058 | When compiled with LessTif (or Motif) support, Emacs uses toolkit | ||
| 6059 | widgets for radio and toggle buttons in menus. When configured for | ||
| 6060 | Lucid, Emacs draws radio buttons and toggle buttons similar to Motif. | ||
| 6061 | |||
| 6062 | ** The menu bar configuration has changed. The new configuration is | ||
| 6063 | more CUA-compliant. The most significant change is that Options is | ||
| 6064 | now a separate menu-bar item, with Mule and Customize as its submenus. | ||
| 6065 | |||
| 6066 | ** Item Save Options on the Options menu allows saving options set | ||
| 6067 | using that menu. | ||
| 6068 | |||
| 6069 | ** Highlighting of trailing whitespace. | ||
| 6070 | |||
| 6071 | When `show-trailing-whitespace' is non-nil, Emacs displays trailing | ||
| 6072 | whitespace in the face `trailing-whitespace'. Trailing whitespace is | ||
| 6073 | defined as spaces or tabs at the end of a line. To avoid busy | ||
| 6074 | highlighting when entering new text, trailing whitespace is not | ||
| 6075 | displayed if point is at the end of the line containing the | ||
| 6076 | whitespace. | ||
| 6077 | |||
| 6078 | ** C-x 5 1 runs the new command delete-other-frames which deletes | ||
| 6079 | all frames except the selected one. | ||
| 6080 | |||
| 6081 | ** The new user-option `confirm-kill-emacs' can be customized to | ||
| 6082 | let Emacs ask for confirmation before exiting. | ||
| 6083 | |||
| 6084 | ** The header line in an Info buffer is now displayed as an emacs | ||
| 6085 | header-line (which is like a mode-line, but at the top of the window), | ||
| 6086 | so that it remains visible even when the buffer has been scrolled. | ||
| 6087 | This behavior may be disabled by customizing the option | ||
| 6088 | `Info-use-header-line'. | ||
| 6089 | |||
| 6090 | ** Polish, Czech, German, and French translations of Emacs' reference card | ||
| 6091 | have been added. They are named `pl-refcard.tex', `cs-refcard.tex', | ||
| 6092 | `de-refcard.tex' and `fr-refcard.tex'. Postscript files are included. | ||
| 6093 | |||
| 6094 | ** An `Emacs Survival Guide', etc/survival.tex, is available. | ||
| 6095 | |||
| 6096 | ** A reference card for Dired has been added. Its name is | ||
| 6097 | `dired-ref.tex'. A French translation is available in | ||
| 6098 | `fr-drdref.tex'. | ||
| 6099 | |||
| 6100 | ** C-down-mouse-3 is bound differently. Now if the menu bar is not | ||
| 6101 | displayed it pops up a menu containing the items which would be on the | ||
| 6102 | menu bar. If the menu bar is displayed, it pops up the major mode | ||
| 6103 | menu or the Edit menu if there is no major mode menu. | ||
| 6104 | |||
| 6105 | ** Variable `load-path' is no longer customizable through Customize. | ||
| 6106 | |||
| 6107 | You can no longer use `M-x customize-variable' to customize `load-path' | ||
| 6108 | because it now contains a version-dependent component. You can still | ||
| 6109 | use `add-to-list' and `setq' to customize this variable in your | ||
| 6110 | `~/.emacs' init file or to modify it from any Lisp program in general. | ||
| 6111 | |||
| 6112 | ** C-u C-x = provides detailed information about the character at | ||
| 6113 | point in a pop-up window. | ||
| 6114 | |||
| 6115 | ** Emacs can now support 'wheeled' mice (such as the MS IntelliMouse) | ||
| 6116 | under XFree86. To enable this, use the `mouse-wheel-mode' command, or | ||
| 6117 | customize the variable `mouse-wheel-mode'. | ||
| 6118 | |||
| 6119 | The variables `mouse-wheel-follow-mouse' and `mouse-wheel-scroll-amount' | ||
| 6120 | determine where and by how much buffers are scrolled. | ||
| 6121 | |||
| 6122 | ** Emacs' auto-save list files are now by default stored in a | ||
| 6123 | sub-directory `.emacs.d/auto-save-list/' of the user's home directory. | ||
| 6124 | (On MS-DOS, this subdirectory's name is `_emacs.d/auto-save.list/'.) | ||
| 6125 | You can customize `auto-save-list-file-prefix' to change this location. | ||
| 6126 | |||
| 6127 | ** The function `getenv' is now callable interactively. | ||
| 6128 | |||
| 6129 | ** The new user-option `even-window-heights' can be set to nil | ||
| 6130 | to prevent `display-buffer' from evening out window heights. | ||
| 6131 | |||
| 6132 | ** The new command M-x delete-trailing-whitespace RET will delete the | ||
| 6133 | trailing whitespace within the current restriction. You can also add | ||
| 6134 | this function to `write-file-hooks' or `local-write-file-hooks'. | ||
| 6135 | |||
| 6136 | ** When visiting a file with M-x find-file-literally, no newlines will | ||
| 6137 | be added to the end of the buffer even if `require-final-newline' is | ||
| 6138 | non-nil. | ||
| 6139 | |||
| 6140 | ** The new user-option `find-file-suppress-same-file-warnings' can be | ||
| 6141 | set to suppress warnings ``X and Y are the same file'' when visiting a | ||
| 6142 | file that is already visited under a different name. | ||
| 6143 | |||
| 6144 | ** The new user-option `electric-help-shrink-window' can be set to | ||
| 6145 | nil to prevent adjusting the help window size to the buffer size. | ||
| 6146 | |||
| 6147 | ** New command M-x describe-character-set reads a character set name | ||
| 6148 | and displays information about that. | ||
| 6149 | |||
| 6150 | ** The new variable `auto-mode-interpreter-regexp' contains a regular | ||
| 6151 | expression matching interpreters, for file mode determination. | ||
| 6152 | |||
| 6153 | This regular expression is matched against the first line of a file to | ||
| 6154 | determine the file's mode in `set-auto-mode' when Emacs can't deduce a | ||
| 6155 | mode from the file's name. If it matches, the file is assumed to be | ||
| 6156 | interpreted by the interpreter matched by the second group of the | ||
| 6157 | regular expression. The mode is then determined as the mode | ||
| 6158 | associated with that interpreter in `interpreter-mode-alist'. | ||
| 6159 | |||
| 6160 | ** New function executable-make-buffer-file-executable-if-script-p is | ||
| 6161 | suitable as an after-save-hook as an alternative to `executable-chmod'. | ||
| 6162 | |||
| 6163 | ** The most preferred coding-system is now used to save a buffer if | ||
| 6164 | buffer-file-coding-system is `undecided' and it is safe for the buffer | ||
| 6165 | contents. (The most preferred is set by set-language-environment or | ||
| 6166 | by M-x prefer-coding-system.) Thus if you visit an ASCII file and | ||
| 6167 | insert a non-ASCII character from your current language environment, | ||
| 6168 | the file will be saved silently with the appropriate coding. | ||
| 6169 | Previously you would be prompted for a safe coding system. | ||
| 6170 | |||
| 6171 | ** The many obsolete language `setup-...-environment' commands have | ||
| 6172 | been removed -- use `set-language-environment'. | ||
| 6173 | |||
| 6174 | ** The new Custom option `keyboard-coding-system' specifies a coding | ||
| 6175 | system for keyboard input. | ||
| 6176 | |||
| 6177 | ** New variable `inhibit-iso-escape-detection' determines if Emacs' | ||
| 6178 | coding system detection algorithm should pay attention to ISO2022's | ||
| 6179 | escape sequences. If this variable is non-nil, the algorithm ignores | ||
| 6180 | such escape sequences. The default value is nil, and it is | ||
| 6181 | recommended not to change it except for the special case that you | ||
| 6182 | always want to read any escape code verbatim. If you just want to | ||
| 6183 | read a specific file without decoding escape codes, use C-x RET c | ||
| 6184 | (`universal-coding-system-argument'). For instance, C-x RET c latin-1 | ||
| 6185 | RET C-x C-f filename RET. | ||
| 6186 | |||
| 6187 | ** Variable `default-korean-keyboard' is initialized properly from the | ||
| 6188 | environment variable `HANGUL_KEYBOARD_TYPE'. | ||
| 6189 | |||
| 6190 | ** New command M-x list-charset-chars reads a character set name and | ||
| 6191 | displays all characters in that character set. | ||
| 6192 | |||
| 6193 | ** M-x set-terminal-coding-system (C-x RET t) now allows CCL-based | ||
| 6194 | coding systems such as cpXXX and cyrillic-koi8. | ||
| 6195 | |||
| 6196 | ** Emacs now attempts to determine the initial language environment | ||
| 6197 | and preferred and locale coding systems systematically from the | ||
| 6198 | LC_ALL, LC_CTYPE, and LANG environment variables during startup. | ||
| 6199 | |||
| 6200 | ** New language environments `Polish', `Latin-8' and `Latin-9'. | ||
| 6201 | Latin-8 and Latin-9 correspond respectively to the ISO character sets | ||
| 6202 | 8859-14 (Celtic) and 8859-15 (updated Latin-1, with the Euro sign). | ||
| 6203 | GNU Intlfonts doesn't support these yet but recent X releases have | ||
| 6204 | 8859-15. See etc/INSTALL for information on obtaining extra fonts. | ||
| 6205 | There are new Leim input methods for Latin-8 and Latin-9 prefix (only) | ||
| 6206 | and Polish `slash'. | ||
| 6207 | |||
| 6208 | ** New language environments `Dutch' and `Spanish'. | ||
| 6209 | These new environments mainly select appropriate translations | ||
| 6210 | of the tutorial. | ||
| 6211 | |||
| 6212 | ** In Ethiopic language environment, special key bindings for | ||
| 6213 | function keys are changed as follows. This is to conform to "Emacs | ||
| 6214 | Lisp Coding Convention". | ||
| 6215 | |||
| 6216 | new command old-binding | ||
| 6217 | --- ------- ----------- | ||
| 6218 | f3 ethio-fidel-to-sera-buffer f5 | ||
| 6219 | S-f3 ethio-fidel-to-sera-region f5 | ||
| 6220 | C-f3 ethio-fidel-to-sera-mail-or-marker f5 | ||
| 6221 | |||
| 6222 | f4 ethio-sera-to-fidel-buffer unchanged | ||
| 6223 | S-f4 ethio-sera-to-fidel-region unchanged | ||
| 6224 | C-f4 ethio-sera-to-fidel-mail-or-marker unchanged | ||
| 6225 | |||
| 6226 | S-f5 ethio-toggle-punctuation f3 | ||
| 6227 | S-f6 ethio-modify-vowel f6 | ||
| 6228 | S-f7 ethio-replace-space f7 | ||
| 6229 | S-f8 ethio-input-special-character f8 | ||
| 6230 | S-f9 ethio-replace-space unchanged | ||
| 6231 | C-f9 ethio-toggle-space f2 | ||
| 6232 | |||
| 6233 | ** There are new Leim input methods. | ||
| 6234 | New input methods "turkish-postfix", "turkish-alt-postfix", | ||
| 6235 | "greek-mizuochi", "TeX", and "greek-babel" are now part of the Leim | ||
| 6236 | package. | ||
| 6237 | |||
| 6238 | ** The rule of input method "slovak" is slightly changed. Now the | ||
| 6239 | rules for translating "q" and "Q" to "`" (backquote) are deleted, thus | ||
| 6240 | typing them inserts "q" and "Q" respectively. Rules for translating | ||
| 6241 | "=q", "+q", "=Q", and "+Q" to "`" are also deleted. Now, to input | ||
| 6242 | "`", you must type "=q". | ||
| 6243 | |||
| 6244 | ** When your terminal can't display characters from some of the ISO | ||
| 6245 | 8859 character sets but can display Latin-1, you can display | ||
| 6246 | more-or-less mnemonic sequences of ASCII/Latin-1 characters instead of | ||
| 6247 | empty boxes (under a window system) or question marks (not under a | ||
| 6248 | window system). Customize the option `latin1-display' to turn this | ||
| 6249 | on. | ||
| 6250 | |||
| 6251 | ** M-; now calls comment-dwim which tries to do something clever based | ||
| 6252 | on the context. M-x kill-comment is now an alias to comment-kill, | ||
| 6253 | defined in newcomment.el. You can choose different styles of region | ||
| 6254 | commenting with the variable `comment-style'. | ||
| 6255 | |||
| 6256 | ** New user options `display-time-mail-face' and | ||
| 6257 | `display-time-use-mail-icon' control the appearance of mode-line mail | ||
| 6258 | indicator used by the display-time package. On a suitable display the | ||
| 6259 | indicator can be an icon and is mouse-sensitive. | ||
| 6260 | |||
| 6261 | ** On window-systems, additional space can be put between text lines | ||
| 6262 | on the display using several methods | ||
| 6263 | |||
| 6264 | - By setting frame parameter `line-spacing' to PIXELS. PIXELS must be | ||
| 6265 | a positive integer, and specifies that PIXELS number of pixels should | ||
| 6266 | be put below text lines on the affected frame or frames. | ||
| 6267 | |||
| 6268 | - By setting X resource `lineSpacing', class `LineSpacing'. This is | ||
| 6269 | equivalent to specifying the frame parameter. | ||
| 6270 | |||
| 6271 | - By specifying `--line-spacing=N' or `-lsp N' on the command line. | ||
| 6272 | |||
| 6273 | - By setting buffer-local variable `line-spacing'. The meaning is | ||
| 6274 | the same, but applies to the a particular buffer only. | ||
| 6275 | |||
| 6276 | ** The new command `clone-indirect-buffer' can be used to create | ||
| 6277 | an indirect buffer that is a twin copy of the current buffer. The | ||
| 6278 | command `clone-indirect-buffer-other-window', bound to C-x 4 c, | ||
| 6279 | does the same but displays the indirect buffer in another window. | ||
| 6280 | |||
| 6281 | ** New user options `backup-directory-alist' and | ||
| 6282 | `make-backup-file-name-function' control the placement of backups, | ||
| 6283 | typically in a single directory or in an invisible sub-directory. | ||
| 6284 | |||
| 6285 | ** New commands iso-iso2sgml and iso-sgml2iso convert between Latin-1 | ||
| 6286 | characters and the corresponding SGML (HTML) entities. | ||
| 6287 | |||
| 6288 | ** New X resources recognized | ||
| 6289 | |||
| 6290 | *** The X resource `synchronous', class `Synchronous', specifies | ||
| 6291 | whether Emacs should run in synchronous mode. Synchronous mode | ||
| 6292 | is useful for debugging X problems. | ||
| 6293 | |||
| 6294 | Example: | ||
| 6295 | |||
| 6296 | emacs.synchronous: true | ||
| 6297 | |||
| 6298 | *** The X resource `visualClass, class `VisualClass', specifies the | ||
| 6299 | visual Emacs should use. The resource's value should be a string of | ||
| 6300 | the form `CLASS-DEPTH', where CLASS is the name of the visual class, | ||
| 6301 | and DEPTH is the requested color depth as a decimal number. Valid | ||
| 6302 | visual class names are | ||
| 6303 | |||
| 6304 | TrueColor | ||
| 6305 | PseudoColor | ||
| 6306 | DirectColor | ||
| 6307 | StaticColor | ||
| 6308 | GrayScale | ||
| 6309 | StaticGray | ||
| 6310 | |||
| 6311 | Visual class names specified as X resource are case-insensitive, i.e. | ||
| 6312 | `pseudocolor', `Pseudocolor' and `PseudoColor' all have the same | ||
| 6313 | meaning. | ||
| 6314 | |||
| 6315 | The program `xdpyinfo' can be used to list the visual classes | ||
| 6316 | supported on your display, and which depths they have. If | ||
| 6317 | `visualClass' is not specified, Emacs uses the display's default | ||
| 6318 | visual. | ||
| 6319 | |||
| 6320 | Example: | ||
| 6321 | |||
| 6322 | emacs.visualClass: TrueColor-8 | ||
| 6323 | |||
| 6324 | *** The X resource `privateColormap', class `PrivateColormap', | ||
| 6325 | specifies that Emacs should use a private colormap if it is using the | ||
| 6326 | default visual, and that visual is of class PseudoColor. Recognized | ||
| 6327 | resource values are `true' or `on'. | ||
| 6328 | |||
| 6329 | Example: | ||
| 6330 | |||
| 6331 | emacs.privateColormap: true | ||
| 6332 | |||
| 6333 | ** Faces and frame parameters. | ||
| 6334 | |||
| 6335 | There are four new faces `scroll-bar', `border', `cursor' and `mouse'. | ||
| 6336 | Setting the frame parameters `scroll-bar-foreground' and | ||
| 6337 | `scroll-bar-background' sets foreground and background color of face | ||
| 6338 | `scroll-bar' and vice versa. Setting frame parameter `border-color' | ||
| 6339 | sets the background color of face `border' and vice versa. Likewise | ||
| 6340 | for frame parameters `cursor-color' and face `cursor', and frame | ||
| 6341 | parameter `mouse-color' and face `mouse'. | ||
| 6342 | |||
| 6343 | Changing frame parameter `font' sets font-related attributes of the | ||
| 6344 | `default' face and vice versa. Setting frame parameters | ||
| 6345 | `foreground-color' or `background-color' sets the colors of the | ||
| 6346 | `default' face and vice versa. | ||
| 6347 | |||
| 6348 | ** New face `menu'. | ||
| 6349 | |||
| 6350 | The face `menu' can be used to change colors and font of Emacs' menus. | ||
| 6351 | |||
| 6352 | ** New frame parameter `screen-gamma' for gamma correction. | ||
| 6353 | |||
| 6354 | The new frame parameter `screen-gamma' specifies gamma-correction for | ||
| 6355 | colors. Its value may be nil, the default, in which case no gamma | ||
| 6356 | correction occurs, or a number > 0, usually a float, that specifies | ||
| 6357 | the screen gamma of a frame's display. | ||
| 6358 | |||
| 6359 | PC monitors usually have a screen gamma of 2.2. smaller values result | ||
| 6360 | in darker colors. You might want to try a screen gamma of 1.5 for LCD | ||
| 6361 | color displays. The viewing gamma Emacs uses is 0.4545. (1/2.2). | ||
| 6362 | |||
| 6363 | The X resource name of this parameter is `screenGamma', class | ||
| 6364 | `ScreenGamma'. | ||
| 6365 | |||
| 6366 | ** Tabs and variable-width text. | ||
| 6367 | |||
| 6368 | Tabs are now displayed with stretch properties; the width of a tab is | ||
| 6369 | defined as a multiple of the normal character width of a frame, and is | ||
| 6370 | independent of the fonts used in the text where the tab appears. | ||
| 6371 | Thus, tabs can be used to line up text in different fonts. | ||
| 6372 | |||
| 6373 | ** Enhancements of the Lucid menu bar | ||
| 6374 | |||
| 6375 | *** The Lucid menu bar now supports the resource "margin". | ||
| 6376 | |||
| 6377 | emacs.pane.menubar.margin: 5 | ||
| 6378 | |||
| 6379 | The default margin is 4 which makes the menu bar appear like the | ||
| 6380 | LessTif/Motif one. | ||
| 6381 | |||
| 6382 | *** Arrows that indicate sub-menus are now drawn with shadows, as in | ||
| 6383 | LessTif and Motif. | ||
| 6384 | |||
| 6385 | ** A block cursor can be drawn as wide as the glyph under it under X. | ||
| 6386 | |||
| 6387 | As an example: if a block cursor is over a tab character, it will be | ||
| 6388 | drawn as wide as that tab on the display. To do this, set | ||
| 6389 | `x-stretch-cursor' to a non-nil value. | ||
| 6390 | |||
| 6391 | ** Empty display lines at the end of a buffer may be marked with a | ||
| 6392 | bitmap (this is similar to the tilde displayed by vi and Less). | ||
| 6393 | |||
| 6394 | This behavior is activated by setting the buffer-local variable | ||
| 6395 | `indicate-empty-lines' to a non-nil value. The default value of this | ||
| 6396 | variable is found in `default-indicate-empty-lines'. | ||
| 6397 | |||
| 6398 | ** There is a new "aggressive" scrolling method. | ||
| 6399 | |||
| 6400 | When scrolling up because point is above the window start, if the | ||
| 6401 | value of the buffer-local variable `scroll-up-aggressively' is a | ||
| 6402 | number, Emacs chooses a new window start so that point ends up that | ||
| 6403 | fraction of the window's height from the top of the window. | ||
| 6404 | |||
| 6405 | When scrolling down because point is below the window end, if the | ||
| 6406 | value of the buffer-local variable `scroll-down-aggressively' is a | ||
| 6407 | number, Emacs chooses a new window start so that point ends up that | ||
| 6408 | fraction of the window's height from the bottom of the window. | ||
| 6409 | |||
| 6410 | ** You can now easily create new *Info* buffers using either | ||
| 6411 | M-x clone-buffer, C-u m <entry> RET or C-u g <entry> RET. | ||
| 6412 | M-x clone-buffer can also be used on *Help* and several other special | ||
| 6413 | buffers. | ||
| 6414 | |||
| 6415 | ** The command `Info-search' now uses a search history. | ||
| 6416 | |||
| 6417 | ** Listing buffers with M-x list-buffers (C-x C-b) now shows | ||
| 6418 | abbreviated file names. Abbreviations can be customized by changing | ||
| 6419 | `directory-abbrev-alist'. | ||
| 6420 | |||
| 6421 | ** A new variable, backup-by-copying-when-privileged-mismatch, gives | ||
| 6422 | the highest file uid for which backup-by-copying-when-mismatch will be | ||
| 6423 | forced on. The assumption is that uids less than or equal to this | ||
| 6424 | value are special uids (root, bin, daemon, etc.--not real system | ||
| 6425 | users) and that files owned by these users should not change ownership, | ||
| 6426 | even if your system policy allows users other than root to edit them. | ||
| 6427 | |||
| 6428 | The default is 200; set the variable to nil to disable the feature. | ||
| 6429 | |||
| 6430 | ** The rectangle commands now avoid inserting undesirable spaces, | ||
| 6431 | notably at the end of lines. | ||
| 6432 | |||
| 6433 | All these functions have been rewritten to avoid inserting unwanted | ||
| 6434 | spaces, and an optional prefix now allows them to behave the old way. | ||
| 6435 | |||
| 6436 | ** The function `replace-rectangle' is an alias for `string-rectangle'. | ||
| 6437 | |||
| 6438 | ** The new command M-x string-insert-rectangle is like `string-rectangle', | ||
| 6439 | but inserts text instead of replacing it. | ||
| 6440 | |||
| 6441 | ** The new command M-x query-replace-regexp-eval acts like | ||
| 6442 | query-replace-regexp, but takes a Lisp expression which is evaluated | ||
| 6443 | after each match to get the replacement text. | ||
| 6444 | |||
| 6445 | ** M-x query-replace recognizes a new command `e' (or `E') that lets | ||
| 6446 | you edit the replacement string. | ||
| 6447 | |||
| 6448 | ** The new command mail-abbrev-complete-alias, bound to `M-TAB' | ||
| 6449 | (if you load the library `mailabbrev'), lets you complete mail aliases | ||
| 6450 | in the text, analogous to lisp-complete-symbol. | ||
| 6451 | |||
| 6452 | ** The variable `echo-keystrokes' may now have a floating point value. | ||
| 6453 | |||
| 6454 | ** If your init file is compiled (.emacs.elc), `user-init-file' is set | ||
| 6455 | to the source name (.emacs.el), if that exists, after loading it. | ||
| 6456 | |||
| 6457 | ** The help string specified for a menu-item whose definition contains | ||
| 6458 | the property `:help HELP' is now displayed under X, on MS-Windows, and | ||
| 6459 | MS-DOS, either in the echo area or with tooltips. Many standard menus | ||
| 6460 | displayed by Emacs now have help strings. | ||
| 6461 | |||
| 6462 | -- | ||
| 6463 | ** New user option `read-mail-command' specifies a command to use to | ||
| 6464 | read mail from the menu etc. | ||
| 6465 | |||
| 6466 | ** The environment variable `EMACSLOCKDIR' is no longer used on MS-Windows. | ||
| 6467 | This environment variable was used when creating lock files. Emacs on | ||
| 6468 | MS-Windows does not use this variable anymore. This change was made | ||
| 6469 | before Emacs 21.1, but wasn't documented until now. | ||
| 6470 | |||
| 6471 | ** Highlighting of mouse-sensitive regions is now supported in the | ||
| 6472 | MS-DOS version of Emacs. | ||
| 6473 | |||
| 6474 | ** The new command `msdos-set-mouse-buttons' forces the MS-DOS version | ||
| 6475 | of Emacs to behave as if the mouse had a specified number of buttons. | ||
| 6476 | This comes handy with mice that don't report their number of buttons | ||
| 6477 | correctly. One example is the wheeled mice, which report 3 buttons, | ||
| 6478 | but clicks on the middle button are not passed to the MS-DOS version | ||
| 6479 | of Emacs. | ||
| 6480 | |||
| 6481 | ** Customize changes | ||
| 6482 | |||
| 6483 | *** Customize now supports comments about customized items. Use the | ||
| 6484 | `State' menu to add comments, or give a prefix argument to | ||
| 6485 | M-x customize-set-variable or M-x customize-set-value. Note that | ||
| 6486 | customization comments will cause the customizations to fail in | ||
| 6487 | earlier versions of Emacs. | ||
| 6488 | |||
| 6489 | *** The new option `custom-buffer-done-function' says whether to kill | ||
| 6490 | Custom buffers when you've done with them or just bury them (the | ||
| 6491 | default). | ||
| 6492 | |||
| 6493 | *** If Emacs was invoked with the `-q' or `--no-init-file' options, it | ||
| 6494 | does not allow you to save customizations in your `~/.emacs' init | ||
| 6495 | file. This is because saving customizations from such a session would | ||
| 6496 | wipe out all the other customizationss you might have on your init | ||
| 6497 | file. | ||
| 6498 | |||
| 6499 | ** If Emacs was invoked with the `-q' or `--no-init-file' options, it | ||
| 6500 | does not save disabled and enabled commands for future sessions, to | ||
| 6501 | avoid overwriting existing customizations of this kind that are | ||
| 6502 | already in your init file. | ||
| 6503 | |||
| 6504 | ** New features in evaluation commands | ||
| 6505 | |||
| 6506 | *** The commands to evaluate Lisp expressions, such as C-M-x in Lisp | ||
| 6507 | modes, C-j in Lisp Interaction mode, and M-:, now bind the variables | ||
| 6508 | print-level, print-length, and debug-on-error based on the new | ||
| 6509 | customizable variables eval-expression-print-level, | ||
| 6510 | eval-expression-print-length, and eval-expression-debug-on-error. | ||
| 6511 | |||
| 6512 | The default values for the first two of these variables are 12 and 4 | ||
| 6513 | respectively, which means that `eval-expression' now prints at most | ||
| 6514 | the first 12 members of a list and at most 4 nesting levels deep (if | ||
| 6515 | the list is longer or deeper than that, an ellipsis `...' is | ||
| 6516 | printed). | ||
| 6517 | |||
| 6518 | <RET> or <mouse-2> on the printed text toggles between an abbreviated | ||
| 6519 | printed representation and an unabbreviated one. | ||
| 6520 | |||
| 6521 | The default value of eval-expression-debug-on-error is t, so any error | ||
| 6522 | during evaluation produces a backtrace. | ||
| 6523 | |||
| 6524 | *** The function `eval-defun' (C-M-x) now loads Edebug and instruments | ||
| 6525 | code when called with a prefix argument. | ||
| 6526 | |||
| 6527 | ** CC mode changes. | ||
| 6528 | |||
| 6529 | Note: This release contains changes that might not be compatible with | ||
| 6530 | current user setups (although it's believed that these | ||
| 6531 | incompatibilities will only show in very uncommon circumstances). | ||
| 6532 | However, since the impact is uncertain, these changes may be rolled | ||
| 6533 | back depending on user feedback. Therefore there's no forward | ||
| 6534 | compatibility guarantee wrt the new features introduced in this | ||
| 6535 | release. | ||
| 6536 | |||
| 6537 | *** The hardcoded switch to "java" style in Java mode is gone. | ||
| 6538 | CC Mode used to automatically set the style to "java" when Java mode | ||
| 6539 | is entered. This has now been removed since it caused too much | ||
| 6540 | confusion. | ||
| 6541 | |||
| 6542 | However, to keep backward compatibility to a certain extent, the | ||
| 6543 | default value for c-default-style now specifies the "java" style for | ||
| 6544 | java-mode, but "gnu" for all other modes (as before). So you won't | ||
| 6545 | notice the change if you haven't touched that variable. | ||
| 6546 | |||
| 6547 | *** New cleanups, space-before-funcall and compact-empty-funcall. | ||
| 6548 | Two new cleanups have been added to c-cleanup-list: | ||
| 6549 | |||
| 6550 | space-before-funcall causes a space to be inserted before the opening | ||
| 6551 | parenthesis of a function call, which gives the style "foo (bar)". | ||
| 6552 | |||
| 6553 | compact-empty-funcall causes any space before a function call opening | ||
| 6554 | parenthesis to be removed if there are no arguments to the function. | ||
| 6555 | It's typically useful together with space-before-funcall to get the | ||
| 6556 | style "foo (bar)" and "foo()". | ||
| 6557 | |||
| 6558 | *** Some keywords now automatically trigger reindentation. | ||
| 6559 | Keywords like "else", "while", "catch" and "finally" have been made | ||
| 6560 | "electric" to make them reindent automatically when they continue an | ||
| 6561 | earlier statement. An example: | ||
| 6562 | |||
| 6563 | for (i = 0; i < 17; i++) | ||
| 6564 | if (a[i]) | ||
| 6565 | res += a[i]->offset; | ||
| 6566 | else | ||
| 6567 | |||
| 6568 | Here, the "else" should be indented like the preceding "if", since it | ||
| 6569 | continues that statement. CC Mode will automatically reindent it after | ||
| 6570 | the "else" has been typed in full, since it's not until then it's | ||
| 6571 | possible to decide whether it's a new statement or a continuation of | ||
| 6572 | the preceding "if". | ||
| 6573 | |||
| 6574 | CC Mode uses Abbrev mode to achieve this, which is therefore turned on | ||
| 6575 | by default. | ||
| 6576 | |||
| 6577 | *** M-a and M-e now moves by sentence in multiline strings. | ||
| 6578 | Previously these two keys only moved by sentence in comments, which | ||
| 6579 | meant that sentence movement didn't work in strings containing | ||
| 6580 | documentation or other natural language text. | ||
| 6581 | |||
| 6582 | The reason it's only activated in multiline strings (i.e. strings that | ||
| 6583 | contain a newline, even when escaped by a '\') is to avoid stopping in | ||
| 6584 | the short strings that often reside inside statements. Multiline | ||
| 6585 | strings almost always contain text in a natural language, as opposed | ||
| 6586 | to other strings that typically contain format specifications, | ||
| 6587 | commands, etc. Also, it's not that bothersome that M-a and M-e misses | ||
| 6588 | sentences in single line strings, since they're short anyway. | ||
| 6589 | |||
| 6590 | *** Support for autodoc comments in Pike mode. | ||
| 6591 | Autodoc comments for Pike are used to extract documentation from the | ||
| 6592 | source, like Javadoc in Java. Pike mode now recognize this markup in | ||
| 6593 | comment prefixes and paragraph starts. | ||
| 6594 | |||
| 6595 | *** The comment prefix regexps on c-comment-prefix may be mode specific. | ||
| 6596 | When c-comment-prefix is an association list, it specifies the comment | ||
| 6597 | line prefix on a per-mode basis, like c-default-style does. This | ||
| 6598 | change came about to support the special autodoc comment prefix in | ||
| 6599 | Pike mode only. | ||
| 6600 | |||
| 6601 | *** Better handling of syntactic errors. | ||
| 6602 | The recovery after unbalanced parens earlier in the buffer has been | ||
| 6603 | improved; CC Mode now reports them by dinging and giving a message | ||
| 6604 | stating the offending line, but still recovers and indent the | ||
| 6605 | following lines in a sane way (most of the time). An "else" with no | ||
| 6606 | matching "if" is handled similarly. If an error is discovered while | ||
| 6607 | indenting a region, the whole region is still indented and the error | ||
| 6608 | is reported afterwards. | ||
| 6609 | |||
| 6610 | *** Lineup functions may now return absolute columns. | ||
| 6611 | A lineup function can give an absolute column to indent the line to by | ||
| 6612 | returning a vector with the desired column as the first element. | ||
| 6613 | |||
| 6614 | *** More robust and warning-free byte compilation. | ||
| 6615 | Although this is strictly not a user visible change (well, depending | ||
| 6616 | on the view of a user), it's still worth mentioning that CC Mode now | ||
| 6617 | can be compiled in the standard ways without causing trouble. Some | ||
| 6618 | code have also been moved between the subpackages to enhance the | ||
| 6619 | modularity somewhat. Thanks to Martin Buchholz for doing the | ||
| 6620 | groundwork. | ||
| 6621 | |||
| 6622 | *** c-style-variables-are-local-p now defaults to t. | ||
| 6623 | This is an incompatible change that has been made to make the behavior | ||
| 6624 | of the style system wrt global variable settings less confusing for | ||
| 6625 | non-advanced users. If you know what this variable does you might | ||
| 6626 | want to set it to nil in your .emacs, otherwise you probably don't | ||
| 6627 | have to bother. | ||
| 6628 | |||
| 6629 | Defaulting c-style-variables-are-local-p to t avoids the confusing | ||
| 6630 | situation that occurs when a user sets some style variables globally | ||
| 6631 | and edits both a Java and a non-Java file in the same Emacs session. | ||
| 6632 | If the style variables aren't buffer local in this case, loading of | ||
| 6633 | the second file will cause the default style (either "gnu" or "java" | ||
| 6634 | by default) to override the global settings made by the user. | ||
| 6635 | |||
| 6636 | *** New initialization procedure for the style system. | ||
| 6637 | When the initial style for a buffer is determined by CC Mode (from the | ||
| 6638 | variable c-default-style), the global values of style variables now | ||
| 6639 | take precedence over the values specified by the chosen style. This | ||
| 6640 | is different than the old behavior: previously, the style-specific | ||
| 6641 | settings would override the global settings. This change makes it | ||
| 6642 | possible to do simple configuration in the intuitive way with | ||
| 6643 | Customize or with setq lines in one's .emacs file. | ||
| 6644 | |||
| 6645 | By default, the global value of every style variable is the new | ||
| 6646 | special symbol set-from-style, which causes the value to be taken from | ||
| 6647 | the style system. This means that in effect, only an explicit setting | ||
| 6648 | of a style variable will cause the "overriding" behavior described | ||
| 6649 | above. | ||
| 6650 | |||
| 6651 | Also note that global settings override style-specific settings *only* | ||
| 6652 | when the initial style of a buffer is chosen by a CC Mode major mode | ||
| 6653 | function. When a style is chosen in other ways --- for example, by a | ||
| 6654 | call like (c-set-style "gnu") in a hook, or via M-x c-set-style --- | ||
| 6655 | then the style-specific values take precedence over any global style | ||
| 6656 | values. In Lisp terms, global values override style-specific values | ||
| 6657 | only when the new second argument to c-set-style is non-nil; see the | ||
| 6658 | function documentation for more info. | ||
| 6659 | |||
| 6660 | The purpose of these changes is to make it easier for users, | ||
| 6661 | especially novice users, to do simple customizations with Customize or | ||
| 6662 | with setq in their .emacs files. On the other hand, the new system is | ||
| 6663 | intended to be compatible with advanced users' customizations as well, | ||
| 6664 | such as those that choose styles in hooks or whatnot. This new system | ||
| 6665 | is believed to be almost entirely compatible with current | ||
| 6666 | configurations, in spite of the changed precedence between style and | ||
| 6667 | global variable settings when a buffer's default style is set. | ||
| 6668 | |||
| 6669 | (Thanks to Eric Eide for clarifying this explanation a bit.) | ||
| 6670 | |||
| 6671 | **** c-offsets-alist is now a customizable variable. | ||
| 6672 | This became possible as a result of the new initialization behavior. | ||
| 6673 | |||
| 6674 | This variable is treated slightly differently from the other style | ||
| 6675 | variables; instead of using the symbol set-from-style, it will be | ||
| 6676 | completed with the syntactic symbols it doesn't already contain when | ||
| 6677 | the style is first initialized. This means it now defaults to the | ||
| 6678 | empty list to make all syntactic elements get their values from the | ||
| 6679 | style system. | ||
| 6680 | |||
| 6681 | **** Compatibility variable to restore the old behavior. | ||
| 6682 | In case your configuration doesn't work with this change, you can set | ||
| 6683 | c-old-style-variable-behavior to non-nil to get the old behavior back | ||
| 6684 | as far as possible. | ||
| 6685 | |||
| 6686 | *** Improvements to line breaking and text filling. | ||
| 6687 | CC Mode now handles this more intelligently and seamlessly wrt the | ||
| 6688 | surrounding code, especially inside comments. For details see the new | ||
| 6689 | chapter about this in the manual. | ||
| 6690 | |||
| 6691 | **** New variable to recognize comment line prefix decorations. | ||
| 6692 | The variable c-comment-prefix-regexp has been added to properly | ||
| 6693 | recognize the line prefix in both block and line comments. It's | ||
| 6694 | primarily used to initialize the various paragraph recognition and | ||
| 6695 | adaptive filling variables that the text handling functions uses. | ||
| 6696 | |||
| 6697 | **** New variable c-block-comment-prefix. | ||
| 6698 | This is a generalization of the now obsolete variable | ||
| 6699 | c-comment-continuation-stars to handle arbitrary strings. | ||
| 6700 | |||
| 6701 | **** CC Mode now uses adaptive fill mode. | ||
| 6702 | This to make it adapt better to the paragraph style inside comments. | ||
| 6703 | |||
| 6704 | It's also possible to use other adaptive filling packages inside CC | ||
| 6705 | Mode, notably Kyle E. Jones' Filladapt mode (http://wonderworks.com/). | ||
| 6706 | A new convenience function c-setup-filladapt sets up Filladapt for use | ||
| 6707 | inside CC Mode. | ||
| 6708 | |||
| 6709 | Note though that the 2.12 version of Filladapt lacks a feature that | ||
| 6710 | causes it to work suboptimally when c-comment-prefix-regexp can match | ||
| 6711 | the empty string (which it commonly does). A patch for that is | ||
| 6712 | available from the CC Mode web site (http://www.python.org/emacs/ | ||
| 6713 | cc-mode/). | ||
| 6714 | |||
| 6715 | **** The variables `c-hanging-comment-starter-p' and | ||
| 6716 | `c-hanging-comment-ender-p', which controlled how comment starters and | ||
| 6717 | enders were filled, are not used anymore. The new version of the | ||
| 6718 | function `c-fill-paragraph' keeps the comment starters and enders as | ||
| 6719 | they were before the filling. | ||
| 6720 | |||
| 6721 | **** It's now possible to selectively turn off auto filling. | ||
| 6722 | The variable c-ignore-auto-fill is used to ignore auto fill mode in | ||
| 6723 | specific contexts, e.g. in preprocessor directives and in string | ||
| 6724 | literals. | ||
| 6725 | |||
| 6726 | **** New context sensitive line break function c-context-line-break. | ||
| 6727 | It works like newline-and-indent in normal code, and adapts the line | ||
| 6728 | prefix according to the comment style when used inside comments. If | ||
| 6729 | you're normally using newline-and-indent, you might want to switch to | ||
| 6730 | this function. | ||
| 6731 | |||
| 6732 | *** Fixes to IDL mode. | ||
| 6733 | It now does a better job in recognizing only the constructs relevant | ||
| 6734 | to IDL. E.g. it no longer matches "class" as the beginning of a | ||
| 6735 | struct block, but it does match the CORBA 2.3 "valuetype" keyword. | ||
| 6736 | Thanks to Eric Eide. | ||
| 6737 | |||
| 6738 | *** Improvements to the Whitesmith style. | ||
| 6739 | It now keeps the style consistently on all levels and both when | ||
| 6740 | opening braces hangs and when they don't. | ||
| 6741 | |||
| 6742 | **** New lineup function c-lineup-whitesmith-in-block. | ||
| 6743 | |||
| 6744 | *** New lineup functions c-lineup-template-args and c-indent-multi-line-block. | ||
| 6745 | See their docstrings for details. c-lineup-template-args does a | ||
| 6746 | better job of tracking the brackets used as parens in C++ templates, | ||
| 6747 | and is used by default to line up continued template arguments. | ||
| 6748 | |||
| 6749 | *** c-lineup-comment now preserves alignment with a comment on the | ||
| 6750 | previous line. It used to instead preserve comments that started in | ||
| 6751 | the column specified by comment-column. | ||
| 6752 | |||
| 6753 | *** c-lineup-C-comments handles "free form" text comments. | ||
| 6754 | In comments with a long delimiter line at the start, the indentation | ||
| 6755 | is kept unchanged for lines that start with an empty comment line | ||
| 6756 | prefix. This is intended for the type of large block comments that | ||
| 6757 | contain documentation with its own formatting. In these you normally | ||
| 6758 | don't want CC Mode to change the indentation. | ||
| 6759 | |||
| 6760 | *** The `c' syntactic symbol is now relative to the comment start | ||
| 6761 | instead of the previous line, to make integers usable as lineup | ||
| 6762 | arguments. | ||
| 6763 | |||
| 6764 | *** All lineup functions have gotten docstrings. | ||
| 6765 | |||
| 6766 | *** More preprocessor directive movement functions. | ||
| 6767 | c-down-conditional does the reverse of c-up-conditional. | ||
| 6768 | c-up-conditional-with-else and c-down-conditional-with-else are | ||
| 6769 | variants of these that also stops at "#else" lines (suggested by Don | ||
| 6770 | Provan). | ||
| 6771 | |||
| 6772 | *** Minor improvements to many movement functions in tricky situations. | ||
| 6773 | |||
| 6774 | ** Dired changes | ||
| 6775 | |||
| 6776 | *** New variable `dired-recursive-deletes' determines if the delete | ||
| 6777 | command will delete non-empty directories recursively. The default | ||
| 6778 | is, delete only empty directories. | ||
| 6779 | |||
| 6780 | *** New variable `dired-recursive-copies' determines if the copy | ||
| 6781 | command will copy directories recursively. The default is, do not | ||
| 6782 | copy directories recursively. | ||
| 6783 | |||
| 6784 | *** In command `dired-do-shell-command' (usually bound to `!') a `?' | ||
| 6785 | in the shell command has a special meaning similar to `*', but with | ||
| 6786 | the difference that the command will be run on each file individually. | ||
| 6787 | |||
| 6788 | *** The new command `dired-find-alternate-file' (usually bound to `a') | ||
| 6789 | replaces the Dired buffer with the buffer for an alternate file or | ||
| 6790 | directory. | ||
| 6791 | |||
| 6792 | *** The new command `dired-show-file-type' (usually bound to `y') shows | ||
| 6793 | a message in the echo area describing what type of file the point is on. | ||
| 6794 | This command invokes the external program `file' do its work, and so | ||
| 6795 | will only work on systems with that program, and will be only as | ||
| 6796 | accurate or inaccurate as it is. | ||
| 6797 | |||
| 6798 | *** Dired now properly handles undo changes of adding/removing `-R' | ||
| 6799 | from ls switches. | ||
| 6800 | |||
| 6801 | *** Dired commands that prompt for a destination file now allow the use | ||
| 6802 | of the `M-n' command in the minibuffer to insert the source filename, | ||
| 6803 | which the user can then edit. This only works if there is a single | ||
| 6804 | source file, not when operating on multiple marked files. | ||
| 6805 | |||
| 6806 | ** Gnus changes. | ||
| 6807 | |||
| 6808 | The Gnus NEWS entries are short, but they reflect sweeping changes in | ||
| 6809 | four areas: Article display treatment, MIME treatment, | ||
| 6810 | internationalization and mail-fetching. | ||
| 6811 | |||
| 6812 | *** The mail-fetching functions have changed. See the manual for the | ||
| 6813 | many details. In particular, all procmail fetching variables are gone. | ||
| 6814 | |||
| 6815 | If you used procmail like in | ||
| 6816 | |||
| 6817 | (setq nnmail-use-procmail t) | ||
| 6818 | (setq nnmail-spool-file 'procmail) | ||
| 6819 | (setq nnmail-procmail-directory "~/mail/incoming/") | ||
| 6820 | (setq nnmail-procmail-suffix "\\.in") | ||
| 6821 | |||
| 6822 | this now has changed to | ||
| 6823 | |||
| 6824 | (setq mail-sources | ||
| 6825 | '((directory :path "~/mail/incoming/" | ||
| 6826 | :suffix ".in"))) | ||
| 6827 | |||
| 6828 | More information is available in the info doc at Select Methods -> | ||
| 6829 | Getting Mail -> Mail Sources | ||
| 6830 | |||
| 6831 | *** Gnus is now a MIME-capable reader. This affects many parts of | ||
| 6832 | Gnus, and adds a slew of new commands. See the manual for details. | ||
| 6833 | Separate MIME packages like RMIME, mime-compose etc., will probably no | ||
| 6834 | longer work; remove them and use the native facilities. | ||
| 6835 | |||
| 6836 | The FLIM/SEMI package still works with Emacs 21, but if you want to | ||
| 6837 | use the native facilities, you must remove any mailcap.el[c] that was | ||
| 6838 | installed by FLIM/SEMI version 1.13 or earlier. | ||
| 6839 | |||
| 6840 | *** Gnus has also been multilingualized. This also affects too many | ||
| 6841 | parts of Gnus to summarize here, and adds many new variables. There | ||
| 6842 | are built-in facilities equivalent to those of gnus-mule.el, which is | ||
| 6843 | now just a compatibility layer. | ||
| 6844 | |||
| 6845 | *** gnus-mule.el is now just a compatibility layer over the built-in | ||
| 6846 | Gnus facilities. | ||
| 6847 | |||
| 6848 | *** gnus-auto-select-first can now be a function to be | ||
| 6849 | called to position point. | ||
| 6850 | |||
| 6851 | *** The user can now decide which extra headers should be included in | ||
| 6852 | summary buffers and NOV files. | ||
| 6853 | |||
| 6854 | *** `gnus-article-display-hook' has been removed. Instead, a number | ||
| 6855 | of variables starting with `gnus-treat-' have been added. | ||
| 6856 | |||
| 6857 | *** The Gnus posting styles have been redone again and now work in a | ||
| 6858 | subtly different manner. | ||
| 6859 | |||
| 6860 | *** New web-based backends have been added: nnslashdot, nnwarchive | ||
| 6861 | and nnultimate. nnweb has been revamped, again, to keep up with | ||
| 6862 | ever-changing layouts. | ||
| 6863 | |||
| 6864 | *** Gnus can now read IMAP mail via nnimap. | ||
| 6865 | |||
| 6866 | *** There is image support of various kinds and some sound support. | ||
| 6867 | |||
| 6868 | ** Changes in Texinfo mode. | ||
| 6869 | |||
| 6870 | *** A couple of new key bindings have been added for inserting Texinfo | ||
| 6871 | macros | ||
| 6872 | |||
| 6873 | Key binding Macro | ||
| 6874 | ------------------------- | ||
| 6875 | C-c C-c C-s @strong | ||
| 6876 | C-c C-c C-e @emph | ||
| 6877 | C-c C-c u @uref | ||
| 6878 | C-c C-c q @quotation | ||
| 6879 | C-c C-c m @email | ||
| 6880 | C-c C-o @<block> ... @end <block> | ||
| 6881 | M-RET @item | ||
| 6882 | |||
| 6883 | *** The " key now inserts either " or `` or '' depending on context. | ||
| 6884 | |||
| 6885 | ** Changes in Outline mode. | ||
| 6886 | |||
| 6887 | There is now support for Imenu to index headings. A new command | ||
| 6888 | `outline-headers-as-kill' copies the visible headings in the region to | ||
| 6889 | the kill ring, e.g. to produce a table of contents. | ||
| 6890 | |||
| 6891 | ** Changes to Emacs Server | ||
| 6892 | |||
| 6893 | *** The new option `server-kill-new-buffers' specifies what to do | ||
| 6894 | with buffers when done with them. If non-nil, the default, buffers | ||
| 6895 | are killed, unless they were already present before visiting them with | ||
| 6896 | Emacs Server. If nil, `server-temp-file-regexp' specifies which | ||
| 6897 | buffers to kill, as before. | ||
| 6898 | |||
| 6899 | Please note that only buffers are killed that still have a client, | ||
| 6900 | i.e. buffers visited with `emacsclient --no-wait' are never killed in | ||
| 6901 | this way. | ||
| 6902 | |||
| 6903 | ** Both emacsclient and Emacs itself now accept command line options | ||
| 6904 | of the form +LINE:COLUMN in addition to +LINE. | ||
| 6905 | |||
| 6906 | ** Changes to Show Paren mode. | ||
| 6907 | |||
| 6908 | *** Overlays used by Show Paren mode now use a priority property. | ||
| 6909 | The new user option show-paren-priority specifies the priority to | ||
| 6910 | use. Default is 1000. | ||
| 6911 | |||
| 6912 | ** New command M-x check-parens can be used to find unbalanced paren | ||
| 6913 | groups and strings in buffers in Lisp mode (or other modes). | ||
| 6914 | |||
| 6915 | ** Changes to hideshow.el | ||
| 6916 | |||
| 6917 | *** Generalized block selection and traversal | ||
| 6918 | |||
| 6919 | A block is now recognized by its start and end regexps (both strings), | ||
| 6920 | and an integer specifying which sub-expression in the start regexp | ||
| 6921 | serves as the place where a `forward-sexp'-like function can operate. | ||
| 6922 | See the documentation of variable `hs-special-modes-alist'. | ||
| 6923 | |||
| 6924 | *** During incremental search, if Hideshow minor mode is active, | ||
| 6925 | hidden blocks are temporarily shown. The variable `hs-headline' can | ||
| 6926 | be used in the mode line format to show the line at the beginning of | ||
| 6927 | the open block. | ||
| 6928 | |||
| 6929 | *** User option `hs-hide-all-non-comment-function' specifies a | ||
| 6930 | function to be called at each top-level block beginning, instead of | ||
| 6931 | the normal block-hiding function. | ||
| 6932 | |||
| 6933 | *** The command `hs-show-region' has been removed. | ||
| 6934 | |||
| 6935 | *** The key bindings have changed to fit the Emacs conventions, | ||
| 6936 | roughly imitating those of Outline minor mode. Notably, the prefix | ||
| 6937 | for all bindings is now `C-c @'. For details, see the documentation | ||
| 6938 | for `hs-minor-mode'. | ||
| 6939 | |||
| 6940 | *** The variable `hs-show-hidden-short-form' has been removed, and | ||
| 6941 | hideshow.el now always behaves as if this variable were set to t. | ||
| 6942 | |||
| 6943 | ** Changes to Change Log mode and Add-Log functions | ||
| 6944 | |||
| 6945 | *** If you invoke `add-change-log-entry' from a backup file, it makes | ||
| 6946 | an entry appropriate for the file's parent. This is useful for making | ||
| 6947 | log entries by comparing a version with deleted functions. | ||
| 6948 | |||
| 6949 | **** New command M-x change-log-merge merges another log into the | ||
| 6950 | current buffer. | ||
| 6951 | |||
| 6952 | *** New command M-x change-log-redate fixes any old-style date entries | ||
| 6953 | in a log file. | ||
| 6954 | |||
| 6955 | *** Change Log mode now adds a file's version number to change log | ||
| 6956 | entries if user-option `change-log-version-info-enabled' is non-nil. | ||
| 6957 | Unless the file is under version control the search for a file's | ||
| 6958 | version number is performed based on regular expressions from | ||
| 6959 | `change-log-version-number-regexp-list' which can be customized. | ||
| 6960 | Version numbers are only found in the first 10 percent of a file. | ||
| 6961 | |||
| 6962 | *** Change Log mode now defines its own faces for font-lock highlighting. | ||
| 6963 | |||
| 6964 | ** Changes to cmuscheme | ||
| 6965 | |||
| 6966 | *** The user-option `scheme-program-name' has been renamed | ||
| 6967 | `cmuscheme-program-name' due to conflicts with xscheme.el. | ||
| 6968 | |||
| 6969 | ** Changes in Font Lock | ||
| 6970 | |||
| 6971 | *** The new function `font-lock-remove-keywords' can be used to remove | ||
| 6972 | font-lock keywords from the current buffer or from a specific major mode. | ||
| 6973 | |||
| 6974 | *** Multi-line patterns are now supported. Modes using this, should | ||
| 6975 | set font-lock-multiline to t in their font-lock-defaults. | ||
| 6976 | |||
| 6977 | *** `font-lock-syntactic-face-function' allows major-modes to choose | ||
| 6978 | the face used for each string/comment. | ||
| 6979 | |||
| 6980 | *** A new standard face `font-lock-doc-face'. | ||
| 6981 | Meant for Lisp docstrings, Javadoc comments and other "documentation in code". | ||
| 6982 | |||
| 6983 | ** Changes to Shell mode | ||
| 6984 | |||
| 6985 | *** The `shell' command now accepts an optional argument to specify the buffer | ||
| 6986 | to use, which defaults to "*shell*". When used interactively, a | ||
| 6987 | non-default buffer may be specified by giving the `shell' command a | ||
| 6988 | prefix argument (causing it to prompt for the buffer name). | ||
| 6989 | |||
| 6990 | ** Comint (subshell) changes | ||
| 6991 | |||
| 6992 | These changes generally affect all modes derived from comint mode, which | ||
| 6993 | include shell-mode, gdb-mode, scheme-interaction-mode, etc. | ||
| 6994 | |||
| 6995 | *** Comint now by default interprets some carriage-control characters. | ||
| 6996 | Comint now removes CRs from CR LF sequences, and treats single CRs and | ||
| 6997 | BSs in the output in a way similar to a terminal (by deleting to the | ||
| 6998 | beginning of the line, or deleting the previous character, | ||
| 6999 | respectively). This is achieved by adding `comint-carriage-motion' to | ||
| 7000 | the `comint-output-filter-functions' hook by default. | ||
| 7001 | |||
| 7002 | *** By default, comint no longer uses the variable `comint-prompt-regexp' | ||
| 7003 | to distinguish prompts from user-input. Instead, it notices which | ||
| 7004 | parts of the text were output by the process, and which entered by the | ||
| 7005 | user, and attaches `field' properties to allow emacs commands to use | ||
| 7006 | this information. Common movement commands, notably beginning-of-line, | ||
| 7007 | respect field boundaries in a fairly natural manner. To disable this | ||
| 7008 | feature, and use the old behavior, customize the user option | ||
| 7009 | `comint-use-prompt-regexp-instead-of-fields'. | ||
| 7010 | |||
| 7011 | *** Comint now includes new features to send commands to running processes | ||
| 7012 | and redirect the output to a designated buffer or buffers. | ||
| 7013 | |||
| 7014 | *** The command M-x comint-redirect-send-command reads a command and | ||
| 7015 | buffer name from the mini-buffer. The command is sent to the current | ||
| 7016 | buffer's process, and its output is inserted into the specified buffer. | ||
| 7017 | |||
| 7018 | The command M-x comint-redirect-send-command-to-process acts like | ||
| 7019 | M-x comint-redirect-send-command but additionally reads the name of | ||
| 7020 | the buffer whose process should be used from the mini-buffer. | ||
| 7021 | |||
| 7022 | *** Packages based on comint now highlight user input and program prompts, | ||
| 7023 | and support choosing previous input with mouse-2. To control these features, | ||
| 7024 | see the user-options `comint-highlight-input' and `comint-highlight-prompt'. | ||
| 7025 | |||
| 7026 | *** The new command `comint-write-output' (usually bound to `C-c C-s') | ||
| 7027 | saves the output from the most recent command to a file. With a prefix | ||
| 7028 | argument, it appends to the file. | ||
| 7029 | |||
| 7030 | *** The command `comint-kill-output' has been renamed `comint-delete-output' | ||
| 7031 | (usually bound to `C-c C-o'); the old name is aliased to it for | ||
| 7032 | compatibility. | ||
| 7033 | |||
| 7034 | *** The new function `comint-add-to-input-history' adds commands to the input | ||
| 7035 | ring (history). | ||
| 7036 | |||
| 7037 | *** The new variable `comint-input-history-ignore' is a regexp for | ||
| 7038 | identifying history lines that should be ignored, like tcsh time-stamp | ||
| 7039 | strings, starting with a `#'. The default value of this variable is "^#". | ||
| 7040 | |||
| 7041 | ** Changes to Rmail mode | ||
| 7042 | |||
| 7043 | *** The new user-option rmail-user-mail-address-regexp can be | ||
| 7044 | set to fine tune the identification of the correspondent when | ||
| 7045 | receiving new mail. If it matches the address of the sender, the | ||
| 7046 | recipient is taken as correspondent of a mail. If nil, the default, | ||
| 7047 | `user-login-name' and `user-mail-address' are used to exclude yourself | ||
| 7048 | as correspondent. | ||
| 7049 | |||
| 7050 | Usually you don't have to set this variable, except if you collect | ||
| 7051 | mails sent by you under different user names. Then it should be a | ||
| 7052 | regexp matching your mail addresses. | ||
| 7053 | |||
| 7054 | *** The new user-option rmail-confirm-expunge controls whether and how | ||
| 7055 | to ask for confirmation before expunging deleted messages from an | ||
| 7056 | Rmail file. You can choose between no confirmation, confirmation | ||
| 7057 | with y-or-n-p, or confirmation with yes-or-no-p. Default is to ask | ||
| 7058 | for confirmation with yes-or-no-p. | ||
| 7059 | |||
| 7060 | *** RET is now bound in the Rmail summary to rmail-summary-goto-msg, | ||
| 7061 | like `j'. | ||
| 7062 | |||
| 7063 | *** There is a new user option `rmail-digest-end-regexps' that | ||
| 7064 | specifies the regular expressions to detect the line that ends a | ||
| 7065 | digest message. | ||
| 7066 | |||
| 7067 | *** The new user option `rmail-automatic-folder-directives' specifies | ||
| 7068 | in which folder to put messages automatically. | ||
| 7069 | |||
| 7070 | *** The new function `rmail-redecode-body' allows to fix a message | ||
| 7071 | with non-ASCII characters if Emacs happens to decode it incorrectly | ||
| 7072 | due to missing or malformed "charset=" header. | ||
| 7073 | |||
| 7074 | ** The new user-option `mail-envelope-from' can be used to specify | ||
| 7075 | an envelope-from address different from user-mail-address. | ||
| 7076 | |||
| 7077 | ** The variable mail-specify-envelope-from controls whether to | ||
| 7078 | use the -f option when sending mail. | ||
| 7079 | |||
| 7080 | ** The Rmail command `o' (`rmail-output-to-rmail-file') now writes the | ||
| 7081 | current message in the internal `emacs-mule' encoding, rather than in | ||
| 7082 | the encoding taken from the variable `buffer-file-coding-system'. | ||
| 7083 | This allows to save messages whose characters cannot be safely encoded | ||
| 7084 | by the buffer's coding system, and makes sure the message will be | ||
| 7085 | displayed correctly when you later visit the target Rmail file. | ||
| 7086 | |||
| 7087 | If you want your Rmail files be encoded in a specific coding system | ||
| 7088 | other than `emacs-mule', you can customize the variable | ||
| 7089 | `rmail-file-coding-system' to set its value to that coding system. | ||
| 7090 | |||
| 7091 | ** Changes to TeX mode | ||
| 7092 | |||
| 7093 | *** The default mode has been changed from `plain-tex-mode' to | ||
| 7094 | `latex-mode'. | ||
| 7095 | |||
| 7096 | *** latex-mode now has a simple indentation algorithm. | ||
| 7097 | |||
| 7098 | *** M-f and M-p jump around \begin...\end pairs. | ||
| 7099 | |||
| 7100 | *** Added support for outline-minor-mode. | ||
| 7101 | |||
| 7102 | ** Changes to RefTeX mode | ||
| 7103 | |||
| 7104 | *** RefTeX has new support for index generation. Index entries can be | ||
| 7105 | created with `C-c <', with completion available on index keys. | ||
| 7106 | Pressing `C-c /' indexes the word at the cursor with a default | ||
| 7107 | macro. `C-c >' compiles all index entries into an alphabetically | ||
| 7108 | sorted *Index* buffer which looks like the final index. Entries | ||
| 7109 | can be edited from that buffer. | ||
| 7110 | |||
| 7111 | *** Label and citation key selection now allow to select several | ||
| 7112 | items and reference them together (use `m' to mark items, `a' or | ||
| 7113 | `A' to use all marked entries). | ||
| 7114 | |||
| 7115 | *** reftex.el has been split into a number of smaller files to reduce | ||
| 7116 | memory use when only a part of RefTeX is being used. | ||
| 7117 | |||
| 7118 | *** a new command `reftex-view-crossref-from-bibtex' (bound to `C-c &' | ||
| 7119 | in BibTeX-mode) can be called in a BibTeX database buffer in order | ||
| 7120 | to show locations in LaTeX documents where a particular entry has | ||
| 7121 | been cited. | ||
| 7122 | |||
| 7123 | ** Emacs Lisp mode now allows multiple levels of outline headings. | ||
| 7124 | The level of a heading is determined from the number of leading | ||
| 7125 | semicolons in a heading line. Toplevel forms starting with a `(' | ||
| 7126 | in column 1 are always made leaves. | ||
| 7127 | |||
| 7128 | ** The M-x time-stamp command (most commonly used on write-file-hooks) | ||
| 7129 | has the following new features: | ||
| 7130 | |||
| 7131 | *** The patterns for finding the time stamp and for updating a pattern | ||
| 7132 | may match text spanning multiple lines. For example, some people like | ||
| 7133 | to have the filename and date on separate lines. The new variable | ||
| 7134 | time-stamp-inserts-lines controls the matching for multi-line patterns. | ||
| 7135 | |||
| 7136 | *** More than one time stamp can be updated in the same file. This | ||
| 7137 | feature is useful if you need separate time stamps in a program source | ||
| 7138 | file to both include in formatted documentation and insert in the | ||
| 7139 | compiled binary. The same time-stamp will be written at each matching | ||
| 7140 | pattern. The variable time-stamp-count enables this new feature; it | ||
| 7141 | defaults to 1. | ||
| 7142 | |||
| 7143 | ** Partial Completion mode now completes environment variables in | ||
| 7144 | file names. | ||
| 7145 | |||
| 7146 | ** Ispell changes | ||
| 7147 | |||
| 7148 | *** The command `ispell' now spell-checks a region if | ||
| 7149 | transient-mark-mode is on, and the mark is active. Otherwise it | ||
| 7150 | spell-checks the current buffer. | ||
| 7151 | |||
| 7152 | *** Support for synchronous subprocesses - DOS/Windoze - has been | ||
| 7153 | added. | ||
| 7154 | |||
| 7155 | *** An "alignment error" bug was fixed when a manual spelling | ||
| 7156 | correction is made and re-checked. | ||
| 7157 | |||
| 7158 | *** Italian, Portuguese, and Slovak dictionary definitions have been added. | ||
| 7159 | |||
| 7160 | *** Region skipping performance has been vastly improved in some | ||
| 7161 | cases. | ||
| 7162 | |||
| 7163 | *** Spell checking HTML buffers has been improved and isn't so strict | ||
| 7164 | on syntax errors. | ||
| 7165 | |||
| 7166 | *** The buffer-local words are now always placed on a new line at the | ||
| 7167 | end of the buffer. | ||
| 7168 | |||
| 7169 | *** Spell checking now works in the MS-DOS version of Emacs. | ||
| 7170 | |||
| 7171 | *** The variable `ispell-format-word' has been renamed to | ||
| 7172 | `ispell-format-word-function'. The old name is still available as | ||
| 7173 | alias. | ||
| 7174 | |||
| 7175 | ** Makefile mode changes | ||
| 7176 | |||
| 7177 | *** The mode now uses the abbrev table `makefile-mode-abbrev-table'. | ||
| 7178 | |||
| 7179 | *** Conditionals and include statements are now highlighted when | ||
| 7180 | Fontlock mode is active. | ||
| 7181 | |||
| 7182 | ** Isearch changes | ||
| 7183 | |||
| 7184 | *** Isearch now puts a call to `isearch-resume' in the command history, | ||
| 7185 | so that searches can be resumed. | ||
| 7186 | |||
| 7187 | *** In Isearch mode, C-M-s and C-M-r are now bound like C-s and C-r, | ||
| 7188 | respectively, i.e. you can repeat a regexp isearch with the same keys | ||
| 7189 | that started the search. | ||
| 7190 | |||
| 7191 | *** In Isearch mode, mouse-2 in the echo area now yanks the current | ||
| 7192 | selection into the search string rather than giving an error. | ||
| 7193 | |||
| 7194 | *** There is a new lazy highlighting feature in incremental search. | ||
| 7195 | |||
| 7196 | Lazy highlighting is switched on/off by customizing variable | ||
| 7197 | `isearch-lazy-highlight'. When active, all matches for the current | ||
| 7198 | search string are highlighted. The current match is highlighted as | ||
| 7199 | before using face `isearch' or `region'. All other matches are | ||
| 7200 | highlighted using face `isearch-lazy-highlight-face' which defaults to | ||
| 7201 | `secondary-selection'. | ||
| 7202 | |||
| 7203 | The extra highlighting makes it easier to anticipate where the cursor | ||
| 7204 | will end up each time you press C-s or C-r to repeat a pending search. | ||
| 7205 | Highlighting of these additional matches happens in a deferred fashion | ||
| 7206 | using "idle timers," so the cycles needed do not rob isearch of its | ||
| 7207 | usual snappy response. | ||
| 7208 | |||
| 7209 | If `isearch-lazy-highlight-cleanup' is set to t, highlights for | ||
| 7210 | matches are automatically cleared when you end the search. If it is | ||
| 7211 | set to nil, you can remove the highlights manually with `M-x | ||
| 7212 | isearch-lazy-highlight-cleanup'. | ||
| 7213 | |||
| 7214 | ** VC Changes | ||
| 7215 | |||
| 7216 | VC has been overhauled internally. It is now modular, making it | ||
| 7217 | easier to plug-in arbitrary version control backends. (See Lisp | ||
| 7218 | Changes for details on the new structure.) As a result, the mechanism | ||
| 7219 | to enable and disable support for particular version systems has | ||
| 7220 | changed: everything is now controlled by the new variable | ||
| 7221 | `vc-handled-backends'. Its value is a list of symbols that identify | ||
| 7222 | version systems; the default is '(RCS CVS SCCS). When finding a file, | ||
| 7223 | each of the backends in that list is tried in order to see whether the | ||
| 7224 | file is registered in that backend. | ||
| 7225 | |||
| 7226 | When registering a new file, VC first tries each of the listed | ||
| 7227 | backends to see if any of them considers itself "responsible" for the | ||
| 7228 | directory of the file (e.g. because a corresponding subdirectory for | ||
| 7229 | master files exists). If none of the backends is responsible, then | ||
| 7230 | the first backend in the list that could register the file is chosen. | ||
| 7231 | As a consequence, the variable `vc-default-back-end' is now obsolete. | ||
| 7232 | |||
| 7233 | The old variable `vc-master-templates' is also obsolete, although VC | ||
| 7234 | still supports it for backward compatibility. To define templates for | ||
| 7235 | RCS or SCCS, you should rather use the new variables | ||
| 7236 | vc-{rcs,sccs}-master-templates. (There is no such feature under CVS | ||
| 7237 | where it doesn't make sense.) | ||
| 7238 | |||
| 7239 | The variables `vc-ignore-vc-files' and `vc-handle-cvs' are also | ||
| 7240 | obsolete now, you must set `vc-handled-backends' to nil or exclude | ||
| 7241 | `CVS' from the list, respectively, to achieve their effect now. | ||
| 7242 | |||
| 7243 | *** General Changes | ||
| 7244 | |||
| 7245 | The variable `vc-checkout-carefully' is obsolete: the corresponding | ||
| 7246 | checks are always done now. | ||
| 7247 | |||
| 7248 | VC Dired buffers are now kept up-to-date during all version control | ||
| 7249 | operations. | ||
| 7250 | |||
| 7251 | `vc-diff' output is now displayed in `diff-mode'. | ||
| 7252 | `vc-print-log' uses `log-view-mode'. | ||
| 7253 | `vc-log-mode' (used for *VC-Log*) has been replaced by `log-edit-mode'. | ||
| 7254 | |||
| 7255 | The command C-x v m (vc-merge) now accepts an empty argument as the | ||
| 7256 | first revision number. This means that any recent changes on the | ||
| 7257 | current branch should be picked up from the repository and merged into | ||
| 7258 | the working file (``merge news''). | ||
| 7259 | |||
| 7260 | The commands C-x v s (vc-create-snapshot) and C-x v r | ||
| 7261 | (vc-retrieve-snapshot) now ask for a directory name from which to work | ||
| 7262 | downwards. | ||
| 7263 | |||
| 7264 | *** Multiple Backends | ||
| 7265 | |||
| 7266 | VC now lets you register files in more than one backend. This is | ||
| 7267 | useful, for example, if you are working with a slow remote CVS | ||
| 7268 | repository. You can then use RCS for local editing, and occasionally | ||
| 7269 | commit your changes back to CVS, or pick up changes from CVS into your | ||
| 7270 | local RCS archives. | ||
| 7271 | |||
| 7272 | To make this work, the ``more local'' backend (RCS in our example) | ||
| 7273 | should come first in `vc-handled-backends', and the ``more remote'' | ||
| 7274 | backend (CVS) should come later. (The default value of | ||
| 7275 | `vc-handled-backends' already has it that way.) | ||
| 7276 | |||
| 7277 | You can then commit changes to another backend (say, RCS), by typing | ||
| 7278 | C-u C-x v v RCS RET (i.e. vc-next-action now accepts a backend name as | ||
| 7279 | a revision number). VC registers the file in the more local backend | ||
| 7280 | if that hasn't already happened, and commits to a branch based on the | ||
| 7281 | current revision number from the more remote backend. | ||
| 7282 | |||
| 7283 | If a file is registered in multiple backends, you can switch to | ||
| 7284 | another one using C-x v b (vc-switch-backend). This does not change | ||
| 7285 | any files, it only changes VC's perspective on the file. Use this to | ||
| 7286 | pick up changes from CVS while working under RCS locally. | ||
| 7287 | |||
| 7288 | After you are done with your local RCS editing, you can commit your | ||
| 7289 | changes back to CVS using C-u C-x v v CVS RET. In this case, the | ||
| 7290 | local RCS archive is removed after the commit, and the log entry | ||
| 7291 | buffer is initialized to contain the entire RCS change log of the file. | ||
| 7292 | |||
| 7293 | *** Changes for CVS | ||
| 7294 | |||
| 7295 | There is a new user option, `vc-cvs-stay-local'. If it is `t' (the | ||
| 7296 | default), then VC avoids network queries for files registered in | ||
| 7297 | remote repositories. The state of such files is then only determined | ||
| 7298 | by heuristics and past information. `vc-cvs-stay-local' can also be a | ||
| 7299 | regexp to match against repository hostnames; only files from hosts | ||
| 7300 | that match it are treated locally. If the variable is nil, then VC | ||
| 7301 | queries the repository just as often as it does for local files. | ||
| 7302 | |||
| 7303 | If `vc-cvs-stay-local' is on, then VC also makes local backups of | ||
| 7304 | repository versions. This means that ordinary diffs (C-x v =) and | ||
| 7305 | revert operations (C-x v u) can be done completely locally, without | ||
| 7306 | any repository interactions at all. The name of a local version | ||
| 7307 | backup of FILE is FILE.~REV.~, where REV is the repository version | ||
| 7308 | number. This format is similar to that used by C-x v ~ | ||
| 7309 | (vc-version-other-window), except for the trailing dot. As a matter | ||
| 7310 | of fact, the two features can each use the files created by the other, | ||
| 7311 | the only difference being that files with a trailing `.' are deleted | ||
| 7312 | automatically after commit. (This feature doesn't work on MS-DOS, | ||
| 7313 | since DOS disallows more than a single dot in the trunk of a file | ||
| 7314 | name.) | ||
| 7315 | |||
| 7316 | If `vc-cvs-stay-local' is on, and there have been changes in the | ||
| 7317 | repository, VC notifies you about it when you actually try to commit. | ||
| 7318 | If you want to check for updates from the repository without trying to | ||
| 7319 | commit, you can either use C-x v m RET to perform an update on the | ||
| 7320 | current file, or you can use C-x v r RET to get an update for an | ||
| 7321 | entire directory tree. | ||
| 7322 | |||
| 7323 | The new user option `vc-cvs-use-edit' indicates whether VC should call | ||
| 7324 | "cvs edit" to make files writeable; it defaults to `t'. (This option | ||
| 7325 | is only meaningful if the CVSREAD variable is set, or if files are | ||
| 7326 | "watched" by other developers.) | ||
| 7327 | |||
| 7328 | The commands C-x v s (vc-create-snapshot) and C-x v r | ||
| 7329 | (vc-retrieve-snapshot) are now also implemented for CVS. If you give | ||
| 7330 | an empty snapshot name to the latter, that performs a `cvs update', | ||
| 7331 | starting at the given directory. | ||
| 7332 | |||
| 7333 | *** Lisp Changes in VC | ||
| 7334 | |||
| 7335 | VC has been restructured internally to make it modular. You can now | ||
| 7336 | add support for arbitrary version control backends by writing a | ||
| 7337 | library that provides a certain set of backend-specific functions, and | ||
| 7338 | then telling VC to use that library. For example, to add support for | ||
| 7339 | a version system named SYS, you write a library named vc-sys.el, which | ||
| 7340 | provides a number of functions vc-sys-... (see commentary at the top | ||
| 7341 | of vc.el for a detailed list of them). To make VC use that library, | ||
| 7342 | you need to put it somewhere into Emacs' load path and add the symbol | ||
| 7343 | `SYS' to the list `vc-handled-backends'. | ||
| 7344 | |||
| 7345 | ** The customizable EDT emulation package now supports the EDT | ||
| 7346 | SUBS command and EDT scroll margins. It also works with more | ||
| 7347 | terminal/keyboard configurations and it now works under XEmacs. | ||
| 7348 | See etc/edt-user.doc for more information. | ||
| 7349 | |||
| 7350 | ** New modes and packages | ||
| 7351 | |||
| 7352 | *** The new global minor mode `minibuffer-electric-default-mode' | ||
| 7353 | automatically hides the `(default ...)' part of minibuffer prompts when | ||
| 7354 | the default is not applicable. | ||
| 7355 | |||
| 7356 | *** Artist is an Emacs lisp package that allows you to draw lines, | ||
| 7357 | rectangles and ellipses by using your mouse and/or keyboard. The | ||
| 7358 | shapes are made up with the ascii characters |, -, / and \. | ||
| 7359 | |||
| 7360 | Features are: | ||
| 7361 | |||
| 7362 | - Intersecting: When a `|' intersects with a `-', a `+' is | ||
| 7363 | drawn, like this: | \ / | ||
| 7364 | --+-- X | ||
| 7365 | | / \ | ||
| 7366 | |||
| 7367 | - Rubber-banding: When drawing lines you can interactively see the | ||
| 7368 | result while holding the mouse button down and moving the mouse. If | ||
| 7369 | your machine is not fast enough (a 386 is a bit too slow, but a | ||
| 7370 | pentium is well enough), you can turn this feature off. You will | ||
| 7371 | then see 1's and 2's which mark the 1st and 2nd endpoint of the line | ||
| 7372 | you are drawing. | ||
| 7373 | |||
| 7374 | - Arrows: After having drawn a (straight) line or a (straight) | ||
| 7375 | poly-line, you can set arrows on the line-ends by typing < or >. | ||
| 7376 | |||
| 7377 | - Flood-filling: You can fill any area with a certain character by | ||
| 7378 | flood-filling. | ||
| 7379 | |||
| 7380 | - Cut copy and paste: You can cut, copy and paste rectangular | ||
| 7381 | regions. Artist also interfaces with the rect package (this can be | ||
| 7382 | turned off if it causes you any trouble) so anything you cut in | ||
| 7383 | artist can be yanked with C-x r y and vice versa. | ||
| 7384 | |||
| 7385 | - Drawing with keys: Everything you can do with the mouse, you can | ||
| 7386 | also do without the mouse. | ||
| 7387 | |||
| 7388 | - Aspect-ratio: You can set the variable artist-aspect-ratio to | ||
| 7389 | reflect the height-width ratio for the font you are using. Squares | ||
| 7390 | and circles are then drawn square/round. Note, that once your | ||
| 7391 | ascii-file is shown with font with a different height-width ratio, | ||
| 7392 | the squares won't be square and the circles won't be round. | ||
| 7393 | |||
| 7394 | - Drawing operations: The following drawing operations are implemented: | ||
| 7395 | |||
| 7396 | lines straight-lines | ||
| 7397 | rectangles squares | ||
| 7398 | poly-lines straight poly-lines | ||
| 7399 | ellipses circles | ||
| 7400 | text (see-thru) text (overwrite) | ||
| 7401 | spray-can setting size for spraying | ||
| 7402 | vaporize line vaporize lines | ||
| 7403 | erase characters erase rectangles | ||
| 7404 | |||
| 7405 | Straight lines are lines that go horizontally, vertically or | ||
| 7406 | diagonally. Plain lines go in any direction. The operations in | ||
| 7407 | the right column are accessed by holding down the shift key while | ||
| 7408 | drawing. | ||
| 7409 | |||
| 7410 | It is possible to vaporize (erase) entire lines and connected lines | ||
| 7411 | (rectangles for example) as long as the lines being vaporized are | ||
| 7412 | straight and connected at their endpoints. Vaporizing is inspired | ||
| 7413 | by the drawrect package by Jari Aalto <jari.aalto@poboxes.com>. | ||
| 7414 | |||
| 7415 | - Picture mode compatibility: Artist is picture mode compatible (this | ||
| 7416 | can be turned off). | ||
| 7417 | |||
| 7418 | *** The new package Eshell is an operating system command shell | ||
| 7419 | implemented entirely in Emacs Lisp. Use `M-x eshell' to invoke it. | ||
| 7420 | It functions similarly to bash and zsh, and allows running of Lisp | ||
| 7421 | functions and external commands using the same syntax. It supports | ||
| 7422 | history lists, aliases, extended globbing, smart scrolling, etc. It | ||
| 7423 | will work on any platform Emacs has been ported to. And since most of | ||
| 7424 | the basic commands -- ls, rm, mv, cp, ln, du, cat, etc. -- have been | ||
| 7425 | rewritten in Lisp, it offers an operating-system independent shell, | ||
| 7426 | all within the scope of your Emacs process. | ||
| 7427 | |||
| 7428 | *** The new package timeclock.el is a mode is for keeping track of time | ||
| 7429 | intervals. You can use it for whatever purpose you like, but the | ||
| 7430 | typical scenario is to keep track of how much time you spend working | ||
| 7431 | on certain projects. | ||
| 7432 | |||
| 7433 | *** The new package hi-lock.el provides commands to highlight matches | ||
| 7434 | of interactively entered regexps. For example, | ||
| 7435 | |||
| 7436 | M-x highlight-regexp RET clearly RET RET | ||
| 7437 | |||
| 7438 | will highlight all occurrences of `clearly' using a yellow background | ||
| 7439 | face. New occurrences of `clearly' will be highlighted as they are | ||
| 7440 | typed. `M-x unhighlight-regexp RET' will remove the highlighting. | ||
| 7441 | Any existing face can be used for highlighting and a set of | ||
| 7442 | appropriate faces is provided. The regexps can be written into the | ||
| 7443 | current buffer in a form that will be recognized the next time the | ||
| 7444 | corresponding file is read. There are commands to highlight matches | ||
| 7445 | to phrases and to highlight entire lines containing a match. | ||
| 7446 | |||
| 7447 | *** The new package zone.el plays games with Emacs' display when | ||
| 7448 | Emacs is idle. | ||
| 7449 | |||
| 7450 | *** The new package tildify.el allows to add hard spaces or other text | ||
| 7451 | fragments in accordance with the current major mode. | ||
| 7452 | |||
| 7453 | *** The new package xml.el provides a simple but generic XML | ||
| 7454 | parser. It doesn't parse the DTDs however. | ||
| 7455 | |||
| 7456 | *** The comment operations are now provided by the newcomment.el | ||
| 7457 | package which allows different styles of comment-region and should | ||
| 7458 | be more robust while offering the same functionality. | ||
| 7459 | `comment-region' now doesn't always comment a-line-at-a-time, but only | ||
| 7460 | comments the region, breaking the line at point if necessary. | ||
| 7461 | |||
| 7462 | *** The Ebrowse package implements a C++ class browser and tags | ||
| 7463 | facilities tailored for use with C++. It is documented in a | ||
| 7464 | separate Texinfo file. | ||
| 7465 | |||
| 7466 | *** The PCL-CVS package available by either running M-x cvs-examine or | ||
| 7467 | by visiting a CVS administrative directory (with a prefix argument) | ||
| 7468 | provides an alternative interface to VC-dired for CVS. It comes with | ||
| 7469 | `log-view-mode' to view RCS and SCCS logs and `log-edit-mode' used to | ||
| 7470 | enter check-in log messages. | ||
| 7471 | |||
| 7472 | *** The new package called `woman' allows to browse Unix man pages | ||
| 7473 | without invoking external programs. | ||
| 7474 | |||
| 7475 | The command `M-x woman' formats manual pages entirely in Emacs Lisp | ||
| 7476 | and then displays them, like `M-x manual-entry' does. Unlike | ||
| 7477 | `manual-entry', `woman' does not invoke any external programs, so it | ||
| 7478 | is useful on systems such as MS-DOS/MS-Windows where the `man' and | ||
| 7479 | Groff or `troff' commands are not readily available. | ||
| 7480 | |||
| 7481 | The command `M-x woman-find-file' asks for the file name of a man | ||
| 7482 | page, then formats and displays it like `M-x woman' does. | ||
| 7483 | |||
| 7484 | *** The new command M-x re-builder offers a convenient interface for | ||
| 7485 | authoring regular expressions with immediate visual feedback. | ||
| 7486 | |||
| 7487 | The buffer from which the command was called becomes the target for | ||
| 7488 | the regexp editor popping up in a separate window. Matching text in | ||
| 7489 | the target buffer is immediately color marked during the editing. | ||
| 7490 | Each sub-expression of the regexp will show up in a different face so | ||
| 7491 | even complex regexps can be edited and verified on target data in a | ||
| 7492 | single step. | ||
| 7493 | |||
| 7494 | On displays not supporting faces the matches instead blink like | ||
| 7495 | matching parens to make them stand out. On such a setup you will | ||
| 7496 | probably also want to use the sub-expression mode when the regexp | ||
| 7497 | contains such to get feedback about their respective limits. | ||
| 7498 | |||
| 7499 | *** glasses-mode is a minor mode that makes | ||
| 7500 | unreadableIdentifiersLikeThis readable. It works as glasses, without | ||
| 7501 | actually modifying content of a buffer. | ||
| 7502 | |||
| 7503 | *** The package ebnf2ps translates an EBNF to a syntactic chart in | ||
| 7504 | PostScript. | ||
| 7505 | |||
| 7506 | Currently accepts ad-hoc EBNF, ISO EBNF and Bison/Yacc. | ||
| 7507 | |||
| 7508 | The ad-hoc default EBNF syntax has the following elements: | ||
| 7509 | |||
| 7510 | ; comment (until end of line) | ||
| 7511 | A non-terminal | ||
| 7512 | "C" terminal | ||
| 7513 | ?C? special | ||
| 7514 | $A default non-terminal | ||
| 7515 | $"C" default terminal | ||
| 7516 | $?C? default special | ||
| 7517 | A = B. production (A is the header and B the body) | ||
| 7518 | C D sequence (C occurs before D) | ||
| 7519 | C | D alternative (C or D occurs) | ||
| 7520 | A - B exception (A excluding B, B without any non-terminal) | ||
| 7521 | n * A repetition (A repeats n (integer) times) | ||
| 7522 | (C) group (expression C is grouped together) | ||
| 7523 | [C] optional (C may or not occurs) | ||
| 7524 | C+ one or more occurrences of C | ||
| 7525 | {C}+ one or more occurrences of C | ||
| 7526 | {C}* zero or more occurrences of C | ||
| 7527 | {C} zero or more occurrences of C | ||
| 7528 | C / D equivalent to: C {D C}* | ||
| 7529 | {C || D}+ equivalent to: C {D C}* | ||
| 7530 | {C || D}* equivalent to: [C {D C}*] | ||
| 7531 | {C || D} equivalent to: [C {D C}*] | ||
| 7532 | |||
| 7533 | Please, see ebnf2ps documentation for EBNF syntax and how to use it. | ||
| 7534 | |||
| 7535 | *** The package align.el will align columns within a region, using M-x | ||
| 7536 | align. Its mode-specific rules, based on regular expressions, | ||
| 7537 | determine where the columns should be split. In C and C++, for | ||
| 7538 | example, it will align variable names in declaration lists, or the | ||
| 7539 | equal signs of assignments. | ||
| 7540 | |||
| 7541 | *** `paragraph-indent-minor-mode' is a new minor mode supporting | ||
| 7542 | paragraphs in the same style as `paragraph-indent-text-mode'. | ||
| 7543 | |||
| 7544 | *** bs.el is a new package for buffer selection similar to | ||
| 7545 | list-buffers or electric-buffer-list. Use M-x bs-show to display a | ||
| 7546 | buffer menu with this package. See the Custom group `bs'. | ||
| 7547 | |||
| 7548 | *** find-lisp.el is a package emulating the Unix find command in Lisp. | ||
| 7549 | |||
| 7550 | *** calculator.el is a small calculator package that is intended to | ||
| 7551 | replace desktop calculators such as xcalc and calc.exe. Actually, it | ||
| 7552 | is not too small - it has more features than most desktop calculators, | ||
| 7553 | and can be customized easily to get many more functions. It should | ||
| 7554 | not be confused with "calc" which is a much bigger mathematical tool | ||
| 7555 | which answers different needs. | ||
| 7556 | |||
| 7557 | *** The minor modes cwarn-mode and global-cwarn-mode highlights | ||
| 7558 | suspicious C and C++ constructions. Currently, assignments inside | ||
| 7559 | expressions, semicolon following `if', `for' and `while' (except, of | ||
| 7560 | course, after a `do .. while' statement), and C++ functions with | ||
| 7561 | reference parameters are recognized. The modes require font-lock mode | ||
| 7562 | to be enabled. | ||
| 7563 | |||
| 7564 | *** smerge-mode.el provides `smerge-mode', a simple minor-mode for files | ||
| 7565 | containing diff3-style conflict markers, such as generated by RCS. | ||
| 7566 | |||
| 7567 | *** 5x5.el is a simple puzzle game. | ||
| 7568 | |||
| 7569 | *** hl-line.el provides `hl-line-mode', a minor mode to highlight the | ||
| 7570 | current line in the current buffer. It also provides | ||
| 7571 | `global-hl-line-mode' to provide the same behavior in all buffers. | ||
| 7572 | |||
| 7573 | *** ansi-color.el translates ANSI terminal escapes into text-properties. | ||
| 7574 | |||
| 7575 | Please note: if `ansi-color-for-comint-mode' and | ||
| 7576 | `global-font-lock-mode' are non-nil, loading ansi-color.el will | ||
| 7577 | disable font-lock and add `ansi-color-apply' to | ||
| 7578 | `comint-preoutput-filter-functions' for all shell-mode buffers. This | ||
| 7579 | displays the output of "ls --color=yes" using the correct foreground | ||
| 7580 | and background colors. | ||
| 7581 | |||
| 7582 | *** delphi.el provides a major mode for editing the Delphi (Object | ||
| 7583 | Pascal) language. | ||
| 7584 | |||
| 7585 | *** quickurl.el provides a simple method of inserting a URL based on | ||
| 7586 | the text at point. | ||
| 7587 | |||
| 7588 | *** sql.el provides an interface to SQL data bases. | ||
| 7589 | |||
| 7590 | *** fortune.el uses the fortune program to create mail/news signatures. | ||
| 7591 | |||
| 7592 | *** whitespace.el is a package for warning about and cleaning bogus | ||
| 7593 | whitespace in a file. | ||
| 7594 | |||
| 7595 | *** PostScript mode (ps-mode) is a new major mode for editing PostScript | ||
| 7596 | files. It offers: interaction with a PostScript interpreter, including | ||
| 7597 | (very basic) error handling; fontification, easily customizable for | ||
| 7598 | interpreter messages; auto-indentation; insertion of EPSF templates and | ||
| 7599 | often used code snippets; viewing of BoundingBox; commenting out / | ||
| 7600 | uncommenting regions; conversion of 8bit characters to PostScript octal | ||
| 7601 | codes. All functionality is accessible through a menu. | ||
| 7602 | |||
| 7603 | *** delim-col helps to prettify columns in a text region or rectangle. | ||
| 7604 | |||
| 7605 | Here is an example of columns: | ||
| 7606 | |||
| 7607 | horse apple bus | ||
| 7608 | dog pineapple car EXTRA | ||
| 7609 | porcupine strawberry airplane | ||
| 7610 | |||
| 7611 | Doing the following settings: | ||
| 7612 | |||
| 7613 | (setq delimit-columns-str-before "[ ") | ||
| 7614 | (setq delimit-columns-str-after " ]") | ||
| 7615 | (setq delimit-columns-str-separator ", ") | ||
| 7616 | (setq delimit-columns-separator "\t") | ||
| 7617 | |||
| 7618 | |||
| 7619 | Selecting the lines above and typing: | ||
| 7620 | |||
| 7621 | M-x delimit-columns-region | ||
| 7622 | |||
| 7623 | It results: | ||
| 7624 | |||
| 7625 | [ horse , apple , bus , ] | ||
| 7626 | [ dog , pineapple , car , EXTRA ] | ||
| 7627 | [ porcupine, strawberry, airplane, ] | ||
| 7628 | |||
| 7629 | delim-col has the following options: | ||
| 7630 | |||
| 7631 | delimit-columns-str-before Specify a string to be inserted | ||
| 7632 | before all columns. | ||
| 7633 | |||
| 7634 | delimit-columns-str-separator Specify a string to be inserted | ||
| 7635 | between each column. | ||
| 7636 | |||
| 7637 | delimit-columns-str-after Specify a string to be inserted | ||
| 7638 | after all columns. | ||
| 7639 | |||
| 7640 | delimit-columns-separator Specify a regexp which separates | ||
| 7641 | each column. | ||
| 7642 | |||
| 7643 | delim-col has the following commands: | ||
| 7644 | |||
| 7645 | delimit-columns-region Prettify all columns in a text region. | ||
| 7646 | delimit-columns-rectangle Prettify all columns in a text rectangle. | ||
| 7647 | |||
| 7648 | *** Recentf mode maintains a menu for visiting files that were | ||
| 7649 | operated on recently. User option recentf-menu-filter specifies a | ||
| 7650 | menu filter function to change the menu appearance. For example, the | ||
| 7651 | recent file list can be displayed: | ||
| 7652 | |||
| 7653 | - organized by major modes, directories or user defined rules. | ||
| 7654 | - sorted by file paths, file names, ascending or descending. | ||
| 7655 | - showing paths relative to the current default-directory | ||
| 7656 | |||
| 7657 | The `recentf-filter-changer' menu filter function allows to | ||
| 7658 | dynamically change the menu appearance. | ||
| 7659 | |||
| 7660 | *** elide-head.el provides a mechanism for eliding boilerplate header | ||
| 7661 | text. | ||
| 7662 | |||
| 7663 | *** footnote.el provides `footnote-mode', a minor mode supporting use | ||
| 7664 | of footnotes. It is intended for use with Message mode, but isn't | ||
| 7665 | specific to Message mode. | ||
| 7666 | |||
| 7667 | *** diff-mode.el provides `diff-mode', a major mode for | ||
| 7668 | viewing/editing context diffs (patches). It is selected for files | ||
| 7669 | with extension `.diff', `.diffs', `.patch' and `.rej'. | ||
| 7670 | |||
| 7671 | *** EUDC, the Emacs Unified Directory Client, provides a common user | ||
| 7672 | interface to access directory servers using different directory | ||
| 7673 | protocols. It has a separate manual. | ||
| 7674 | |||
| 7675 | *** autoconf.el provides a major mode for editing configure.in files | ||
| 7676 | for Autoconf, selected automatically. | ||
| 7677 | |||
| 7678 | *** windmove.el provides moving between windows. | ||
| 7679 | |||
| 7680 | *** crm.el provides a facility to read multiple strings from the | ||
| 7681 | minibuffer with completion. | ||
| 7682 | |||
| 7683 | *** todo-mode.el provides management of TODO lists and integration | ||
| 7684 | with the diary features. | ||
| 7685 | |||
| 7686 | *** autoarg.el provides a feature reported from Twenex Emacs whereby | ||
| 7687 | numeric keys supply prefix args rather than self inserting. | ||
| 7688 | |||
| 7689 | *** The function `turn-off-auto-fill' unconditionally turns off Auto | ||
| 7690 | Fill mode. | ||
| 7691 | |||
| 7692 | *** pcomplete.el is a library that provides programmable completion | ||
| 7693 | facilities for Emacs, similar to what zsh and tcsh offer. The main | ||
| 7694 | difference is that completion functions are written in Lisp, meaning | ||
| 7695 | they can be profiled, debugged, etc. | ||
| 7696 | |||
| 7697 | *** antlr-mode is a new major mode for editing ANTLR grammar files. | ||
| 7698 | It is automatically turned on for files whose names have the extension | ||
| 7699 | `.g'. | ||
| 7700 | |||
| 7701 | ** Changes in sort.el | ||
| 7702 | |||
| 7703 | The function sort-numeric-fields interprets numbers starting with `0' | ||
| 7704 | as octal and numbers starting with `0x' or `0X' as hexadecimal. The | ||
| 7705 | new user-option sort-numeric-base can be used to specify a default | ||
| 7706 | numeric base. | ||
| 7707 | |||
| 7708 | ** Changes to Ange-ftp | ||
| 7709 | |||
| 7710 | *** Ange-ftp allows you to specify of a port number in remote file | ||
| 7711 | names cleanly. It is appended to the host name, separated by a hash | ||
| 7712 | sign, e.g. `/foo@bar.org#666:mumble'. (This syntax comes from EFS.) | ||
| 7713 | |||
| 7714 | *** If the new user-option `ange-ftp-try-passive-mode' is set, passive | ||
| 7715 | ftp mode will be used if the ftp client supports that. | ||
| 7716 | |||
| 7717 | *** Ange-ftp handles the output of the w32-style clients which | ||
| 7718 | output ^M at the end of lines. | ||
| 7719 | |||
| 7720 | ** The recommended way of using Iswitchb is via the new global minor | ||
| 7721 | mode `iswitchb-mode'. | ||
| 7722 | |||
| 7723 | ** Just loading the msb package doesn't switch on Msb mode anymore. | ||
| 7724 | If you have `(require 'msb)' in your .emacs, please replace it with | ||
| 7725 | `(msb-mode 1)'. | ||
| 7726 | |||
| 7727 | ** Changes in Flyspell mode | ||
| 7728 | |||
| 7729 | *** Flyspell mode has various new options. See the `flyspell' Custom | ||
| 7730 | group. | ||
| 7731 | |||
| 7732 | *** The variable `flyspell-generic-check-word-p' has been renamed | ||
| 7733 | to `flyspell-generic-check-word-predicate'. The old name is still | ||
| 7734 | available as alias. | ||
| 7735 | |||
| 7736 | ** The user option `backward-delete-char-untabify-method' controls the | ||
| 7737 | behavior of `backward-delete-char-untabify'. The following values | ||
| 7738 | are recognized: | ||
| 7739 | |||
| 7740 | `untabify' -- turn a tab to many spaces, then delete one space; | ||
| 7741 | `hungry' -- delete all whitespace, both tabs and spaces; | ||
| 7742 | `all' -- delete all whitespace, including tabs, spaces and newlines; | ||
| 7743 | nil -- just delete one character. | ||
| 7744 | |||
| 7745 | Default value is `untabify'. | ||
| 7746 | |||
| 7747 | [This change was made in Emacs 20.3 but not mentioned then.] | ||
| 7748 | |||
| 7749 | ** In Cperl mode `cperl-invalid-face' should now be a normal face | ||
| 7750 | symbol, not double-quoted. | ||
| 7751 | |||
| 7752 | ** Some packages are declared obsolete, to be removed in a future | ||
| 7753 | version. They are: auto-show, c-mode, hilit19, hscroll, ooutline, | ||
| 7754 | profile, rnews, rnewspost, and sc. Their implementations have been | ||
| 7755 | moved to lisp/obsolete. | ||
| 7756 | |||
| 7757 | ** auto-compression mode is no longer enabled just by loading jka-compr.el. | ||
| 7758 | To control it, set `auto-compression-mode' via Custom or use the | ||
| 7759 | `auto-compression-mode' command. | ||
| 7760 | |||
| 7761 | ** `browse-url-gnome-moz' is a new option for | ||
| 7762 | `browse-url-browser-function', invoking Mozilla in GNOME, and | ||
| 7763 | `browse-url-kde' can be chosen for invoking the KDE browser. | ||
| 7764 | |||
| 7765 | ** The user-option `browse-url-new-window-p' has been renamed to | ||
| 7766 | `browse-url-new-window-flag'. | ||
| 7767 | |||
| 7768 | ** The functions `keep-lines', `flush-lines' and `how-many' now | ||
| 7769 | operate on the active region in Transient Mark mode. | ||
| 7770 | |||
| 7771 | ** `gnus-user-agent' is a new possibility for `mail-user-agent'. It | ||
| 7772 | is like `message-user-agent', but with all the Gnus paraphernalia. | ||
| 7773 | |||
| 7774 | ** The Strokes package has been updated. If your Emacs has XPM | ||
| 7775 | support, you can use it for pictographic editing. In Strokes mode, | ||
| 7776 | use C-mouse-2 to compose a complex stoke and insert it into the | ||
| 7777 | buffer. You can encode or decode a strokes buffer with new commands | ||
| 7778 | M-x strokes-encode-buffer and M-x strokes-decode-buffer. There is a | ||
| 7779 | new command M-x strokes-list-strokes. | ||
| 7780 | |||
| 7781 | ** Hexl contains a new command `hexl-insert-hex-string' which inserts | ||
| 7782 | a string of hexadecimal numbers read from the mini-buffer. | ||
| 7783 | |||
| 7784 | ** Hexl mode allows to insert non-ASCII characters. | ||
| 7785 | |||
| 7786 | The non-ASCII characters are encoded using the same encoding as the | ||
| 7787 | file you are visiting in Hexl mode. | ||
| 7788 | |||
| 7789 | ** Shell script mode changes. | ||
| 7790 | |||
| 7791 | Shell script mode (sh-script) can now indent scripts for shells | ||
| 7792 | derived from sh and rc. The indentation style is customizable, and | ||
| 7793 | sh-script can attempt to "learn" the current buffer's style. | ||
| 7794 | |||
| 7795 | ** Etags changes. | ||
| 7796 | |||
| 7797 | *** In DOS, etags looks for file.cgz if it cannot find file.c. | ||
| 7798 | |||
| 7799 | *** New option --ignore-case-regex is an alternative to --regex. It is now | ||
| 7800 | possible to bind a regexp to a language, by prepending the regexp with | ||
| 7801 | {lang}, where lang is one of the languages that `etags --help' prints out. | ||
| 7802 | This feature is useful especially for regex files, where each line contains | ||
| 7803 | a regular expression. The manual contains details. | ||
| 7804 | |||
| 7805 | *** In C and derived languages, etags creates tags for function | ||
| 7806 | declarations when given the --declarations option. | ||
| 7807 | |||
| 7808 | *** In C++, tags are created for "operator". The tags have the form | ||
| 7809 | "operator+", without spaces between the keyword and the operator. | ||
| 7810 | |||
| 7811 | *** You shouldn't generally need any more the -C or -c++ option: etags | ||
| 7812 | automatically switches to C++ parsing when it meets the `class' or | ||
| 7813 | `template' keywords. | ||
| 7814 | |||
| 7815 | *** Etags now is able to delve at arbitrary deeps into nested structures in | ||
| 7816 | C-like languages. Previously, it was limited to one or two brace levels. | ||
| 7817 | |||
| 7818 | *** New language Ada: tags are functions, procedures, packages, tasks, and | ||
| 7819 | types. | ||
| 7820 | |||
| 7821 | *** In Fortran, `procedure' is not tagged. | ||
| 7822 | |||
| 7823 | *** In Java, tags are created for "interface". | ||
| 7824 | |||
| 7825 | *** In Lisp, "(defstruct (foo", "(defun (operator" and similar constructs | ||
| 7826 | are now tagged. | ||
| 7827 | |||
| 7828 | *** In makefiles, tags the targets. | ||
| 7829 | |||
| 7830 | *** In Perl, the --globals option tags global variables. my and local | ||
| 7831 | variables are tagged. | ||
| 7832 | |||
| 7833 | *** New language Python: def and class at the beginning of a line are tags. | ||
| 7834 | |||
| 7835 | *** .ss files are Scheme files, .pdb is Postscript with C syntax, .psw is | ||
| 7836 | for PSWrap. | ||
| 7837 | |||
| 7838 | ** Changes in etags.el | ||
| 7839 | |||
| 7840 | *** The new user-option tags-case-fold-search can be used to make | ||
| 7841 | tags operations case-sensitive or case-insensitive. The default | ||
| 7842 | is to use the same setting as case-fold-search. | ||
| 7843 | |||
| 7844 | *** You can display additional output with M-x tags-apropos by setting | ||
| 7845 | the new variable tags-apropos-additional-actions. | ||
| 7846 | |||
| 7847 | If non-nil, the variable's value should be a list of triples (TITLE | ||
| 7848 | FUNCTION TO-SEARCH). For each triple, M-x tags-apropos processes | ||
| 7849 | TO-SEARCH and lists tags from it. TO-SEARCH should be an alist, | ||
| 7850 | obarray, or symbol. If it is a symbol, the symbol's value is used. | ||
| 7851 | |||
| 7852 | TITLE is a string to use to label the list of tags from TO-SEARCH. | ||
| 7853 | |||
| 7854 | FUNCTION is a function to call when an entry is selected in the Tags | ||
| 7855 | List buffer. It is called with one argument, the selected symbol. | ||
| 7856 | |||
| 7857 | A useful example value for this variable might be something like: | ||
| 7858 | |||
| 7859 | '(("Emacs Lisp" Info-goto-emacs-command-node obarray) | ||
| 7860 | ("Common Lisp" common-lisp-hyperspec common-lisp-hyperspec-obarray) | ||
| 7861 | ("SCWM" scwm-documentation scwm-obarray)) | ||
| 7862 | |||
| 7863 | *** The face tags-tag-face can be used to customize the appearance | ||
| 7864 | of tags in the output of M-x tags-apropos. | ||
| 7865 | |||
| 7866 | *** Setting tags-apropos-verbose to a non-nil value displays the | ||
| 7867 | names of tags files in the *Tags List* buffer. | ||
| 7868 | |||
| 7869 | *** You can now search for tags that are part of the filename itself. | ||
| 7870 | If you have tagged the files topfile.c subdir/subfile.c | ||
| 7871 | /tmp/tempfile.c, you can now search for tags "topfile.c", "subfile.c", | ||
| 7872 | "dir/sub", "tempfile", "tempfile.c". If the tag matches the file name, | ||
| 7873 | point will go to the beginning of the file. | ||
| 7874 | |||
| 7875 | *** Compressed files are now transparently supported if | ||
| 7876 | auto-compression-mode is active. You can tag (with Etags) and search | ||
| 7877 | (with find-tag) both compressed and uncompressed files. | ||
| 7878 | |||
| 7879 | *** Tags commands like M-x tags-search no longer change point | ||
| 7880 | in buffers where no match is found. In buffers where a match is | ||
| 7881 | found, the original value of point is pushed on the marker ring. | ||
| 7882 | |||
| 7883 | ** Fortran mode has a new command `fortran-strip-sequence-nos' to | ||
| 7884 | remove text past column 72. The syntax class of `\' in Fortran is now | ||
| 7885 | appropriate for C-style escape sequences in strings. | ||
| 7886 | |||
| 7887 | ** SGML mode's default `sgml-validate-command' is now `nsgmls'. | ||
| 7888 | |||
| 7889 | ** A new command `view-emacs-problems' (C-h P) displays the PROBLEMS file. | ||
| 7890 | |||
| 7891 | ** The Dabbrev package has a new user-option `dabbrev-ignored-regexps' | ||
| 7892 | containing a list of regular expressions. Buffers matching a regular | ||
| 7893 | expression from that list, are not checked. | ||
| 7894 | |||
| 7895 | ** Emacs can now figure out modification times of remote files. | ||
| 7896 | When you do C-x C-f /user@host:/path/file RET and edit the file, | ||
| 7897 | and someone else modifies the file, you will be prompted to revert | ||
| 7898 | the buffer, just like for the local files. | ||
| 7899 | |||
| 7900 | ** The buffer menu (C-x C-b) no longer lists the *Buffer List* buffer. | ||
| 7901 | |||
| 7902 | ** When invoked with a prefix argument, the command `list-abbrevs' now | ||
| 7903 | displays local abbrevs, only. | ||
| 7904 | |||
| 7905 | ** Refill minor mode provides preliminary support for keeping | ||
| 7906 | paragraphs filled as you modify them. | ||
| 7907 | |||
| 7908 | ** The variable `double-click-fuzz' specifies how much the mouse | ||
| 7909 | may be moved between clicks that are recognized as a pair. Its value | ||
| 7910 | is measured in pixels. | ||
| 7911 | |||
| 7912 | ** The new global minor mode `auto-image-file-mode' allows image files | ||
| 7913 | to be visited as images. | ||
| 7914 | |||
| 7915 | ** Two new user-options `grep-command' and `grep-find-command' | ||
| 7916 | were added to compile.el. | ||
| 7917 | |||
| 7918 | ** Withdrawn packages | ||
| 7919 | |||
| 7920 | *** mldrag.el has been removed. mouse.el provides the same | ||
| 7921 | functionality with aliases for the mldrag functions. | ||
| 7922 | |||
| 7923 | *** eval-reg.el has been obsoleted by changes to edebug.el and removed. | ||
| 7924 | |||
| 7925 | *** ph.el has been obsoleted by EUDC and removed. | ||
| 7926 | |||
| 7927 | |||
| 7928 | * Incompatible Lisp changes | ||
| 7929 | |||
| 7930 | There are a few Lisp changes which are not backwards-compatible and | ||
| 7931 | may require changes to existing code. Here is a list for reference. | ||
| 7932 | See the sections below for details. | ||
| 7933 | |||
| 7934 | ** Since `format' preserves text properties, the idiom | ||
| 7935 | `(format "%s" foo)' no longer works to copy and remove properties. | ||
| 7936 | Use `copy-sequence' to copy the string, then use `set-text-properties' | ||
| 7937 | to remove the properties of the copy. | ||
| 7938 | |||
| 7939 | ** Since the `keymap' text property now has significance, some code | ||
| 7940 | which uses both `local-map' and `keymap' properties (for portability) | ||
| 7941 | may, for instance, give rise to duplicate menus when the keymaps from | ||
| 7942 | these properties are active. | ||
| 7943 | |||
| 7944 | ** The change in the treatment of non-ASCII characters in search | ||
| 7945 | ranges may affect some code. | ||
| 7946 | |||
| 7947 | ** A non-nil value for the LOCAL arg of add-hook makes the hook | ||
| 7948 | buffer-local even if `make-local-hook' hasn't been called, which might | ||
| 7949 | make a difference to some code. | ||
| 7950 | |||
| 7951 | ** The new treatment of the minibuffer prompt might affect code which | ||
| 7952 | operates on the minibuffer. | ||
| 7953 | |||
| 7954 | ** The new character sets `eight-bit-control' and `eight-bit-graphic' | ||
| 7955 | cause `no-conversion' and `emacs-mule-unix' coding systems to produce | ||
| 7956 | different results when reading files with non-ASCII characters | ||
| 7957 | (previously, both coding systems would produce the same results). | ||
| 7958 | Specifically, `no-conversion' interprets each 8-bit byte as a separate | ||
| 7959 | character. This makes `no-conversion' inappropriate for reading | ||
| 7960 | multibyte text, e.g. buffers written to disk in their internal MULE | ||
| 7961 | encoding (auto-saving does that, for example). If a Lisp program | ||
| 7962 | reads such files with `no-conversion', each byte of the multibyte | ||
| 7963 | sequence, including the MULE leading codes such as \201, is treated as | ||
| 7964 | a separate character, which prevents them from being interpreted in | ||
| 7965 | the buffer as multibyte characters. | ||
| 7966 | |||
| 7967 | Therefore, Lisp programs that read files which contain the internal | ||
| 7968 | MULE encoding should use `emacs-mule-unix'. `no-conversion' is only | ||
| 7969 | appropriate for reading truly binary files. | ||
| 7970 | |||
| 7971 | ** Code that relies on the obsolete `before-change-function' and | ||
| 7972 | `after-change-function' to detect buffer changes will now fail. Use | ||
| 7973 | `before-change-functions' and `after-change-functions' instead. | ||
| 7974 | |||
| 7975 | ** Code that uses `concat' with integer args now gets an error, as | ||
| 7976 | long promised. So does any code that uses derivatives of `concat', | ||
| 7977 | such as `mapconcat'. | ||
| 7978 | |||
| 7979 | ** The function base64-decode-string now always returns a unibyte | ||
| 7980 | string. | ||
| 7981 | |||
| 7982 | ** Not a Lisp incompatibility as such but, with the introduction of | ||
| 7983 | extra private charsets, there is now only one slot free for a new | ||
| 7984 | dimension-2 private charset. User code which tries to add more than | ||
| 7985 | one extra will fail unless you rebuild Emacs with some standard | ||
| 7986 | charset(s) removed; that is probably inadvisable because it changes | ||
| 7987 | the emacs-mule encoding. Also, files stored in the emacs-mule | ||
| 7988 | encoding using Emacs 20 with additional private charsets defined will | ||
| 7989 | probably not be read correctly by Emacs 21. | ||
| 7990 | |||
| 7991 | ** The variable `directory-sep-char' is slated for removal. | ||
| 7992 | Not really a change (yet), but a projected one that you should be | ||
| 7993 | aware of: The variable `directory-sep-char' is deprecated, and should | ||
| 7994 | not be used. It was always ignored on GNU/Linux and Unix systems and | ||
| 7995 | on MS-DOS, but the MS-Windows port tried to support it by adapting the | ||
| 7996 | behavior of certain primitives to the value of this variable. It | ||
| 7997 | turned out that such support cannot be reliable, so it was decided to | ||
| 7998 | remove this variable in the near future. Lisp programs are well | ||
| 7999 | advised not to set it to anything but '/', because any different value | ||
| 8000 | will not have any effect when support for this variable is removed. | ||
| 8001 | |||
| 8002 | |||
| 8003 | * Lisp changes made after edition 2.6 of the Emacs Lisp Manual, | ||
| 8004 | (Display-related features are described in a page of their own below.) | ||
| 8005 | |||
| 8006 | ** Function assq-delete-all replaces function assoc-delete-all. | ||
| 8007 | |||
| 8008 | ** The new function animate-string, from lisp/play/animate.el | ||
| 8009 | allows the animated display of strings. | ||
| 8010 | 5665 | ||
| 8011 | ** The new function `interactive-form' can be used to obtain the | ||
| 8012 | interactive form of a function. | ||
| 8013 | |||
| 8014 | ** The keyword :set-after in defcustom allows to specify dependencies | ||
| 8015 | between custom options. Example: | ||
| 8016 | |||
| 8017 | (defcustom default-input-method nil | ||
| 8018 | "*Default input method for multilingual text (a string). | ||
| 8019 | This is the input method activated automatically by the command | ||
| 8020 | `toggle-input-method' (\\[toggle-input-method])." | ||
| 8021 | :group 'mule | ||
| 8022 | :type '(choice (const nil) string) | ||
| 8023 | :set-after '(current-language-environment)) | ||
| 8024 | |||
| 8025 | This specifies that default-input-method should be set after | ||
| 8026 | current-language-environment even if default-input-method appears | ||
| 8027 | first in a custom-set-variables statement. | ||
| 8028 | |||
| 8029 | ** The new hook `kbd-macro-termination-hook' is run at the end of | ||
| 8030 | function execute-kbd-macro. Functions on this hook are called with no | ||
| 8031 | args. The hook is run independent of how the macro was terminated | ||
| 8032 | (signal or normal termination). | ||
| 8033 | |||
| 8034 | ** Functions `butlast' and `nbutlast' for removing trailing elements | ||
| 8035 | from a list are now available without requiring the CL package. | ||
| 8036 | |||
| 8037 | ** The new user-option `even-window-heights' can be set to nil | ||
| 8038 | to prevent `display-buffer' from evening out window heights. | ||
| 8039 | |||
| 8040 | ** The user-option `face-font-registry-alternatives' specifies | ||
| 8041 | alternative font registry names to try when looking for a font. | ||
| 8042 | |||
| 8043 | ** Function `md5' calculates the MD5 "message digest"/"checksum". | ||
| 8044 | |||
| 8045 | ** Function `delete-frame' runs `delete-frame-hook' before actually | ||
| 8046 | deleting the frame. The hook is called with one arg, the frame | ||
| 8047 | being deleted. | ||
| 8048 | |||
| 8049 | ** `add-hook' now makes the hook local if called with a non-nil LOCAL arg. | ||
| 8050 | |||
| 8051 | ** The treatment of non-ASCII characters in search ranges has changed. | ||
| 8052 | If a range in a regular expression or the arg of | ||
| 8053 | skip-chars-forward/backward starts with a unibyte character C and ends | ||
| 8054 | with a multibyte character C2, the range is divided into two: one is | ||
| 8055 | C..?\377, the other is C1..C2, where C1 is the first character of C2's | ||
| 8056 | charset. | ||
| 8057 | |||
| 8058 | ** The new function `display-message-or-buffer' displays a message in | ||
| 8059 | the echo area or pops up a buffer, depending on the length of the | ||
| 8060 | message. | ||
| 8061 | |||
| 8062 | ** The new macro `with-auto-compression-mode' allows evaluating an | ||
| 8063 | expression with auto-compression-mode enabled. | ||
| 8064 | |||
| 8065 | ** In image specifications, `:heuristic-mask' has been replaced | ||
| 8066 | with the more general `:mask' property. | ||
| 8067 | |||
| 8068 | ** Image specifications accept more `:conversion's. | ||
| 8069 | |||
| 8070 | ** A `?' can be used in a symbol name without escaping it with a | ||
| 8071 | backslash. | ||
| 8072 | |||
| 8073 | ** Reading from the mini-buffer now reads from standard input if Emacs | ||
| 8074 | is running in batch mode. For example, | ||
| 8075 | |||
| 8076 | (message "%s" (read t)) | ||
| 8077 | |||
| 8078 | will read a Lisp expression from standard input and print the result | ||
| 8079 | to standard output. | ||
| 8080 | |||
| 8081 | ** The argument of `down-list', `backward-up-list', `up-list', | ||
| 8082 | `kill-sexp', `backward-kill-sexp' and `mark-sexp' is now optional. | ||
| 8083 | |||
| 8084 | ** If `display-buffer-reuse-frames' is set, function `display-buffer' | ||
| 8085 | will raise frames displaying a buffer, instead of creating a new | ||
| 8086 | frame or window. | ||
| 8087 | |||
| 8088 | ** Two new functions for removing elements from lists/sequences | ||
| 8089 | were added | ||
| 8090 | |||
| 8091 | - Function: remove ELT SEQ | ||
| 8092 | |||
| 8093 | Return a copy of SEQ with all occurrences of ELT removed. SEQ must be | ||
| 8094 | a list, vector, or string. The comparison is done with `equal'. | ||
| 8095 | |||
| 8096 | - Function: remq ELT LIST | ||
| 8097 | |||
| 8098 | Return a copy of LIST with all occurrences of ELT removed. The | ||
| 8099 | comparison is done with `eq'. | ||
| 8100 | |||
| 8101 | ** The function `delete' now also works with vectors and strings. | ||
| 8102 | |||
| 8103 | ** The meaning of the `:weakness WEAK' argument of make-hash-table | ||
| 8104 | has been changed: WEAK can now have new values `key-or-value' and | ||
| 8105 | `key-and-value', in addition to `nil', `key', `value', and `t'. | ||
| 8106 | |||
| 8107 | ** Function `aset' stores any multibyte character in any string | ||
| 8108 | without signaling "Attempt to change char length of a string". It may | ||
| 8109 | convert a unibyte string to multibyte if necessary. | ||
| 8110 | |||
| 8111 | ** The value of the `help-echo' text property is called as a function | ||
| 8112 | or evaluated, if it is not a string already, to obtain a help string. | ||
| 8113 | |||
| 8114 | ** Function `make-obsolete' now has an optional arg to say when the | ||
| 8115 | function was declared obsolete. | ||
| 8116 | |||
| 8117 | ** Function `plist-member' is renamed from `widget-plist-member' (which is | ||
| 8118 | retained as an alias). | ||
| 8119 | |||
| 8120 | ** Easy-menu's :filter now takes the unconverted form of the menu and | ||
| 8121 | the result is automatically converted to Emacs' form. | ||
| 8122 | |||
| 8123 | ** The new function `window-list' has been defined | ||
| 8124 | |||
| 8125 | - Function: window-list &optional FRAME WINDOW MINIBUF | ||
| 8126 | |||
| 8127 | Return a list of windows on FRAME, starting with WINDOW. FRAME nil or | ||
| 8128 | omitted means use the selected frame. WINDOW nil or omitted means use | ||
| 8129 | the selected window. MINIBUF t means include the minibuffer window, | ||
| 8130 | even if it isn't active. MINIBUF nil or omitted means include the | ||
| 8131 | minibuffer window only if it's active. MINIBUF neither nil nor t | ||
| 8132 | means never include the minibuffer window. | ||
| 8133 | |||
| 8134 | ** There's a new function `get-window-with-predicate' defined as follows | ||
| 8135 | |||
| 8136 | - Function: get-window-with-predicate PREDICATE &optional MINIBUF ALL-FRAMES DEFAULT | ||
| 8137 | |||
| 8138 | Return a window satisfying PREDICATE. | ||
| 8139 | |||
| 8140 | This function cycles through all visible windows using `walk-windows', | ||
| 8141 | calling PREDICATE on each one. PREDICATE is called with a window as | ||
| 8142 | argument. The first window for which PREDICATE returns a non-nil | ||
| 8143 | value is returned. If no window satisfies PREDICATE, DEFAULT is | ||
| 8144 | returned. | ||
| 8145 | |||
| 8146 | Optional second arg MINIBUF t means count the minibuffer window even | ||
| 8147 | if not active. MINIBUF nil or omitted means count the minibuffer iff | ||
| 8148 | it is active. MINIBUF neither t nor nil means not to count the | ||
| 8149 | minibuffer even if it is active. | ||
| 8150 | |||
| 8151 | Several frames may share a single minibuffer; if the minibuffer | ||
| 8152 | counts, all windows on all frames that share that minibuffer count | ||
| 8153 | too. Therefore, if you are using a separate minibuffer frame | ||
| 8154 | and the minibuffer is active and MINIBUF says it counts, | ||
| 8155 | `walk-windows' includes the windows in the frame from which you | ||
| 8156 | entered the minibuffer, as well as the minibuffer window. | ||
| 8157 | |||
| 8158 | ALL-FRAMES is the optional third argument. | ||
| 8159 | ALL-FRAMES nil or omitted means cycle within the frames as specified above. | ||
| 8160 | ALL-FRAMES = `visible' means include windows on all visible frames. | ||
| 8161 | ALL-FRAMES = 0 means include windows on all visible and iconified frames. | ||
| 8162 | ALL-FRAMES = t means include windows on all frames including invisible frames. | ||
| 8163 | If ALL-FRAMES is a frame, it means include windows on that frame. | ||
| 8164 | Anything else means restrict to the selected frame. | ||
| 8165 | |||
| 8166 | ** The function `single-key-description' now encloses function key and | ||
| 8167 | event names in angle brackets. When called with a second optional | ||
| 8168 | argument non-nil, angle brackets won't be printed. | ||
| 8169 | |||
| 8170 | ** If the variable `message-truncate-lines' is bound to t around a | ||
| 8171 | call to `message', the echo area will not be resized to display that | ||
| 8172 | message; it will be truncated instead, as it was done in 20.x. | ||
| 8173 | Default value is nil. | ||
| 8174 | |||
| 8175 | ** The user option `line-number-display-limit' can now be set to nil, | ||
| 8176 | meaning no limit. | ||
| 8177 | |||
| 8178 | ** The new user option `line-number-display-limit-width' controls | ||
| 8179 | the maximum width of lines in a buffer for which Emacs displays line | ||
| 8180 | numbers in the mode line. The default is 200. | ||
| 8181 | |||
| 8182 | ** `select-safe-coding-system' now also checks the most preferred | ||
| 8183 | coding-system if buffer-file-coding-system is `undecided' and | ||
| 8184 | DEFAULT-CODING-SYSTEM is not specified, | ||
| 8185 | |||
| 8186 | ** The function `subr-arity' provides information about the argument | ||
| 8187 | list of a primitive. | ||
| 8188 | |||
| 8189 | ** `where-is-internal' now also accepts a list of keymaps. | ||
| 8190 | |||
| 8191 | ** The text property `keymap' specifies a key map which overrides the | ||
| 8192 | buffer's local map and the map specified by the `local-map' property. | ||
| 8193 | This is probably what most current uses of `local-map' want, rather | ||
| 8194 | than replacing the local map. | ||
| 8195 | |||
| 8196 | ** The obsolete variables `before-change-function' and | ||
| 8197 | `after-change-function' are no longer acted upon and have been | ||
| 8198 | removed. Use `before-change-functions' and `after-change-functions' | ||
| 8199 | instead. | ||
| 8200 | |||
| 8201 | ** The function `apropos-mode' runs the hook `apropos-mode-hook'. | ||
| 8202 | |||
| 8203 | ** `concat' no longer accepts individual integer arguments, | ||
| 8204 | as promised long ago. | ||
| 8205 | |||
| 8206 | ** The new function `float-time' returns the current time as a float. | ||
| 8207 | |||
| 8208 | ** The new variable auto-coding-regexp-alist specifies coding systems | ||
| 8209 | for reading specific files, analogous to auto-coding-alist, but | ||
| 8210 | patterns are checked against file contents instead of file names. | ||
| 8211 | |||
| 8212 | |||
| 8213 | * Lisp changes in Emacs 21.1 (see following page for display-related features) | ||
| 8214 | |||
| 8215 | ** The new package rx.el provides an alternative sexp notation for | ||
| 8216 | regular expressions. | ||
| 8217 | |||
| 8218 | - Function: rx-to-string SEXP | ||
| 8219 | |||
| 8220 | Translate SEXP into a regular expression in string notation. | ||
| 8221 | |||
| 8222 | - Macro: rx SEXP | ||
| 8223 | |||
| 8224 | Translate SEXP into a regular expression in string notation. | ||
| 8225 | |||
| 8226 | The following are valid subforms of regular expressions in sexp | ||
| 8227 | notation. | ||
| 8228 | |||
| 8229 | STRING | ||
| 8230 | matches string STRING literally. | ||
| 8231 | |||
| 8232 | CHAR | ||
| 8233 | matches character CHAR literally. | ||
| 8234 | |||
| 8235 | `not-newline' | ||
| 8236 | matches any character except a newline. | ||
| 8237 | . | ||
| 8238 | `anything' | ||
| 8239 | matches any character | ||
| 8240 | |||
| 8241 | `(any SET)' | ||
| 8242 | matches any character in SET. SET may be a character or string. | ||
| 8243 | Ranges of characters can be specified as `A-Z' in strings. | ||
| 8244 | |||
| 8245 | '(in SET)' | ||
| 8246 | like `any'. | ||
| 8247 | |||
| 8248 | `(not (any SET))' | ||
| 8249 | matches any character not in SET | ||
| 8250 | |||
| 8251 | `line-start' | ||
| 8252 | matches the empty string, but only at the beginning of a line | ||
| 8253 | in the text being matched | ||
| 8254 | |||
| 8255 | `line-end' | ||
| 8256 | is similar to `line-start' but matches only at the end of a line | ||
| 8257 | |||
| 8258 | `string-start' | ||
| 8259 | matches the empty string, but only at the beginning of the | ||
| 8260 | string being matched against. | ||
| 8261 | |||
| 8262 | `string-end' | ||
| 8263 | matches the empty string, but only at the end of the | ||
| 8264 | string being matched against. | ||
| 8265 | |||
| 8266 | `buffer-start' | ||
| 8267 | matches the empty string, but only at the beginning of the | ||
| 8268 | buffer being matched against. | ||
| 8269 | |||
| 8270 | `buffer-end' | ||
| 8271 | matches the empty string, but only at the end of the | ||
| 8272 | buffer being matched against. | ||
| 8273 | |||
| 8274 | `point' | ||
| 8275 | matches the empty string, but only at point. | ||
| 8276 | |||
| 8277 | `word-start' | ||
| 8278 | matches the empty string, but only at the beginning or end of a | ||
| 8279 | word. | ||
| 8280 | |||
| 8281 | `word-end' | ||
| 8282 | matches the empty string, but only at the end of a word. | ||
| 8283 | |||
| 8284 | `word-boundary' | ||
| 8285 | matches the empty string, but only at the beginning or end of a | ||
| 8286 | word. | ||
| 8287 | |||
| 8288 | `(not word-boundary)' | ||
| 8289 | matches the empty string, but not at the beginning or end of a | ||
| 8290 | word. | ||
| 8291 | |||
| 8292 | `digit' | ||
| 8293 | matches 0 through 9. | ||
| 8294 | |||
| 8295 | `control' | ||
| 8296 | matches ASCII control characters. | ||
| 8297 | |||
| 8298 | `hex-digit' | ||
| 8299 | matches 0 through 9, a through f and A through F. | ||
| 8300 | |||
| 8301 | `blank' | ||
| 8302 | matches space and tab only. | ||
| 8303 | |||
| 8304 | `graphic' | ||
| 8305 | matches graphic characters--everything except ASCII control chars, | ||
| 8306 | space, and DEL. | ||
| 8307 | |||
| 8308 | `printing' | ||
| 8309 | matches printing characters--everything except ASCII control chars | ||
| 8310 | and DEL. | ||
| 8311 | |||
| 8312 | `alphanumeric' | ||
| 8313 | matches letters and digits. (But at present, for multibyte characters, | ||
| 8314 | it matches anything that has word syntax.) | ||
| 8315 | |||
| 8316 | `letter' | ||
| 8317 | matches letters. (But at present, for multibyte characters, | ||
| 8318 | it matches anything that has word syntax.) | ||
| 8319 | |||
| 8320 | `ascii' | ||
| 8321 | matches ASCII (unibyte) characters. | ||
| 8322 | |||
| 8323 | `nonascii' | ||
| 8324 | matches non-ASCII (multibyte) characters. | ||
| 8325 | |||
| 8326 | `lower' | ||
| 8327 | matches anything lower-case. | ||
| 8328 | |||
| 8329 | `upper' | ||
| 8330 | matches anything upper-case. | ||
| 8331 | |||
| 8332 | `punctuation' | ||
| 8333 | matches punctuation. (But at present, for multibyte characters, | ||
| 8334 | it matches anything that has non-word syntax.) | ||
| 8335 | |||
| 8336 | `space' | ||
| 8337 | matches anything that has whitespace syntax. | ||
| 8338 | |||
| 8339 | `word' | ||
| 8340 | matches anything that has word syntax. | ||
| 8341 | |||
| 8342 | `(syntax SYNTAX)' | ||
| 8343 | matches a character with syntax SYNTAX. SYNTAX must be one | ||
| 8344 | of the following symbols. | ||
| 8345 | |||
| 8346 | `whitespace' (\\s- in string notation) | ||
| 8347 | `punctuation' (\\s.) | ||
| 8348 | `word' (\\sw) | ||
| 8349 | `symbol' (\\s_) | ||
| 8350 | `open-parenthesis' (\\s() | ||
| 8351 | `close-parenthesis' (\\s)) | ||
| 8352 | `expression-prefix' (\\s') | ||
| 8353 | `string-quote' (\\s\") | ||
| 8354 | `paired-delimiter' (\\s$) | ||
| 8355 | `escape' (\\s\\) | ||
| 8356 | `character-quote' (\\s/) | ||
| 8357 | `comment-start' (\\s<) | ||
| 8358 | `comment-end' (\\s>) | ||
| 8359 | |||
| 8360 | `(not (syntax SYNTAX))' | ||
| 8361 | matches a character that has not syntax SYNTAX. | ||
| 8362 | |||
| 8363 | `(category CATEGORY)' | ||
| 8364 | matches a character with category CATEGORY. CATEGORY must be | ||
| 8365 | either a character to use for C, or one of the following symbols. | ||
| 8366 | |||
| 8367 | `consonant' (\\c0 in string notation) | ||
| 8368 | `base-vowel' (\\c1) | ||
| 8369 | `upper-diacritical-mark' (\\c2) | ||
| 8370 | `lower-diacritical-mark' (\\c3) | ||
| 8371 | `tone-mark' (\\c4) | ||
| 8372 | `symbol' (\\c5) | ||
| 8373 | `digit' (\\c6) | ||
| 8374 | `vowel-modifying-diacritical-mark' (\\c7) | ||
| 8375 | `vowel-sign' (\\c8) | ||
| 8376 | `semivowel-lower' (\\c9) | ||
| 8377 | `not-at-end-of-line' (\\c<) | ||
| 8378 | `not-at-beginning-of-line' (\\c>) | ||
| 8379 | `alpha-numeric-two-byte' (\\cA) | ||
| 8380 | `chinse-two-byte' (\\cC) | ||
| 8381 | `greek-two-byte' (\\cG) | ||
| 8382 | `japanese-hiragana-two-byte' (\\cH) | ||
| 8383 | `indian-two-byte' (\\cI) | ||
| 8384 | `japanese-katakana-two-byte' (\\cK) | ||
| 8385 | `korean-hangul-two-byte' (\\cN) | ||
| 8386 | `cyrillic-two-byte' (\\cY) | ||
| 8387 | `ascii' (\\ca) | ||
| 8388 | `arabic' (\\cb) | ||
| 8389 | `chinese' (\\cc) | ||
| 8390 | `ethiopic' (\\ce) | ||
| 8391 | `greek' (\\cg) | ||
| 8392 | `korean' (\\ch) | ||
| 8393 | `indian' (\\ci) | ||
| 8394 | `japanese' (\\cj) | ||
| 8395 | `japanese-katakana' (\\ck) | ||
| 8396 | `latin' (\\cl) | ||
| 8397 | `lao' (\\co) | ||
| 8398 | `tibetan' (\\cq) | ||
| 8399 | `japanese-roman' (\\cr) | ||
| 8400 | `thai' (\\ct) | ||
| 8401 | `vietnamese' (\\cv) | ||
| 8402 | `hebrew' (\\cw) | ||
| 8403 | `cyrillic' (\\cy) | ||
| 8404 | `can-break' (\\c|) | ||
| 8405 | |||
| 8406 | `(not (category CATEGORY))' | ||
| 8407 | matches a character that has not category CATEGORY. | ||
| 8408 | |||
| 8409 | `(and SEXP1 SEXP2 ...)' | ||
| 8410 | matches what SEXP1 matches, followed by what SEXP2 matches, etc. | ||
| 8411 | |||
| 8412 | `(submatch SEXP1 SEXP2 ...)' | ||
| 8413 | like `and', but makes the match accessible with `match-end', | ||
| 8414 | `match-beginning', and `match-string'. | ||
| 8415 | |||
| 8416 | `(group SEXP1 SEXP2 ...)' | ||
| 8417 | another name for `submatch'. | ||
| 8418 | |||
| 8419 | `(or SEXP1 SEXP2 ...)' | ||
| 8420 | matches anything that matches SEXP1 or SEXP2, etc. If all | ||
| 8421 | args are strings, use `regexp-opt' to optimize the resulting | ||
| 8422 | regular expression. | ||
| 8423 | |||
| 8424 | `(minimal-match SEXP)' | ||
| 8425 | produce a non-greedy regexp for SEXP. Normally, regexps matching | ||
| 8426 | zero or more occurrences of something are \"greedy\" in that they | ||
| 8427 | match as much as they can, as long as the overall regexp can | ||
| 8428 | still match. A non-greedy regexp matches as little as possible. | ||
| 8429 | |||
| 8430 | `(maximal-match SEXP)' | ||
| 8431 | produce a greedy regexp for SEXP. This is the default. | ||
| 8432 | |||
| 8433 | `(zero-or-more SEXP)' | ||
| 8434 | matches zero or more occurrences of what SEXP matches. | ||
| 8435 | |||
| 8436 | `(0+ SEXP)' | ||
| 8437 | like `zero-or-more'. | ||
| 8438 | |||
| 8439 | `(* SEXP)' | ||
| 8440 | like `zero-or-more', but always produces a greedy regexp. | ||
| 8441 | |||
| 8442 | `(*? SEXP)' | ||
| 8443 | like `zero-or-more', but always produces a non-greedy regexp. | ||
| 8444 | |||
| 8445 | `(one-or-more SEXP)' | ||
| 8446 | matches one or more occurrences of A. | ||
| 8447 | |||
| 8448 | `(1+ SEXP)' | ||
| 8449 | like `one-or-more'. | ||
| 8450 | |||
| 8451 | `(+ SEXP)' | ||
| 8452 | like `one-or-more', but always produces a greedy regexp. | ||
| 8453 | |||
| 8454 | `(+? SEXP)' | ||
| 8455 | like `one-or-more', but always produces a non-greedy regexp. | ||
| 8456 | |||
| 8457 | `(zero-or-one SEXP)' | ||
| 8458 | matches zero or one occurrences of A. | ||
| 8459 | |||
| 8460 | `(optional SEXP)' | ||
| 8461 | like `zero-or-one'. | ||
| 8462 | |||
| 8463 | `(? SEXP)' | ||
| 8464 | like `zero-or-one', but always produces a greedy regexp. | ||
| 8465 | |||
| 8466 | `(?? SEXP)' | ||
| 8467 | like `zero-or-one', but always produces a non-greedy regexp. | ||
| 8468 | |||
| 8469 | `(repeat N SEXP)' | ||
| 8470 | matches N occurrences of what SEXP matches. | ||
| 8471 | |||
| 8472 | `(repeat N M SEXP)' | ||
| 8473 | matches N to M occurrences of what SEXP matches. | ||
| 8474 | |||
| 8475 | `(eval FORM)' | ||
| 8476 | evaluate FORM and insert result. If result is a string, | ||
| 8477 | `regexp-quote' it. | ||
| 8478 | |||
| 8479 | `(regexp REGEXP)' | ||
| 8480 | include REGEXP in string notation in the result. | ||
| 8481 | |||
| 8482 | *** The features `md5' and `overlay' are now provided by default. | ||
| 8483 | |||
| 8484 | *** The special form `save-restriction' now works correctly even if the | ||
| 8485 | buffer is widened inside the save-restriction and changes made outside | ||
| 8486 | the original restriction. Previously, doing this would cause the saved | ||
| 8487 | restriction to be restored incorrectly. | ||
| 8488 | |||
| 8489 | *** The functions `find-charset-region' and `find-charset-string' include | ||
| 8490 | `eight-bit-control' and/or `eight-bit-graphic' in the returned list | ||
| 8491 | when they find 8-bit characters. Previously, they included `ascii' in a | ||
| 8492 | multibyte buffer and `unknown' in a unibyte buffer. | ||
| 8493 | |||
| 8494 | *** The functions `set-buffer-multibyte', `string-as-multibyte' and | ||
| 8495 | `string-as-unibyte' change the byte sequence of a buffer or a string | ||
| 8496 | if it contains a character from the `eight-bit-control' character set. | ||
| 8497 | |||
| 8498 | *** The handling of multibyte sequences in a multibyte buffer is | ||
| 8499 | changed. Previously, a byte sequence matching the pattern | ||
| 8500 | [\200-\237][\240-\377]+ was interpreted as a single character | ||
| 8501 | regardless of the length of the trailing bytes [\240-\377]+. Thus, if | ||
| 8502 | the sequence was longer than what the leading byte indicated, the | ||
| 8503 | extra trailing bytes were ignored by Lisp functions. Now such extra | ||
| 8504 | bytes are independent 8-bit characters belonging to the charset | ||
| 8505 | eight-bit-graphic. | ||
| 8506 | |||
| 8507 | ** Fontsets are now implemented using char-tables. | ||
| 8508 | |||
| 8509 | A fontset can now be specified for each independent character, for | ||
| 8510 | a group of characters or for a character set rather than just for a | ||
| 8511 | character set as previously. | ||
| 8512 | |||
| 8513 | *** The arguments of the function `set-fontset-font' are changed. | ||
| 8514 | They are NAME, CHARACTER, FONTNAME, and optional FRAME. The function | ||
| 8515 | modifies fontset NAME to use FONTNAME for CHARACTER. | ||
| 8516 | |||
| 8517 | CHARACTER may be a cons (FROM . TO), where FROM and TO are non-generic | ||
| 8518 | characters. In that case FONTNAME is used for all characters in the | ||
| 8519 | range FROM and TO (inclusive). CHARACTER may be a charset. In that | ||
| 8520 | case FONTNAME is used for all character in the charset. | ||
| 8521 | |||
| 8522 | FONTNAME may be a cons (FAMILY . REGISTRY), where FAMILY is the family | ||
| 8523 | name of a font and REGISTRY is a registry name of a font. | ||
| 8524 | |||
| 8525 | *** Variable x-charset-registry has been deleted. The default charset | ||
| 8526 | registries of character sets are set in the default fontset | ||
| 8527 | "fontset-default". | ||
| 8528 | |||
| 8529 | *** The function `create-fontset-from-fontset-spec' ignores the second | ||
| 8530 | argument STYLE-VARIANT. It never creates style-variant fontsets. | ||
| 8531 | |||
| 8532 | ** The method of composing characters is changed. Now character | ||
| 8533 | composition is done by a special text property `composition' in | ||
| 8534 | buffers and strings. | ||
| 8535 | |||
| 8536 | *** Charset composition is deleted. Emacs never creates a `composite | ||
| 8537 | character' which is an independent character with a unique character | ||
| 8538 | code. Thus the following functions handling `composite characters' | ||
| 8539 | have been deleted: composite-char-component, | ||
| 8540 | composite-char-component-count, composite-char-composition-rule, | ||
| 8541 | composite-char-composition-rule and decompose-composite-char delete. | ||
| 8542 | The variables leading-code-composition and min-composite-char have | ||
| 8543 | also been deleted. | ||
| 8544 | |||
| 8545 | *** Three more glyph reference points are added. They can be used to | ||
| 8546 | specify a composition rule. See the documentation of the variable | ||
| 8547 | `reference-point-alist' for more detail. | ||
| 8548 | |||
| 8549 | *** The function `compose-region' takes new arguments COMPONENTS and | ||
| 8550 | MODIFICATION-FUNC. With COMPONENTS, you can specify not only a | ||
| 8551 | composition rule but also characters to be composed. Such characters | ||
| 8552 | may differ between buffer and string text. | ||
| 8553 | |||
| 8554 | *** The function `compose-string' takes new arguments START, END, | ||
| 8555 | COMPONENTS, and MODIFICATION-FUNC. | ||
| 8556 | |||
| 8557 | *** The function `compose-string' puts text property `composition' | ||
| 8558 | directly on the argument STRING instead of returning a new string. | ||
| 8559 | Likewise, the function `decompose-string' just removes text property | ||
| 8560 | `composition' from STRING. | ||
| 8561 | |||
| 8562 | *** The new function `find-composition' returns information about | ||
| 8563 | a composition at a specified position in a buffer or a string. | ||
| 8564 | |||
| 8565 | *** The function `decompose-composite-char' is now labeled as | ||
| 8566 | obsolete. | ||
| 8567 | |||
| 8568 | ** The new coding system `mac-roman' is primarily intended for use on | ||
| 8569 | the Macintosh but may be used generally for Macintosh-encoded text. | ||
| 8570 | |||
| 8571 | ** The new character sets `mule-unicode-0100-24ff', | ||
| 8572 | `mule-unicode-2500-33ff', and `mule-unicode-e000-ffff' have been | ||
| 8573 | introduced for Unicode characters in the range U+0100..U+24FF, | ||
| 8574 | U+2500..U+33FF, U+E000..U+FFFF respectively. | ||
| 8575 | |||
| 8576 | Note that the character sets are not yet unified in Emacs, so | ||
| 8577 | characters which belong to charsets such as Latin-2, Greek, Hebrew, | ||
| 8578 | etc. and the same characters in the `mule-unicode-*' charsets are | ||
| 8579 | different characters, as far as Emacs is concerned. For example, text | ||
| 8580 | which includes Unicode characters from the Latin-2 locale cannot be | ||
| 8581 | encoded by Emacs with ISO 8859-2 coding system. | ||
| 8582 | |||
| 8583 | ** The new coding system `mule-utf-8' has been added. | ||
| 8584 | It provides limited support for decoding/encoding UTF-8 text. For | ||
| 8585 | details, please see the documentation string of this coding system. | ||
| 8586 | |||
| 8587 | ** The new character sets `japanese-jisx0213-1' and | ||
| 8588 | `japanese-jisx0213-2' have been introduced for the new Japanese | ||
| 8589 | standard JIS X 0213 Plane 1 and Plane 2. | ||
| 8590 | |||
| 8591 | ** The new character sets `latin-iso8859-14' and `latin-iso8859-15' | ||
| 8592 | have been introduced. | ||
| 8593 | |||
| 8594 | ** The new character sets `eight-bit-control' and `eight-bit-graphic' | ||
| 8595 | have been introduced for 8-bit characters in the ranges 0x80..0x9F and | ||
| 8596 | 0xA0..0xFF respectively. Note that the multibyte representation of | ||
| 8597 | eight-bit-control is never exposed; this leads to an exception in the | ||
| 8598 | emacs-mule coding system, which encodes everything else to the | ||
| 8599 | buffer/string internal representation. Note that to search for | ||
| 8600 | eight-bit-graphic characters in a multibyte buffer, the search string | ||
| 8601 | must be multibyte, otherwise such characters will be converted to | ||
| 8602 | their multibyte equivalent. | ||
| 8603 | |||
| 8604 | ** If the APPEND argument of `write-region' is an integer, it seeks to | ||
| 8605 | that offset in the file before writing. | ||
| 8606 | |||
| 8607 | ** The function `add-minor-mode' has been added for convenience and | ||
| 8608 | compatibility with XEmacs (and is used internally by define-minor-mode). | ||
| 8609 | |||
| 8610 | ** The function `shell-command' now sets the default directory of the | ||
| 8611 | `*Shell Command Output*' buffer to the default directory of the buffer | ||
| 8612 | from which the command was issued. | ||
| 8613 | |||
| 8614 | ** The functions `query-replace', `query-replace-regexp', | ||
| 8615 | `query-replace-regexp-eval' `map-query-replace-regexp', | ||
| 8616 | `replace-string', `replace-regexp', and `perform-replace' take two | ||
| 8617 | additional optional arguments START and END that specify the region to | ||
| 8618 | operate on. | ||
| 8619 | |||
| 8620 | ** The new function `count-screen-lines' is a more flexible alternative | ||
| 8621 | to `window-buffer-height'. | ||
| 8622 | |||
| 8623 | - Function: count-screen-lines &optional BEG END COUNT-FINAL-NEWLINE WINDOW | ||
| 8624 | |||
| 8625 | Return the number of screen lines in the region between BEG and END. | ||
| 8626 | The number of screen lines may be different from the number of actual | ||
| 8627 | lines, due to line breaking, display table, etc. | ||
| 8628 | |||
| 8629 | Optional arguments BEG and END default to `point-min' and `point-max' | ||
| 8630 | respectively. | ||
| 8631 | |||
| 8632 | If region ends with a newline, ignore it unless optional third argument | ||
| 8633 | COUNT-FINAL-NEWLINE is non-nil. | ||
| 8634 | |||
| 8635 | The optional fourth argument WINDOW specifies the window used for | ||
| 8636 | obtaining parameters such as width, horizontal scrolling, and so | ||
| 8637 | on. The default is to use the selected window's parameters. | ||
| 8638 | |||
| 8639 | Like `vertical-motion', `count-screen-lines' always uses the current | ||
| 8640 | buffer, regardless of which buffer is displayed in WINDOW. This makes | ||
| 8641 | possible to use `count-screen-lines' in any buffer, whether or not it | ||
| 8642 | is currently displayed in some window. | ||
| 8643 | |||
| 8644 | ** The new function `mapc' is like `mapcar' but doesn't collect the | ||
| 8645 | argument function's results. | ||
| 8646 | |||
| 8647 | ** The functions base64-decode-region and base64-decode-string now | ||
| 8648 | signal an error instead of returning nil if decoding fails. Also, | ||
| 8649 | `base64-decode-string' now always returns a unibyte string (in Emacs | ||
| 8650 | 20, it returned a multibyte string when the result was a valid multibyte | ||
| 8651 | sequence). | ||
| 8652 | |||
| 8653 | ** The function sendmail-user-agent-compose now recognizes a `body' | ||
| 8654 | header in the list of headers passed to it. | ||
| 8655 | |||
| 8656 | ** The new function member-ignore-case works like `member', but | ||
| 8657 | ignores differences in case and text representation. | ||
| 8658 | |||
| 8659 | ** The buffer-local variable cursor-type can be used to specify the | ||
| 8660 | cursor to use in windows displaying a buffer. Values are interpreted | ||
| 8661 | as follows: | ||
| 8662 | |||
| 8663 | t use the cursor specified for the frame (default) | ||
| 8664 | nil don't display a cursor | ||
| 8665 | `bar' display a bar cursor with default width | ||
| 8666 | (bar . WIDTH) display a bar cursor with width WIDTH | ||
| 8667 | others display a box cursor. | ||
| 8668 | |||
| 8669 | ** The variable open-paren-in-column-0-is-defun-start controls whether | ||
| 8670 | an open parenthesis in column 0 is considered to be the start of a | ||
| 8671 | defun. If set, the default, it is considered a defun start. If not | ||
| 8672 | set, an open parenthesis in column 0 has no special meaning. | ||
| 8673 | |||
| 8674 | ** The new function `string-to-syntax' can be used to translate syntax | ||
| 8675 | specifications in string form as accepted by `modify-syntax-entry' to | ||
| 8676 | the cons-cell form that is used for the values of the `syntax-table' | ||
| 8677 | text property, and in `font-lock-syntactic-keywords'. | ||
| 8678 | |||
| 8679 | Example: | ||
| 8680 | |||
| 8681 | (string-to-syntax "()") | ||
| 8682 | => (4 . 41) | ||
| 8683 | |||
| 8684 | ** Emacs' reader supports CL read syntax for integers in bases | ||
| 8685 | other than 10. | ||
| 8686 | |||
| 8687 | *** `#BINTEGER' or `#bINTEGER' reads INTEGER in binary (radix 2). | ||
| 8688 | INTEGER optionally contains a sign. | ||
| 8689 | |||
| 8690 | #b1111 | ||
| 8691 | => 15 | ||
| 8692 | #b-1111 | ||
| 8693 | => -15 | ||
| 8694 | |||
| 8695 | *** `#OINTEGER' or `#oINTEGER' reads INTEGER in octal (radix 8). | ||
| 8696 | |||
| 8697 | #o666 | ||
| 8698 | => 438 | ||
| 8699 | |||
| 8700 | *** `#XINTEGER' or `#xINTEGER' reads INTEGER in hexadecimal (radix 16). | ||
| 8701 | |||
| 8702 | #xbeef | ||
| 8703 | => 48815 | ||
| 8704 | |||
| 8705 | *** `#RADIXrINTEGER' reads INTEGER in radix RADIX, 2 <= RADIX <= 36. | ||
| 8706 | |||
| 8707 | #2R-111 | ||
| 8708 | => -7 | ||
| 8709 | #25rah | ||
| 8710 | => 267 | ||
| 8711 | |||
| 8712 | ** The function `documentation-property' now evaluates the value of | ||
| 8713 | the given property to obtain a string if it doesn't refer to etc/DOC | ||
| 8714 | and isn't a string. | ||
| 8715 | |||
| 8716 | ** If called for a symbol, the function `documentation' now looks for | ||
| 8717 | a `function-documentation' property of that symbol. If it has a non-nil | ||
| 8718 | value, the documentation is taken from that value. If the value is | ||
| 8719 | not a string, it is evaluated to obtain a string. | ||
| 8720 | |||
| 8721 | ** The last argument of `define-key-after' defaults to t for convenience. | ||
| 8722 | |||
| 8723 | ** The new function `replace-regexp-in-string' replaces all matches | ||
| 8724 | for a regexp in a string. | ||
| 8725 | |||
| 8726 | ** `mouse-position' now runs the abnormal hook | ||
| 8727 | `mouse-position-function'. | ||
| 8728 | |||
| 8729 | ** The function string-to-number now returns a float for numbers | ||
| 8730 | that don't fit into a Lisp integer. | ||
| 8731 | |||
| 8732 | ** The variable keyword-symbols-constants-flag has been removed. | ||
| 8733 | Keywords are now always considered constants. | ||
| 8734 | |||
| 8735 | ** The new function `delete-and-extract-region' deletes text and | ||
| 8736 | returns it. | ||
| 8737 | |||
| 8738 | ** The function `clear-this-command-keys' now also clears the vector | ||
| 8739 | returned by function `recent-keys'. | ||
| 8740 | |||
| 8741 | ** Variables `beginning-of-defun-function' and `end-of-defun-function' | ||
| 8742 | can be used to define handlers for the functions that find defuns. | ||
| 8743 | Major modes can define these locally instead of rebinding C-M-a | ||
| 8744 | etc. if the normal conventions for defuns are not appropriate for the | ||
| 8745 | mode. | ||
| 8746 | |||
| 8747 | ** easy-mmode-define-minor-mode now takes an additional BODY argument | ||
| 8748 | and is renamed `define-minor-mode'. | ||
| 8749 | |||
| 8750 | ** If an abbrev has a hook function which is a symbol, and that symbol | ||
| 8751 | has a non-nil `no-self-insert' property, the return value of the hook | ||
| 8752 | function specifies whether an expansion has been done or not. If it | ||
| 8753 | returns nil, abbrev-expand also returns nil, meaning "no expansion has | ||
| 8754 | been performed." | ||
| 8755 | |||
| 8756 | When abbrev expansion is done by typing a self-inserting character, | ||
| 8757 | and the abbrev has a hook with the `no-self-insert' property, and the | ||
| 8758 | hook function returns non-nil meaning expansion has been done, | ||
| 8759 | then the self-inserting character is not inserted. | ||
| 8760 | |||
| 8761 | ** The function `intern-soft' now accepts a symbol as first argument. | ||
| 8762 | In this case, that exact symbol is looked up in the specified obarray, | ||
| 8763 | and the function's value is nil if it is not found. | ||
| 8764 | |||
| 8765 | ** The new macro `with-syntax-table' can be used to evaluate forms | ||
| 8766 | with the syntax table of the current buffer temporarily set to a | ||
| 8767 | specified table. | ||
| 8768 | |||
| 8769 | (with-syntax-table TABLE &rest BODY) | ||
| 8770 | |||
| 8771 | Evaluate BODY with syntax table of current buffer set to a copy of | ||
| 8772 | TABLE. The current syntax table is saved, BODY is evaluated, and the | ||
| 8773 | saved table is restored, even in case of an abnormal exit. Value is | ||
| 8774 | what BODY returns. | ||
| 8775 | |||
| 8776 | ** Regular expressions now support intervals \{n,m\} as well as | ||
| 8777 | Perl's shy-groups \(?:...\) and non-greedy *? +? and ?? operators. | ||
| 8778 | Also back-references like \2 are now considered as an error if the | ||
| 8779 | corresponding subgroup does not exist (or is not closed yet). | ||
| 8780 | Previously it would have been silently turned into `2' (ignoring the `\'). | ||
| 8781 | |||
| 8782 | ** The optional argument BUFFER of function file-local-copy has been | ||
| 8783 | removed since it wasn't used by anything. | ||
| 8784 | |||
| 8785 | ** The file name argument of function `file-locked-p' is now required | ||
| 8786 | instead of being optional. | ||
| 8787 | |||
| 8788 | ** The new built-in error `text-read-only' is signaled when trying to | ||
| 8789 | modify read-only text. | ||
| 8790 | |||
| 8791 | ** New functions and variables for locales. | ||
| 8792 | |||
| 8793 | The new variable `locale-coding-system' specifies how to encode and | ||
| 8794 | decode strings passed to low-level message functions like strerror and | ||
| 8795 | time functions like strftime. The new variables | ||
| 8796 | `system-messages-locale' and `system-time-locale' give the system | ||
| 8797 | locales to be used when invoking these two types of functions. | ||
| 8798 | |||
| 8799 | The new function `set-locale-environment' sets the language | ||
| 8800 | environment, preferred coding system, and locale coding system from | ||
| 8801 | the system locale as specified by the LC_ALL, LC_CTYPE, and LANG | ||
| 8802 | environment variables. Normally, it is invoked during startup and need | ||
| 8803 | not be invoked thereafter. It uses the new variables | ||
| 8804 | `locale-language-names', `locale-charset-language-names', and | ||
| 8805 | `locale-preferred-coding-systems' to make its decisions. | ||
| 8806 | |||
| 8807 | ** syntax tables now understand nested comments. | ||
| 8808 | To declare a comment syntax as allowing nesting, just add an `n' | ||
| 8809 | modifier to either of the characters of the comment end and the comment | ||
| 8810 | start sequences. | ||
| 8811 | |||
| 8812 | ** The function `pixmap-spec-p' has been renamed `bitmap-spec-p' | ||
| 8813 | because `bitmap' is more in line with the usual X terminology. | ||
| 8814 | |||
| 8815 | ** New function `propertize' | ||
| 8816 | |||
| 8817 | The new function `propertize' can be used to conveniently construct | ||
| 8818 | strings with text properties. | ||
| 8819 | |||
| 8820 | - Function: propertize STRING &rest PROPERTIES | ||
| 8821 | |||
| 8822 | Value is a copy of STRING with text properties assigned as specified | ||
| 8823 | by PROPERTIES. PROPERTIES is a sequence of pairs PROPERTY VALUE, with | ||
| 8824 | PROPERTY being the name of a text property and VALUE being the | ||
| 8825 | specified value of that property. Example: | ||
| 8826 | |||
| 8827 | (propertize "foo" 'face 'bold 'read-only t) | ||
| 8828 | |||
| 8829 | ** push and pop macros. | ||
| 8830 | |||
| 8831 | Simple versions of the push and pop macros of Common Lisp | ||
| 8832 | are now defined in Emacs Lisp. These macros allow only symbols | ||
| 8833 | as the place that holds the list to be changed. | ||
| 8834 | |||
| 8835 | (push NEWELT LISTNAME) add NEWELT to the front of LISTNAME's value. | ||
| 8836 | (pop LISTNAME) return first elt of LISTNAME, and remove it | ||
| 8837 | (thus altering the value of LISTNAME). | ||
| 8838 | |||
| 8839 | ** New dolist and dotimes macros. | ||
| 8840 | |||
| 8841 | Simple versions of the dolist and dotimes macros of Common Lisp | ||
| 8842 | are now defined in Emacs Lisp. | ||
| 8843 | |||
| 8844 | (dolist (VAR LIST [RESULT]) BODY...) | ||
| 8845 | Execute body once for each element of LIST, | ||
| 8846 | using the variable VAR to hold the current element. | ||
| 8847 | Then return the value of RESULT, or nil if RESULT is omitted. | ||
| 8848 | |||
| 8849 | (dotimes (VAR COUNT [RESULT]) BODY...) | ||
| 8850 | Execute BODY with VAR bound to successive integers running from 0, | ||
| 8851 | inclusive, to COUNT, exclusive. | ||
| 8852 | Then return the value of RESULT, or nil if RESULT is omitted. | ||
| 8853 | |||
| 8854 | ** Regular expressions now support Posix character classes such as | ||
| 8855 | [:alpha:], [:space:] and so on. These must be used within a character | ||
| 8856 | class--for instance, [-[:digit:].+] matches digits or a period | ||
| 8857 | or a sign. | ||
| 8858 | |||
| 8859 | [:digit:] matches 0 through 9 | ||
| 8860 | [:cntrl:] matches ASCII control characters | ||
| 8861 | [:xdigit:] matches 0 through 9, a through f and A through F. | ||
| 8862 | [:blank:] matches space and tab only | ||
| 8863 | [:graph:] matches graphic characters--everything except ASCII control chars, | ||
| 8864 | space, and DEL. | ||
| 8865 | [:print:] matches printing characters--everything except ASCII control chars | ||
| 8866 | and DEL. | ||
| 8867 | [:alnum:] matches letters and digits. | ||
| 8868 | (But at present, for multibyte characters, | ||
| 8869 | it matches anything that has word syntax.) | ||
| 8870 | [:alpha:] matches letters. | ||
| 8871 | (But at present, for multibyte characters, | ||
| 8872 | it matches anything that has word syntax.) | ||
| 8873 | [:ascii:] matches ASCII (unibyte) characters. | ||
| 8874 | [:nonascii:] matches non-ASCII (multibyte) characters. | ||
| 8875 | [:lower:] matches anything lower-case. | ||
| 8876 | [:punct:] matches punctuation. | ||
| 8877 | (But at present, for multibyte characters, | ||
| 8878 | it matches anything that has non-word syntax.) | ||
| 8879 | [:space:] matches anything that has whitespace syntax. | ||
| 8880 | [:upper:] matches anything upper-case. | ||
| 8881 | [:word:] matches anything that has word syntax. | ||
| 8882 | |||
| 8883 | ** Emacs now has built-in hash tables. | ||
| 8884 | |||
| 8885 | The following functions are defined for hash tables: | ||
| 8886 | |||
| 8887 | - Function: make-hash-table ARGS | ||
| 8888 | |||
| 8889 | The argument list ARGS consists of keyword/argument pairs. All arguments | ||
| 8890 | are optional. The following arguments are defined: | ||
| 8891 | |||
| 8892 | :test TEST | ||
| 8893 | |||
| 8894 | TEST must be a symbol specifying how to compare keys. Default is `eql'. | ||
| 8895 | Predefined are `eq', `eql' and `equal'. If TEST is not predefined, | ||
| 8896 | it must have been defined with `define-hash-table-test'. | ||
| 8897 | |||
| 8898 | :size SIZE | ||
| 8899 | |||
| 8900 | SIZE must be an integer > 0 giving a hint to the implementation how | ||
| 8901 | many elements will be put in the hash table. Default size is 65. | ||
| 8902 | |||
| 8903 | :rehash-size REHASH-SIZE | ||
| 8904 | |||
| 8905 | REHASH-SIZE specifies by how much to grow a hash table once it becomes | ||
| 8906 | full. If REHASH-SIZE is an integer, add that to the hash table's old | ||
| 8907 | size to get the new size. Otherwise, REHASH-SIZE must be a float > | ||
| 8908 | 1.0, and the new size is computed by multiplying REHASH-SIZE with the | ||
| 8909 | old size. Default rehash size is 1.5. | ||
| 8910 | |||
| 8911 | :rehash-threshold THRESHOLD | ||
| 8912 | |||
| 8913 | THRESHOLD must be a float > 0 and <= 1.0 specifying when to resize the | ||
| 8914 | hash table. It is resized when the ratio of (number of entries) / | ||
| 8915 | (size of hash table) is >= THRESHOLD. Default threshold is 0.8. | ||
| 8916 | |||
| 8917 | :weakness WEAK | ||
| 8918 | |||
| 8919 | WEAK must be either nil, one of the symbols `key, `value', | ||
| 8920 | `key-or-value', `key-and-value', or t, meaning the same as | ||
| 8921 | `key-and-value'. Entries are removed from weak tables during garbage | ||
| 8922 | collection if their key and/or value are not referenced elsewhere | ||
| 8923 | outside of the hash table. Default are non-weak hash tables. | ||
| 8924 | |||
| 8925 | - Function: makehash &optional TEST | ||
| 8926 | |||
| 8927 | Similar to make-hash-table, but only TEST can be specified. | ||
| 8928 | |||
| 8929 | - Function: hash-table-p TABLE | ||
| 8930 | |||
| 8931 | Returns non-nil if TABLE is a hash table object. | ||
| 8932 | |||
| 8933 | - Function: copy-hash-table TABLE | ||
| 8934 | |||
| 8935 | Returns a copy of TABLE. Only the table itself is copied, keys and | ||
| 8936 | values are shared. | ||
| 8937 | |||
| 8938 | - Function: hash-table-count TABLE | ||
| 8939 | |||
| 8940 | Returns the number of entries in TABLE. | ||
| 8941 | |||
| 8942 | - Function: hash-table-rehash-size TABLE | ||
| 8943 | |||
| 8944 | Returns the rehash size of TABLE. | ||
| 8945 | |||
| 8946 | - Function: hash-table-rehash-threshold TABLE | ||
| 8947 | |||
| 8948 | Returns the rehash threshold of TABLE. | ||
| 8949 | |||
| 8950 | - Function: hash-table-rehash-size TABLE | ||
| 8951 | |||
| 8952 | Returns the size of TABLE. | ||
| 8953 | |||
| 8954 | - Function: hash-table-test TABLE | ||
| 8955 | |||
| 8956 | Returns the test TABLE uses to compare keys. | ||
| 8957 | |||
| 8958 | - Function: hash-table-weakness TABLE | ||
| 8959 | |||
| 8960 | Returns the weakness specified for TABLE. | ||
| 8961 | |||
| 8962 | - Function: clrhash TABLE | ||
| 8963 | |||
| 8964 | Clear TABLE. | ||
| 8965 | |||
| 8966 | - Function: gethash KEY TABLE &optional DEFAULT | ||
| 8967 | |||
| 8968 | Look up KEY in TABLE and return its associated VALUE or DEFAULT if | ||
| 8969 | not found. | ||
| 8970 | |||
| 8971 | - Function: puthash KEY VALUE TABLE | ||
| 8972 | |||
| 8973 | Associate KEY with VALUE in TABLE. If KEY is already associated with | ||
| 8974 | another value, replace the old value with VALUE. | ||
| 8975 | |||
| 8976 | - Function: remhash KEY TABLE | ||
| 8977 | |||
| 8978 | Remove KEY from TABLE if it is there. | ||
| 8979 | |||
| 8980 | - Function: maphash FUNCTION TABLE | ||
| 8981 | |||
| 8982 | Call FUNCTION for all elements in TABLE. FUNCTION must take two | ||
| 8983 | arguments KEY and VALUE. | ||
| 8984 | |||
| 8985 | - Function: sxhash OBJ | ||
| 8986 | |||
| 8987 | Return a hash code for Lisp object OBJ. | ||
| 8988 | |||
| 8989 | - Function: define-hash-table-test NAME TEST-FN HASH-FN | ||
| 8990 | |||
| 8991 | Define a new hash table test named NAME. If NAME is specified as | ||
| 8992 | a test in `make-hash-table', the table created will use TEST-FN for | ||
| 8993 | comparing keys, and HASH-FN to compute hash codes for keys. Test | ||
| 8994 | and hash function are stored as symbol property `hash-table-test' | ||
| 8995 | of NAME with a value of (TEST-FN HASH-FN). | ||
| 8996 | |||
| 8997 | TEST-FN must take two arguments and return non-nil if they are the same. | ||
| 8998 | |||
| 8999 | HASH-FN must take one argument and return an integer that is the hash | ||
| 9000 | code of the argument. The function should use the whole range of | ||
| 9001 | integer values for hash code computation, including negative integers. | ||
| 9002 | |||
| 9003 | Example: The following creates a hash table whose keys are supposed to | ||
| 9004 | be strings that are compared case-insensitively. | ||
| 9005 | |||
| 9006 | (defun case-fold-string= (a b) | ||
| 9007 | (compare-strings a nil nil b nil nil t)) | ||
| 9008 | |||
| 9009 | (defun case-fold-string-hash (a) | ||
| 9010 | (sxhash (upcase a))) | ||
| 9011 | |||
| 9012 | (define-hash-table-test 'case-fold 'case-fold-string= | ||
| 9013 | 'case-fold-string-hash)) | ||
| 9014 | |||
| 9015 | (make-hash-table :test 'case-fold) | ||
| 9016 | |||
| 9017 | ** The Lisp reader handles circular structure. | ||
| 9018 | |||
| 9019 | It now works to use the #N= and #N# constructs to represent | ||
| 9020 | circular structures. For example, #1=(a . #1#) represents | ||
| 9021 | a cons cell which is its own cdr. | ||
| 9022 | |||
| 9023 | ** The Lisp printer handles circular structure. | ||
| 9024 | |||
| 9025 | If you bind print-circle to a non-nil value, the Lisp printer outputs | ||
| 9026 | #N= and #N# constructs to represent circular and shared structure. | ||
| 9027 | |||
| 9028 | ** If the second argument to `move-to-column' is anything but nil or | ||
| 9029 | t, that means replace a tab with spaces if necessary to reach the | ||
| 9030 | specified column, but do not add spaces at the end of the line if it | ||
| 9031 | is too short to reach that column. | ||
| 9032 | |||
| 9033 | ** perform-replace has a new feature: the REPLACEMENTS argument may | ||
| 9034 | now be a cons cell (FUNCTION . DATA). This means to call FUNCTION | ||
| 9035 | after each match to get the replacement text. FUNCTION is called with | ||
| 9036 | two arguments: DATA, and the number of replacements already made. | ||
| 9037 | |||
| 9038 | If the FROM-STRING contains any upper-case letters, | ||
| 9039 | perform-replace also turns off `case-fold-search' temporarily | ||
| 9040 | and inserts the replacement text without altering case in it. | ||
| 9041 | |||
| 9042 | ** The function buffer-size now accepts an optional argument | ||
| 9043 | to specify which buffer to return the size of. | ||
| 9044 | |||
| 9045 | ** The calendar motion commands now run the normal hook | ||
| 9046 | calendar-move-hook after moving point. | ||
| 9047 | |||
| 9048 | ** The new variable small-temporary-file-directory specifies a | ||
| 9049 | directory to use for creating temporary files that are likely to be | ||
| 9050 | small. (Certain Emacs features use this directory.) If | ||
| 9051 | small-temporary-file-directory is nil, they use | ||
| 9052 | temporary-file-directory instead. | ||
| 9053 | |||
| 9054 | ** The variable `inhibit-modification-hooks', if non-nil, inhibits all | ||
| 9055 | the hooks that track changes in the buffer. This affects | ||
| 9056 | `before-change-functions' and `after-change-functions', as well as | ||
| 9057 | hooks attached to text properties and overlay properties. | ||
| 9058 | |||
| 9059 | ** assq-delete-all is a new function that deletes all the | ||
| 9060 | elements of an alist which have a car `eq' to a particular value. | ||
| 9061 | |||
| 9062 | ** make-temp-file provides a more reliable way to create a temporary file. | ||
| 9063 | |||
| 9064 | make-temp-file is used like make-temp-name, except that it actually | ||
| 9065 | creates the file before it returns. This prevents a timing error, | ||
| 9066 | ensuring that no other job can use the same name for a temporary file. | ||
| 9067 | |||
| 9068 | ** New exclusive-open feature in `write-region' | ||
| 9069 | |||
| 9070 | The optional seventh arg is now called MUSTBENEW. If non-nil, it insists | ||
| 9071 | on a check for an existing file with the same name. If MUSTBENEW | ||
| 9072 | is `excl', that means to get an error if the file already exists; | ||
| 9073 | never overwrite. If MUSTBENEW is neither nil nor `excl', that means | ||
| 9074 | ask for confirmation before overwriting, but do go ahead and | ||
| 9075 | overwrite the file if the user gives confirmation. | ||
| 9076 | |||
| 9077 | If the MUSTBENEW argument in `write-region' is `excl', | ||
| 9078 | that means to use a special feature in the `open' system call | ||
| 9079 | to get an error if the file exists at that time. | ||
| 9080 | The error reported is `file-already-exists'. | ||
| 9081 | |||
| 9082 | ** Function `format' now handles text properties. | ||
| 9083 | |||
| 9084 | Text properties of the format string are applied to the result string. | ||
| 9085 | If the result string is longer than the format string, text properties | ||
| 9086 | ending at the end of the format string are extended to the end of the | ||
| 9087 | result string. | ||
| 9088 | |||
| 9089 | Text properties from string arguments are applied to the result | ||
| 9090 | string where arguments appear in the result string. | ||
| 9091 | |||
| 9092 | Example: | ||
| 9093 | |||
| 9094 | (let ((s1 "hello, %s") | ||
| 9095 | (s2 "world")) | ||
| 9096 | (put-text-property 0 (length s1) 'face 'bold s1) | ||
| 9097 | (put-text-property 0 (length s2) 'face 'italic s2) | ||
| 9098 | (format s1 s2)) | ||
| 9099 | |||
| 9100 | results in a bold-face string with an italic `world' at the end. | ||
| 9101 | |||
| 9102 | ** Messages can now be displayed with text properties. | ||
| 9103 | |||
| 9104 | Text properties are handled as described above for function `format'. | ||
| 9105 | The following example displays a bold-face message with an italic | ||
| 9106 | argument in it. | ||
| 9107 | |||
| 9108 | (let ((msg "hello, %s!") | ||
| 9109 | (arg "world")) | ||
| 9110 | (put-text-property 0 (length msg) 'face 'bold msg) | ||
| 9111 | (put-text-property 0 (length arg) 'face 'italic arg) | ||
| 9112 | (message msg arg)) | ||
| 9113 | |||
| 9114 | ** Sound support | ||
| 9115 | |||
| 9116 | Emacs supports playing sound files on GNU/Linux and the free BSDs | ||
| 9117 | (Voxware driver and native BSD driver, aka as Luigi's driver). | ||
| 9118 | |||
| 9119 | Currently supported file formats are RIFF-WAVE (*.wav) and Sun Audio | ||
| 9120 | (*.au). You must configure Emacs with the option `--with-sound=yes' | ||
| 9121 | to enable sound support. | ||
| 9122 | |||
| 9123 | Sound files can be played by calling (play-sound SOUND). SOUND is a | ||
| 9124 | list of the form `(sound PROPERTY...)'. The function is only defined | ||
| 9125 | when sound support is present for the system on which Emacs runs. The | ||
| 9126 | functions runs `play-sound-functions' with one argument which is the | ||
| 9127 | sound to play, before playing the sound. | ||
| 9128 | |||
| 9129 | The following sound properties are supported: | ||
| 9130 | |||
| 9131 | - `:file FILE' | ||
| 9132 | |||
| 9133 | FILE is a file name. If FILE isn't an absolute name, it will be | ||
| 9134 | searched relative to `data-directory'. | ||
| 9135 | |||
| 9136 | - `:data DATA' | ||
| 9137 | |||
| 9138 | DATA is a string containing sound data. Either :file or :data | ||
| 9139 | may be present, but not both. | ||
| 9140 | |||
| 9141 | - `:volume VOLUME' | ||
| 9142 | |||
| 9143 | VOLUME must be an integer in the range 0..100 or a float in the range | ||
| 9144 | 0..1. This property is optional. | ||
| 9145 | |||
| 9146 | - `:device DEVICE' | ||
| 9147 | |||
| 9148 | DEVICE is a string specifying the system device on which to play the | ||
| 9149 | sound. The default device is system-dependent. | ||
| 9150 | |||
| 9151 | Other properties are ignored. | ||
| 9152 | |||
| 9153 | An alternative interface is called as | ||
| 9154 | (play-sound-file FILE &optional VOLUME DEVICE). | ||
| 9155 | |||
| 9156 | ** `multimedia' is a new Finder keyword and Custom group. | ||
| 9157 | |||
| 9158 | ** keywordp is a new predicate to test efficiently for an object being | ||
| 9159 | a keyword symbol. | ||
| 9160 | |||
| 9161 | ** Changes to garbage collection | ||
| 9162 | |||
| 9163 | *** The function garbage-collect now additionally returns the number | ||
| 9164 | of live and free strings. | ||
| 9165 | |||
| 9166 | *** There is a new variable `strings-consed' holding the number of | ||
| 9167 | strings that have been consed so far. | ||
| 9168 | |||
| 9169 | |||
| 9170 | * Lisp-level Display features added after release 2.6 of the Emacs | ||
| 9171 | Lisp Manual | ||
| 9172 | |||
| 9173 | ** The user-option `resize-mini-windows' controls how Emacs resizes | ||
| 9174 | mini-windows. | ||
| 9175 | |||
| 9176 | ** The function `pos-visible-in-window-p' now has a third optional | ||
| 9177 | argument, PARTIALLY. If a character is only partially visible, nil is | ||
| 9178 | returned, unless PARTIALLY is non-nil. | ||
| 9179 | |||
| 9180 | ** On window systems, `glyph-table' is no longer used. | ||
| 9181 | |||
| 9182 | ** Help strings in menu items are now used to provide `help-echo' text. | ||
| 9183 | |||
| 9184 | ** The function `image-size' can be used to determine the size of an | ||
| 9185 | image. | ||
| 9186 | |||
| 9187 | - Function: image-size SPEC &optional PIXELS FRAME | ||
| 9188 | |||
| 9189 | Return the size of an image as a pair (WIDTH . HEIGHT). | ||
| 9190 | |||
| 9191 | SPEC is an image specification. PIXELS non-nil means return sizes | ||
| 9192 | measured in pixels, otherwise return sizes measured in canonical | ||
| 9193 | character units (fractions of the width/height of the frame's default | ||
| 9194 | font). FRAME is the frame on which the image will be displayed. | ||
| 9195 | FRAME nil or omitted means use the selected frame. | ||
| 9196 | |||
| 9197 | ** The function `image-mask-p' can be used to determine if an image | ||
| 9198 | has a mask bitmap. | ||
| 9199 | |||
| 9200 | - Function: image-mask-p SPEC &optional FRAME | ||
| 9201 | |||
| 9202 | Return t if image SPEC has a mask bitmap. | ||
| 9203 | FRAME is the frame on which the image will be displayed. FRAME nil | ||
| 9204 | or omitted means use the selected frame. | ||
| 9205 | |||
| 9206 | ** The function `find-image' can be used to find a usable image | ||
| 9207 | satisfying one of a list of specifications. | ||
| 9208 | |||
| 9209 | ** The STRING argument of `put-image' and `insert-image' is now | ||
| 9210 | optional. | ||
| 9211 | |||
| 9212 | ** Image specifications may contain the property `:ascent center' (see | ||
| 9213 | below). | ||
| 9214 | 5666 | ||
| 9215 | 5667 | ||
| 9216 | * New Lisp-level Display features in Emacs 21.1 | ||
| 9217 | |||
| 9218 | ** The function tty-suppress-bold-inverse-default-colors can be used | ||
| 9219 | to make Emacs avoid displaying text with bold black foreground on TTYs. | ||
| 9220 | |||
| 9221 | Some terminals, notably PC consoles, emulate bold text by displaying | ||
| 9222 | text in brighter colors. On such a console, a bold black foreground | ||
| 9223 | is displayed in a gray color. If this turns out to be hard to read on | ||
| 9224 | your monitor---the problem occurred with the mode line on | ||
| 9225 | laptops---you can instruct Emacs to ignore the text's boldness, and to | ||
| 9226 | just display it black instead. | ||
| 9227 | |||
| 9228 | This situation can't be detected automatically. You will have to put | ||
| 9229 | a line like | ||
| 9230 | |||
| 9231 | (tty-suppress-bold-inverse-default-colors t) | ||
| 9232 | |||
| 9233 | in your `.emacs'. | ||
| 9234 | |||
| 9235 | ** New face implementation. | ||
| 9236 | |||
| 9237 | Emacs faces have been reimplemented from scratch. They don't use XLFD | ||
| 9238 | font names anymore and face merging now works as expected. | ||
| 9239 | |||
| 9240 | *** New faces. | ||
| 9241 | |||
| 9242 | Each face can specify the following display attributes: | ||
| 9243 | |||
| 9244 | 1. Font family or fontset alias name. | ||
| 9245 | |||
| 9246 | 2. Relative proportionate width, aka character set width or set | ||
| 9247 | width (swidth), e.g. `semi-compressed'. | ||
| 9248 | |||
| 9249 | 3. Font height in 1/10pt | ||
| 9250 | |||
| 9251 | 4. Font weight, e.g. `bold'. | ||
| 9252 | |||
| 9253 | 5. Font slant, e.g. `italic'. | ||
| 9254 | |||
| 9255 | 6. Foreground color. | ||
| 9256 | |||
| 9257 | 7. Background color. | ||
| 9258 | |||
| 9259 | 8. Whether or not characters should be underlined, and in what color. | ||
| 9260 | |||
| 9261 | 9. Whether or not characters should be displayed in inverse video. | ||
| 9262 | |||
| 9263 | 10. A background stipple, a bitmap. | ||
| 9264 | |||
| 9265 | 11. Whether or not characters should be overlined, and in what color. | ||
| 9266 | |||
| 9267 | 12. Whether or not characters should be strike-through, and in what | ||
| 9268 | color. | ||
| 9269 | |||
| 9270 | 13. Whether or not a box should be drawn around characters, its | ||
| 9271 | color, the width of the box lines, and 3D appearance. | ||
| 9272 | |||
| 9273 | Faces are frame-local by nature because Emacs allows to define the | ||
| 9274 | same named face (face names are symbols) differently for different | ||
| 9275 | frames. Each frame has an alist of face definitions for all named | ||
| 9276 | faces. The value of a named face in such an alist is a Lisp vector | ||
| 9277 | with the symbol `face' in slot 0, and a slot for each of the face | ||
| 9278 | attributes mentioned above. | ||
| 9279 | |||
| 9280 | There is also a global face alist `face-new-frame-defaults'. Face | ||
| 9281 | definitions from this list are used to initialize faces of newly | ||
| 9282 | created frames. | ||
| 9283 | |||
| 9284 | A face doesn't have to specify all attributes. Those not specified | ||
| 9285 | have a nil value. Faces specifying all attributes are called | ||
| 9286 | `fully-specified'. | ||
| 9287 | |||
| 9288 | *** Face merging. | ||
| 9289 | |||
| 9290 | The display style of a given character in the text is determined by | ||
| 9291 | combining several faces. This process is called `face merging'. Any | ||
| 9292 | aspect of the display style that isn't specified by overlays or text | ||
| 9293 | properties is taken from the `default' face. Since it is made sure | ||
| 9294 | that the default face is always fully-specified, face merging always | ||
| 9295 | results in a fully-specified face. | ||
| 9296 | |||
| 9297 | *** Face realization. | ||
| 9298 | |||
| 9299 | After all face attributes for a character have been determined by | ||
| 9300 | merging faces of that character, that face is `realized'. The | ||
| 9301 | realization process maps face attributes to what is physically | ||
| 9302 | available on the system where Emacs runs. The result is a `realized | ||
| 9303 | face' in form of an internal structure which is stored in the face | ||
| 9304 | cache of the frame on which it was realized. | ||
| 9305 | |||
| 9306 | Face realization is done in the context of the charset of the | ||
| 9307 | character to display because different fonts and encodings are used | ||
| 9308 | for different charsets. In other words, for characters of different | ||
| 9309 | charsets, different realized faces are needed to display them. | ||
| 9310 | |||
| 9311 | Except for composite characters, faces are always realized for a | ||
| 9312 | specific character set and contain a specific font, even if the face | ||
| 9313 | being realized specifies a fontset. The reason is that the result of | ||
| 9314 | the new font selection stage is better than what can be done with | ||
| 9315 | statically defined font name patterns in fontsets. | ||
| 9316 | |||
| 9317 | In unibyte text, Emacs' charsets aren't applicable; function | ||
| 9318 | `char-charset' reports ASCII for all characters, including those > | ||
| 9319 | 0x7f. The X registry and encoding of fonts to use is determined from | ||
| 9320 | the variable `face-default-registry' in this case. The variable is | ||
| 9321 | initialized at Emacs startup time from the font the user specified for | ||
| 9322 | Emacs. | ||
| 9323 | |||
| 9324 | Currently all unibyte text, i.e. all buffers with | ||
| 9325 | `enable-multibyte-characters' nil are displayed with fonts of the same | ||
| 9326 | registry and encoding `face-default-registry'. This is consistent | ||
| 9327 | with the fact that languages can also be set globally, only. | ||
| 9328 | |||
| 9329 | **** Clearing face caches. | ||
| 9330 | |||
| 9331 | The Lisp function `clear-face-cache' can be called to clear face caches | ||
| 9332 | on all frames. If called with a non-nil argument, it will also unload | ||
| 9333 | unused fonts. | ||
| 9334 | |||
| 9335 | *** Font selection. | ||
| 9336 | |||
| 9337 | Font selection tries to find the best available matching font for a | ||
| 9338 | given (charset, face) combination. This is done slightly differently | ||
| 9339 | for faces specifying a fontset, or a font family name. | ||
| 9340 | |||
| 9341 | If the face specifies a fontset name, that fontset determines a | ||
| 9342 | pattern for fonts of the given charset. If the face specifies a font | ||
| 9343 | family, a font pattern is constructed. Charset symbols have a | ||
| 9344 | property `x-charset-registry' for that purpose that maps a charset to | ||
| 9345 | an XLFD registry and encoding in the font pattern constructed. | ||
| 9346 | |||
| 9347 | Available fonts on the system on which Emacs runs are then matched | ||
| 9348 | against the font pattern. The result of font selection is the best | ||
| 9349 | match for the given face attributes in this font list. | ||
| 9350 | |||
| 9351 | Font selection can be influenced by the user. | ||
| 9352 | |||
| 9353 | The user can specify the relative importance he gives the face | ||
| 9354 | attributes width, height, weight, and slant by setting | ||
| 9355 | face-font-selection-order (faces.el) to a list of face attribute | ||
| 9356 | names. The default is (:width :height :weight :slant), and means | ||
| 9357 | that font selection first tries to find a good match for the font | ||
| 9358 | width specified by a face, then---within fonts with that width---tries | ||
| 9359 | to find a best match for the specified font height, etc. | ||
| 9360 | |||
| 9361 | Setting `face-font-family-alternatives' allows the user to specify | ||
| 9362 | alternative font families to try if a family specified by a face | ||
| 9363 | doesn't exist. | ||
| 9364 | |||
| 9365 | Setting `face-font-registry-alternatives' allows the user to specify | ||
| 9366 | all alternative font registry names to try for a face specifying a | ||
| 9367 | registry. | ||
| 9368 | |||
| 9369 | Please note that the interpretations of the above two variables are | ||
| 9370 | slightly different. | ||
| 9371 | |||
| 9372 | Setting face-ignored-fonts allows the user to ignore specific fonts. | ||
| 9373 | |||
| 9374 | |||
| 9375 | **** Scalable fonts | ||
| 9376 | |||
| 9377 | Emacs can make use of scalable fonts but doesn't do so by default, | ||
| 9378 | since the use of too many or too big scalable fonts may crash XFree86 | ||
| 9379 | servers. | ||
| 9380 | |||
| 9381 | To enable scalable font use, set the variable | ||
| 9382 | `scalable-fonts-allowed'. A value of nil, the default, means never use | ||
| 9383 | scalable fonts. A value of t means any scalable font may be used. | ||
| 9384 | Otherwise, the value must be a list of regular expressions. A | ||
| 9385 | scalable font may then be used if it matches a regular expression from | ||
| 9386 | that list. Example: | ||
| 9387 | |||
| 9388 | (setq scalable-fonts-allowed '("muleindian-2$")) | ||
| 9389 | |||
| 9390 | allows the use of scalable fonts with registry `muleindian-2'. | ||
| 9391 | |||
| 9392 | *** Functions and variables related to font selection. | ||
| 9393 | |||
| 9394 | - Function: x-family-fonts &optional FAMILY FRAME | ||
| 9395 | |||
| 9396 | Return a list of available fonts of family FAMILY on FRAME. If FAMILY | ||
| 9397 | is omitted or nil, list all families. Otherwise, FAMILY must be a | ||
| 9398 | string, possibly containing wildcards `?' and `*'. | ||
| 9399 | |||
| 9400 | If FRAME is omitted or nil, use the selected frame. Each element of | ||
| 9401 | the result is a vector [FAMILY WIDTH POINT-SIZE WEIGHT SLANT FIXED-P | ||
| 9402 | FULL REGISTRY-AND-ENCODING]. FAMILY is the font family name. | ||
| 9403 | POINT-SIZE is the size of the font in 1/10 pt. WIDTH, WEIGHT, and | ||
| 9404 | SLANT are symbols describing the width, weight and slant of the font. | ||
| 9405 | These symbols are the same as for face attributes. FIXED-P is non-nil | ||
| 9406 | if the font is fixed-pitch. FULL is the full name of the font, and | ||
| 9407 | REGISTRY-AND-ENCODING is a string giving the registry and encoding of | ||
| 9408 | the font. The result list is sorted according to the current setting | ||
| 9409 | of the face font sort order. | ||
| 9410 | |||
| 9411 | - Function: x-font-family-list | ||
| 9412 | |||
| 9413 | Return a list of available font families on FRAME. If FRAME is | ||
| 9414 | omitted or nil, use the selected frame. Value is a list of conses | ||
| 9415 | (FAMILY . FIXED-P) where FAMILY is a font family, and FIXED-P is | ||
| 9416 | non-nil if fonts of that family are fixed-pitch. | ||
| 9417 | |||
| 9418 | - Variable: font-list-limit | ||
| 9419 | |||
| 9420 | Limit for font matching. If an integer > 0, font matching functions | ||
| 9421 | won't load more than that number of fonts when searching for a | ||
| 9422 | matching font. The default is currently 100. | ||
| 9423 | |||
| 9424 | *** Setting face attributes. | ||
| 9425 | |||
| 9426 | For the most part, the new face implementation is interface-compatible | ||
| 9427 | with the old one. Old face attribute related functions are now | ||
| 9428 | implemented in terms of the new functions `set-face-attribute' and | ||
| 9429 | `face-attribute'. | ||
| 9430 | |||
| 9431 | Face attributes are identified by their names which are keyword | ||
| 9432 | symbols. All attributes can be set to `unspecified'. | ||
| 9433 | |||
| 9434 | The following attributes are recognized: | ||
| 9435 | |||
| 9436 | `:family' | ||
| 9437 | |||
| 9438 | VALUE must be a string specifying the font family, e.g. ``courier'', | ||
| 9439 | or a fontset alias name. If a font family is specified, wild-cards `*' | ||
| 9440 | and `?' are allowed. | ||
| 9441 | |||
| 9442 | `:width' | ||
| 9443 | |||
| 9444 | VALUE specifies the relative proportionate width of the font to use. | ||
| 9445 | It must be one of the symbols `ultra-condensed', `extra-condensed', | ||
| 9446 | `condensed', `semi-condensed', `normal', `semi-expanded', `expanded', | ||
| 9447 | `extra-expanded', or `ultra-expanded'. | ||
| 9448 | |||
| 9449 | `:height' | ||
| 9450 | |||
| 9451 | VALUE must be either an integer specifying the height of the font to use | ||
| 9452 | in 1/10 pt, a floating point number specifying the amount by which to | ||
| 9453 | scale any underlying face, or a function, which is called with the old | ||
| 9454 | height (from the underlying face), and should return the new height. | ||
| 9455 | |||
| 9456 | `:weight' | ||
| 9457 | |||
| 9458 | VALUE specifies the weight of the font to use. It must be one of the | ||
| 9459 | symbols `ultra-bold', `extra-bold', `bold', `semi-bold', `normal', | ||
| 9460 | `semi-light', `light', `extra-light', `ultra-light'. | ||
| 9461 | |||
| 9462 | `:slant' | ||
| 9463 | |||
| 9464 | VALUE specifies the slant of the font to use. It must be one of the | ||
| 9465 | symbols `italic', `oblique', `normal', `reverse-italic', or | ||
| 9466 | `reverse-oblique'. | ||
| 9467 | |||
| 9468 | `:foreground', `:background' | ||
| 9469 | |||
| 9470 | VALUE must be a color name, a string. | ||
| 9471 | |||
| 9472 | `:underline' | ||
| 9473 | |||
| 9474 | VALUE specifies whether characters in FACE should be underlined. If | ||
| 9475 | VALUE is t, underline with foreground color of the face. If VALUE is | ||
| 9476 | a string, underline with that color. If VALUE is nil, explicitly | ||
| 9477 | don't underline. | ||
| 9478 | |||
| 9479 | `:overline' | ||
| 9480 | |||
| 9481 | VALUE specifies whether characters in FACE should be overlined. If | ||
| 9482 | VALUE is t, overline with foreground color of the face. If VALUE is a | ||
| 9483 | string, overline with that color. If VALUE is nil, explicitly don't | ||
| 9484 | overline. | ||
| 9485 | |||
| 9486 | `:strike-through' | ||
| 9487 | |||
| 9488 | VALUE specifies whether characters in FACE should be drawn with a line | ||
| 9489 | striking through them. If VALUE is t, use the foreground color of the | ||
| 9490 | face. If VALUE is a string, strike-through with that color. If VALUE | ||
| 9491 | is nil, explicitly don't strike through. | ||
| 9492 | |||
| 9493 | `:box' | ||
| 9494 | |||
| 9495 | VALUE specifies whether characters in FACE should have a box drawn | ||
| 9496 | around them. If VALUE is nil, explicitly don't draw boxes. If | ||
| 9497 | VALUE is t, draw a box with lines of width 1 in the foreground color | ||
| 9498 | of the face. If VALUE is a string, the string must be a color name, | ||
| 9499 | and the box is drawn in that color with a line width of 1. Otherwise, | ||
| 9500 | VALUE must be a property list of the form `(:line-width WIDTH | ||
| 9501 | :color COLOR :style STYLE)'. If a keyword/value pair is missing from | ||
| 9502 | the property list, a default value will be used for the value, as | ||
| 9503 | specified below. WIDTH specifies the width of the lines to draw; it | ||
| 9504 | defaults to 1. COLOR is the name of the color to draw in, default is | ||
| 9505 | the foreground color of the face for simple boxes, and the background | ||
| 9506 | color of the face for 3D boxes. STYLE specifies whether a 3D box | ||
| 9507 | should be draw. If STYLE is `released-button', draw a box looking | ||
| 9508 | like a released 3D button. If STYLE is `pressed-button' draw a box | ||
| 9509 | that appears like a pressed button. If STYLE is nil, the default if | ||
| 9510 | the property list doesn't contain a style specification, draw a 2D | ||
| 9511 | box. | ||
| 9512 | |||
| 9513 | `:inverse-video' | ||
| 9514 | |||
| 9515 | VALUE specifies whether characters in FACE should be displayed in | ||
| 9516 | inverse video. VALUE must be one of t or nil. | ||
| 9517 | |||
| 9518 | `:stipple' | ||
| 9519 | |||
| 9520 | If VALUE is a string, it must be the name of a file of pixmap data. | ||
| 9521 | The directories listed in the `x-bitmap-file-path' variable are | ||
| 9522 | searched. Alternatively, VALUE may be a list of the form (WIDTH | ||
| 9523 | HEIGHT DATA) where WIDTH and HEIGHT are the size in pixels, and DATA | ||
| 9524 | is a string containing the raw bits of the bitmap. VALUE nil means | ||
| 9525 | explicitly don't use a stipple pattern. | ||
| 9526 | |||
| 9527 | For convenience, attributes `:family', `:width', `:height', `:weight', | ||
| 9528 | and `:slant' may also be set in one step from an X font name: | ||
| 9529 | |||
| 9530 | `:font' | ||
| 9531 | |||
| 9532 | Set font-related face attributes from VALUE. VALUE must be a valid | ||
| 9533 | XLFD font name. If it is a font name pattern, the first matching font | ||
| 9534 | is used--this is for compatibility with the behavior of previous | ||
| 9535 | versions of Emacs. | ||
| 9536 | |||
| 9537 | For compatibility with Emacs 20, keywords `:bold' and `:italic' can | ||
| 9538 | be used to specify that a bold or italic font should be used. VALUE | ||
| 9539 | must be t or nil in that case. A value of `unspecified' is not allowed." | ||
| 9540 | |||
| 9541 | Please see also the documentation of `set-face-attribute' and | ||
| 9542 | `defface'. | ||
| 9543 | |||
| 9544 | `:inherit' | ||
| 9545 | |||
| 9546 | VALUE is the name of a face from which to inherit attributes, or a list | ||
| 9547 | of face names. Attributes from inherited faces are merged into the face | ||
| 9548 | like an underlying face would be, with higher priority than underlying faces. | ||
| 9549 | |||
| 9550 | *** Face attributes and X resources | ||
| 9551 | |||
| 9552 | The following X resource names can be used to set face attributes | ||
| 9553 | from X resources: | ||
| 9554 | |||
| 9555 | Face attribute X resource class | ||
| 9556 | ----------------------------------------------------------------------- | ||
| 9557 | :family attributeFamily . Face.AttributeFamily | ||
| 9558 | :width attributeWidth Face.AttributeWidth | ||
| 9559 | :height attributeHeight Face.AttributeHeight | ||
| 9560 | :weight attributeWeight Face.AttributeWeight | ||
| 9561 | :slant attributeSlant Face.AttributeSlant | ||
| 9562 | foreground attributeForeground Face.AttributeForeground | ||
| 9563 | :background attributeBackground . Face.AttributeBackground | ||
| 9564 | :overline attributeOverline Face.AttributeOverline | ||
| 9565 | :strike-through attributeStrikeThrough Face.AttributeStrikeThrough | ||
| 9566 | :box attributeBox Face.AttributeBox | ||
| 9567 | :underline attributeUnderline Face.AttributeUnderline | ||
| 9568 | :inverse-video attributeInverse Face.AttributeInverse | ||
| 9569 | :stipple attributeStipple Face.AttributeStipple | ||
| 9570 | or attributeBackgroundPixmap | ||
| 9571 | Face.AttributeBackgroundPixmap | ||
| 9572 | :font attributeFont Face.AttributeFont | ||
| 9573 | :bold attributeBold Face.AttributeBold | ||
| 9574 | :italic attributeItalic . Face.AttributeItalic | ||
| 9575 | :font attributeFont Face.AttributeFont | ||
| 9576 | |||
| 9577 | *** Text property `face'. | ||
| 9578 | |||
| 9579 | The value of the `face' text property can now be a single face | ||
| 9580 | specification or a list of such specifications. Each face | ||
| 9581 | specification can be | ||
| 9582 | |||
| 9583 | 1. A symbol or string naming a Lisp face. | ||
| 9584 | |||
| 9585 | 2. A property list of the form (KEYWORD VALUE ...) where each | ||
| 9586 | KEYWORD is a face attribute name, and VALUE is an appropriate value | ||
| 9587 | for that attribute. Please see the doc string of `set-face-attribute' | ||
| 9588 | for face attribute names. | ||
| 9589 | |||
| 9590 | 3. Conses of the form (FOREGROUND-COLOR . COLOR) or | ||
| 9591 | (BACKGROUND-COLOR . COLOR) where COLOR is a color name. This is | ||
| 9592 | for compatibility with previous Emacs versions. | ||
| 9593 | |||
| 9594 | ** Support functions for colors on text-only terminals. | ||
| 9595 | |||
| 9596 | The function `tty-color-define' can be used to define colors for use | ||
| 9597 | on TTY and MSDOS frames. It maps a color name to a color number on | ||
| 9598 | the terminal. Emacs defines a couple of common color mappings by | ||
| 9599 | default. You can get defined colors with a call to | ||
| 9600 | `defined-colors'. The function `tty-color-clear' can be | ||
| 9601 | used to clear the mapping table. | ||
| 9602 | |||
| 9603 | ** Unified support for colors independent of frame type. | ||
| 9604 | |||
| 9605 | The new functions `defined-colors', `color-defined-p', `color-values', | ||
| 9606 | and `display-color-p' work for any type of frame. On frames whose | ||
| 9607 | type is neither x nor w32, these functions transparently map X-style | ||
| 9608 | color specifications to the closest colors supported by the frame | ||
| 9609 | display. Lisp programs should use these new functions instead of the | ||
| 9610 | old `x-defined-colors', `x-color-defined-p', `x-color-values', and | ||
| 9611 | `x-display-color-p'. (The old function names are still available for | ||
| 9612 | compatibility; they are now aliases of the new names.) Lisp programs | ||
| 9613 | should no more look at the value of the variable window-system to | ||
| 9614 | modify their color-related behavior. | ||
| 9615 | |||
| 9616 | The primitives `color-gray-p' and `color-supported-p' also work for | ||
| 9617 | any frame type. | ||
| 9618 | |||
| 9619 | ** Platform-independent functions to describe display capabilities. | ||
| 9620 | |||
| 9621 | The new functions `display-mouse-p', `display-popup-menus-p', | ||
| 9622 | `display-graphic-p', `display-selections-p', `display-screens', | ||
| 9623 | `display-pixel-width', `display-pixel-height', `display-mm-width', | ||
| 9624 | `display-mm-height', `display-backing-store', `display-save-under', | ||
| 9625 | `display-planes', `display-color-cells', `display-visual-class', and | ||
| 9626 | `display-grayscale-p' describe the basic capabilities of a particular | ||
| 9627 | display. Lisp programs should call these functions instead of testing | ||
| 9628 | the value of the variables `window-system' or `system-type', or calling | ||
| 9629 | platform-specific functions such as `x-display-pixel-width'. | ||
| 9630 | |||
| 9631 | The new function `display-images-p' returns non-nil if a particular | ||
| 9632 | display can display image files. | ||
| 9633 | |||
| 9634 | ** The minibuffer prompt is now actually inserted in the minibuffer. | ||
| 9635 | |||
| 9636 | This makes it possible to scroll through the prompt, if you want to. | ||
| 9637 | To disallow this completely (like previous versions of emacs), customize | ||
| 9638 | the variable `minibuffer-prompt-properties', and turn on the | ||
| 9639 | `Inviolable' option. | ||
| 9640 | |||
| 9641 | The function `minibuffer-prompt-end' returns the current position of the | ||
| 9642 | end of the minibuffer prompt, if the minibuffer is current. | ||
| 9643 | Otherwise, it returns `(point-min)'. | ||
| 9644 | |||
| 9645 | ** New `field' abstraction in buffers. | ||
| 9646 | |||
| 9647 | There is now code to support an abstraction called `fields' in emacs | ||
| 9648 | buffers. A field is a contiguous region of text with the same `field' | ||
| 9649 | property (which can be a text property or an overlay). | ||
| 9650 | |||
| 9651 | Many emacs functions, such as forward-word, forward-sentence, | ||
| 9652 | forward-paragraph, beginning-of-line, etc., stop moving when they come | ||
| 9653 | to the boundary between fields; beginning-of-line and end-of-line will | ||
| 9654 | not let the point move past the field boundary, but other movement | ||
| 9655 | commands continue into the next field if repeated. Stopping at field | ||
| 9656 | boundaries can be suppressed programmatically by binding | ||
| 9657 | `inhibit-field-text-motion' to a non-nil value around calls to these | ||
| 9658 | functions. | ||
| 9659 | |||
| 9660 | Now that the minibuffer prompt is inserted into the minibuffer, it is in | ||
| 9661 | a separate field from the user-input part of the buffer, so that common | ||
| 9662 | editing commands treat the user's text separately from the prompt. | ||
| 9663 | |||
| 9664 | The following functions are defined for operating on fields: | ||
| 9665 | |||
| 9666 | - Function: constrain-to-field NEW-POS OLD-POS &optional ESCAPE-FROM-EDGE ONLY-IN-LINE INHIBIT-CAPTURE-PROPERTY | ||
| 9667 | |||
| 9668 | Return the position closest to NEW-POS that is in the same field as OLD-POS. | ||
| 9669 | |||
| 9670 | A field is a region of text with the same `field' property. | ||
| 9671 | If NEW-POS is nil, then the current point is used instead, and set to the | ||
| 9672 | constrained position if that is different. | ||
| 9673 | |||
| 9674 | If OLD-POS is at the boundary of two fields, then the allowable | ||
| 9675 | positions for NEW-POS depends on the value of the optional argument | ||
| 9676 | ESCAPE-FROM-EDGE: If ESCAPE-FROM-EDGE is nil, then NEW-POS is | ||
| 9677 | constrained to the field that has the same `field' char-property | ||
| 9678 | as any new characters inserted at OLD-POS, whereas if ESCAPE-FROM-EDGE | ||
| 9679 | is non-nil, NEW-POS is constrained to the union of the two adjacent | ||
| 9680 | fields. Additionally, if two fields are separated by another field with | ||
| 9681 | the special value `boundary', then any point within this special field is | ||
| 9682 | also considered to be `on the boundary'. | ||
| 9683 | |||
| 9684 | If the optional argument ONLY-IN-LINE is non-nil and constraining | ||
| 9685 | NEW-POS would move it to a different line, NEW-POS is returned | ||
| 9686 | unconstrained. This useful for commands that move by line, like | ||
| 9687 | C-n or C-a, which should generally respect field boundaries | ||
| 9688 | only in the case where they can still move to the right line. | ||
| 9689 | |||
| 9690 | If the optional argument INHIBIT-CAPTURE-PROPERTY is non-nil, and OLD-POS has | ||
| 9691 | a non-nil property of that name, then any field boundaries are ignored. | ||
| 9692 | |||
| 9693 | Field boundaries are not noticed if `inhibit-field-text-motion' is non-nil. | ||
| 9694 | |||
| 9695 | - Function: delete-field &optional POS | ||
| 9696 | |||
| 9697 | Delete the field surrounding POS. | ||
| 9698 | A field is a region of text with the same `field' property. | ||
| 9699 | If POS is nil, the value of point is used for POS. | ||
| 9700 | |||
| 9701 | - Function: field-beginning &optional POS ESCAPE-FROM-EDGE | ||
| 9702 | |||
| 9703 | Return the beginning of the field surrounding POS. | ||
| 9704 | A field is a region of text with the same `field' property. | ||
| 9705 | If POS is nil, the value of point is used for POS. | ||
| 9706 | If ESCAPE-FROM-EDGE is non-nil and POS is at the beginning of its | ||
| 9707 | field, then the beginning of the *previous* field is returned. | ||
| 9708 | |||
| 9709 | - Function: field-end &optional POS ESCAPE-FROM-EDGE | ||
| 9710 | |||
| 9711 | Return the end of the field surrounding POS. | ||
| 9712 | A field is a region of text with the same `field' property. | ||
| 9713 | If POS is nil, the value of point is used for POS. | ||
| 9714 | If ESCAPE-FROM-EDGE is non-nil and POS is at the end of its field, | ||
| 9715 | then the end of the *following* field is returned. | ||
| 9716 | |||
| 9717 | - Function: field-string &optional POS | ||
| 9718 | |||
| 9719 | Return the contents of the field surrounding POS as a string. | ||
| 9720 | A field is a region of text with the same `field' property. | ||
| 9721 | If POS is nil, the value of point is used for POS. | ||
| 9722 | |||
| 9723 | - Function: field-string-no-properties &optional POS | ||
| 9724 | |||
| 9725 | Return the contents of the field around POS, without text-properties. | ||
| 9726 | A field is a region of text with the same `field' property. | ||
| 9727 | If POS is nil, the value of point is used for POS. | ||
| 9728 | |||
| 9729 | ** Image support. | ||
| 9730 | |||
| 9731 | Emacs can now display images. Images are inserted into text by giving | ||
| 9732 | strings or buffer text a `display' text property containing one of | ||
| 9733 | (AREA IMAGE) or IMAGE. The display of the `display' property value | ||
| 9734 | replaces the display of the characters having that property. | ||
| 9735 | |||
| 9736 | If the property value has the form (AREA IMAGE), AREA must be one of | ||
| 9737 | `(margin left-margin)', `(margin right-margin)' or `(margin nil)'. If | ||
| 9738 | AREA is `(margin nil)', IMAGE will be displayed in the text area of a | ||
| 9739 | window, otherwise it will be displayed in the left or right marginal | ||
| 9740 | area. | ||
| 9741 | |||
| 9742 | IMAGE is an image specification. | ||
| 9743 | |||
| 9744 | *** Image specifications | ||
| 9745 | |||
| 9746 | Image specifications are lists of the form `(image PROPS)' where PROPS | ||
| 9747 | is a property list whose keys are keyword symbols. Each | ||
| 9748 | specifications must contain a property `:type TYPE' with TYPE being a | ||
| 9749 | symbol specifying the image type, e.g. `xbm'. Properties not | ||
| 9750 | described below are ignored. | ||
| 9751 | |||
| 9752 | The following is a list of properties all image types share. | ||
| 9753 | |||
| 9754 | `:ascent ASCENT' | ||
| 9755 | |||
| 9756 | ASCENT must be a number in the range 0..100, or the symbol `center'. | ||
| 9757 | If it is a number, it specifies the percentage of the image's height | ||
| 9758 | to use for its ascent. | ||
| 9759 | |||
| 9760 | If not specified, ASCENT defaults to the value 50 which means that the | ||
| 9761 | image will be centered with the base line of the row it appears in. | ||
| 9762 | |||
| 9763 | If ASCENT is `center' the image is vertically centered around a | ||
| 9764 | centerline which is the vertical center of text drawn at the position | ||
| 9765 | of the image, in the manner specified by the text properties and | ||
| 9766 | overlays that apply to the image. | ||
| 9767 | |||
| 9768 | `:margin MARGIN' | ||
| 9769 | |||
| 9770 | MARGIN must be either a number >= 0 specifying how many pixels to put | ||
| 9771 | as margin around the image, or a pair (X . Y) with X specifying the | ||
| 9772 | horizontal margin and Y specifying the vertical margin. Default is 0. | ||
| 9773 | |||
| 9774 | `:relief RELIEF' | ||
| 9775 | |||
| 9776 | RELIEF is analogous to the `:relief' attribute of faces. Puts a relief | ||
| 9777 | around an image. | ||
| 9778 | |||
| 9779 | `:conversion ALGO' | ||
| 9780 | |||
| 9781 | Apply an image algorithm to the image before displaying it. | ||
| 9782 | |||
| 9783 | ALGO `laplace' or `emboss' means apply a Laplace or ``emboss'' | ||
| 9784 | edge-detection algorithm to the image. | ||
| 9785 | |||
| 9786 | ALGO `(edge-detection :matrix MATRIX :color-adjust ADJUST)' means | ||
| 9787 | apply a general edge-detection algorithm. MATRIX must be either a | ||
| 9788 | nine-element list or a nine-element vector of numbers. A pixel at | ||
| 9789 | position x/y in the transformed image is computed from original pixels | ||
| 9790 | around that position. MATRIX specifies, for each pixel in the | ||
| 9791 | neighborhood of x/y, a factor with which that pixel will influence the | ||
| 9792 | transformed pixel; element 0 specifies the factor for the pixel at | ||
| 9793 | x-1/y-1, element 1 the factor for the pixel at x/y-1 etc. as shown | ||
| 9794 | below. | ||
| 9795 | |||
| 9796 | (x-1/y-1 x/y-1 x+1/y-1 | ||
| 9797 | x-1/y x/y x+1/y | ||
| 9798 | x-1/y+1 x/y+1 x+1/y+1) | ||
| 9799 | |||
| 9800 | The resulting pixel is computed from the color intensity of the color | ||
| 9801 | resulting from summing up the RGB values of surrounding pixels, | ||
| 9802 | multiplied by the specified factors, and dividing that sum by the sum | ||
| 9803 | of the factors' absolute values. | ||
| 9804 | |||
| 9805 | Laplace edge-detection currently uses a matrix of | ||
| 9806 | |||
| 9807 | (1 0 0 | ||
| 9808 | 0 0 0 | ||
| 9809 | 9 9 -1) | ||
| 9810 | |||
| 9811 | Emboss edge-detection uses a matrix of | ||
| 9812 | |||
| 9813 | ( 2 -1 0 | ||
| 9814 | -1 0 1 | ||
| 9815 | 0 1 -2) | ||
| 9816 | |||
| 9817 | ALGO `disabled' means transform the image so that it looks | ||
| 9818 | ``disabled''. | ||
| 9819 | |||
| 9820 | `:mask MASK' | ||
| 9821 | |||
| 9822 | If MASK is `heuristic' or `(heuristic BG)', build a clipping mask for | ||
| 9823 | the image, so that the background of a frame is visible behind the | ||
| 9824 | image. If BG is not specified, or if BG is t, determine the | ||
| 9825 | background color of the image by looking at the 4 corners of the | ||
| 9826 | image, assuming the most frequently occurring color from the corners is | ||
| 9827 | the background color of the image. Otherwise, BG must be a list `(RED | ||
| 9828 | GREEN BLUE)' specifying the color to assume for the background of the | ||
| 9829 | image. | ||
| 9830 | |||
| 9831 | If MASK is nil, remove a mask from the image, if it has one. Images | ||
| 9832 | in some formats include a mask which can be removed by specifying | ||
| 9833 | `:mask nil'. | ||
| 9834 | |||
| 9835 | `:file FILE' | ||
| 9836 | |||
| 9837 | Load image from FILE. If FILE is not absolute after expanding it, | ||
| 9838 | search for the image in `data-directory'. Some image types support | ||
| 9839 | building images from data. When this is done, no `:file' property | ||
| 9840 | may be present in the image specification. | ||
| 9841 | |||
| 9842 | `:data DATA' | ||
| 9843 | |||
| 9844 | Get image data from DATA. (As of this writing, this is not yet | ||
| 9845 | supported for image type `postscript'). Either :file or :data may be | ||
| 9846 | present in an image specification, but not both. All image types | ||
| 9847 | support strings as DATA, some types allow additional types of DATA. | ||
| 9848 | |||
| 9849 | *** Supported image types | ||
| 9850 | |||
| 9851 | **** XBM, image type `xbm'. | ||
| 9852 | |||
| 9853 | XBM images don't require an external library. Additional image | ||
| 9854 | properties supported are: | ||
| 9855 | |||
| 9856 | `:foreground FG' | ||
| 9857 | |||
| 9858 | FG must be a string specifying the image foreground color, or nil | ||
| 9859 | meaning to use the default. Default is the frame's foreground color. | ||
| 9860 | |||
| 9861 | `:background BG' | ||
| 9862 | |||
| 9863 | BG must be a string specifying the image background color, or nil | ||
| 9864 | meaning to use the default. Default is the frame's background color. | ||
| 9865 | |||
| 9866 | XBM images can be constructed from data instead of file. In this | ||
| 9867 | case, the image specification must contain the following properties | ||
| 9868 | instead of a `:file' property. | ||
| 9869 | |||
| 9870 | `:width WIDTH' | ||
| 9871 | |||
| 9872 | WIDTH specifies the width of the image in pixels. | ||
| 9873 | |||
| 9874 | `:height HEIGHT' | ||
| 9875 | |||
| 9876 | HEIGHT specifies the height of the image in pixels. | ||
| 9877 | |||
| 9878 | `:data DATA' | ||
| 9879 | |||
| 9880 | DATA must be either | ||
| 9881 | |||
| 9882 | 1. a string large enough to hold the bitmap data, i.e. it must | ||
| 9883 | have a size >= (WIDTH + 7) / 8 * HEIGHT | ||
| 9884 | |||
| 9885 | 2. a bool-vector of size >= WIDTH * HEIGHT | ||
| 9886 | |||
| 9887 | 3. a vector of strings or bool-vectors, one for each line of the | ||
| 9888 | bitmap. | ||
| 9889 | |||
| 9890 | 4. a string that's an in-memory XBM file. Neither width nor | ||
| 9891 | height may be specified in this case because these are defined | ||
| 9892 | in the file. | ||
| 9893 | |||
| 9894 | **** XPM, image type `xpm' | ||
| 9895 | |||
| 9896 | XPM images require the external library `libXpm', package | ||
| 9897 | `xpm-3.4k.tar.gz', version 3.4k or later. Make sure the library is | ||
| 9898 | found when Emacs is configured by supplying appropriate paths via | ||
| 9899 | `--x-includes' and `--x-libraries'. | ||
| 9900 | |||
| 9901 | Additional image properties supported are: | ||
| 9902 | |||
| 9903 | `:color-symbols SYMBOLS' | ||
| 9904 | |||
| 9905 | SYMBOLS must be a list of pairs (NAME . COLOR), with NAME being the | ||
| 9906 | name of color as it appears in an XPM file, and COLOR being an X color | ||
| 9907 | name. | ||
| 9908 | |||
| 9909 | XPM images can be built from memory instead of files. In that case, | ||
| 9910 | add a `:data' property instead of a `:file' property. | ||
| 9911 | |||
| 9912 | The XPM library uses libz in its implementation so that it is able | ||
| 9913 | to display compressed images. | ||
| 9914 | |||
| 9915 | **** PBM, image type `pbm' | ||
| 9916 | |||
| 9917 | PBM images don't require an external library. Color, gray-scale and | ||
| 9918 | mono images are supported. Additional image properties supported for | ||
| 9919 | mono images are: | ||
| 9920 | |||
| 9921 | `:foreground FG' | ||
| 9922 | |||
| 9923 | FG must be a string specifying the image foreground color, or nil | ||
| 9924 | meaning to use the default. Default is the frame's foreground color. | ||
| 9925 | |||
| 9926 | `:background FG' | ||
| 9927 | |||
| 9928 | BG must be a string specifying the image background color, or nil | ||
| 9929 | meaning to use the default. Default is the frame's background color. | ||
| 9930 | |||
| 9931 | **** JPEG, image type `jpeg' | ||
| 9932 | |||
| 9933 | Support for JPEG images requires the external library `libjpeg', | ||
| 9934 | package `jpegsrc.v6a.tar.gz', or later. There are no additional image | ||
| 9935 | properties defined. | ||
| 9936 | |||
| 9937 | **** TIFF, image type `tiff' | ||
| 9938 | |||
| 9939 | Support for TIFF images requires the external library `libtiff', | ||
| 9940 | package `tiff-v3.4-tar.gz', or later. There are no additional image | ||
| 9941 | properties defined. | ||
| 9942 | |||
| 9943 | **** GIF, image type `gif' | ||
| 9944 | |||
| 9945 | Support for GIF images requires the external library `libungif', package | ||
| 9946 | `libungif-4.1.0', or later. | ||
| 9947 | |||
| 9948 | Additional image properties supported are: | ||
| 9949 | |||
| 9950 | `:index INDEX' | ||
| 9951 | |||
| 9952 | INDEX must be an integer >= 0. Load image number INDEX from a | ||
| 9953 | multi-image GIF file. If INDEX is too large, the image displays | ||
| 9954 | as a hollow box. | ||
| 9955 | |||
| 9956 | This could be used to implement limited support for animated GIFs. | ||
| 9957 | For example, the following function displays a multi-image GIF file | ||
| 9958 | at point-min in the current buffer, switching between sub-images | ||
| 9959 | every 0.1 seconds. | ||
| 9960 | |||
| 9961 | (defun show-anim (file max) | ||
| 9962 | "Display multi-image GIF file FILE which contains MAX subimages." | ||
| 9963 | (display-anim (current-buffer) file 0 max t)) | ||
| 9964 | |||
| 9965 | (defun display-anim (buffer file idx max first-time) | ||
| 9966 | (when (= idx max) | ||
| 9967 | (setq idx 0)) | ||
| 9968 | (let ((img (create-image file nil nil :index idx))) | ||
| 9969 | (save-excursion | ||
| 9970 | (set-buffer buffer) | ||
| 9971 | (goto-char (point-min)) | ||
| 9972 | (unless first-time (delete-char 1)) | ||
| 9973 | (insert-image img "x")) | ||
| 9974 | (run-with-timer 0.1 nil 'display-anim buffer file (1+ idx) max nil))) | ||
| 9975 | |||
| 9976 | **** PNG, image type `png' | ||
| 9977 | |||
| 9978 | Support for PNG images requires the external library `libpng', | ||
| 9979 | package `libpng-1.0.2.tar.gz', or later. There are no additional image | ||
| 9980 | properties defined. | ||
| 9981 | |||
| 9982 | **** Ghostscript, image type `postscript'. | ||
| 9983 | |||
| 9984 | Additional image properties supported are: | ||
| 9985 | |||
| 9986 | `:pt-width WIDTH' | ||
| 9987 | |||
| 9988 | WIDTH is width of the image in pt (1/72 inch). WIDTH must be an | ||
| 9989 | integer. This is a required property. | ||
| 9990 | |||
| 9991 | `:pt-height HEIGHT' | ||
| 9992 | |||
| 9993 | HEIGHT specifies the height of the image in pt (1/72 inch). HEIGHT | ||
| 9994 | must be a integer. This is an required property. | ||
| 9995 | |||
| 9996 | `:bounding-box BOX' | ||
| 9997 | |||
| 9998 | BOX must be a list or vector of 4 integers giving the bounding box of | ||
| 9999 | the PS image, analogous to the `BoundingBox' comment found in PS | ||
| 10000 | files. This is an required property. | ||
| 10001 | |||
| 10002 | Part of the Ghostscript interface is implemented in Lisp. See | ||
| 10003 | lisp/gs.el. | ||
| 10004 | |||
| 10005 | *** Lisp interface. | ||
| 10006 | |||
| 10007 | The variable `image-types' contains a list of those image types | ||
| 10008 | which are supported in the current configuration. | ||
| 10009 | |||
| 10010 | Images are stored in an image cache and removed from the cache when | ||
| 10011 | they haven't been displayed for `image-cache-eviction-delay seconds. | ||
| 10012 | The function `clear-image-cache' can be used to clear the image cache | ||
| 10013 | manually. Images in the cache are compared with `equal', i.e. all | ||
| 10014 | images with `equal' specifications share the same image. | ||
| 10015 | |||
| 10016 | *** Simplified image API, image.el | ||
| 10017 | |||
| 10018 | The new Lisp package image.el contains functions that simplify image | ||
| 10019 | creation and putting images into text. The function `create-image' | ||
| 10020 | can be used to create images. The macro `defimage' can be used to | ||
| 10021 | define an image based on available image types. The functions | ||
| 10022 | `put-image' and `insert-image' can be used to insert an image into a | ||
| 10023 | buffer. | ||
| 10024 | |||
| 10025 | ** Display margins. | ||
| 10026 | |||
| 10027 | Windows can now have margins which are used for special text | ||
| 10028 | and images. | ||
| 10029 | |||
| 10030 | To give a window margins, either set the buffer-local variables | ||
| 10031 | `left-margin-width' and `right-margin-width', or call | ||
| 10032 | `set-window-margins'. The function `window-margins' can be used to | ||
| 10033 | obtain the current settings. To make `left-margin-width' and | ||
| 10034 | `right-margin-width' take effect, you must set them before displaying | ||
| 10035 | the buffer in a window, or use `set-window-buffer' to force an update | ||
| 10036 | of the display margins. | ||
| 10037 | |||
| 10038 | You can put text in margins by giving it a `display' text property | ||
| 10039 | containing a pair of the form `(LOCATION . VALUE)', where LOCATION is | ||
| 10040 | one of `left-margin' or `right-margin' or nil. VALUE can be either a | ||
| 10041 | string, an image specification or a stretch specification (see later | ||
| 10042 | in this file). | ||
| 10043 | |||
| 10044 | ** Help display | ||
| 10045 | |||
| 10046 | Emacs displays short help messages in the echo area, when the mouse | ||
| 10047 | moves over a tool-bar item or a piece of text that has a text property | ||
| 10048 | `help-echo'. This feature also applies to strings in the mode line | ||
| 10049 | that have a `help-echo' property. | ||
| 10050 | |||
| 10051 | If the value of the `help-echo' property is a function, that function | ||
| 10052 | is called with three arguments WINDOW, OBJECT and POSITION. WINDOW is | ||
| 10053 | the window in which the help was found. | ||
| 10054 | |||
| 10055 | If OBJECT is a buffer, POS is the position in the buffer where the | ||
| 10056 | `help-echo' text property was found. | ||
| 10057 | |||
| 10058 | If OBJECT is an overlay, that overlay has a `help-echo' property, and | ||
| 10059 | POS is the position in the overlay's buffer under the mouse. | ||
| 10060 | |||
| 10061 | If OBJECT is a string (an overlay string or a string displayed with | ||
| 10062 | the `display' property), POS is the position in that string under the | ||
| 10063 | mouse. | ||
| 10064 | |||
| 10065 | If the value of the `help-echo' property is neither a function nor a | ||
| 10066 | string, it is evaluated to obtain a help string. | ||
| 10067 | |||
| 10068 | For tool-bar and menu-bar items, their key definition is used to | ||
| 10069 | determine the help to display. If their definition contains a | ||
| 10070 | property `:help FORM', FORM is evaluated to determine the help string. | ||
| 10071 | For tool-bar items without a help form, the caption of the item is | ||
| 10072 | used as help string. | ||
| 10073 | |||
| 10074 | The hook `show-help-function' can be set to a function that displays | ||
| 10075 | the help string differently. For example, enabling a tooltip window | ||
| 10076 | causes the help display to appear there instead of in the echo area. | ||
| 10077 | |||
| 10078 | ** Vertical fractional scrolling. | ||
| 10079 | |||
| 10080 | The display of text in windows can be scrolled smoothly in pixels. | ||
| 10081 | This is useful, for example, for making parts of large images visible. | ||
| 10082 | |||
| 10083 | The function `window-vscroll' returns the current value of vertical | ||
| 10084 | scrolling, a non-negative fraction of the canonical character height. | ||
| 10085 | The function `set-window-vscroll' can be used to set the vertical | ||
| 10086 | scrolling value. Here is an example of how these function might be | ||
| 10087 | used. | ||
| 10088 | |||
| 10089 | (global-set-key [A-down] | ||
| 10090 | #'(lambda () | ||
| 10091 | (interactive) | ||
| 10092 | (set-window-vscroll (selected-window) | ||
| 10093 | (+ 0.5 (window-vscroll))))) | ||
| 10094 | (global-set-key [A-up] | ||
| 10095 | #'(lambda () | ||
| 10096 | (interactive) | ||
| 10097 | (set-window-vscroll (selected-window) | ||
| 10098 | (- (window-vscroll) 0.5))))) | ||
| 10099 | |||
| 10100 | ** New hook `fontification-functions'. | ||
| 10101 | |||
| 10102 | Functions from `fontification-functions' are called from redisplay | ||
| 10103 | when it encounters a region of text that is not yet fontified. This | ||
| 10104 | variable automatically becomes buffer-local when set. Each function | ||
| 10105 | is called with one argument, POS. | ||
| 10106 | |||
| 10107 | At least one of the hook functions should fontify one or more | ||
| 10108 | characters starting at POS in the current buffer. It should mark them | ||
| 10109 | as fontified by giving them a non-nil value of the `fontified' text | ||
| 10110 | property. It may be reasonable for these functions to check for the | ||
| 10111 | `fontified' property and not put it back on, but they do not have to. | ||
| 10112 | |||
| 10113 | ** Tool bar support. | ||
| 10114 | |||
| 10115 | Emacs supports a tool bar at the top of a frame under X. The frame | ||
| 10116 | parameter `tool-bar-lines' (X resource "toolBar", class "ToolBar") | ||
| 10117 | controls how may lines to reserve for the tool bar. A zero value | ||
| 10118 | suppresses the tool bar. If the value is non-zero and | ||
| 10119 | `auto-resize-tool-bars' is non-nil the tool bar's size will be changed | ||
| 10120 | automatically so that all tool bar items are visible. | ||
| 10121 | |||
| 10122 | *** Tool bar item definitions | ||
| 10123 | |||
| 10124 | Tool bar items are defined using `define-key' with a prefix-key | ||
| 10125 | `tool-bar'. For example `(define-key global-map [tool-bar item1] ITEM)' | ||
| 10126 | where ITEM is a list `(menu-item CAPTION BINDING PROPS...)'. | ||
| 10127 | |||
| 10128 | CAPTION is the caption of the item, If it's not a string, it is | ||
| 10129 | evaluated to get a string. The caption is currently not displayed in | ||
| 10130 | the tool bar, but it is displayed if the item doesn't have a `:help' | ||
| 10131 | property (see below). | ||
| 10132 | |||
| 10133 | BINDING is the tool bar item's binding. Tool bar items with keymaps as | ||
| 10134 | binding are currently ignored. | ||
| 10135 | |||
| 10136 | The following properties are recognized: | ||
| 10137 | |||
| 10138 | `:enable FORM'. | ||
| 10139 | |||
| 10140 | FORM is evaluated and specifies whether the tool bar item is enabled | ||
| 10141 | or disabled. | ||
| 10142 | |||
| 10143 | `:visible FORM' | ||
| 10144 | |||
| 10145 | FORM is evaluated and specifies whether the tool bar item is displayed. | ||
| 10146 | |||
| 10147 | `:filter FUNCTION' | ||
| 10148 | |||
| 10149 | FUNCTION is called with one parameter, the same list BINDING in which | ||
| 10150 | FUNCTION is specified as the filter. The value FUNCTION returns is | ||
| 10151 | used instead of BINDING to display this item. | ||
| 10152 | |||
| 10153 | `:button (TYPE SELECTED)' | ||
| 10154 | |||
| 10155 | TYPE must be one of `:radio' or `:toggle'. SELECTED is evaluated | ||
| 10156 | and specifies whether the button is selected (pressed) or not. | ||
| 10157 | |||
| 10158 | `:image IMAGES' | ||
| 10159 | |||
| 10160 | IMAGES is either a single image specification or a vector of four | ||
| 10161 | image specifications. If it is a vector, this table lists the | ||
| 10162 | meaning of each of the four elements: | ||
| 10163 | |||
| 10164 | Index Use when item is | ||
| 10165 | ---------------------------------------- | ||
| 10166 | 0 enabled and selected | ||
| 10167 | 1 enabled and deselected | ||
| 10168 | 2 disabled and selected | ||
| 10169 | 3 disabled and deselected | ||
| 10170 | |||
| 10171 | If IMAGE is a single image specification, a Laplace edge-detection | ||
| 10172 | algorithm is used on that image to draw the image in disabled state. | ||
| 10173 | |||
| 10174 | `:help HELP-STRING'. | ||
| 10175 | |||
| 10176 | Gives a help string to display for the tool bar item. This help | ||
| 10177 | is displayed when the mouse is moved over the item. | ||
| 10178 | |||
| 10179 | The function `toolbar-add-item' is a convenience function for adding | ||
| 10180 | toolbar items generally, and `tool-bar-add-item-from-menu' can be used | ||
| 10181 | to define a toolbar item with a binding copied from an item on the | ||
| 10182 | menu bar. | ||
| 10183 | |||
| 10184 | The default bindings use a menu-item :filter to derive the tool-bar | ||
| 10185 | dynamically from variable `tool-bar-map' which may be set | ||
| 10186 | buffer-locally to override the global map. | ||
| 10187 | |||
| 10188 | *** Tool-bar-related variables. | ||
| 10189 | |||
| 10190 | If `auto-resize-tool-bar' is non-nil, the tool bar will automatically | ||
| 10191 | resize to show all defined tool bar items. It will never grow larger | ||
| 10192 | than 1/4 of the frame's size. | ||
| 10193 | |||
| 10194 | If `auto-raise-tool-bar-buttons' is non-nil, tool bar buttons will be | ||
| 10195 | raised when the mouse moves over them. | ||
| 10196 | |||
| 10197 | You can add extra space between tool bar items by setting | ||
| 10198 | `tool-bar-button-margin' to a positive integer specifying a number of | ||
| 10199 | pixels, or a pair of integers (X . Y) specifying horizontal and | ||
| 10200 | vertical margins . Default is 1. | ||
| 10201 | |||
| 10202 | You can change the shadow thickness of tool bar buttons by setting | ||
| 10203 | `tool-bar-button-relief' to an integer. Default is 3. | ||
| 10204 | |||
| 10205 | *** Tool-bar clicks with modifiers. | ||
| 10206 | |||
| 10207 | You can bind commands to clicks with control, shift, meta etc. on | ||
| 10208 | a tool bar item. If | ||
| 10209 | |||
| 10210 | (define-key global-map [tool-bar shell] | ||
| 10211 | '(menu-item "Shell" shell | ||
| 10212 | :image (image :type xpm :file "shell.xpm"))) | ||
| 10213 | |||
| 10214 | is the original tool bar item definition, then | ||
| 10215 | |||
| 10216 | (define-key global-map [tool-bar S-shell] 'some-command) | ||
| 10217 | |||
| 10218 | makes a binding to run `some-command' for a shifted click on the same | ||
| 10219 | item. | ||
| 10220 | |||
| 10221 | ** Mode line changes. | ||
| 10222 | |||
| 10223 | *** Mouse-sensitive mode line. | ||
| 10224 | |||
| 10225 | The mode line can be made mouse-sensitive by displaying strings there | ||
| 10226 | that have a `local-map' text property. There are three ways to display | ||
| 10227 | a string with a `local-map' property in the mode line. | ||
| 10228 | |||
| 10229 | 1. The mode line spec contains a variable whose string value has | ||
| 10230 | a `local-map' text property. | ||
| 10231 | |||
| 10232 | 2. The mode line spec contains a format specifier (e.g. `%12b'), and | ||
| 10233 | that format specifier has a `local-map' property. | ||
| 10234 | |||
| 10235 | 3. The mode line spec contains a list containing `:eval FORM'. FORM | ||
| 10236 | is evaluated. If the result is a string, and that string has a | ||
| 10237 | `local-map' property. | ||
| 10238 | |||
| 10239 | The same mechanism is used to determine the `face' and `help-echo' | ||
| 10240 | properties of strings in the mode line. See `bindings.el' for an | ||
| 10241 | example. | ||
| 10242 | |||
| 10243 | *** If a mode line element has the form `(:eval FORM)', FORM is | ||
| 10244 | evaluated and the result is used as mode line element. | ||
| 10245 | |||
| 10246 | *** You can suppress mode-line display by setting the buffer-local | ||
| 10247 | variable mode-line-format to nil. | ||
| 10248 | |||
| 10249 | *** A headerline can now be displayed at the top of a window. | ||
| 10250 | |||
| 10251 | This mode line's contents are controlled by the new variable | ||
| 10252 | `header-line-format' and `default-header-line-format' which are | ||
| 10253 | completely analogous to `mode-line-format' and | ||
| 10254 | `default-mode-line-format'. A value of nil means don't display a top | ||
| 10255 | line. | ||
| 10256 | |||
| 10257 | The appearance of top mode lines is controlled by the face | ||
| 10258 | `header-line'. | ||
| 10259 | |||
| 10260 | The function `coordinates-in-window-p' returns `header-line' for a | ||
| 10261 | position in the header-line. | ||
| 10262 | |||
| 10263 | ** Text property `display' | ||
| 10264 | |||
| 10265 | The `display' text property is used to insert images into text, | ||
| 10266 | replace text with other text, display text in marginal area, and it is | ||
| 10267 | also used to control other aspects of how text displays. The value of | ||
| 10268 | the `display' property should be a display specification, as described | ||
| 10269 | below, or a list or vector containing display specifications. | ||
| 10270 | |||
| 10271 | *** Replacing text, displaying text in marginal areas | ||
| 10272 | |||
| 10273 | To replace the text having the `display' property with some other | ||
| 10274 | text, use a display specification of the form `(LOCATION STRING)'. | ||
| 10275 | |||
| 10276 | If LOCATION is `(margin left-margin)', STRING is displayed in the left | ||
| 10277 | marginal area, if it is `(margin right-margin)', it is displayed in | ||
| 10278 | the right marginal area, and if LOCATION is `(margin nil)' STRING | ||
| 10279 | is displayed in the text. In the latter case you can also use the | ||
| 10280 | simpler form STRING as property value. | ||
| 10281 | |||
| 10282 | *** Variable width and height spaces | ||
| 10283 | |||
| 10284 | To display a space of fractional width or height, use a display | ||
| 10285 | specification of the form `(LOCATION STRECH)'. If LOCATION is | ||
| 10286 | `(margin left-margin)', the space is displayed in the left marginal | ||
| 10287 | area, if it is `(margin right-margin)', it is displayed in the right | ||
| 10288 | marginal area, and if LOCATION is `(margin nil)' the space is | ||
| 10289 | displayed in the text. In the latter case you can also use the | ||
| 10290 | simpler form STRETCH as property value. | ||
| 10291 | |||
| 10292 | The stretch specification STRETCH itself is a list of the form `(space | ||
| 10293 | PROPS)', where PROPS is a property list which can contain the | ||
| 10294 | properties described below. | ||
| 10295 | |||
| 10296 | The display of the fractional space replaces the display of the | ||
| 10297 | characters having the `display' property. | ||
| 10298 | |||
| 10299 | - :width WIDTH | ||
| 10300 | |||
| 10301 | Specifies that the space width should be WIDTH times the normal | ||
| 10302 | character width. WIDTH can be an integer or floating point number. | ||
| 10303 | |||
| 10304 | - :relative-width FACTOR | ||
| 10305 | |||
| 10306 | Specifies that the width of the stretch should be computed from the | ||
| 10307 | first character in a group of consecutive characters that have the | ||
| 10308 | same `display' property. The computation is done by multiplying the | ||
| 10309 | width of that character by FACTOR. | ||
| 10310 | |||
| 10311 | - :align-to HPOS | ||
| 10312 | |||
| 10313 | Specifies that the space should be wide enough to reach HPOS. The | ||
| 10314 | value HPOS is measured in units of the normal character width. | ||
| 10315 | |||
| 10316 | Exactly one of the above properties should be used. | ||
| 10317 | |||
| 10318 | - :height HEIGHT | ||
| 10319 | |||
| 10320 | Specifies the height of the space, as HEIGHT, measured in terms of the | ||
| 10321 | normal line height. | ||
| 10322 | |||
| 10323 | - :relative-height FACTOR | ||
| 10324 | |||
| 10325 | The height of the space is computed as the product of the height | ||
| 10326 | of the text having the `display' property and FACTOR. | ||
| 10327 | |||
| 10328 | - :ascent ASCENT | ||
| 10329 | |||
| 10330 | Specifies that ASCENT percent of the height of the stretch should be | ||
| 10331 | used for the ascent of the stretch, i.e. for the part above the | ||
| 10332 | baseline. The value of ASCENT must be a non-negative number less or | ||
| 10333 | equal to 100. | ||
| 10334 | |||
| 10335 | You should not use both `:height' and `:relative-height' together. | ||
| 10336 | |||
| 10337 | *** Images | ||
| 10338 | |||
| 10339 | A display specification for an image has the form `(LOCATION | ||
| 10340 | . IMAGE)', where IMAGE is an image specification. The image replaces, | ||
| 10341 | in the display, the characters having this display specification in | ||
| 10342 | their `display' text property. If LOCATION is `(margin left-margin)', | ||
| 10343 | the image will be displayed in the left marginal area, if it is | ||
| 10344 | `(margin right-margin)' it will be displayed in the right marginal | ||
| 10345 | area, and if LOCATION is `(margin nil)' the image will be displayed in | ||
| 10346 | the text. In the latter case you can also use the simpler form IMAGE | ||
| 10347 | as display specification. | ||
| 10348 | |||
| 10349 | *** Other display properties | ||
| 10350 | |||
| 10351 | - (space-width FACTOR) | ||
| 10352 | |||
| 10353 | Specifies that space characters in the text having that property | ||
| 10354 | should be displayed FACTOR times as wide as normal; FACTOR must be an | ||
| 10355 | integer or float. | ||
| 10356 | |||
| 10357 | - (height HEIGHT) | ||
| 10358 | |||
| 10359 | Display text having this property in a font that is smaller or larger. | ||
| 10360 | |||
| 10361 | If HEIGHT is a list of the form `(+ N)', where N is an integer, that | ||
| 10362 | means to use a font that is N steps larger. If HEIGHT is a list of | ||
| 10363 | the form `(- N)', that means to use a font that is N steps smaller. A | ||
| 10364 | ``step'' is defined by the set of available fonts; each size for which | ||
| 10365 | a font is available counts as a step. | ||
| 10366 | |||
| 10367 | If HEIGHT is a number, that means to use a font that is HEIGHT times | ||
| 10368 | as tall as the frame's default font. | ||
| 10369 | |||
| 10370 | If HEIGHT is a symbol, it is called as a function with the current | ||
| 10371 | height as argument. The function should return the new height to use. | ||
| 10372 | |||
| 10373 | Otherwise, HEIGHT is evaluated to get the new height, with the symbol | ||
| 10374 | `height' bound to the current specified font height. | ||
| 10375 | |||
| 10376 | - (raise FACTOR) | ||
| 10377 | |||
| 10378 | FACTOR must be a number, specifying a multiple of the current | ||
| 10379 | font's height. If it is positive, that means to display the characters | ||
| 10380 | raised. If it is negative, that means to display them lower down. The | ||
| 10381 | amount of raising or lowering is computed without taking account of the | ||
| 10382 | `height' subproperty. | ||
| 10383 | |||
| 10384 | *** Conditional display properties | ||
| 10385 | |||
| 10386 | All display specifications can be conditionalized. If a specification | ||
| 10387 | has the form `(when CONDITION . SPEC)', the specification SPEC applies | ||
| 10388 | only when CONDITION yields a non-nil value when evaluated. During the | ||
| 10389 | evaluation, `object' is bound to the string or buffer having the | ||
| 10390 | conditional display property; `position' and `buffer-position' are | ||
| 10391 | bound to the position within `object' and the buffer position where | ||
| 10392 | the display property was found, respectively. Both positions can be | ||
| 10393 | different when object is a string. | ||
| 10394 | |||
| 10395 | The normal specification consisting of SPEC only is equivalent to | ||
| 10396 | `(when t . SPEC)'. | ||
| 10397 | |||
| 10398 | ** New menu separator types. | ||
| 10399 | |||
| 10400 | Emacs now supports more than one menu separator type. Menu items with | ||
| 10401 | item names consisting of dashes only (including zero dashes) are | ||
| 10402 | treated like before. In addition, the following item names are used | ||
| 10403 | to specify other menu separator types. | ||
| 10404 | |||
| 10405 | - `--no-line' or `--space', or `--:space', or `--:noLine' | ||
| 10406 | |||
| 10407 | No separator lines are drawn, but a small space is inserted where the | ||
| 10408 | separator occurs. | ||
| 10409 | |||
| 10410 | - `--single-line' or `--:singleLine' | ||
| 10411 | |||
| 10412 | A single line in the menu's foreground color. | ||
| 10413 | |||
| 10414 | - `--double-line' or `--:doubleLine' | ||
| 10415 | |||
| 10416 | A double line in the menu's foreground color. | ||
| 10417 | |||
| 10418 | - `--single-dashed-line' or `--:singleDashedLine' | ||
| 10419 | |||
| 10420 | A single dashed line in the menu's foreground color. | ||
| 10421 | |||
| 10422 | - `--double-dashed-line' or `--:doubleDashedLine' | ||
| 10423 | |||
| 10424 | A double dashed line in the menu's foreground color. | ||
| 10425 | |||
| 10426 | - `--shadow-etched-in' or `--:shadowEtchedIn' | ||
| 10427 | |||
| 10428 | A single line with 3D sunken appearance. This is the form | ||
| 10429 | displayed for item names consisting of dashes only. | ||
| 10430 | |||
| 10431 | - `--shadow-etched-out' or `--:shadowEtchedOut' | ||
| 10432 | |||
| 10433 | A single line with 3D raised appearance. | ||
| 10434 | |||
| 10435 | - `--shadow-etched-in-dash' or `--:shadowEtchedInDash' | ||
| 10436 | |||
| 10437 | A single dashed line with 3D sunken appearance. | ||
| 10438 | |||
| 10439 | - `--shadow-etched-out-dash' or `--:shadowEtchedOutDash' | ||
| 10440 | |||
| 10441 | A single dashed line with 3D raise appearance. | ||
| 10442 | |||
| 10443 | - `--shadow-double-etched-in' or `--:shadowDoubleEtchedIn' | ||
| 10444 | |||
| 10445 | Two lines with 3D sunken appearance. | ||
| 10446 | |||
| 10447 | - `--shadow-double-etched-out' or `--:shadowDoubleEtchedOut' | ||
| 10448 | |||
| 10449 | Two lines with 3D raised appearance. | ||
| 10450 | |||
| 10451 | - `--shadow-double-etched-in-dash' or `--:shadowDoubleEtchedInDash' | ||
| 10452 | |||
| 10453 | Two dashed lines with 3D sunken appearance. | ||
| 10454 | |||
| 10455 | - `--shadow-double-etched-out-dash' or `--:shadowDoubleEtchedOutDash' | ||
| 10456 | |||
| 10457 | Two dashed lines with 3D raised appearance. | ||
| 10458 | |||
| 10459 | Under LessTif/Motif, the last four separator types are displayed like | ||
| 10460 | the corresponding single-line separators. | ||
| 10461 | |||
| 10462 | ** New frame parameters for scroll bar colors. | ||
| 10463 | |||
| 10464 | The new frame parameters `scroll-bar-foreground' and | ||
| 10465 | `scroll-bar-background' can be used to change scroll bar colors. | ||
| 10466 | Their value must be either a color name, a string, or nil to specify | ||
| 10467 | that scroll bars should use a default color. For toolkit scroll bars, | ||
| 10468 | default colors are toolkit specific. For non-toolkit scroll bars, the | ||
| 10469 | default background is the background color of the frame, and the | ||
| 10470 | default foreground is black. | ||
| 10471 | |||
| 10472 | The X resource name of these parameters are `scrollBarForeground' | ||
| 10473 | (class ScrollBarForeground) and `scrollBarBackground' (class | ||
| 10474 | `ScrollBarBackground'). | ||
| 10475 | |||
| 10476 | Setting these parameters overrides toolkit specific X resource | ||
| 10477 | settings for scroll bar colors. | ||
| 10478 | |||
| 10479 | ** You can set `redisplay-dont-pause' to a non-nil value to prevent | ||
| 10480 | display updates from being interrupted when input is pending. | ||
| 10481 | |||
| 10482 | ** Changing a window's width may now change its window start if it | ||
| 10483 | starts on a continuation line. The new window start is computed based | ||
| 10484 | on the window's new width, starting from the start of the continued | ||
| 10485 | line as the start of the screen line with the minimum distance from | ||
| 10486 | the original window start. | ||
| 10487 | |||
| 10488 | ** The variable `hscroll-step' and the functions | ||
| 10489 | `hscroll-point-visible' and `hscroll-window-column' have been removed | ||
| 10490 | now that proper horizontal scrolling is implemented. | ||
| 10491 | |||
| 10492 | ** Windows can now be made fixed-width and/or fixed-height. | ||
| 10493 | |||
| 10494 | A window is fixed-size if its buffer has a buffer-local variable | ||
| 10495 | `window-size-fixed' whose value is not nil. A value of `height' makes | ||
| 10496 | windows fixed-height, a value of `width' makes them fixed-width, any | ||
| 10497 | other non-nil value makes them both fixed-width and fixed-height. | ||
| 10498 | |||
| 10499 | The following code makes all windows displaying the current buffer | ||
| 10500 | fixed-width and fixed-height. | ||
| 10501 | |||
| 10502 | (set (make-local-variable 'window-size-fixed) t) | ||
| 10503 | |||
| 10504 | A call to enlarge-window on a window gives an error if that window is | ||
| 10505 | fixed-width and it is tried to change the window's width, or if the | ||
| 10506 | window is fixed-height, and it is tried to change its height. To | ||
| 10507 | change the size of a fixed-size window, bind `window-size-fixed' | ||
| 10508 | temporarily to nil, for example | ||
| 10509 | |||
| 10510 | (let ((window-size-fixed nil)) | ||
| 10511 | (enlarge-window 10)) | ||
| 10512 | |||
| 10513 | Likewise, an attempt to split a fixed-height window vertically, | ||
| 10514 | or a fixed-width window horizontally results in a error. | ||
| 10515 | |||
| 10516 | ** The cursor-type frame parameter is now supported on MS-DOS | ||
| 10517 | terminals. When Emacs starts, it by default changes the cursor shape | ||
| 10518 | to a solid box, as it does on Unix. The `cursor-type' frame parameter | ||
| 10519 | overrides this as it does on Unix, except that the bar cursor is | ||
| 10520 | horizontal rather than vertical (since the MS-DOS display doesn't | ||
| 10521 | support a vertical-bar cursor). | ||
| 10522 | |||
| 10523 | |||
| 10524 | |||
| 10525 | * Emacs 20.7 is a bug-fix release with few user-visible changes | ||
| 10526 | |||
| 10527 | ** It is now possible to use CCL-based coding systems for keyboard | ||
| 10528 | input. | ||
| 10529 | |||
| 10530 | ** ange-ftp now handles FTP security extensions, like Kerberos. | ||
| 10531 | |||
| 10532 | ** Rmail has been extended to recognize more forms of digest messages. | ||
| 10533 | |||
| 10534 | ** Now, most coding systems set in keyboard coding system work not | ||
| 10535 | only for character input, but also in incremental search. The | ||
| 10536 | exceptions are such coding systems that handle 2-byte character sets | ||
| 10537 | (e.g euc-kr, euc-jp) and that use ISO's escape sequence | ||
| 10538 | (e.g. iso-2022-jp). They are ignored in incremental search. | ||
| 10539 | |||
| 10540 | ** Support for Macintosh PowerPC-based machines running GNU/Linux has | ||
| 10541 | been added. | ||
| 10542 | |||
| 10543 | |||
| 10544 | * Emacs 20.6 is a bug-fix release with one user-visible change | ||
| 10545 | |||
| 10546 | ** Support for ARM-based non-RISCiX machines has been added. | ||
| 10547 | |||
| 10548 | |||
| 10549 | |||
| 10550 | * Emacs 20.5 is a bug-fix release with no user-visible changes. | ||
| 10551 | |||
| 10552 | ** Not new, but not mentioned before: | ||
| 10553 | M-w when Transient Mark mode is enabled disables the mark. | ||
| 10554 | |||
| 10555 | * Changes in Emacs 20.4 | ||
| 10556 | |||
| 10557 | ** Init file may be called .emacs.el. | ||
| 10558 | |||
| 10559 | You can now call the Emacs init file `.emacs.el'. | ||
| 10560 | Formerly the name had to be `.emacs'. If you use the name | ||
| 10561 | `.emacs.el', you can byte-compile the file in the usual way. | ||
| 10562 | |||
| 10563 | If both `.emacs' and `.emacs.el' exist, the latter file | ||
| 10564 | is the one that is used. | ||
| 10565 | |||
| 10566 | ** shell-command, and shell-command-on-region, now return | ||
| 10567 | the exit code of the command (unless it is asynchronous). | ||
| 10568 | Also, you can specify a place to put the error output, | ||
| 10569 | separate from the command's regular output. | ||
| 10570 | Interactively, the variable shell-command-default-error-buffer | ||
| 10571 | says where to put error output; set it to a buffer name. | ||
| 10572 | In calls from Lisp, an optional argument ERROR-BUFFER specifies | ||
| 10573 | the buffer name. | ||
| 10574 | |||
| 10575 | When you specify a non-nil error buffer (or buffer name), any error | ||
| 10576 | output is inserted before point in that buffer, with \f\n to separate | ||
| 10577 | it from the previous batch of error output. The error buffer is not | ||
| 10578 | cleared, so error output from successive commands accumulates there. | ||
| 10579 | |||
| 10580 | ** Setting the default value of enable-multibyte-characters to nil in | ||
| 10581 | the .emacs file, either explicitly using setq-default, or via Custom, | ||
| 10582 | is now essentially equivalent to using --unibyte: all buffers | ||
| 10583 | created during startup will be made unibyte after loading .emacs. | ||
| 10584 | |||
| 10585 | ** C-x C-f now handles the wildcards * and ? in file names. For | ||
| 10586 | example, typing C-x C-f c*.c RET visits all the files whose names | ||
| 10587 | match c*.c. To visit a file whose name contains * or ?, add the | ||
| 10588 | quoting sequence /: to the beginning of the file name. | ||
| 10589 | |||
| 10590 | ** The M-x commands keep-lines, flush-lines and count-matches | ||
| 10591 | now have the same feature as occur and query-replace: | ||
| 10592 | if the pattern contains any upper case letters, then | ||
| 10593 | they never ignore case. | ||
| 10594 | |||
| 10595 | ** The end-of-line format conversion feature previously mentioned | ||
| 10596 | under `* Emacs 20.1 changes for MS-DOS and MS-Windows' actually | ||
| 10597 | applies to all operating systems. Emacs recognizes from the contents | ||
| 10598 | of a file what convention it uses to separate lines--newline, CRLF, or | ||
| 10599 | just CR--and automatically converts the contents to the normal Emacs | ||
| 10600 | convention (using newline to separate lines) for editing. This is a | ||
| 10601 | part of the general feature of coding system conversion. | ||
| 10602 | |||
| 10603 | If you subsequently save the buffer, Emacs converts the text back to | ||
| 10604 | the same format that was used in the file before. | ||
| 10605 | |||
| 10606 | You can turn off end-of-line conversion by setting the variable | ||
| 10607 | `inhibit-eol-conversion' to non-nil, e.g. with Custom in the MULE group. | ||
| 10608 | |||
| 10609 | ** The character set property `prefered-coding-system' has been | ||
| 10610 | renamed to `preferred-coding-system', for the sake of correct spelling. | ||
| 10611 | This is a fairly internal feature, so few programs should be affected. | ||
| 10612 | |||
| 10613 | ** Mode-line display of end-of-line format is changed. | ||
| 10614 | The indication of the end-of-line format of the file visited by a | ||
| 10615 | buffer is now more explicit when that format is not the usual one for | ||
| 10616 | your operating system. For example, the DOS-style end-of-line format | ||
| 10617 | is displayed as "(DOS)" on Unix and GNU/Linux systems. The usual | ||
| 10618 | end-of-line format is still displayed as a single character (colon for | ||
| 10619 | Unix, backslash for DOS and Windows, and forward slash for the Mac). | ||
| 10620 | |||
| 10621 | The values of the variables eol-mnemonic-unix, eol-mnemonic-dos, | ||
| 10622 | eol-mnemonic-mac, and eol-mnemonic-undecided, which are strings, | ||
| 10623 | control what is displayed in the mode line for each end-of-line | ||
| 10624 | format. You can now customize these variables. | ||
| 10625 | |||
| 10626 | ** In the previous version of Emacs, tar-mode didn't work well if a | ||
| 10627 | filename contained non-ASCII characters. Now this is fixed. Such a | ||
| 10628 | filename is decoded by file-name-coding-system if the default value of | ||
| 10629 | enable-multibyte-characters is non-nil. | ||
| 10630 | |||
| 10631 | ** The command temp-buffer-resize-mode toggles a minor mode | ||
| 10632 | in which temporary buffers (such as help buffers) are given | ||
| 10633 | windows just big enough to hold the whole contents. | ||
| 10634 | |||
| 10635 | ** If you use completion.el, you must now run the function | ||
| 10636 | dynamic-completion-mode to enable it. Just loading the file | ||
| 10637 | doesn't have any effect. | ||
| 10638 | |||
| 10639 | ** In Flyspell mode, the default is now to make just one Ispell process, | ||
| 10640 | not one per buffer. | ||
| 10641 | |||
| 10642 | ** If you use iswitchb but do not call (iswitchb-default-keybindings) to | ||
| 10643 | use the default keybindings, you will need to add the following line: | ||
| 10644 | (add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup) | ||
| 10645 | |||
| 10646 | ** Auto-show mode is no longer enabled just by loading auto-show.el. | ||
| 10647 | To control it, set `auto-show-mode' via Custom or use the | ||
| 10648 | `auto-show-mode' command. | ||
| 10649 | |||
| 10650 | ** Handling of X fonts' ascent/descent parameters has been changed to | ||
| 10651 | avoid redisplay problems. As a consequence, compared with previous | ||
| 10652 | versions the line spacing and frame size now differ with some font | ||
| 10653 | choices, typically increasing by a pixel per line. This change | ||
| 10654 | occurred in version 20.3 but was not documented then. | ||
| 10655 | |||
| 10656 | ** If you select the bar cursor style, it uses the frame's | ||
| 10657 | cursor-color, rather than the cursor foreground pixel. | ||
| 10658 | |||
| 10659 | ** In multibyte mode, Rmail decodes incoming MIME messages using the | ||
| 10660 | character set specified in the message. If you want to disable this | ||
| 10661 | feature, set the variable rmail-decode-mime-charset to nil. | ||
| 10662 | |||
| 10663 | ** Not new, but not mentioned previously in NEWS: when you use #! at | ||
| 10664 | the beginning of a file to make it executable and specify an | ||
| 10665 | interpreter program, Emacs looks on the second line for the -*- mode | ||
| 10666 | and variable specification, as well as on the first line. | ||
| 10667 | |||
| 10668 | ** Support for IBM codepage encoding of non-ASCII characters. | ||
| 10669 | |||
| 10670 | The new command M-x codepage-setup creates a special coding system | ||
| 10671 | that can be used to convert text between a specific IBM codepage and | ||
| 10672 | one of the character sets built into Emacs which matches that | ||
| 10673 | codepage. For example, codepage 850 corresponds to Latin-1 character | ||
| 10674 | set, codepage 855 corresponds to Cyrillic-ISO character set, etc. | ||
| 10675 | |||
| 10676 | Windows codepages 1250, 1251 and some others, where Windows deviates | ||
| 10677 | from the corresponding ISO character set, are also supported. | ||
| 10678 | |||
| 10679 | IBM box-drawing characters and other glyphs which don't have | ||
| 10680 | equivalents in the corresponding ISO character set, are converted to | ||
| 10681 | a character defined by dos-unsupported-char-glyph on MS-DOS, and to | ||
| 10682 | `?' on other systems. | ||
| 10683 | |||
| 10684 | IBM codepages are widely used on MS-DOS and MS-Windows, so this | ||
| 10685 | feature is most useful on those platforms, but it can also be used on | ||
| 10686 | Unix. | ||
| 10687 | |||
| 10688 | Emacs compiled for MS-DOS automatically loads the support for the | ||
| 10689 | current codepage when it starts. | ||
| 10690 | |||
| 10691 | ** Mail changes | ||
| 10692 | |||
| 10693 | *** When mail is sent using compose-mail (C-x m), and if | ||
| 10694 | `mail-send-nonascii' is set to the new default value `mime', | ||
| 10695 | appropriate MIME headers are added. The headers are added only if | ||
| 10696 | non-ASCII characters are present in the body of the mail, and no other | ||
| 10697 | MIME headers are already present. For example, the following three | ||
| 10698 | headers are added if the coding system used in the *mail* buffer is | ||
| 10699 | latin-1: | ||
| 10700 | |||
| 10701 | MIME-version: 1.0 | ||
| 10702 | Content-type: text/plain; charset=iso-8859-1 | ||
| 10703 | Content-Transfer-Encoding: 8bit | ||
| 10704 | |||
| 10705 | *** The new variable default-sendmail-coding-system specifies the | ||
| 10706 | default way to encode outgoing mail. This has higher priority than | ||
| 10707 | default-buffer-file-coding-system but has lower priority than | ||
| 10708 | sendmail-coding-system and the local value of | ||
| 10709 | buffer-file-coding-system. | ||
| 10710 | |||
| 10711 | You should not set this variable manually. Instead, set | ||
| 10712 | sendmail-coding-system to specify a fixed encoding for all outgoing | ||
| 10713 | mail. | ||
| 10714 | |||
| 10715 | *** When you try to send a message that contains non-ASCII characters, | ||
| 10716 | if the coding system specified by those variables doesn't handle them, | ||
| 10717 | Emacs will ask you to select a suitable coding system while showing a | ||
| 10718 | list of possible coding systems. | ||
| 10719 | |||
| 10720 | ** CC Mode changes | ||
| 10721 | |||
| 10722 | *** c-default-style can now take an association list that maps major | ||
| 10723 | modes to style names. When this variable is an alist, Java mode no | ||
| 10724 | longer hardcodes a setting to "java" style. See the variable's | ||
| 10725 | docstring for details. | ||
| 10726 | |||
| 10727 | *** It's now possible to put a list as the offset on a syntactic | ||
| 10728 | symbol. The list is evaluated recursively until a non-nil offset is | ||
| 10729 | found. This is useful to combine several lineup functions to act in a | ||
| 10730 | prioritized order on a single line. However, none of the supplied | ||
| 10731 | lineup functions use this feature currently. | ||
| 10732 | |||
| 10733 | *** New syntactic symbol catch-clause, which is used on the "catch" and | ||
| 10734 | "finally" lines in try-catch constructs in C++ and Java. | ||
| 10735 | |||
| 10736 | *** New cleanup brace-catch-brace on c-cleanup-list, which does for | ||
| 10737 | "catch" lines what brace-elseif-brace does for "else if" lines. | ||
| 10738 | |||
| 10739 | *** The braces of Java anonymous inner classes are treated separately | ||
| 10740 | from the braces of other classes in auto-newline mode. Two new | ||
| 10741 | symbols inexpr-class-open and inexpr-class-close may be used on | ||
| 10742 | c-hanging-braces-alist to control the automatic newlines used for | ||
| 10743 | anonymous classes. | ||
| 10744 | |||
| 10745 | *** Support for the Pike language added, along with new Pike specific | ||
| 10746 | syntactic symbols: inlambda, lambda-intro-cont | ||
| 10747 | |||
| 10748 | *** Support for Java anonymous classes via new syntactic symbol | ||
| 10749 | inexpr-class. New syntactic symbol inexpr-statement for Pike | ||
| 10750 | support and gcc-style statements inside expressions. New lineup | ||
| 10751 | function c-lineup-inexpr-block. | ||
| 10752 | |||
| 10753 | *** New syntactic symbol brace-entry-open which is used in brace lists | ||
| 10754 | (i.e. static initializers) when a list entry starts with an open | ||
| 10755 | brace. These used to be recognized as brace-list-entry's. | ||
| 10756 | c-electric-brace also recognizes brace-entry-open braces | ||
| 10757 | (brace-list-entry's can no longer be electrified). | ||
| 10758 | |||
| 10759 | *** New command c-indent-line-or-region, not bound by default. | ||
| 10760 | |||
| 10761 | *** `#' is only electric when typed in the indentation of a line. | ||
| 10762 | |||
| 10763 | *** Parentheses are now electric (via the new command c-electric-paren) | ||
| 10764 | for auto-reindenting lines when parens are typed. | ||
| 10765 | |||
| 10766 | *** In "gnu" style, inline-open offset is now set to zero. | ||
| 10767 | |||
| 10768 | *** Uniform handling of the inclass syntactic symbol. The indentation | ||
| 10769 | associated with it is now always relative to the class opening brace. | ||
| 10770 | This means that the indentation behavior has changed in some | ||
| 10771 | circumstances, but only if you've put anything besides 0 on the | ||
| 10772 | class-open syntactic symbol (none of the default styles do that). | ||
| 10773 | |||
| 10774 | ** Gnus changes. | ||
| 10775 | |||
| 10776 | *** New functionality for using Gnus as an offline newsreader has been | ||
| 10777 | added. A plethora of new commands and modes have been added. See the | ||
| 10778 | Gnus manual for the full story. | ||
| 10779 | |||
| 10780 | *** The nndraft backend has returned, but works differently than | ||
| 10781 | before. All Message buffers are now also articles in the nndraft | ||
| 10782 | group, which is created automatically. | ||
| 10783 | |||
| 10784 | *** `gnus-alter-header-function' can now be used to alter header | ||
| 10785 | values. | ||
| 10786 | |||
| 10787 | *** `gnus-summary-goto-article' now accept Message-ID's. | ||
| 10788 | |||
| 10789 | *** A new Message command for deleting text in the body of a message | ||
| 10790 | outside the region: `C-c C-v'. | ||
| 10791 | |||
| 10792 | *** You can now post to component group in nnvirtual groups with | ||
| 10793 | `C-u C-c C-c'. | ||
| 10794 | |||
| 10795 | *** `nntp-rlogin-program' -- new variable to ease customization. | ||
| 10796 | |||
| 10797 | *** `C-u C-c C-c' in `gnus-article-edit-mode' will now inhibit | ||
| 10798 | re-highlighting of the article buffer. | ||
| 10799 | |||
| 10800 | *** New element in `gnus-boring-article-headers' -- `long-to'. | ||
| 10801 | |||
| 10802 | *** `M-i' symbolic prefix command. See the section "Symbolic | ||
| 10803 | Prefixes" in the Gnus manual for details. | ||
| 10804 | |||
| 10805 | *** `L' and `I' in the summary buffer now take the symbolic prefix | ||
| 10806 | `a' to add the score rule to the "all.SCORE" file. | ||
| 10807 | |||
| 10808 | *** `gnus-simplify-subject-functions' variable to allow greater | ||
| 10809 | control over simplification. | ||
| 10810 | |||
| 10811 | *** `A T' -- new command for fetching the current thread. | ||
| 10812 | |||
| 10813 | *** `/ T' -- new command for including the current thread in the | ||
| 10814 | limit. | ||
| 10815 | |||
| 10816 | *** `M-RET' is a new Message command for breaking cited text. | ||
| 10817 | |||
| 10818 | *** \\1-expressions are now valid in `nnmail-split-methods'. | ||
| 10819 | |||
| 10820 | *** The `custom-face-lookup' function has been removed. | ||
| 10821 | If you used this function in your initialization files, you must | ||
| 10822 | rewrite them to use `face-spec-set' instead. | ||
| 10823 | |||
| 10824 | *** Canceling now uses the current select method. Symbolic prefix | ||
| 10825 | `a' forces normal posting method. | ||
| 10826 | |||
| 10827 | *** New command to translate M******** sm*rtq**t*s into proper text | ||
| 10828 | -- `W d'. | ||
| 10829 | |||
| 10830 | *** For easier debugging of nntp, you can set `nntp-record-commands' | ||
| 10831 | to a non-nil value. | ||
| 10832 | |||
| 10833 | *** nntp now uses ~/.authinfo, a .netrc-like file, for controlling | ||
| 10834 | where and how to send AUTHINFO to NNTP servers. | ||
| 10835 | |||
| 10836 | *** A command for editing group parameters from the summary buffer | ||
| 10837 | has been added. | ||
| 10838 | |||
| 10839 | *** A history of where mails have been split is available. | ||
| 10840 | |||
| 10841 | *** A new article date command has been added -- `article-date-iso8601'. | ||
| 10842 | |||
| 10843 | *** Subjects can be simplified when threading by setting | ||
| 10844 | `gnus-score-thread-simplify'. | ||
| 10845 | |||
| 10846 | *** A new function for citing in Message has been added -- | ||
| 10847 | `message-cite-original-without-signature'. | ||
| 10848 | |||
| 10849 | *** `article-strip-all-blank-lines' -- new article command. | ||
| 10850 | |||
| 10851 | *** A new Message command to kill to the end of the article has | ||
| 10852 | been added. | ||
| 10853 | |||
| 10854 | *** A minimum adaptive score can be specified by using the | ||
| 10855 | `gnus-adaptive-word-minimum' variable. | ||
| 10856 | |||
| 10857 | *** The "lapsed date" article header can be kept continually | ||
| 10858 | updated by the `gnus-start-date-timer' command. | ||
| 10859 | |||
| 10860 | *** Web listserv archives can be read with the nnlistserv backend. | ||
| 10861 | |||
| 10862 | *** Old dejanews archives can now be read by nnweb. | ||
| 10863 | |||
| 10864 | *** `gnus-posting-styles' has been re-activated. | ||
| 10865 | |||
| 10866 | ** Changes to TeX and LaTeX mode | ||
| 10867 | |||
| 10868 | *** The new variable `tex-start-options-string' can be used to give | ||
| 10869 | options for the TeX run. The default value causes TeX to run in | ||
| 10870 | nonstopmode. For an interactive TeX run set it to nil or "". | ||
| 10871 | |||
| 10872 | *** The command `tex-feed-input' sends input to the Tex Shell. In a | ||
| 10873 | TeX buffer it is bound to the keys C-RET, C-c RET, and C-c C-m (some | ||
| 10874 | of these keys may not work on all systems). For instance, if you run | ||
| 10875 | TeX interactively and if the TeX run stops because of an error, you | ||
| 10876 | can continue it without leaving the TeX buffer by typing C-RET. | ||
| 10877 | |||
| 10878 | *** The Tex Shell Buffer is now in `compilation-shell-minor-mode'. | ||
| 10879 | All error-parsing commands of the Compilation major mode are available | ||
| 10880 | but bound to keys that don't collide with the shell. Thus you can use | ||
| 10881 | the Tex Shell for command line executions like a usual shell. | ||
| 10882 | |||
| 10883 | *** The commands `tex-validate-region' and `tex-validate-buffer' check | ||
| 10884 | the matching of braces and $'s. The errors are listed in a *Occur* | ||
| 10885 | buffer and you can use C-c C-c or mouse-2 to go to a particular | ||
| 10886 | mismatch. | ||
| 10887 | |||
| 10888 | ** Changes to RefTeX mode | ||
| 10889 | |||
| 10890 | *** The table of contents buffer can now also display labels and | ||
| 10891 | file boundaries in addition to sections. Use `l', `i', and `c' keys. | ||
| 10892 | |||
| 10893 | *** Labels derived from context (the section heading) are now | ||
| 10894 | lowercase by default. To make the label legal in LaTeX, latin-1 | ||
| 10895 | characters will lose their accent. All Mule characters will be | ||
| 10896 | removed from the label. | ||
| 10897 | |||
| 10898 | *** The automatic display of cross reference information can also use | ||
| 10899 | a window instead of the echo area. See variable `reftex-auto-view-crossref'. | ||
| 10900 | |||
| 10901 | *** kpsewhich can be used by RefTeX to find TeX and BibTeX files. See the | ||
| 10902 | customization group `reftex-finding-files'. | ||
| 10903 | |||
| 10904 | *** The option `reftex-bibfile-ignore-list' has been renamed to | ||
| 10905 | `reftex-bibfile-ignore-regexps' and indeed can be fed with regular | ||
| 10906 | expressions. | ||
| 10907 | |||
| 10908 | *** Multiple Selection buffers are now hidden buffers. | ||
| 10909 | |||
| 10910 | ** New/deleted modes and packages | ||
| 10911 | |||
| 10912 | *** The package snmp-mode.el provides major modes for editing SNMP and | ||
| 10913 | SNMPv2 MIBs. It has entries on `auto-mode-alist'. | ||
| 10914 | |||
| 10915 | *** The package sql.el provides a major mode, M-x sql-mode, for | ||
| 10916 | editing SQL files, and M-x sql-interactive-mode for interacting with | ||
| 10917 | SQL interpreters. It has an entry on `auto-mode-alist'. | ||
| 10918 | |||
| 10919 | *** ispell4.el has been deleted. It got in the way of ispell.el and | ||
| 10920 | this was hard to fix reliably. It has long been obsolete -- use | ||
| 10921 | Ispell 3.1 and ispell.el. | ||
| 10922 | |||
| 10923 | * MS-DOS changes in Emacs 20.4 | ||
| 10924 | |||
| 10925 | ** Emacs compiled for MS-DOS now supports MULE features better. | ||
| 10926 | This includes support for display of all ISO 8859-N character sets, | ||
| 10927 | conversion to and from IBM codepage encoding of non-ASCII characters, | ||
| 10928 | and automatic setup of the MULE environment at startup. For details, | ||
| 10929 | check out the section `MS-DOS and MULE' in the manual. | ||
| 10930 | |||
| 10931 | The MS-DOS installation procedure automatically configures and builds | ||
| 10932 | Emacs with input method support if it finds an unpacked Leim | ||
| 10933 | distribution when the config.bat script is run. | ||
| 10934 | |||
| 10935 | ** Formerly, the value of lpr-command did not affect printing on | ||
| 10936 | MS-DOS unless print-region-function was set to nil, but now it | ||
| 10937 | controls whether an external program is invoked or output is written | ||
| 10938 | directly to a printer port. Similarly, in the previous version of | ||
| 10939 | Emacs, the value of ps-lpr-command did not affect PostScript printing | ||
| 10940 | on MS-DOS unless ps-printer-name was set to something other than a | ||
| 10941 | string (eg. t or `pipe'), but now it controls whether an external | ||
| 10942 | program is used. (These changes were made so that configuration of | ||
| 10943 | printing variables would be almost identical across all platforms.) | ||
| 10944 | |||
| 10945 | ** In the previous version of Emacs, PostScript and non-PostScript | ||
| 10946 | output was piped to external programs, but because most print programs | ||
| 10947 | available for MS-DOS and MS-Windows cannot read data from their standard | ||
| 10948 | input, on those systems the data to be output is now written to a | ||
| 10949 | temporary file whose name is passed as the last argument to the external | ||
| 10950 | program. | ||
| 10951 | |||
| 10952 | An exception is made for `print', a standard program on Windows NT, | ||
| 10953 | and `nprint', a standard program on Novell Netware. For both of these | ||
| 10954 | programs, the command line is constructed in the appropriate syntax | ||
| 10955 | automatically, using only the value of printer-name or ps-printer-name | ||
| 10956 | as appropriate--the value of the relevant `-switches' variable is | ||
| 10957 | ignored, as both programs have no useful switches. | ||
| 10958 | |||
| 10959 | ** The value of the variable dos-printer (cf. dos-ps-printer), if it has | ||
| 10960 | a value, overrides the value of printer-name (cf. ps-printer-name), on | ||
| 10961 | MS-DOS and MS-Windows only. This has been true since version 20.3, but | ||
| 10962 | was not documented clearly before. | ||
| 10963 | |||
| 10964 | ** All the Emacs games now work on MS-DOS terminals. | ||
| 10965 | This includes Tetris and Snake. | ||
| 10966 | |||
| 10967 | * Lisp changes in Emacs 20.4 | ||
| 10968 | |||
| 10969 | ** New functions line-beginning-position and line-end-position | ||
| 10970 | return the position of the beginning or end of the current line. | ||
| 10971 | They both accept an optional argument, which has the same | ||
| 10972 | meaning as the argument to beginning-of-line or end-of-line. | ||
| 10973 | |||
| 10974 | ** find-file and allied functions now have an optional argument | ||
| 10975 | WILDCARD. If this is non-nil, they do wildcard processing, | ||
| 10976 | and visit all files that match the wildcard pattern. | ||
| 10977 | |||
| 10978 | ** Changes in the file-attributes function. | ||
| 10979 | |||
| 10980 | *** The file size returned by file-attributes may be an integer or a float. | ||
| 10981 | It is an integer if the size fits in a Lisp integer, float otherwise. | ||
| 10982 | |||
| 10983 | *** The inode number returned by file-attributes may be an integer (if | ||
| 10984 | the number fits in a Lisp integer) or a cons cell containing two | ||
| 10985 | integers. | ||
| 10986 | |||
| 10987 | ** The new function directory-files-and-attributes returns a list of | ||
| 10988 | files in a directory and their attributes. It accepts the same | ||
| 10989 | arguments as directory-files and has similar semantics, except that | ||
| 10990 | file names and attributes are returned. | ||
| 10991 | |||
| 10992 | ** The new function file-attributes-lessp is a helper function for | ||
| 10993 | sorting the list generated by directory-files-and-attributes. It | ||
| 10994 | accepts two arguments, each a list of a file name and its attributes. | ||
| 10995 | It compares the file names of each according to string-lessp and | ||
| 10996 | returns the result. | ||
| 10997 | |||
| 10998 | ** The new function file-expand-wildcards expands a wildcard-pattern | ||
| 10999 | to produce a list of existing files that match the pattern. | ||
| 11000 | |||
| 11001 | ** New functions for base64 conversion: | ||
| 11002 | |||
| 11003 | The function base64-encode-region converts a part of the buffer | ||
| 11004 | into the base64 code used in MIME. base64-decode-region | ||
| 11005 | performs the opposite conversion. Line-breaking is supported | ||
| 11006 | optionally. | ||
| 11007 | |||
| 11008 | Functions base64-encode-string and base64-decode-string do a similar | ||
| 11009 | job on the text in a string. They return the value as a new string. | ||
| 11010 | |||
| 11011 | ** | ||
| 11012 | The new function process-running-child-p | ||
| 11013 | will tell you if a subprocess has given control of its | ||
| 11014 | terminal to its own child process. | ||
| 11015 | |||
| 11016 | ** interrupt-process and such functions have a new feature: | ||
| 11017 | when the second argument is `lambda', they send a signal | ||
| 11018 | to the running child of the subshell, if any, but if the shell | ||
| 11019 | itself owns its terminal, no signal is sent. | ||
| 11020 | |||
| 11021 | ** There are new widget types `plist' and `alist' which can | ||
| 11022 | be used for customizing variables whose values are plists or alists. | ||
| 11023 | |||
| 11024 | ** easymenu.el now understands `:key-sequence' and `:style button'. | ||
| 11025 | :included is an alias for :visible. | ||
| 11026 | |||
| 11027 | easy-menu-add-item now understands the values returned by | ||
| 11028 | easy-menu-remove-item and easy-menu-item-present-p. This can be used | ||
| 11029 | to move or copy menu entries. | ||
| 11030 | |||
| 11031 | ** Multibyte editing changes | ||
| 11032 | |||
| 11033 | *** The definitions of sref and char-bytes are changed. Now, sref is | ||
| 11034 | an alias of aref and char-bytes always returns 1. This change is to | ||
| 11035 | make some Emacs Lisp code which works on 20.2 and earlier also | ||
| 11036 | work on the latest Emacs. Such code uses a combination of sref and | ||
| 11037 | char-bytes in a loop typically as below: | ||
| 11038 | (setq char (sref str idx) | ||
| 11039 | idx (+ idx (char-bytes idx))) | ||
| 11040 | The byte-compiler now warns that this is obsolete. | ||
| 11041 | |||
| 11042 | If you want to know how many bytes a specific multibyte character | ||
| 11043 | (say, CH) occupies in a multibyte buffer, use this code: | ||
| 11044 | (charset-bytes (char-charset ch)) | ||
| 11045 | |||
| 11046 | *** In multibyte mode, when you narrow a buffer to some region, and the | ||
| 11047 | region is preceded or followed by non-ASCII codes, inserting or | ||
| 11048 | deleting at the head or the end of the region may signal this error: | ||
| 11049 | |||
| 11050 | Byte combining across boundary of accessible buffer text inhibited | ||
| 11051 | |||
| 11052 | This is to avoid some bytes being combined together into a character | ||
| 11053 | across the boundary. | ||
| 11054 | |||
| 11055 | *** The functions find-charset-region and find-charset-string include | ||
| 11056 | `unknown' in the returned list in the following cases: | ||
| 11057 | o The current buffer or the target string is unibyte and | ||
| 11058 | contains 8-bit characters. | ||
| 11059 | o The current buffer or the target string is multibyte and | ||
| 11060 | contains invalid characters. | ||
| 11061 | |||
| 11062 | *** The functions decode-coding-region and encode-coding-region remove | ||
| 11063 | text properties of the target region. Ideally, they should correctly | ||
| 11064 | preserve text properties, but for the moment, it's hard. Removing | ||
| 11065 | text properties is better than preserving them in a less-than-correct | ||
| 11066 | way. | ||
| 11067 | |||
| 11068 | *** prefer-coding-system sets EOL conversion of default coding systems. | ||
| 11069 | If the argument to prefer-coding-system specifies a certain type of | ||
| 11070 | end of line conversion, the default coding systems set by | ||
| 11071 | prefer-coding-system will specify that conversion type for end of line. | ||
| 11072 | |||
| 11073 | *** The new function thai-compose-string can be used to properly | ||
| 11074 | compose Thai characters in a string. | ||
| 11075 | |||
| 11076 | ** The primitive `define-prefix-command' now takes an optional third | ||
| 11077 | argument NAME, which should be a string. It supplies the menu name | ||
| 11078 | for the created keymap. Keymaps created in order to be displayed as | ||
| 11079 | menus should always use the third argument. | ||
| 11080 | |||
| 11081 | ** The meanings of optional second arguments for read-char, | ||
| 11082 | read-event, and read-char-exclusive are flipped. Now the second | ||
| 11083 | arguments are INHERIT-INPUT-METHOD. These functions use the current | ||
| 11084 | input method (if any) if and only if INHERIT-INPUT-METHOD is non-nil. | ||
| 11085 | |||
| 11086 | ** The new function clear-this-command-keys empties out the contents | ||
| 11087 | of the vector that (this-command-keys) returns. This is useful in | ||
| 11088 | programs that read passwords, to prevent the passwords from echoing | ||
| 11089 | inadvertently as part of the next command in certain cases. | ||
| 11090 | |||
| 11091 | ** The new macro `with-temp-message' displays a temporary message in | ||
| 11092 | the echo area, while executing some Lisp code. Like `progn', it | ||
| 11093 | returns the value of the last form, but it also restores the previous | ||
| 11094 | echo area contents. | ||
| 11095 | |||
| 11096 | (with-temp-message MESSAGE &rest BODY) | ||
| 11097 | |||
| 11098 | ** The function `require' now takes an optional third argument | ||
| 11099 | NOERROR. If it is non-nil, then there is no error if the | ||
| 11100 | requested feature cannot be loaded. | ||
| 11101 | |||
| 11102 | ** In the function modify-face, an argument of (nil) for the | ||
| 11103 | foreground color, background color or stipple pattern | ||
| 11104 | means to clear out that attribute. | ||
| 11105 | |||
| 11106 | ** The `outer-window-id' frame property of an X frame | ||
| 11107 | gives the window number of the outermost X window for the frame. | ||
| 11108 | |||
| 11109 | ** Temporary buffers made with with-output-to-temp-buffer are now | ||
| 11110 | read-only by default, and normally use the major mode Help mode | ||
| 11111 | unless you put them in some other non-Fundamental mode before the | ||
| 11112 | end of with-output-to-temp-buffer. | ||
| 11113 | |||
| 11114 | ** The new functions gap-position and gap-size return information on | ||
| 11115 | the gap of the current buffer. | ||
| 11116 | |||
| 11117 | ** The new functions position-bytes and byte-to-position provide a way | ||
| 11118 | to convert between character positions and byte positions in the | ||
| 11119 | current buffer. | ||
| 11120 | |||
| 11121 | ** vc.el defines two new macros, `edit-vc-file' and `with-vc-file', to | ||
| 11122 | facilitate working with version-controlled files from Lisp programs. | ||
| 11123 | These macros check out a given file automatically if needed, and check | ||
| 11124 | it back in after any modifications have been made. | ||
| 11125 | |||
| 11126 | * Installation Changes in Emacs 20.3 | ||
| 11127 | |||
| 11128 | ** The default value of load-path now includes most subdirectories of | ||
| 11129 | the site-specific directories /usr/local/share/emacs/site-lisp and | ||
| 11130 | /usr/local/share/emacs/VERSION/site-lisp, in addition to those | ||
| 11131 | directories themselves. Both immediate subdirectories and | ||
| 11132 | subdirectories multiple levels down are added to load-path. | ||
| 11133 | |||
| 11134 | Not all subdirectories are included, though. Subdirectories whose | ||
| 11135 | names do not start with a letter or digit are excluded. | ||
| 11136 | Subdirectories named RCS or CVS are excluded. Also, a subdirectory | ||
| 11137 | which contains a file named `.nosearch' is excluded. You can use | ||
| 11138 | these methods to prevent certain subdirectories from being searched. | ||
| 11139 | |||
| 11140 | Emacs finds these subdirectories and adds them to load-path when it | ||
| 11141 | starts up. While it would be cleaner to find the subdirectories each | ||
| 11142 | time Emacs loads a file, that would be much slower. | ||
| 11143 | |||
| 11144 | This feature is an incompatible change. If you have stored some Emacs | ||
| 11145 | Lisp files in a subdirectory of the site-lisp directory specifically | ||
| 11146 | to prevent them from being used, you will need to rename the | ||
| 11147 | subdirectory to start with a non-alphanumeric character, or create a | ||
| 11148 | `.nosearch' file in it, in order to continue to achieve the desired | ||
| 11149 | results. | ||
| 11150 | |||
| 11151 | ** Emacs no longer includes an old version of the C preprocessor from | ||
| 11152 | GCC. This was formerly used to help compile Emacs with C compilers | ||
| 11153 | that had limits on the significant length of an identifier, but in | ||
| 11154 | fact we stopped supporting such compilers some time ago. | ||
| 11155 | |||
| 11156 | * Changes in Emacs 20.3 | ||
| 11157 | |||
| 11158 | ** The new command C-x z (repeat) repeats the previous command | ||
| 11159 | including its argument. If you repeat the z afterward, | ||
| 11160 | it repeats the command additional times; thus, you can | ||
| 11161 | perform many repetitions with one keystroke per repetition. | ||
| 11162 | |||
| 11163 | ** Emacs now supports "selective undo" which undoes only within a | ||
| 11164 | specified region. To do this, set point and mark around the desired | ||
| 11165 | region and type C-u C-x u (or C-u C-_). You can then continue undoing | ||
| 11166 | further, within the same region, by repeating the ordinary undo | ||
| 11167 | command C-x u or C-_. This will keep undoing changes that were made | ||
| 11168 | within the region you originally specified, until either all of them | ||
| 11169 | are undone, or it encounters a change which crosses the edge of that | ||
| 11170 | region. | ||
| 11171 | |||
| 11172 | In Transient Mark mode, undoing when a region is active requests | ||
| 11173 | selective undo. | ||
| 11174 | |||
| 11175 | ** If you specify --unibyte when starting Emacs, then all buffers are | ||
| 11176 | unibyte, except when a Lisp program specifically creates a multibyte | ||
| 11177 | buffer. Setting the environment variable EMACS_UNIBYTE has the same | ||
| 11178 | effect. The --no-unibyte option overrides EMACS_UNIBYTE and directs | ||
| 11179 | Emacs to run normally in multibyte mode. | ||
| 11180 | |||
| 11181 | The option --unibyte does not affect the reading of Emacs Lisp files, | ||
| 11182 | though. If you want a Lisp file to be read in unibyte mode, use | ||
| 11183 | -*-unibyte: t;-*- on its first line. That will force Emacs to | ||
| 11184 | load that file in unibyte mode, regardless of how Emacs was started. | ||
| 11185 | |||
| 11186 | ** toggle-enable-multibyte-characters no longer has a key binding and | ||
| 11187 | no longer appears in the menu bar. We've realized that changing the | ||
| 11188 | enable-multibyte-characters variable in an existing buffer is | ||
| 11189 | something that most users not do. | ||
| 11190 | |||
| 11191 | ** You can specify a coding system to use for the next cut or paste | ||
| 11192 | operations through the window system with the command C-x RET X. | ||
| 11193 | The coding system can make a difference for communication with other | ||
| 11194 | applications. | ||
| 11195 | |||
| 11196 | C-x RET x specifies a coding system for all subsequent cutting and | ||
| 11197 | pasting operations. | ||
| 11198 | |||
| 11199 | ** You can specify the printer to use for commands that do printing by | ||
| 11200 | setting the variable `printer-name'. Just what a printer name looks | ||
| 11201 | like depends on your operating system. You can specify a different | ||
| 11202 | printer for the Postscript printing commands by setting | ||
| 11203 | `ps-printer-name'. | ||
| 11204 | |||
| 11205 | ** Emacs now supports on-the-fly spell checking by the means of a | ||
| 11206 | minor mode. It is called M-x flyspell-mode. You don't have to remember | ||
| 11207 | any other special commands to use it, and you will hardly notice it | ||
| 11208 | except when you make a spelling error. Flyspell works by highlighting | ||
| 11209 | incorrect words as soon as they are completed or as soon as the cursor | ||
| 11210 | hits a new word. | ||
| 11211 | |||
| 11212 | Flyspell mode works with whichever dictionary you have selected for | ||
| 11213 | Ispell in Emacs. In TeX mode, it understands TeX syntax so as not | ||
| 11214 | to be confused by TeX commands. | ||
| 11215 | |||
| 11216 | You can correct a misspelled word by editing it into something | ||
| 11217 | correct. You can also correct it, or accept it as correct, by | ||
| 11218 | clicking on the word with Mouse-2; that gives you a pop-up menu | ||
| 11219 | of various alternative replacements and actions. | ||
| 11220 | |||
| 11221 | Flyspell mode also proposes "automatic" corrections. M-TAB replaces | ||
| 11222 | the current misspelled word with a possible correction. If several | ||
| 11223 | corrections are made possible, M-TAB cycles through them in | ||
| 11224 | alphabetical order, or in order of decreasing likelihood if | ||
| 11225 | flyspell-sort-corrections is nil. | ||
| 11226 | |||
| 11227 | Flyspell mode also flags an error when a word is repeated, if | ||
| 11228 | flyspell-mark-duplications-flag is non-nil. | ||
| 11229 | |||
| 11230 | ** Changes in input method usage. | ||
| 11231 | |||
| 11232 | Now you can use arrow keys (right, left, down, up) for selecting among | ||
| 11233 | the alternatives just the same way as you do by C-f, C-b, C-n, and C-p | ||
| 11234 | respectively. | ||
| 11235 | |||
| 11236 | You can use the ENTER key to accept the current conversion. | ||
| 11237 | |||
| 11238 | If you type TAB to display a list of alternatives, you can select one | ||
| 11239 | of the alternatives with Mouse-2. | ||
| 11240 | |||
| 11241 | The meaning of the variable `input-method-verbose-flag' is changed so | ||
| 11242 | that you can set it to t, nil, `default', or `complex-only'. | ||
| 11243 | |||
| 11244 | If the value is nil, extra guidance is never given. | ||
| 11245 | |||
| 11246 | If the value is t, extra guidance is always given. | ||
| 11247 | |||
| 11248 | If the value is `complex-only', extra guidance is always given only | ||
| 11249 | when you are using complex input methods such as chinese-py. | ||
| 11250 | |||
| 11251 | If the value is `default' (this is the default), extra guidance is | ||
| 11252 | given in the following case: | ||
| 11253 | o When you are using a complex input method. | ||
| 11254 | o When you are using a simple input method but not in the minibuffer. | ||
| 11255 | |||
| 11256 | If you are using Emacs through a very slow line, setting | ||
| 11257 | input-method-verbose-flag to nil or to complex-only is a good choice, | ||
| 11258 | and if you are using an input method you are not familiar with, | ||
| 11259 | setting it to t is helpful. | ||
| 11260 | |||
| 11261 | The old command select-input-method is now called set-input-method. | ||
| 11262 | |||
| 11263 | In the language environment "Korean", you can use the following | ||
| 11264 | keys: | ||
| 11265 | Shift-SPC toggle-korean-input-method | ||
| 11266 | C-F9 quail-hangul-switch-symbol-ksc | ||
| 11267 | F9 quail-hangul-switch-hanja | ||
| 11268 | These key bindings are canceled when you switch to another language | ||
| 11269 | environment. | ||
| 11270 | |||
| 11271 | ** The minibuffer history of file names now records the specified file | ||
| 11272 | names, not the entire minibuffer input. For example, if the | ||
| 11273 | minibuffer starts out with /usr/foo/, you might type in /etc/passwd to | ||
| 11274 | get | ||
| 11275 | |||
| 11276 | /usr/foo//etc/passwd | ||
| 11277 | |||
| 11278 | which stands for the file /etc/passwd. | ||
| 11279 | |||
| 11280 | Formerly, this used to put /usr/foo//etc/passwd in the history list. | ||
| 11281 | Now this puts just /etc/passwd in the history list. | ||
| 11282 | |||
| 11283 | ** If you are root, Emacs sets backup-by-copying-when-mismatch to t | ||
| 11284 | at startup, so that saving a file will be sure to preserve | ||
| 11285 | its owner and group. | ||
| 11286 | |||
| 11287 | ** find-func.el can now also find the place of definition of Emacs | ||
| 11288 | Lisp variables in user-loaded libraries. | ||
| 11289 | |||
| 11290 | ** C-x r t (string-rectangle) now deletes the existing rectangle | ||
| 11291 | contents before inserting the specified string on each line. | ||
| 11292 | |||
| 11293 | ** There is a new command delete-whitespace-rectangle | ||
| 11294 | which deletes whitespace starting from a particular column | ||
| 11295 | in all the lines on a rectangle. The column is specified | ||
| 11296 | by the left edge of the rectangle. | ||
| 11297 | |||
| 11298 | ** You can now store a number into a register with C-u NUMBER C-x r n REG, | ||
| 11299 | increment it by INC with C-u INC C-x r + REG (to increment by one, omit | ||
| 11300 | C-u INC), and insert it in the buffer with C-x r g REG. This is useful | ||
| 11301 | for writing keyboard macros. | ||
| 11302 | |||
| 11303 | ** The new command M-x speedbar displays a frame in which directories, | ||
| 11304 | files, and tags can be displayed, manipulated, and jumped to. The | ||
| 11305 | frame defaults to 20 characters in width, and is the same height as | ||
| 11306 | the frame that it was started from. Some major modes define | ||
| 11307 | additional commands for the speedbar, including Rmail, GUD/GDB, and | ||
| 11308 | info. | ||
| 11309 | |||
| 11310 | ** query-replace-regexp is now bound to C-M-%. | ||
| 11311 | |||
| 11312 | ** In Transient Mark mode, when the region is active, M-x | ||
| 11313 | query-replace and the other replace commands now operate on the region | ||
| 11314 | contents only. | ||
| 11315 | |||
| 11316 | ** M-x write-region, when used interactively, now asks for | ||
| 11317 | confirmation before overwriting an existing file. When you call | ||
| 11318 | the function from a Lisp program, a new optional argument CONFIRM | ||
| 11319 | says whether to ask for confirmation in this case. | ||
| 11320 | |||
| 11321 | ** If you use find-file-literally and the file is already visited | ||
| 11322 | non-literally, the command asks you whether to revisit the file | ||
| 11323 | literally. If you say no, it signals an error. | ||
| 11324 | |||
| 11325 | ** Major modes defined with the "derived mode" feature | ||
| 11326 | now use the proper name for the mode hook: WHATEVER-mode-hook. | ||
| 11327 | Formerly they used the name WHATEVER-mode-hooks, but that is | ||
| 11328 | inconsistent with Emacs conventions. | ||
| 11329 | |||
| 11330 | ** shell-command-on-region (and shell-command) reports success or | ||
| 11331 | failure if the command produces no output. | ||
| 11332 | |||
| 11333 | ** Set focus-follows-mouse to nil if your window system or window | ||
| 11334 | manager does not transfer focus to another window when you just move | ||
| 11335 | the mouse. | ||
| 11336 | |||
| 11337 | ** mouse-menu-buffer-maxlen has been renamed to | ||
| 11338 | mouse-buffer-menu-maxlen to be consistent with the other related | ||
| 11339 | function and variable names. | ||
| 11340 | |||
| 11341 | ** The new variable auto-coding-alist specifies coding systems for | ||
| 11342 | reading specific files. This has higher priority than | ||
| 11343 | file-coding-system-alist. | ||
| 11344 | |||
| 11345 | ** If you set the variable unibyte-display-via-language-environment to | ||
| 11346 | t, then Emacs displays non-ASCII characters are displayed by | ||
| 11347 | converting them to the equivalent multibyte characters according to | ||
| 11348 | the current language environment. As a result, they are displayed | ||
| 11349 | according to the current fontset. | ||
| 11350 | |||
| 11351 | ** C-q's handling of codes in the range 0200 through 0377 is changed. | ||
| 11352 | |||
| 11353 | The codes in the range 0200 through 0237 are inserted as one byte of | ||
| 11354 | that code regardless of the values of nonascii-translation-table and | ||
| 11355 | nonascii-insert-offset. | ||
| 11356 | |||
| 11357 | For the codes in the range 0240 through 0377, if | ||
| 11358 | enable-multibyte-characters is non-nil and nonascii-translation-table | ||
| 11359 | nor nonascii-insert-offset can't convert them to valid multibyte | ||
| 11360 | characters, they are converted to Latin-1 characters. | ||
| 11361 | |||
| 11362 | ** If you try to find a file that is not read-accessible, you now get | ||
| 11363 | an error, rather than an empty buffer and a warning. | ||
| 11364 | |||
| 11365 | ** In the minibuffer history commands M-r and M-s, an upper case | ||
| 11366 | letter in the regular expression forces case-sensitive search. | ||
| 11367 | |||
| 11368 | ** In the *Help* buffer, cross-references to commands and variables | ||
| 11369 | are inferred and hyperlinked. Use C-h m in Help mode for the relevant | ||
| 11370 | command keys. | ||
| 11371 | |||
| 11372 | ** M-x apropos-command, with a prefix argument, no longer looks for | ||
| 11373 | user option variables--instead it looks for noninteractive functions. | ||
| 11374 | |||
| 11375 | Meanwhile, the command apropos-variable normally searches for | ||
| 11376 | user option variables; with a prefix argument, it looks at | ||
| 11377 | all variables that have documentation. | ||
| 11378 | |||
| 11379 | ** When you type a long line in the minibuffer, and the minibuffer | ||
| 11380 | shows just one line, automatically scrolling works in a special way | ||
| 11381 | that shows you overlap with the previous line of text. The variable | ||
| 11382 | minibuffer-scroll-overlap controls how many characters of overlap | ||
| 11383 | it should show; the default is 20. | ||
| 11384 | |||
| 11385 | Meanwhile, Resize Minibuffer mode is still available; in that mode, | ||
| 11386 | the minibuffer grows taller (up to a point) as needed to show the whole | ||
| 11387 | of your input. | ||
| 11388 | |||
| 11389 | ** The new command M-x customize-changed-options lets you customize | ||
| 11390 | all the options whose meanings or default values have changed in | ||
| 11391 | recent Emacs versions. You specify a previous Emacs version number as | ||
| 11392 | argument, and the command creates a customization buffer showing all | ||
| 11393 | the customizable options which were changed since that version. | ||
| 11394 | Newly added options are included as well. | ||
| 11395 | |||
| 11396 | If you don't specify a particular version number argument, | ||
| 11397 | then the customization buffer shows all the customizable options | ||
| 11398 | for which Emacs versions of changes are recorded. | ||
| 11399 | |||
| 11400 | This function is also bound to the Changed Options entry in the | ||
| 11401 | Customize menu. | ||
| 11402 | |||
| 11403 | ** When you run M-x grep with a prefix argument, it figures out | ||
| 11404 | the tag around point and puts that into the default grep command. | ||
| 11405 | |||
| 11406 | ** The new command M-* (pop-tag-mark) pops back through a history of | ||
| 11407 | buffer positions from which M-. or other tag-finding commands were | ||
| 11408 | invoked. | ||
| 11409 | |||
| 11410 | ** The new variable comment-padding specifies the number of spaces | ||
| 11411 | that `comment-region' will insert before the actual text of the comment. | ||
| 11412 | The default is 1. | ||
| 11413 | |||
| 11414 | ** In Fortran mode the characters `.', `_' and `$' now have symbol | ||
| 11415 | syntax, not word syntax. Fortran mode now supports `imenu' and has | ||
| 11416 | new commands fortran-join-line (M-^) and fortran-narrow-to-subprogram | ||
| 11417 | (C-x n d). M-q can be used to fill a statement or comment block | ||
| 11418 | sensibly. | ||
| 11419 | |||
| 11420 | ** GUD now supports jdb, the Java debugger, and pdb, the Python debugger. | ||
| 11421 | |||
| 11422 | ** If you set the variable add-log-keep-changes-together to a non-nil | ||
| 11423 | value, the command `C-x 4 a' will automatically notice when you make | ||
| 11424 | two entries in one day for one file, and combine them. | ||
| 11425 | |||
| 11426 | ** You can use the command M-x diary-mail-entries to mail yourself a | ||
| 11427 | reminder about upcoming diary entries. See the documentation string | ||
| 11428 | for a sample shell script for calling this function automatically | ||
| 11429 | every night. | ||
| 11430 | |||
| 11431 | ** Desktop changes | ||
| 11432 | |||
| 11433 | *** All you need to do to enable use of the Desktop package, is to set | ||
| 11434 | the variable desktop-enable to t with Custom. | ||
| 11435 | |||
| 11436 | *** Minor modes are now restored. Which minor modes are restored | ||
| 11437 | and how modes are restored is controlled by `desktop-minor-mode-table'. | ||
| 11438 | |||
| 11439 | ** There is no need to do anything special, now, to enable Gnus to | ||
| 11440 | read and post multi-lingual articles. | ||
| 11441 | |||
| 11442 | ** Outline mode has now support for showing hidden outlines when | ||
| 11443 | doing an isearch. In order for this to happen search-invisible should | ||
| 11444 | be set to open (the default). If an isearch match is inside a hidden | ||
| 11445 | outline the outline is made visible. If you continue pressing C-s and | ||
| 11446 | the match moves outside the formerly invisible outline, the outline is | ||
| 11447 | made invisible again. | ||
| 11448 | |||
| 11449 | ** Mail reading and sending changes | ||
| 11450 | |||
| 11451 | *** The Rmail e command now switches to displaying the whole header of | ||
| 11452 | the message before it lets you edit the message. This is so that any | ||
| 11453 | changes you make in the header will not be lost if you subsequently | ||
| 11454 | toggle. | ||
| 11455 | |||
| 11456 | *** The w command in Rmail, which writes the message body into a file, | ||
| 11457 | now works in the summary buffer as well. (The command to delete the | ||
| 11458 | summary buffer is now Q.) The default file name for the w command, if | ||
| 11459 | the message has no subject, is stored in the variable | ||
| 11460 | rmail-default-body-file. | ||
| 11461 | |||
| 11462 | *** Most of the commands and modes that operate on mail and netnews no | ||
| 11463 | longer depend on the value of mail-header-separator. Instead, they | ||
| 11464 | handle whatever separator the buffer happens to use. | ||
| 11465 | |||
| 11466 | *** If you set mail-signature to a value which is not t, nil, or a string, | ||
| 11467 | it should be an expression. When you send a message, this expression | ||
| 11468 | is evaluated to insert the signature. | ||
| 11469 | |||
| 11470 | *** The new Lisp library feedmail.el (version 8) enhances processing of | ||
| 11471 | outbound email messages. It works in coordination with other email | ||
| 11472 | handling packages (e.g., rmail, VM, gnus) and is responsible for | ||
| 11473 | putting final touches on messages and actually submitting them for | ||
| 11474 | transmission. Users of the emacs program "fakemail" might be | ||
| 11475 | especially interested in trying feedmail. | ||
| 11476 | |||
| 11477 | feedmail is not enabled by default. See comments at the top of | ||
| 11478 | feedmail.el for set-up instructions. Among the bigger features | ||
| 11479 | provided by feedmail are: | ||
| 11480 | |||
| 11481 | **** you can park outgoing messages into a disk-based queue and | ||
| 11482 | stimulate sending some or all of them later (handy for laptop users); | ||
| 11483 | there is also a queue for draft messages | ||
| 11484 | |||
| 11485 | **** you can get one last look at the prepped outbound message and | ||
| 11486 | be prompted for confirmation | ||
| 11487 | |||
| 11488 | **** does smart filling of address headers | ||
| 11489 | |||
| 11490 | **** can generate a MESSAGE-ID: line and a DATE: line; the date can be | ||
| 11491 | the time the message was written or the time it is being sent; this | ||
| 11492 | can make FCC copies more closely resemble copies that recipients get | ||
| 11493 | |||
| 11494 | **** you can specify an arbitrary function for actually transmitting | ||
| 11495 | the message; included in feedmail are interfaces for /bin/[r]mail, | ||
| 11496 | /usr/lib/sendmail, and Emacs Lisp smtpmail; it's easy to write a new | ||
| 11497 | function for something else (10-20 lines of Lisp code). | ||
| 11498 | |||
| 11499 | ** Dired changes | ||
| 11500 | |||
| 11501 | *** The Dired function dired-do-toggle, which toggles marked and unmarked | ||
| 11502 | files, is now bound to "t" instead of "T". | ||
| 11503 | |||
| 11504 | *** dired-at-point has been added to ffap.el. It allows one to easily | ||
| 11505 | run Dired on the directory name at point. | ||
| 11506 | |||
| 11507 | *** Dired has a new command: %g. It searches the contents of | ||
| 11508 | files in the directory and marks each file that contains a match | ||
| 11509 | for a specified regexp. | ||
| 11510 | |||
| 11511 | ** VC Changes | ||
| 11512 | |||
| 11513 | *** New option vc-ignore-vc-files lets you turn off version control | ||
| 11514 | conveniently. | ||
| 11515 | |||
| 11516 | *** VC Dired has been completely rewritten. It is now much | ||
| 11517 | faster, especially for CVS, and works very similar to ordinary | ||
| 11518 | Dired. | ||
| 11519 | |||
| 11520 | VC Dired is invoked by typing C-x v d and entering the name of the | ||
| 11521 | directory to display. By default, VC Dired gives you a recursive | ||
| 11522 | listing of all files at or below the given directory which are | ||
| 11523 | currently locked (for CVS, all files not up-to-date are shown). | ||
| 11524 | |||
| 11525 | You can change the listing format by setting vc-dired-recurse to nil, | ||
| 11526 | then it shows only the given directory, and you may also set | ||
| 11527 | vc-dired-terse-display to nil, then it shows all files under version | ||
| 11528 | control plus the names of any subdirectories, so that you can type `i' | ||
| 11529 | on such lines to insert them manually, as in ordinary Dired. | ||
| 11530 | |||
| 11531 | All Dired commands operate normally in VC Dired, except for `v', which | ||
| 11532 | is redefined as the version control prefix. That means you may type | ||
| 11533 | `v l', `v =' etc. to invoke `vc-print-log', `vc-diff' and the like on | ||
| 11534 | the file named in the current Dired buffer line. `v v' invokes | ||
| 11535 | `vc-next-action' on this file, or on all files currently marked. | ||
| 11536 | |||
| 11537 | The new command `v t' (vc-dired-toggle-terse-mode) allows you to | ||
| 11538 | toggle between terse display (only locked files) and full display (all | ||
| 11539 | VC files plus subdirectories). There is also a special command, | ||
| 11540 | `* l', to mark all files currently locked. | ||
| 11541 | |||
| 11542 | Giving a prefix argument to C-x v d now does the same thing as in | ||
| 11543 | ordinary Dired: it allows you to supply additional options for the ls | ||
| 11544 | command in the minibuffer, to fine-tune VC Dired's output. | ||
| 11545 | |||
| 11546 | *** Under CVS, if you merge changes from the repository into a working | ||
| 11547 | file, and CVS detects conflicts, VC now offers to start an ediff | ||
| 11548 | session to resolve them. | ||
| 11549 | |||
| 11550 | Alternatively, you can use the new command `vc-resolve-conflicts' to | ||
| 11551 | resolve conflicts in a file at any time. It works in any buffer that | ||
| 11552 | contains conflict markers as generated by rcsmerge (which is what CVS | ||
| 11553 | uses as well). | ||
| 11554 | |||
| 11555 | *** You can now transfer changes between branches, using the new | ||
| 11556 | command vc-merge (C-x v m). It is implemented for RCS and CVS. When | ||
| 11557 | you invoke it in a buffer under version-control, you can specify | ||
| 11558 | either an entire branch or a pair of versions, and the changes on that | ||
| 11559 | branch or between the two versions are merged into the working file. | ||
| 11560 | If this results in any conflicts, they may be resolved interactively, | ||
| 11561 | using ediff. | ||
| 11562 | |||
| 11563 | ** Changes in Font Lock | ||
| 11564 | |||
| 11565 | *** The face and variable previously known as font-lock-reference-face | ||
| 11566 | are now called font-lock-constant-face to better reflect their typical | ||
| 11567 | use for highlighting constants and labels. (Its face properties are | ||
| 11568 | unchanged.) The variable font-lock-reference-face remains for now for | ||
| 11569 | compatibility reasons, but its value is font-lock-constant-face. | ||
| 11570 | |||
| 11571 | ** Frame name display changes | ||
| 11572 | |||
| 11573 | *** The command set-frame-name lets you set the name of the current | ||
| 11574 | frame. You can use the new command select-frame-by-name to select and | ||
| 11575 | raise a frame; this is mostly useful on character-only terminals, or | ||
| 11576 | when many frames are invisible or iconified. | ||
| 11577 | |||
| 11578 | *** On character-only terminal (not a window system), changing the | ||
| 11579 | frame name is now reflected on the mode line and in the Buffers/Frames | ||
| 11580 | menu. | ||
| 11581 | |||
| 11582 | ** Comint (subshell) changes | ||
| 11583 | |||
| 11584 | *** In Comint modes, the commands to kill, stop or interrupt a | ||
| 11585 | subjob now also kill pending input. This is for compatibility | ||
| 11586 | with ordinary shells, where the signal characters do this. | ||
| 11587 | |||
| 11588 | *** There are new commands in Comint mode. | ||
| 11589 | |||
| 11590 | C-c C-x fetches the "next" line from the input history; | ||
| 11591 | that is, the line after the last line you got. | ||
| 11592 | You can use this command to fetch successive lines, one by one. | ||
| 11593 | |||
| 11594 | C-c SPC accumulates lines of input. More precisely, it arranges to | ||
| 11595 | send the current line together with the following line, when you send | ||
| 11596 | the following line. | ||
| 11597 | |||
| 11598 | C-c C-a if repeated twice consecutively now moves to the process mark, | ||
| 11599 | which separates the pending input from the subprocess output and the | ||
| 11600 | previously sent input. | ||
| 11601 | |||
| 11602 | C-c M-r now runs comint-previous-matching-input-from-input; | ||
| 11603 | it searches for a previous command, using the current pending input | ||
| 11604 | as the search string. | ||
| 11605 | |||
| 11606 | *** New option compilation-scroll-output can be set to scroll | ||
| 11607 | automatically in compilation-mode windows. | ||
| 11608 | |||
| 11609 | ** C mode changes | ||
| 11610 | |||
| 11611 | *** Multiline macros are now handled, both as they affect indentation, | ||
| 11612 | and as recognized syntax. New syntactic symbol cpp-macro-cont is | ||
| 11613 | assigned to second and subsequent lines of a multiline macro | ||
| 11614 | definition. | ||
| 11615 | |||
| 11616 | *** A new style "user" which captures all non-hook-ified | ||
| 11617 | (i.e. top-level) .emacs file variable settings and customizations. | ||
| 11618 | Style "cc-mode" is an alias for "user" and is deprecated. "gnu" | ||
| 11619 | style is still the default however. | ||
| 11620 | |||
| 11621 | *** "java" style now conforms to Sun's JDK coding style. | ||
| 11622 | |||
| 11623 | *** There are new commands c-beginning-of-defun, c-end-of-defun which | ||
| 11624 | are alternatives which you could bind to C-M-a and C-M-e if you prefer | ||
| 11625 | them. They do not have key bindings by default. | ||
| 11626 | |||
| 11627 | *** New and improved implementations of M-a (c-beginning-of-statement) | ||
| 11628 | and M-e (c-end-of-statement). | ||
| 11629 | |||
| 11630 | *** C++ namespace blocks are supported, with new syntactic symbols | ||
| 11631 | namespace-open, namespace-close, and innamespace. | ||
| 11632 | |||
| 11633 | *** File local variable settings of c-file-style and c-file-offsets | ||
| 11634 | makes the style variables local to that buffer only. | ||
| 11635 | |||
| 11636 | *** New indentation functions c-lineup-close-paren, | ||
| 11637 | c-indent-one-line-block, c-lineup-dont-change. | ||
| 11638 | |||
| 11639 | *** Improvements (hopefully!) to the way CC Mode is loaded. You | ||
| 11640 | should now be able to do a (require 'cc-mode) to get the entire | ||
| 11641 | package loaded properly for customization in your .emacs file. A new | ||
| 11642 | variable c-initialize-on-load controls this and is t by default. | ||
| 11643 | |||
| 11644 | ** Changes to hippie-expand. | ||
| 11645 | |||
| 11646 | *** New customization variable `hippie-expand-dabbrev-skip-space'. If | ||
| 11647 | non-nil, trailing spaces may be included in the abbreviation to search for, | ||
| 11648 | which then gives the same behavior as the original `dabbrev-expand'. | ||
| 11649 | |||
| 11650 | *** New customization variable `hippie-expand-dabbrev-as-symbol'. If | ||
| 11651 | non-nil, characters of syntax '_' is considered part of the word when | ||
| 11652 | expanding dynamically. | ||
| 11653 | |||
| 11654 | *** New customization variable `hippie-expand-no-restriction'. If | ||
| 11655 | non-nil, narrowed buffers are widened before they are searched. | ||
| 11656 | |||
| 11657 | *** New customization variable `hippie-expand-only-buffers'. If | ||
| 11658 | non-empty, buffers searched are restricted to the types specified in | ||
| 11659 | this list. Useful for example when constructing new special-purpose | ||
| 11660 | expansion functions with `make-hippie-expand-function'. | ||
| 11661 | |||
| 11662 | *** Text properties of the expansion are no longer copied. | ||
| 11663 | |||
| 11664 | ** Changes in BibTeX mode. | ||
| 11665 | |||
| 11666 | *** Any titleword matching a regexp in the new variable | ||
| 11667 | bibtex-autokey-titleword-ignore (case sensitive) is ignored during | ||
| 11668 | automatic key generation. This replaces variable | ||
| 11669 | bibtex-autokey-titleword-first-ignore, which only checked for matches | ||
| 11670 | against the first word in the title. | ||
| 11671 | |||
| 11672 | *** Autokey generation now uses all words from the title, not just | ||
| 11673 | capitalized words. To avoid conflicts with existing customizations, | ||
| 11674 | bibtex-autokey-titleword-ignore is set up such that words starting with | ||
| 11675 | lowerkey characters will still be ignored. Thus, if you want to use | ||
| 11676 | lowercase words from the title, you will have to overwrite the | ||
| 11677 | bibtex-autokey-titleword-ignore standard setting. | ||
| 11678 | |||
| 11679 | *** Case conversion of names and title words for automatic key | ||
| 11680 | generation is more flexible. Variable bibtex-autokey-preserve-case is | ||
| 11681 | replaced by bibtex-autokey-titleword-case-convert and | ||
| 11682 | bibtex-autokey-name-case-convert. | ||
| 11683 | |||
| 11684 | ** Changes in vcursor.el. | ||
| 11685 | |||
| 11686 | *** Support for character terminals is available: there is a new keymap | ||
| 11687 | and the vcursor will appear as an arrow between buffer text. A | ||
| 11688 | variable `vcursor-interpret-input' allows input from the vcursor to be | ||
| 11689 | entered exactly as if typed. Numerous functions, including | ||
| 11690 | `vcursor-compare-windows', have been rewritten to improve consistency | ||
| 11691 | in the selection of windows and corresponding keymaps. | ||
| 11692 | |||
| 11693 | *** vcursor options can now be altered with M-x customize under the | ||
| 11694 | Editing group once the package is loaded. | ||
| 11695 | |||
| 11696 | *** Loading vcursor now does not define keys by default, as this is | ||
| 11697 | generally a bad side effect. Use M-x customize to set | ||
| 11698 | vcursor-key-bindings to t to restore the old behavior. | ||
| 11699 | |||
| 11700 | *** vcursor-auto-disable can be `copy', which turns off copying from the | ||
| 11701 | vcursor, but doesn't disable it, after any non-vcursor command. | ||
| 11702 | |||
| 11703 | ** Ispell changes. | ||
| 11704 | |||
| 11705 | *** You can now spell check comments and strings in the current | ||
| 11706 | buffer with M-x ispell-comments-and-strings. Comments and strings | ||
| 11707 | are identified by syntax tables in effect. | ||
| 11708 | |||
| 11709 | *** Generic region skipping implemented. | ||
| 11710 | A single buffer can be broken into a number of regions where text will | ||
| 11711 | and will not be checked. The definitions of the regions can be user | ||
| 11712 | defined. New applications and improvements made available by this | ||
| 11713 | include: | ||
| 11714 | |||
| 11715 | o URLs are automatically skipped | ||
| 11716 | o EMail message checking is vastly improved. | ||
| 11717 | |||
| 11718 | *** Ispell can highlight the erroneous word even on non-window terminals. | ||
| 11719 | |||
| 11720 | ** Changes to RefTeX mode | ||
| 11721 | |||
| 11722 | RefTeX has been updated in order to make it more usable with very | ||
| 11723 | large projects (like a several volume math book). The parser has been | ||
| 11724 | re-written from scratch. To get maximum speed from RefTeX, check the | ||
| 11725 | section `Optimizations' in the manual. | ||
| 11726 | |||
| 11727 | *** New recursive parser. | ||
| 11728 | |||
| 11729 | The old version of RefTeX created a single large buffer containing the | ||
| 11730 | entire multifile document in order to parse the document. The new | ||
| 11731 | recursive parser scans the individual files. | ||
| 11732 | |||
| 11733 | *** Parsing only part of a document. | ||
| 11734 | |||
| 11735 | Reparsing of changed document parts can now be made faster by enabling | ||
| 11736 | partial scans. To use this feature, read the documentation string of | ||
| 11737 | the variable `reftex-enable-partial-scans' and set the variable to t. | ||
| 11738 | |||
| 11739 | (setq reftex-enable-partial-scans t) | ||
| 11740 | |||
| 11741 | *** Storing parsing information in a file. | ||
| 11742 | |||
| 11743 | This can improve startup times considerably. To turn it on, use | ||
| 11744 | |||
| 11745 | (setq reftex-save-parse-info t) | ||
| 11746 | |||
| 11747 | *** Using multiple selection buffers | ||
| 11748 | |||
| 11749 | If the creation of label selection buffers is too slow (this happens | ||
| 11750 | for large documents), you can reuse these buffers by setting | ||
| 11751 | |||
| 11752 | (setq reftex-use-multiple-selection-buffers t) | ||
| 11753 | |||
| 11754 | *** References to external documents. | ||
| 11755 | |||
| 11756 | The LaTeX package `xr' allows to cross-reference labels in external | ||
| 11757 | documents. RefTeX can provide information about the external | ||
| 11758 | documents as well. To use this feature, set up the \externaldocument | ||
| 11759 | macros required by the `xr' package and rescan the document with | ||
| 11760 | RefTeX. The external labels can then be accessed with the `x' key in | ||
| 11761 | the selection buffer provided by `reftex-reference' (bound to `C-c )'). | ||
| 11762 | The `x' key also works in the table of contents buffer. | ||
| 11763 | |||
| 11764 | *** Many more labeled LaTeX environments are recognized by default. | ||
| 11765 | |||
| 11766 | The built-in command list now covers all the standard LaTeX commands, | ||
| 11767 | and all of the major packages included in the LaTeX distribution. | ||
| 11768 | |||
| 11769 | Also, RefTeX now understands the \appendix macro and changes | ||
| 11770 | the enumeration of sections in the *toc* buffer accordingly. | ||
| 11771 | |||
| 11772 | *** Mouse support for selection and *toc* buffers | ||
| 11773 | |||
| 11774 | The mouse can now be used to select items in the selection and *toc* | ||
| 11775 | buffers. See also the new option `reftex-highlight-selection'. | ||
| 11776 | |||
| 11777 | *** New keymaps for selection and table of contents modes. | ||
| 11778 | |||
| 11779 | The selection processes for labels and citation keys, and the table of | ||
| 11780 | contents buffer now have their own keymaps: `reftex-select-label-map', | ||
| 11781 | `reftex-select-bib-map', `reftex-toc-map'. The selection processes | ||
| 11782 | have a number of new keys predefined. In particular, TAB lets you | ||
| 11783 | enter a label with completion. Check the on-the-fly help (press `?' | ||
| 11784 | at the selection prompt) or read the Info documentation to find out | ||
| 11785 | more. | ||
| 11786 | |||
| 11787 | *** Support for the varioref package | ||
| 11788 | |||
| 11789 | The `v' key in the label selection buffer toggles \ref versus \vref. | ||
| 11790 | |||
| 11791 | *** New hooks | ||
| 11792 | |||
| 11793 | Three new hooks can be used to redefine the way labels, references, | ||
| 11794 | and citations are created. These hooks are | ||
| 11795 | `reftex-format-label-function', `reftex-format-ref-function', | ||
| 11796 | `reftex-format-cite-function'. | ||
| 11797 | |||
| 11798 | *** Citations outside LaTeX | ||
| 11799 | |||
| 11800 | The command `reftex-citation' may also be used outside LaTeX (e.g. in | ||
| 11801 | a mail buffer). See the Info documentation for details. | ||
| 11802 | |||
| 11803 | *** Short context is no longer fontified. | ||
| 11804 | |||
| 11805 | The short context in the label menu no longer copies the | ||
| 11806 | fontification from the text in the buffer. If you prefer it to be | ||
| 11807 | fontified, use | ||
| 11808 | |||
| 11809 | (setq reftex-refontify-context t) | ||
| 11810 | |||
| 11811 | ** file-cache-minibuffer-complete now accepts a prefix argument. | ||
| 11812 | With a prefix argument, it does not try to do completion of | ||
| 11813 | the file name within its directory; it only checks for other | ||
| 11814 | directories that contain the same file name. | ||
| 11815 | |||
| 11816 | Thus, given the file name Makefile, and assuming that a file | ||
| 11817 | Makefile.in exists in the same directory, ordinary | ||
| 11818 | file-cache-minibuffer-complete will try to complete Makefile to | ||
| 11819 | Makefile.in and will therefore never look for other directories that | ||
| 11820 | have Makefile. A prefix argument tells it not to look for longer | ||
| 11821 | names such as Makefile.in, so that instead it will look for other | ||
| 11822 | directories--just as if the name were already complete in its present | ||
| 11823 | directory. | ||
| 11824 | |||
| 11825 | ** New modes and packages | ||
| 11826 | |||
| 11827 | *** There is a new alternative major mode for Perl, Cperl mode. | ||
| 11828 | It has many more features than Perl mode, and some people prefer | ||
| 11829 | it, but some do not. | ||
| 11830 | |||
| 11831 | *** There is a new major mode, M-x vhdl-mode, for editing files of VHDL | ||
| 11832 | code. | ||
| 11833 | |||
| 11834 | *** M-x which-function-mode enables a minor mode that displays the | ||
| 11835 | current function name continuously in the mode line, as you move | ||
| 11836 | around in a buffer. | ||
| 11837 | |||
| 11838 | Which Function mode is effective in major modes which support Imenu. | ||
| 11839 | |||
| 11840 | *** Gametree is a major mode for editing game analysis trees. The author | ||
| 11841 | uses it for keeping notes about his postal Chess games, but it should | ||
| 11842 | be helpful for other two-player games as well, as long as they have an | ||
| 11843 | established system of notation similar to Chess. | ||
| 11844 | |||
| 11845 | *** The new minor mode checkdoc-minor-mode provides Emacs Lisp | ||
| 11846 | documentation string checking for style and spelling. The style | ||
| 11847 | guidelines are found in the Emacs Lisp programming manual. | ||
| 11848 | |||
| 11849 | *** The net-utils package makes some common networking features | ||
| 11850 | available in Emacs. Some of these functions are wrappers around | ||
| 11851 | system utilities (ping, nslookup, etc.); others are implementations of | ||
| 11852 | simple protocols (finger, whois) in Emacs Lisp. There are also | ||
| 11853 | functions to make simple connections to TCP/IP ports for debugging and | ||
| 11854 | the like. | ||
| 11855 | |||
| 11856 | *** highlight-changes-mode is a minor mode that uses colors to | ||
| 11857 | identify recently changed parts of the buffer text. | ||
| 11858 | |||
| 11859 | *** The new package `midnight' lets you specify things to be done | ||
| 11860 | within Emacs at midnight--by default, kill buffers that you have not | ||
| 11861 | used in a considerable time. To use this feature, customize | ||
| 11862 | the user option `midnight-mode' to t. | ||
| 11863 | |||
| 11864 | *** The file generic-x.el defines a number of simple major modes. | ||
| 11865 | |||
| 11866 | apache-generic-mode: For Apache and NCSA httpd configuration files | ||
| 11867 | samba-generic-mode: Samba configuration files | ||
| 11868 | fvwm-generic-mode: For fvwm initialization files | ||
| 11869 | x-resource-generic-mode: For X resource files | ||
| 11870 | hosts-generic-mode: For hosts files (.rhosts, /etc/hosts, etc.) | ||
| 11871 | mailagent-rules-generic-mode: For mailagent .rules files | ||
| 11872 | javascript-generic-mode: For JavaScript files | ||
| 11873 | vrml-generic-mode: For VRML files | ||
| 11874 | java-manifest-generic-mode: For Java MANIFEST files | ||
| 11875 | java-properties-generic-mode: For Java property files | ||
| 11876 | mailrc-generic-mode: For .mailrc files | ||
| 11877 | |||
| 11878 | Platform-specific modes: | ||
| 11879 | |||
| 11880 | prototype-generic-mode: For Solaris/Sys V prototype files | ||
| 11881 | pkginfo-generic-mode: For Solaris/Sys V pkginfo files | ||
| 11882 | alias-generic-mode: For C shell alias files | ||
| 11883 | inf-generic-mode: For MS-Windows INF files | ||
| 11884 | ini-generic-mode: For MS-Windows INI files | ||
| 11885 | reg-generic-mode: For MS-Windows Registry files | ||
| 11886 | bat-generic-mode: For MS-Windows BAT scripts | ||
| 11887 | rc-generic-mode: For MS-Windows Resource files | ||
| 11888 | rul-generic-mode: For InstallShield scripts | ||
| 11889 | |||
| 11890 | * Lisp changes in Emacs 20.3 since the Emacs Lisp Manual was published | ||
| 11891 | |||
| 11892 | ** If you want a Lisp file to be read in unibyte mode, | ||
| 11893 | use -*-unibyte: t;-*- on its first line. | ||
| 11894 | That will force Emacs to read that file in unibyte mode. | ||
| 11895 | Otherwise, the file will be loaded and byte-compiled in multibyte mode. | ||
| 11896 | |||
| 11897 | Thus, each lisp file is read in a consistent way regardless of whether | ||
| 11898 | you started Emacs with --unibyte, so that a Lisp program gives | ||
| 11899 | consistent results regardless of how Emacs was started. | ||
| 11900 | |||
| 11901 | ** The new function assoc-default is useful for searching an alist, | ||
| 11902 | and using a default value if the key is not found there. You can | ||
| 11903 | specify a comparison predicate, so this function is useful for | ||
| 11904 | searching comparing a string against an alist of regular expressions. | ||
| 11905 | |||
| 11906 | ** The functions unibyte-char-to-multibyte and | ||
| 11907 | multibyte-char-to-unibyte convert between unibyte and multibyte | ||
| 11908 | character codes, in a way that is appropriate for the current language | ||
| 11909 | environment. | ||
| 11910 | |||
| 11911 | ** The functions read-event, read-char and read-char-exclusive now | ||
| 11912 | take two optional arguments. PROMPT, if non-nil, specifies a prompt | ||
| 11913 | string. SUPPRESS-INPUT-METHOD, if non-nil, says to disable the | ||
| 11914 | current input method for reading this one event. | ||
| 11915 | |||
| 11916 | ** Two new variables print-escape-nonascii and print-escape-multibyte | ||
| 11917 | now control whether to output certain characters as | ||
| 11918 | backslash-sequences. print-escape-nonascii applies to single-byte | ||
| 11919 | non-ASCII characters; print-escape-multibyte applies to multibyte | ||
| 11920 | characters. Both of these variables are used only when printing | ||
| 11921 | in readable fashion (prin1 uses them, princ does not). | ||
| 11922 | |||
| 11923 | * Lisp changes in Emacs 20.3 before the Emacs Lisp Manual was published | ||
| 11924 | |||
| 11925 | ** Compiled Emacs Lisp files made with the modified "MBSK" version | ||
| 11926 | of Emacs 20.2 do not work in Emacs 20.3. | ||
| 11927 | |||
| 11928 | ** Buffer positions are now measured in characters, as they were | ||
| 11929 | in Emacs 19 and before. This means that (forward-char 1) | ||
| 11930 | always increases point by 1. | ||
| 11931 | |||
| 11932 | The function chars-in-region now just subtracts its arguments. It is | ||
| 11933 | considered obsolete. The function char-boundary-p has been deleted. | ||
| 11934 | |||
| 11935 | See below for additional changes relating to multibyte characters. | ||
| 11936 | |||
| 11937 | ** defcustom, defface and defgroup now accept the keyword `:version'. | ||
| 11938 | Use this to specify in which version of Emacs a certain variable's | ||
| 11939 | default value changed. For example, | ||
| 11940 | |||
| 11941 | (defcustom foo-max 34 "*Maximum number of foo's allowed." | ||
| 11942 | :type 'integer | ||
| 11943 | :group 'foo | ||
| 11944 | :version "20.3") | ||
| 11945 | |||
| 11946 | (defgroup foo-group nil "The foo group." | ||
| 11947 | :version "20.3") | ||
| 11948 | |||
| 11949 | If an entire new group is added or the variables in it have the | ||
| 11950 | default values changed, then just add a `:version' to that group. It | ||
| 11951 | is recommended that new packages added to the distribution contain a | ||
| 11952 | `:version' in the top level group. | ||
| 11953 | |||
| 11954 | This information is used to control the customize-changed-options command. | ||
| 11955 | |||
| 11956 | ** It is now an error to change the value of a symbol whose name | ||
| 11957 | starts with a colon--if it is interned in the standard obarray. | ||
| 11958 | |||
| 11959 | However, setting such a symbol to its proper value, which is that | ||
| 11960 | symbol itself, is not an error. This is for the sake of programs that | ||
| 11961 | support previous Emacs versions by explicitly setting these variables | ||
| 11962 | to themselves. | ||
| 11963 | |||
| 11964 | If you set the variable keyword-symbols-constant-flag to nil, | ||
| 11965 | this error is suppressed, and you can set these symbols to any | ||
| 11966 | values whatever. | ||
| 11967 | |||
| 11968 | ** There is a new debugger command, R. | ||
| 11969 | It evaluates an expression like e, but saves the result | ||
| 11970 | in the buffer *Debugger-record*. | ||
| 11971 | |||
| 11972 | ** Frame-local variables. | ||
| 11973 | |||
| 11974 | You can now make a variable local to various frames. To do this, call | ||
| 11975 | the function make-variable-frame-local; this enables frames to have | ||
| 11976 | local bindings for that variable. | ||
| 11977 | |||
| 11978 | These frame-local bindings are actually frame parameters: you create a | ||
| 11979 | frame-local binding in a specific frame by calling | ||
| 11980 | modify-frame-parameters and specifying the variable name as the | ||
| 11981 | parameter name. | ||
| 11982 | |||
| 11983 | Buffer-local bindings take precedence over frame-local bindings. | ||
| 11984 | Thus, if the current buffer has a buffer-local binding, that binding is | ||
| 11985 | active; otherwise, if the selected frame has a frame-local binding, | ||
| 11986 | that binding is active; otherwise, the default binding is active. | ||
| 11987 | |||
| 11988 | It would not be hard to implement window-local bindings, but it is not | ||
| 11989 | clear that this would be very useful; windows tend to come and go in a | ||
| 11990 | very transitory fashion, so that trying to produce any specific effect | ||
| 11991 | through a window-local binding would not be very robust. | ||
| 11992 | |||
| 11993 | ** `sregexq' and `sregex' are two new functions for constructing | ||
| 11994 | "symbolic regular expressions." These are Lisp expressions that, when | ||
| 11995 | evaluated, yield conventional string-based regexps. The symbolic form | ||
| 11996 | makes it easier to construct, read, and maintain complex patterns. | ||
| 11997 | See the documentation in sregex.el. | ||
| 11998 | |||
| 11999 | ** parse-partial-sexp's return value has an additional element which | ||
| 12000 | is used to pass information along if you pass it to another call to | ||
| 12001 | parse-partial-sexp, starting its scan where the first call ended. | ||
| 12002 | The contents of this field are not yet finalized. | ||
| 12003 | |||
| 12004 | ** eval-region now accepts a fourth optional argument READ-FUNCTION. | ||
| 12005 | If it is non-nil, that function is used instead of `read'. | ||
| 12006 | |||
| 12007 | ** unload-feature by default removes the feature's functions from | ||
| 12008 | known hooks to avoid trouble, but a package providing FEATURE can | ||
| 12009 | define a hook FEATURE-unload-hook to be run by unload-feature instead. | ||
| 12010 | |||
| 12011 | ** read-from-minibuffer no longer returns the argument DEFAULT-VALUE | ||
| 12012 | when the user enters empty input. It now returns the null string, as | ||
| 12013 | it did in Emacs 19. The default value is made available in the | ||
| 12014 | history via M-n, but it is not applied here as a default. | ||
| 12015 | |||
| 12016 | The other, more specialized minibuffer-reading functions continue to | ||
| 12017 | return the default value (not the null string) when the user enters | ||
| 12018 | empty input. | ||
| 12019 | |||
| 12020 | ** The new variable read-buffer-function controls which routine to use | ||
| 12021 | for selecting buffers. For example, if you set this variable to | ||
| 12022 | `iswitchb-read-buffer', iswitchb will be used to read buffer names. | ||
| 12023 | Other functions can also be used if they accept the same arguments as | ||
| 12024 | `read-buffer' and return the selected buffer name as a string. | ||
| 12025 | |||
| 12026 | ** The new function read-passwd reads a password from the terminal, | ||
| 12027 | echoing a period for each character typed. It takes three arguments: | ||
| 12028 | a prompt string, a flag which says "read it twice to make sure", and a | ||
| 12029 | default password to use if the user enters nothing. | ||
| 12030 | |||
| 12031 | ** The variable fill-nobreak-predicate gives major modes a way to | ||
| 12032 | specify not to break a line at certain places. Its value is a | ||
| 12033 | function which is called with no arguments, with point located at the | ||
| 12034 | place where a break is being considered. If the function returns | ||
| 12035 | non-nil, then the line won't be broken there. | ||
| 12036 | |||
| 12037 | ** window-end now takes an optional second argument, UPDATE. | ||
| 12038 | If this is non-nil, then the function always returns an accurate | ||
| 12039 | up-to-date value for the buffer position corresponding to the | ||
| 12040 | end of the window, even if this requires computation. | ||
| 12041 | |||
| 12042 | ** other-buffer now takes an optional argument FRAME | ||
| 12043 | which specifies which frame's buffer list to use. | ||
| 12044 | If it is nil, that means use the selected frame's buffer list. | ||
| 12045 | |||
| 12046 | ** The new variable buffer-display-time, always local in every buffer, | ||
| 12047 | holds the value of (current-time) as of the last time that a window | ||
| 12048 | was directed to display this buffer. | ||
| 12049 | |||
| 12050 | ** It is now meaningful to compare two window-configuration objects | ||
| 12051 | with `equal'. Two window-configuration objects are equal if they | ||
| 12052 | describe equivalent arrangements of windows, in the same frame--in | ||
| 12053 | other words, if they would give the same results if passed to | ||
| 12054 | set-window-configuration. | ||
| 12055 | |||
| 12056 | ** compare-window-configurations is a new function that compares two | ||
| 12057 | window configurations loosely. It ignores differences in saved buffer | ||
| 12058 | positions and scrolling, and considers only the structure and sizes of | ||
| 12059 | windows and the choice of buffers to display. | ||
| 12060 | |||
| 12061 | ** The variable minor-mode-overriding-map-alist allows major modes to | ||
| 12062 | override the key bindings of a minor mode. The elements of this alist | ||
| 12063 | look like the elements of minor-mode-map-alist: (VARIABLE . KEYMAP). | ||
| 12064 | |||
| 12065 | If the VARIABLE in an element of minor-mode-overriding-map-alist has a | ||
| 12066 | non-nil value, the paired KEYMAP is active, and totally overrides the | ||
| 12067 | map (if any) specified for the same variable in minor-mode-map-alist. | ||
| 12068 | |||
| 12069 | minor-mode-overriding-map-alist is automatically local in all buffers, | ||
| 12070 | and it is meant to be set by major modes. | ||
| 12071 | |||
| 12072 | ** The function match-string-no-properties is like match-string | ||
| 12073 | except that it discards all text properties from the result. | ||
| 12074 | |||
| 12075 | ** The function load-average now accepts an optional argument | ||
| 12076 | USE-FLOATS. If it is non-nil, the load average values are returned as | ||
| 12077 | floating point numbers, rather than as integers to be divided by 100. | ||
| 12078 | |||
| 12079 | ** The new variable temporary-file-directory specifies the directory | ||
| 12080 | to use for creating temporary files. The default value is determined | ||
| 12081 | in a reasonable way for your operating system; on GNU and Unix systems | ||
| 12082 | it is based on the TMP and TMPDIR environment variables. | ||
| 12083 | |||
| 12084 | ** Menu changes | ||
| 12085 | |||
| 12086 | *** easymenu.el now uses the new menu item format and supports the | ||
| 12087 | keywords :visible and :filter. The existing keyword :keys is now | ||
| 12088 | better supported. | ||
| 12089 | |||
| 12090 | The variable `easy-menu-precalculate-equivalent-keybindings' controls | ||
| 12091 | a new feature which calculates keyboard equivalents for the menu when | ||
| 12092 | you define the menu. The default is t. If you rarely use menus, you | ||
| 12093 | can set the variable to nil to disable this precalculation feature; | ||
| 12094 | then the calculation is done only if you use the menu bar. | ||
| 12095 | |||
| 12096 | *** A new format for menu items is supported. | ||
| 12097 | |||
| 12098 | In a keymap, a key binding that has the format | ||
| 12099 | (STRING . REAL-BINDING) or (STRING HELP-STRING . REAL-BINDING) | ||
| 12100 | defines a menu item. Now a menu item definition may also be a list that | ||
| 12101 | starts with the symbol `menu-item'. | ||
| 12102 | |||
| 12103 | The format is: | ||
| 12104 | (menu-item ITEM-NAME) or | ||
| 12105 | (menu-item ITEM-NAME REAL-BINDING . ITEM-PROPERTY-LIST) | ||
| 12106 | where ITEM-NAME is an expression which evaluates to the menu item | ||
| 12107 | string, and ITEM-PROPERTY-LIST has the form of a property list. | ||
| 12108 | The supported properties include | ||
| 12109 | |||
| 12110 | :enable FORM Evaluate FORM to determine whether the | ||
| 12111 | item is enabled. | ||
| 12112 | :visible FORM Evaluate FORM to determine whether the | ||
| 12113 | item should appear in the menu. | ||
| 12114 | :filter FILTER-FN | ||
| 12115 | FILTER-FN is a function of one argument, | ||
| 12116 | which will be REAL-BINDING. | ||
| 12117 | It should return a binding to use instead. | ||
| 12118 | :keys DESCRIPTION | ||
| 12119 | DESCRIPTION is a string that describes an equivalent keyboard | ||
| 12120 | binding for REAL-BINDING. DESCRIPTION is expanded with | ||
| 12121 | `substitute-command-keys' before it is used. | ||
| 12122 | :key-sequence KEY-SEQUENCE | ||
| 12123 | KEY-SEQUENCE is a key-sequence for an equivalent | ||
| 12124 | keyboard binding. | ||
| 12125 | :key-sequence nil | ||
| 12126 | This means that the command normally has no | ||
| 12127 | keyboard equivalent. | ||
| 12128 | :help HELP HELP is the extra help string (not currently used). | ||
| 12129 | :button (TYPE . SELECTED) | ||
| 12130 | TYPE is :toggle or :radio. | ||
| 12131 | SELECTED is a form, to be evaluated, and its | ||
| 12132 | value says whether this button is currently selected. | ||
| 12133 | |||
| 12134 | Buttons are at the moment only simulated by prefixes in the menu. | ||
| 12135 | Eventually ordinary X-buttons may be supported. | ||
| 12136 | |||
| 12137 | (menu-item ITEM-NAME) defines unselectable item. | ||
| 12138 | |||
| 12139 | ** New event types | ||
| 12140 | |||
| 12141 | *** The new event type `mouse-wheel' is generated by a wheel on a | ||
| 12142 | mouse (such as the MS Intellimouse). The event contains a delta that | ||
| 12143 | corresponds to the amount and direction that the wheel is rotated, | ||
| 12144 | which is typically used to implement a scroll or zoom. The format is: | ||
| 12145 | |||
| 12146 | (mouse-wheel POSITION DELTA) | ||
| 12147 | |||
| 12148 | where POSITION is a list describing the position of the event in the | ||
| 12149 | same format as a mouse-click event, and DELTA is a signed number | ||
| 12150 | indicating the number of increments by which the wheel was rotated. A | ||
| 12151 | negative DELTA indicates that the wheel was rotated backwards, towards | ||
| 12152 | the user, and a positive DELTA indicates that the wheel was rotated | ||
| 12153 | forward, away from the user. | ||
| 12154 | |||
| 12155 | As of now, this event type is generated only on MS Windows. | ||
| 12156 | |||
| 12157 | *** The new event type `drag-n-drop' is generated when a group of | ||
| 12158 | files is selected in an application outside of Emacs, and then dragged | ||
| 12159 | and dropped onto an Emacs frame. The event contains a list of | ||
| 12160 | filenames that were dragged and dropped, which are then typically | ||
| 12161 | loaded into Emacs. The format is: | ||
| 12162 | |||
| 12163 | (drag-n-drop POSITION FILES) | ||
| 12164 | |||
| 12165 | where POSITION is a list describing the position of the event in the | ||
| 12166 | same format as a mouse-click event, and FILES is the list of filenames | ||
| 12167 | that were dragged and dropped. | ||
| 12168 | |||
| 12169 | As of now, this event type is generated only on MS Windows. | ||
| 12170 | |||
| 12171 | ** Changes relating to multibyte characters. | ||
| 12172 | |||
| 12173 | *** The variable enable-multibyte-characters is now read-only; | ||
| 12174 | any attempt to set it directly signals an error. The only way | ||
| 12175 | to change this value in an existing buffer is with set-buffer-multibyte. | ||
| 12176 | |||
| 12177 | *** In a string constant, `\ ' now stands for "nothing at all". You | ||
| 12178 | can use it to terminate a hex escape which is followed by a character | ||
| 12179 | that could otherwise be read as part of the hex escape. | ||
| 12180 | |||
| 12181 | *** String indices are now measured in characters, as they were | ||
| 12182 | in Emacs 19 and before. | ||
| 12183 | |||
| 12184 | The function chars-in-string has been deleted. | ||
| 12185 | The function concat-chars has been renamed to `string'. | ||
| 12186 | |||
| 12187 | *** The function set-buffer-multibyte sets the flag in the current | ||
| 12188 | buffer that says whether the buffer uses multibyte representation or | ||
| 12189 | unibyte representation. If the argument is nil, it selects unibyte | ||
| 12190 | representation. Otherwise it selects multibyte representation. | ||
| 12191 | |||
| 12192 | This function does not change the contents of the buffer, viewed | ||
| 12193 | as a sequence of bytes. However, it does change the contents | ||
| 12194 | viewed as characters; a sequence of two bytes which is treated as | ||
| 12195 | one character when the buffer uses multibyte representation | ||
| 12196 | will count as two characters using unibyte representation. | ||
| 12197 | |||
| 12198 | This function sets enable-multibyte-characters to record which | ||
| 12199 | representation is in use. It also adjusts various data in the buffer | ||
| 12200 | (including its markers, overlays and text properties) so that they are | ||
| 12201 | consistent with the new representation. | ||
| 12202 | |||
| 12203 | *** string-make-multibyte takes a string and converts it to multibyte | ||
| 12204 | representation. Most of the time, you don't need to care | ||
| 12205 | about the representation, because Emacs converts when necessary; | ||
| 12206 | however, it makes a difference when you compare strings. | ||
| 12207 | |||
| 12208 | The conversion of non-ASCII characters works by adding the value of | ||
| 12209 | nonascii-insert-offset to each character, or by translating them | ||
| 12210 | using the table nonascii-translation-table. | ||
| 12211 | |||
| 12212 | *** string-make-unibyte takes a string and converts it to unibyte | ||
| 12213 | representation. Most of the time, you don't need to care about the | ||
| 12214 | representation, but it makes a difference when you compare strings. | ||
| 12215 | |||
| 12216 | The conversion from multibyte to unibyte representation | ||
| 12217 | loses information; the only time Emacs performs it automatically | ||
| 12218 | is when inserting a multibyte string into a unibyte buffer. | ||
| 12219 | |||
| 12220 | *** string-as-multibyte takes a string, and returns another string | ||
| 12221 | which contains the same bytes, but treats them as multibyte. | ||
| 12222 | |||
| 12223 | *** string-as-unibyte takes a string, and returns another string | ||
| 12224 | which contains the same bytes, but treats them as unibyte. | ||
| 12225 | |||
| 12226 | *** The new function compare-strings lets you compare | ||
| 12227 | portions of two strings. Unibyte strings are converted to multibyte, | ||
| 12228 | so that a unibyte string can match a multibyte string. | ||
| 12229 | You can specify whether to ignore case or not. | ||
| 12230 | |||
| 12231 | *** assoc-ignore-case now uses compare-strings so that | ||
| 12232 | it can treat unibyte and multibyte strings as equal. | ||
| 12233 | |||
| 12234 | *** Regular expression operations and buffer string searches now | ||
| 12235 | convert the search pattern to multibyte or unibyte to accord with the | ||
| 12236 | buffer or string being searched. | ||
| 12237 | |||
| 12238 | One consequence is that you cannot always use \200-\377 inside of | ||
| 12239 | [...] to match all non-ASCII characters. This does still work when | ||
| 12240 | searching or matching a unibyte buffer or string, but not when | ||
| 12241 | searching or matching a multibyte string. Unfortunately, there is no | ||
| 12242 | obvious choice of syntax to use within [...] for that job. But, what | ||
| 12243 | you want is just to match all non-ASCII characters, the regular | ||
| 12244 | expression [^\0-\177] works for it. | ||
| 12245 | |||
| 12246 | *** Structure of coding system changed. | ||
| 12247 | |||
| 12248 | All coding systems (including aliases and subsidiaries) are named | ||
| 12249 | by symbols; the symbol's `coding-system' property is a vector | ||
| 12250 | which defines the coding system. Aliases share the same vector | ||
| 12251 | as the principal name, so that altering the contents of this | ||
| 12252 | vector affects the principal name and its aliases. You can define | ||
| 12253 | your own alias name of a coding system by the function | ||
| 12254 | define-coding-system-alias. | ||
| 12255 | |||
| 12256 | The coding system definition includes a property list of its own. Use | ||
| 12257 | the new functions `coding-system-get' and `coding-system-put' to | ||
| 12258 | access such coding system properties as post-read-conversion, | ||
| 12259 | pre-write-conversion, character-translation-table-for-decode, | ||
| 12260 | character-translation-table-for-encode, mime-charset, and | ||
| 12261 | safe-charsets. For instance, (coding-system-get 'iso-latin-1 | ||
| 12262 | 'mime-charset) gives the corresponding MIME-charset parameter | ||
| 12263 | `iso-8859-1'. | ||
| 12264 | |||
| 12265 | Among the coding system properties listed above, safe-charsets is new. | ||
| 12266 | The value of this property is a list of character sets which this | ||
| 12267 | coding system can correctly encode and decode. For instance: | ||
| 12268 | (coding-system-get 'iso-latin-1 'safe-charsets) => (ascii latin-iso8859-1) | ||
| 12269 | |||
| 12270 | Here, "correctly encode" means that the encoded character sets can | ||
| 12271 | also be handled safely by systems other than Emacs as far as they | ||
| 12272 | are capable of that coding system. Though, Emacs itself can encode | ||
| 12273 | the other character sets and read it back correctly. | ||
| 12274 | |||
| 12275 | *** The new function select-safe-coding-system can be used to find a | ||
| 12276 | proper coding system for encoding the specified region or string. | ||
| 12277 | This function requires a user interaction. | ||
| 12278 | |||
| 12279 | *** The new functions find-coding-systems-region and | ||
| 12280 | find-coding-systems-string are helper functions used by | ||
| 12281 | select-safe-coding-system. They return a list of all proper coding | ||
| 12282 | systems to encode a text in some region or string. If you don't want | ||
| 12283 | a user interaction, use one of these functions instead of | ||
| 12284 | select-safe-coding-system. | ||
| 12285 | |||
| 12286 | *** The explicit encoding and decoding functions, such as | ||
| 12287 | decode-coding-region and encode-coding-string, now set | ||
| 12288 | last-coding-system-used to reflect the actual way encoding or decoding | ||
| 12289 | was done. | ||
| 12290 | |||
| 12291 | *** The new function detect-coding-with-language-environment can be | ||
| 12292 | used to detect a coding system of text according to priorities of | ||
| 12293 | coding systems used by some specific language environment. | ||
| 12294 | |||
| 12295 | *** The functions detect-coding-region and detect-coding-string always | ||
| 12296 | return a list if the arg HIGHEST is nil. Thus, if only ASCII | ||
| 12297 | characters are found, they now return a list of single element | ||
| 12298 | `undecided' or its subsidiaries. | ||
| 12299 | |||
| 12300 | *** The new functions coding-system-change-eol-conversion and | ||
| 12301 | coding-system-change-text-conversion can be used to get a different | ||
| 12302 | coding system than what specified only in how end-of-line or text is | ||
| 12303 | converted. | ||
| 12304 | |||
| 12305 | *** The new function set-selection-coding-system can be used to set a | ||
| 12306 | coding system for communicating with other X clients. | ||
| 12307 | |||
| 12308 | *** The function `map-char-table' now passes as argument only valid | ||
| 12309 | character codes, plus generic characters that stand for entire | ||
| 12310 | character sets or entire subrows of a character set. In other words, | ||
| 12311 | each time `map-char-table' calls its FUNCTION argument, the key value | ||
| 12312 | either will be a valid individual character code, or will stand for a | ||
| 12313 | range of characters. | ||
| 12314 | |||
| 12315 | *** The new function `char-valid-p' can be used for checking whether a | ||
| 12316 | Lisp object is a valid character code or not. | ||
| 12317 | |||
| 12318 | *** The new function `charset-after' returns a charset of a character | ||
| 12319 | in the current buffer at position POS. | ||
| 12320 | |||
| 12321 | *** Input methods are now implemented using the variable | ||
| 12322 | input-method-function. If this is non-nil, its value should be a | ||
| 12323 | function; then, whenever Emacs reads an input event that is a printing | ||
| 12324 | character with no modifier bits, it calls that function, passing the | ||
| 12325 | event as an argument. Often this function will read more input, first | ||
| 12326 | binding input-method-function to nil. | ||
| 12327 | |||
| 12328 | The return value should be a list of the events resulting from input | ||
| 12329 | method processing. These events will be processed sequentially as | ||
| 12330 | input, before resorting to unread-command-events. Events returned by | ||
| 12331 | the input method function are not passed to the input method function, | ||
| 12332 | not even if they are printing characters with no modifier bits. | ||
| 12333 | |||
| 12334 | The input method function is not called when reading the second and | ||
| 12335 | subsequent events of a key sequence. | ||
| 12336 | |||
| 12337 | *** You can customize any language environment by using | ||
| 12338 | set-language-environment-hook and exit-language-environment-hook. | ||
| 12339 | |||
| 12340 | The hook `exit-language-environment-hook' should be used to undo | ||
| 12341 | customizations that you made with set-language-environment-hook. For | ||
| 12342 | instance, if you set up a special key binding for a specific language | ||
| 12343 | environment by set-language-environment-hook, you should set up | ||
| 12344 | exit-language-environment-hook to restore the normal key binding. | ||
| 12345 | |||
| 12346 | * Changes in Emacs 20.1 | ||
| 12347 | |||
| 12348 | ** Emacs has a new facility for customization of its many user | ||
| 12349 | options. It is called M-x customize. With this facility you can look | ||
| 12350 | at the many user options in an organized way; they are grouped into a | ||
| 12351 | tree structure. | ||
| 12352 | |||
| 12353 | M-x customize also knows what sorts of values are legitimate for each | ||
| 12354 | user option and ensures that you don't use invalid values. | ||
| 12355 | |||
| 12356 | With M-x customize, you can set options either for the present Emacs | ||
| 12357 | session or permanently. (Permanent settings are stored automatically | ||
| 12358 | in your .emacs file.) | ||
| 12359 | |||
| 12360 | ** Scroll bars are now on the left side of the window. | ||
| 12361 | You can change this with M-x customize-option scroll-bar-mode. | ||
| 12362 | |||
| 12363 | ** The mode line no longer includes the string `Emacs'. | ||
| 12364 | This makes more space in the mode line for other information. | ||
| 12365 | |||
| 12366 | ** When you select a region with the mouse, it is highlighted | ||
| 12367 | immediately afterward. At that time, if you type the DELETE key, it | ||
| 12368 | kills the region. | ||
| 12369 | |||
| 12370 | The BACKSPACE key, and the ASCII character DEL, do not do this; they | ||
| 12371 | delete the character before point, as usual. | ||
| 12372 | |||
| 12373 | ** In an incremental search the whole current match is highlighted | ||
| 12374 | on terminals which support this. (You can disable this feature | ||
| 12375 | by setting search-highlight to nil.) | ||
| 12376 | |||
| 12377 | ** In the minibuffer, in some cases, you can now use M-n to | ||
| 12378 | insert the default value into the minibuffer as text. In effect, | ||
| 12379 | the default value (if the minibuffer routines know it) is tacked | ||
| 12380 | onto the history "in the future". (The more normal use of the | ||
| 12381 | history list is to use M-p to insert minibuffer input used in the | ||
| 12382 | past.) | ||
| 12383 | |||
| 12384 | ** In Text mode, now only blank lines separate paragraphs. | ||
| 12385 | This makes it possible to get the full benefit of Adaptive Fill mode | ||
| 12386 | in Text mode, and other modes derived from it (such as Mail mode). | ||
| 12387 | TAB in Text mode now runs the command indent-relative; this | ||
| 12388 | makes a practical difference only when you use indented paragraphs. | ||
| 12389 | |||
| 12390 | As a result, the old Indented Text mode is now identical to Text mode, | ||
| 12391 | and is an alias for it. | ||
| 12392 | |||
| 12393 | If you want spaces at the beginning of a line to start a paragraph, | ||
| 12394 | use the new mode, Paragraph Indent Text mode. | ||
| 12395 | |||
| 12396 | ** Scrolling changes | ||
| 12397 | |||
| 12398 | *** Scroll commands to scroll a whole screen now preserve the screen | ||
| 12399 | position of the cursor, if scroll-preserve-screen-position is non-nil. | ||
| 12400 | |||
| 12401 | In this mode, if you scroll several screens back and forth, finishing | ||
| 12402 | on the same screen where you started, the cursor goes back to the line | ||
| 12403 | where it started. | ||
| 12404 | |||
| 12405 | *** If you set scroll-conservatively to a small number, then when you | ||
| 12406 | move point a short distance off the screen, Emacs will scroll the | ||
| 12407 | screen just far enough to bring point back on screen, provided that | ||
| 12408 | does not exceed `scroll-conservatively' lines. | ||
| 12409 | |||
| 12410 | *** The new variable scroll-margin says how close point can come to the | ||
| 12411 | top or bottom of a window. It is a number of screen lines; if point | ||
| 12412 | comes within that many lines of the top or bottom of the window, Emacs | ||
| 12413 | recenters the window. | ||
| 12414 | |||
| 12415 | ** International character set support (MULE) | ||
| 12416 | |||
| 12417 | Emacs now supports a wide variety of international character sets, | ||
| 12418 | including European variants of the Latin alphabet, as well as Chinese, | ||
| 12419 | Devanagari (Hindi and Marathi), Ethiopian, Greek, IPA, Japanese, | ||
| 12420 | Korean, Lao, Russian, Thai, Tibetan, and Vietnamese scripts. These | ||
| 12421 | features have been merged from the modified version of Emacs known as | ||
| 12422 | MULE (for "MULti-lingual Enhancement to GNU Emacs") | ||
| 12423 | |||
| 12424 | Users of these scripts have established many more-or-less standard | ||
| 12425 | coding systems for storing files. Emacs uses a single multibyte | ||
| 12426 | character encoding within Emacs buffers; it can translate from a wide | ||
| 12427 | variety of coding systems when reading a file and can translate back | ||
| 12428 | into any of these coding systems when saving a file. | ||
| 12429 | |||
| 12430 | Keyboards, even in the countries where these character sets are used, | ||
| 12431 | generally don't have keys for all the characters in them. So Emacs | ||
| 12432 | supports various "input methods", typically one for each script or | ||
| 12433 | language, to make it possible to type them. | ||
| 12434 | |||
| 12435 | The Emacs internal multibyte encoding represents a non-ASCII | ||
| 12436 | character as a sequence of bytes in the range 0200 through 0377. | ||
| 12437 | |||
| 12438 | The new prefix key C-x RET is used for commands that pertain | ||
| 12439 | to multibyte characters, coding systems, and input methods. | ||
| 12440 | |||
| 12441 | You can disable multibyte character support as follows: | ||
| 12442 | |||
| 12443 | (setq-default enable-multibyte-characters nil) | ||
| 12444 | |||
| 12445 | Calling the function standard-display-european turns off multibyte | ||
| 12446 | characters, unless you specify a non-nil value for the second | ||
| 12447 | argument, AUTO. This provides compatibility for people who are | ||
| 12448 | already using standard-display-european to continue using unibyte | ||
| 12449 | characters for their work until they want to change. | ||
| 12450 | |||
| 12451 | *** Input methods | ||
| 12452 | |||
| 12453 | An input method is a kind of character conversion which is designed | ||
| 12454 | specifically for interactive input. In Emacs, typically each language | ||
| 12455 | has its own input method (though sometimes several languages which use | ||
| 12456 | the same characters can share one input method). Some languages | ||
| 12457 | support several input methods. | ||
| 12458 | |||
| 12459 | The simplest kind of input method works by mapping ASCII letters into | ||
| 12460 | another alphabet. This is how the Greek and Russian input methods | ||
| 12461 | work. | ||
| 12462 | |||
| 12463 | A more powerful technique is composition: converting sequences of | ||
| 12464 | characters into one letter. Many European input methods use | ||
| 12465 | composition to produce a single non-ASCII letter from a sequence which | ||
| 12466 | consists of a letter followed by diacritics. For example, a' is one | ||
| 12467 | sequence of two characters that might be converted into a single | ||
| 12468 | letter. | ||
| 12469 | |||
| 12470 | The input methods for syllabic scripts typically use mapping followed | ||
| 12471 | by conversion. The input methods for Thai and Korean work this way. | ||
| 12472 | First, letters are mapped into symbols for particular sounds or tone | ||
| 12473 | marks; then, sequences of these which make up a whole syllable are | ||
| 12474 | mapped into one syllable sign--most often a "composite character". | ||
| 12475 | |||
| 12476 | None of these methods works very well for Chinese and Japanese, so | ||
| 12477 | they are handled specially. First you input a whole word using | ||
| 12478 | phonetic spelling; then, after the word is in the buffer, Emacs | ||
| 12479 | converts it into one or more characters using a large dictionary. | ||
| 12480 | |||
| 12481 | Since there is more than one way to represent a phonetically spelled | ||
| 12482 | word using Chinese characters, Emacs can only guess which one to use; | ||
| 12483 | typically these input methods give you a way to say "guess again" if | ||
| 12484 | the first guess is wrong. | ||
| 12485 | |||
| 12486 | *** The command C-x RET m (toggle-enable-multibyte-characters) | ||
| 12487 | turns multibyte character support on or off for the current buffer. | ||
| 12488 | |||
| 12489 | If multibyte character support is turned off in a buffer, then each | ||
| 12490 | byte is a single character, even codes 0200 through 0377--exactly as | ||
| 12491 | they did in Emacs 19.34. This includes the features for support for | ||
| 12492 | the European characters, ISO Latin-1 and ISO Latin-2. | ||
| 12493 | |||
| 12494 | However, there is no need to turn off multibyte character support to | ||
| 12495 | use ISO Latin-1 or ISO Latin-2; the Emacs multibyte character set | ||
| 12496 | includes all the characters in these character sets, and Emacs can | ||
| 12497 | translate automatically to and from either one. | ||
| 12498 | |||
| 12499 | *** Visiting a file in unibyte mode. | ||
| 12500 | |||
| 12501 | Turning off multibyte character support in the buffer after visiting a | ||
| 12502 | file with multibyte code conversion will display the multibyte | ||
| 12503 | sequences already in the buffer, byte by byte. This is probably not | ||
| 12504 | what you want. | ||
| 12505 | |||
| 12506 | If you want to edit a file of unibyte characters (Latin-1, for | ||
| 12507 | example), you can do it by specifying `no-conversion' as the coding | ||
| 12508 | system when reading the file. This coding system also turns off | ||
| 12509 | multibyte characters in that buffer. | ||
| 12510 | |||
| 12511 | If you turn off multibyte character support entirely, this turns off | ||
| 12512 | character conversion as well. | ||
| 12513 | |||
| 12514 | *** Displaying international characters on X Windows. | ||
| 12515 | |||
| 12516 | A font for X typically displays just one alphabet or script. | ||
| 12517 | Therefore, displaying the entire range of characters Emacs supports | ||
| 12518 | requires using many fonts. | ||
| 12519 | |||
| 12520 | Therefore, Emacs now supports "fontsets". Each fontset is a | ||
| 12521 | collection of fonts, each assigned to a range of character codes. | ||
| 12522 | |||
| 12523 | A fontset has a name, like a font. Individual fonts are defined by | ||
| 12524 | the X server; fontsets are defined within Emacs itself. But once you | ||
| 12525 | have defined a fontset, you can use it in a face or a frame just as | ||
| 12526 | you would use a font. | ||
| 12527 | |||
| 12528 | If a fontset specifies no font for a certain character, or if it | ||
| 12529 | specifies a font that does not exist on your system, then it cannot | ||
| 12530 | display that character. It will display an empty box instead. | ||
| 12531 | |||
| 12532 | The fontset height and width are determined by the ASCII characters | ||
| 12533 | (that is, by the font in the fontset which is used for ASCII | ||
| 12534 | characters). | ||
| 12535 | |||
| 12536 | *** Defining fontsets. | ||
| 12537 | |||
| 12538 | Emacs does not use any fontset by default. Its default font is still | ||
| 12539 | chosen as in previous versions. You can tell Emacs to use a fontset | ||
| 12540 | with the `-fn' option or the `Font' X resource. | ||
| 12541 | |||
| 12542 | Emacs creates a standard fontset automatically according to the value | ||
| 12543 | of standard-fontset-spec. This fontset's short name is | ||
| 12544 | `fontset-standard'. Bold, italic, and bold-italic variants of the | ||
| 12545 | standard fontset are created automatically. | ||
| 12546 | |||
| 12547 | If you specify a default ASCII font with the `Font' resource or `-fn' | ||
| 12548 | argument, a fontset is generated from it. This works by replacing the | ||
| 12549 | FOUNDARY, FAMILY, ADD_STYLE, and AVERAGE_WIDTH fields of the font name | ||
| 12550 | with `*' then using this to specify a fontset. This fontset's short | ||
| 12551 | name is `fontset-startup'. | ||
| 12552 | |||
| 12553 | Emacs checks resources of the form Fontset-N where N is 0, 1, 2... | ||
| 12554 | The resource value should have this form: | ||
| 12555 | FONTSET-NAME, [CHARSET-NAME:FONT-NAME]... | ||
| 12556 | FONTSET-NAME should have the form of a standard X font name, except: | ||
| 12557 | * most fields should be just the wild card "*". | ||
| 12558 | * the CHARSET_REGISTRY field should be "fontset" | ||
| 12559 | * the CHARSET_ENCODING field can be any nickname of the fontset. | ||
| 12560 | The construct CHARSET-NAME:FONT-NAME can be repeated any number | ||
| 12561 | of times; each time specifies the font for one character set. | ||
| 12562 | CHARSET-NAME should be the name of a character set, and FONT-NAME | ||
| 12563 | should specify an actual font to use for that character set. | ||
| 12564 | |||
| 12565 | Each of these fontsets has an alias which is made from the | ||
| 12566 | last two font name fields, CHARSET_REGISTRY and CHARSET_ENCODING. | ||
| 12567 | You can refer to the fontset by that alias or by its full name. | ||
| 12568 | |||
| 12569 | For any character sets that you don't mention, Emacs tries to choose a | ||
| 12570 | font by substituting into FONTSET-NAME. For instance, with the | ||
| 12571 | following resource, | ||
| 12572 | Emacs*Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24 | ||
| 12573 | the font for ASCII is generated as below: | ||
| 12574 | -*-fixed-medium-r-normal-*-24-*-ISO8859-1 | ||
| 12575 | Here is the substitution rule: | ||
| 12576 | Change CHARSET_REGISTRY and CHARSET_ENCODING to that of the charset | ||
| 12577 | defined in the variable x-charset-registries. For instance, ASCII has | ||
| 12578 | the entry (ascii . "ISO8859-1") in this variable. Then, reduce | ||
| 12579 | sequences of wild cards -*-...-*- with a single wildcard -*-. | ||
| 12580 | (This is to prevent use of auto-scaled fonts.) | ||
| 12581 | |||
| 12582 | The function which processes the fontset resource value to create the | ||
| 12583 | fontset is called create-fontset-from-fontset-spec. You can also call | ||
| 12584 | that function explicitly to create a fontset. | ||
| 12585 | |||
| 12586 | With the X resource Emacs.Font, you can specify a fontset name just | ||
| 12587 | like an actual font name. But be careful not to specify a fontset | ||
| 12588 | name in a wildcard resource like Emacs*Font--that tries to specify the | ||
| 12589 | fontset for other purposes including menus, and they cannot handle | ||
| 12590 | fontsets. | ||
| 12591 | |||
| 12592 | *** The command M-x set-language-environment sets certain global Emacs | ||
| 12593 | defaults for a particular choice of language. | ||
| 12594 | |||
| 12595 | Selecting a language environment typically specifies a default input | ||
| 12596 | method and which coding systems to recognize automatically when | ||
| 12597 | visiting files. However, it does not try to reread files you have | ||
| 12598 | already visited; the text in those buffers is not affected. The | ||
| 12599 | language environment may also specify a default choice of coding | ||
| 12600 | system for new files that you create. | ||
| 12601 | |||
| 12602 | It makes no difference which buffer is current when you use | ||
| 12603 | set-language-environment, because these defaults apply globally to the | ||
| 12604 | whole Emacs session. | ||
| 12605 | |||
| 12606 | For example, M-x set-language-environment RET Latin-1 RET | ||
| 12607 | chooses the Latin-1 character set. In the .emacs file, you can do this | ||
| 12608 | with (set-language-environment "Latin-1"). | ||
| 12609 | |||
| 12610 | *** The command C-x RET f (set-buffer-file-coding-system) | ||
| 12611 | specifies the file coding system for the current buffer. This | ||
| 12612 | specifies what sort of character code translation to do when saving | ||
| 12613 | the file. As an argument, you must specify the name of one of the | ||
| 12614 | coding systems that Emacs supports. | ||
| 12615 | |||
| 12616 | *** The command C-x RET c (universal-coding-system-argument) | ||
| 12617 | lets you specify a coding system when you read or write a file. | ||
| 12618 | This command uses the minibuffer to read a coding system name. | ||
| 12619 | After you exit the minibuffer, the specified coding system | ||
| 12620 | is used for *the immediately following command*. | ||
| 12621 | |||
| 12622 | So if the immediately following command is a command to read or | ||
| 12623 | write a file, it uses the specified coding system for that file. | ||
| 12624 | |||
| 12625 | If the immediately following command does not use the coding system, | ||
| 12626 | then C-x RET c ultimately has no effect. | ||
| 12627 | |||
| 12628 | For example, C-x RET c iso-8859-1 RET C-x C-f temp RET | ||
| 12629 | visits the file `temp' treating it as ISO Latin-1. | ||
| 12630 | |||
| 12631 | *** You can specify the coding system for a file using the -*- | ||
| 12632 | construct. Include `coding: CODINGSYSTEM;' inside the -*-...-*- | ||
| 12633 | to specify use of coding system CODINGSYSTEM. You can also | ||
| 12634 | specify the coding system in a local variable list at the end | ||
| 12635 | of the file. | ||
| 12636 | |||
| 12637 | *** The command C-x RET t (set-terminal-coding-system) specifies | ||
| 12638 | the coding system for terminal output. If you specify a character | ||
| 12639 | code for terminal output, all characters output to the terminal are | ||
| 12640 | translated into that character code. | ||
| 12641 | |||
| 12642 | This feature is useful for certain character-only terminals built in | ||
| 12643 | various countries to support the languages of those countries. | ||
| 12644 | |||
| 12645 | By default, output to the terminal is not translated at all. | ||
| 12646 | |||
| 12647 | *** The command C-x RET k (set-keyboard-coding-system) specifies | ||
| 12648 | the coding system for keyboard input. | ||
| 12649 | |||
| 12650 | Character code translation of keyboard input is useful for terminals | ||
| 12651 | with keys that send non-ASCII graphic characters--for example, | ||
| 12652 | some terminals designed for ISO Latin-1 or subsets of it. | ||
| 12653 | |||
| 12654 | By default, keyboard input is not translated at all. | ||
| 12655 | |||
| 12656 | Character code translation of keyboard input is similar to using an | ||
| 12657 | input method, in that both define sequences of keyboard input that | ||
| 12658 | translate into single characters. However, input methods are designed | ||
| 12659 | to be convenient for interactive use, while the code translations are | ||
| 12660 | designed to work with terminals. | ||
| 12661 | |||
| 12662 | *** The command C-x RET p (set-buffer-process-coding-system) | ||
| 12663 | specifies the coding system for input and output to a subprocess. | ||
| 12664 | This command applies to the current buffer; normally, each subprocess | ||
| 12665 | has its own buffer, and thus you can use this command to specify | ||
| 12666 | translation to and from a particular subprocess by giving the command | ||
| 12667 | in the corresponding buffer. | ||
| 12668 | |||
| 12669 | By default, process input and output are not translated at all. | ||
| 12670 | |||
| 12671 | *** The variable file-name-coding-system specifies the coding system | ||
| 12672 | to use for encoding file names before operating on them. | ||
| 12673 | It is also used for decoding file names obtained from the system. | ||
| 12674 | |||
| 12675 | *** The command C-\ (toggle-input-method) activates or deactivates | ||
| 12676 | an input method. If no input method has been selected before, the | ||
| 12677 | command prompts for you to specify the language and input method you | ||
| 12678 | want to use. | ||
| 12679 | |||
| 12680 | C-u C-\ (select-input-method) lets you switch to a different input | ||
| 12681 | method. C-h C-\ (or C-h I) describes the current input method. | ||
| 12682 | |||
| 12683 | *** Some input methods remap the keyboard to emulate various keyboard | ||
| 12684 | layouts commonly used for particular scripts. How to do this | ||
| 12685 | remapping properly depends on your actual keyboard layout. To specify | ||
| 12686 | which layout your keyboard has, use M-x quail-set-keyboard-layout. | ||
| 12687 | |||
| 12688 | *** The command C-h C (describe-coding-system) displays | ||
| 12689 | the coding systems currently selected for various purposes, plus | ||
| 12690 | related information. | ||
| 12691 | |||
| 12692 | *** The command C-h h (view-hello-file) displays a file called | ||
| 12693 | HELLO, which has examples of text in many languages, using various | ||
| 12694 | scripts. | ||
| 12695 | |||
| 12696 | *** The command C-h L (describe-language-support) displays | ||
| 12697 | information about the support for a particular language. | ||
| 12698 | You specify the language as an argument. | ||
| 12699 | |||
| 12700 | *** The mode line now contains a letter or character that identifies | ||
| 12701 | the coding system used in the visited file. It normally follows the | ||
| 12702 | first dash. | ||
| 12703 | |||
| 12704 | A dash indicates the default state of affairs: no code conversion | ||
| 12705 | (except CRLF => newline if appropriate). `=' means no conversion | ||
| 12706 | whatsoever. The ISO 8859 coding systems are represented by digits | ||
| 12707 | 1 through 9. Other coding systems are represented by letters: | ||
| 12708 | |||
| 12709 | A alternativnyj (Russian) | ||
| 12710 | B big5 (Chinese) | ||
| 12711 | C cn-gb-2312 (Chinese) | ||
| 12712 | C iso-2022-cn (Chinese) | ||
| 12713 | D in-is13194-devanagari (Indian languages) | ||
| 12714 | E euc-japan (Japanese) | ||
| 12715 | I iso-2022-cjk or iso-2022-ss2 (Chinese, Japanese, Korean) | ||
| 12716 | J junet (iso-2022-7) or old-jis (iso-2022-jp-1978-irv) (Japanese) | ||
| 12717 | K euc-korea (Korean) | ||
| 12718 | R koi8 (Russian) | ||
| 12719 | Q tibetan | ||
| 12720 | S shift_jis (Japanese) | ||
| 12721 | T lao | ||
| 12722 | T tis620 (Thai) | ||
| 12723 | V viscii or vscii (Vietnamese) | ||
| 12724 | i iso-2022-lock (Chinese, Japanese, Korean) | ||
| 12725 | k iso-2022-kr (Korean) | ||
| 12726 | v viqr (Vietnamese) | ||
| 12727 | z hz (Chinese) | ||
| 12728 | |||
| 12729 | When you are using a character-only terminal (not a window system), | ||
| 12730 | two additional characters appear in between the dash and the file | ||
| 12731 | coding system. These two characters describe the coding system for | ||
| 12732 | keyboard input, and the coding system for terminal output. | ||
| 12733 | |||
| 12734 | *** The new variable rmail-file-coding-system specifies the code | ||
| 12735 | conversion to use for RMAIL files. The default value is nil. | ||
| 12736 | |||
| 12737 | When you read mail with Rmail, each message is decoded automatically | ||
| 12738 | into Emacs' internal format. This has nothing to do with | ||
| 12739 | rmail-file-coding-system. That variable controls reading and writing | ||
| 12740 | Rmail files themselves. | ||
| 12741 | |||
| 12742 | *** The new variable sendmail-coding-system specifies the code | ||
| 12743 | conversion for outgoing mail. The default value is nil. | ||
| 12744 | |||
| 12745 | Actually, there are three different ways of specifying the coding system | ||
| 12746 | for sending mail: | ||
| 12747 | |||
| 12748 | - If you use C-x RET f in the mail buffer, that takes priority. | ||
| 12749 | - Otherwise, if you set sendmail-coding-system non-nil, that specifies it. | ||
| 12750 | - Otherwise, the default coding system for new files is used, | ||
| 12751 | if that is non-nil. That comes from your language environment. | ||
| 12752 | - Otherwise, Latin-1 is used. | ||
| 12753 | |||
| 12754 | *** The command C-h t (help-with-tutorial) accepts a prefix argument | ||
| 12755 | to specify the language for the tutorial file. Currently, English, | ||
| 12756 | Japanese, Korean and Thai are supported. We welcome additional | ||
| 12757 | translations. | ||
| 12758 | |||
| 12759 | ** An easy new way to visit a file with no code or format conversion | ||
| 12760 | of any kind: Use M-x find-file-literally. There is also a command | ||
| 12761 | insert-file-literally which inserts a file into the current buffer | ||
| 12762 | without any conversion. | ||
| 12763 | |||
| 12764 | ** C-q's handling of octal character codes is changed. | ||
| 12765 | You can now specify any number of octal digits. | ||
| 12766 | RET terminates the digits and is discarded; | ||
| 12767 | any other non-digit terminates the digits and is then used as input. | ||
| 12768 | |||
| 12769 | ** There are new commands for looking up Info documentation for | ||
| 12770 | functions, variables and file names used in your programs. | ||
| 12771 | |||
| 12772 | Type M-x info-lookup-symbol to look up a symbol in the buffer at point. | ||
| 12773 | Type M-x info-lookup-file to look up a file in the buffer at point. | ||
| 12774 | |||
| 12775 | Precisely which Info files are used to look it up depends on the major | ||
| 12776 | mode. For example, in C mode, the GNU libc manual is used. | ||
| 12777 | |||
| 12778 | ** M-TAB in most programming language modes now runs the command | ||
| 12779 | complete-symbol. This command performs completion on the symbol name | ||
| 12780 | in the buffer before point. | ||
| 12781 | |||
| 12782 | With a numeric argument, it performs completion based on the set of | ||
| 12783 | symbols documented in the Info files for the programming language that | ||
| 12784 | you are using. | ||
| 12785 | |||
| 12786 | With no argument, it does completion based on the current tags tables, | ||
| 12787 | just like the old binding of M-TAB (complete-tag). | ||
| 12788 | |||
| 12789 | ** File locking works with NFS now. | ||
| 12790 | |||
| 12791 | The lock file for FILENAME is now a symbolic link named .#FILENAME, | ||
| 12792 | in the same directory as FILENAME. | ||
| 12793 | |||
| 12794 | This means that collision detection between two different machines now | ||
| 12795 | works reasonably well; it also means that no file server or directory | ||
| 12796 | can become a bottleneck. | ||
| 12797 | |||
| 12798 | The new method does have drawbacks. It means that collision detection | ||
| 12799 | does not operate when you edit a file in a directory where you cannot | ||
| 12800 | create new files. Collision detection also doesn't operate when the | ||
| 12801 | file server does not support symbolic links. But these conditions are | ||
| 12802 | rare, and the ability to have collision detection while using NFS is | ||
| 12803 | so useful that the change is worth while. | ||
| 12804 | |||
| 12805 | When Emacs or a system crashes, this may leave behind lock files which | ||
| 12806 | are stale. So you may occasionally get warnings about spurious | ||
| 12807 | collisions. When you determine that the collision is spurious, just | ||
| 12808 | tell Emacs to go ahead anyway. | ||
| 12809 | |||
| 12810 | ** If you wish to use Show Paren mode to display matching parentheses, | ||
| 12811 | it is no longer sufficient to load paren.el. Instead you must call | ||
| 12812 | show-paren-mode. | ||
| 12813 | |||
| 12814 | ** If you wish to use Delete Selection mode to replace a highlighted | ||
| 12815 | selection when you insert new text, it is no longer sufficient to load | ||
| 12816 | delsel.el. Instead you must call the function delete-selection-mode. | ||
| 12817 | |||
| 12818 | ** If you wish to use Partial Completion mode to complete partial words | ||
| 12819 | within symbols or filenames, it is no longer sufficient to load | ||
| 12820 | complete.el. Instead you must call the function partial-completion-mode. | ||
| 12821 | |||
| 12822 | ** If you wish to use uniquify to rename buffers for you, | ||
| 12823 | it is no longer sufficient to load uniquify.el. You must also | ||
| 12824 | set uniquify-buffer-name-style to one of the non-nil legitimate values. | ||
| 12825 | |||
| 12826 | ** Changes in View mode. | ||
| 12827 | |||
| 12828 | *** Several new commands are available in View mode. | ||
| 12829 | Do H in view mode for a list of commands. | ||
| 12830 | |||
| 12831 | *** There are two new commands for entering View mode: | ||
| 12832 | view-file-other-frame and view-buffer-other-frame. | ||
| 12833 | |||
| 12834 | *** Exiting View mode does a better job of restoring windows to their | ||
| 12835 | previous state. | ||
| 12836 | |||
| 12837 | *** New customization variable view-scroll-auto-exit. If non-nil, | ||
| 12838 | scrolling past end of buffer makes view mode exit. | ||
| 12839 | |||
| 12840 | *** New customization variable view-exits-all-viewing-windows. If | ||
| 12841 | non-nil, view-mode will at exit restore all windows viewing buffer, | ||
| 12842 | not just the selected window. | ||
| 12843 | |||
| 12844 | *** New customization variable view-read-only. If non-nil, visiting a | ||
| 12845 | read-only file automatically enters View mode, and toggle-read-only | ||
| 12846 | turns View mode on or off. | ||
| 12847 | |||
| 12848 | *** New customization variable view-remove-frame-by-deleting controls | ||
| 12849 | how to remove a not needed frame at view mode exit. If non-nil, | ||
| 12850 | delete the frame, if nil make an icon of it. | ||
| 12851 | |||
| 12852 | ** C-x v l, the command to print a file's version control log, | ||
| 12853 | now positions point at the entry for the file's current branch version. | ||
| 12854 | |||
| 12855 | ** C-x v =, the command to compare a file with the last checked-in version, | ||
| 12856 | has a new feature. If the file is currently not locked, so that it is | ||
| 12857 | presumably identical to the last checked-in version, the command now asks | ||
| 12858 | which version to compare with. | ||
| 12859 | |||
| 12860 | ** When using hideshow.el, incremental search can temporarily show hidden | ||
| 12861 | blocks if a match is inside the block. | ||
| 12862 | |||
| 12863 | The block is hidden again if the search is continued and the next match | ||
| 12864 | is outside the block. By customizing the variable | ||
| 12865 | isearch-hide-immediately you can choose to hide all the temporarily | ||
| 12866 | shown blocks only when exiting from incremental search. | ||
| 12867 | |||
| 12868 | By customizing the variable hs-isearch-open you can choose what kind | ||
| 12869 | of blocks to temporarily show during isearch: comment blocks, code | ||
| 12870 | blocks, all of them or none. | ||
| 12871 | |||
| 12872 | ** The new command C-x 4 0 (kill-buffer-and-window) kills the | ||
| 12873 | current buffer and deletes the selected window. It asks for | ||
| 12874 | confirmation first. | ||
| 12875 | |||
| 12876 | ** C-x C-w, which saves the buffer into a specified file name, | ||
| 12877 | now changes the major mode according to that file name. | ||
| 12878 | However, the mode will not be changed if | ||
| 12879 | (1) a local variables list or the `-*-' line specifies a major mode, or | ||
| 12880 | (2) the current major mode is a "special" mode, | ||
| 12881 | not suitable for ordinary files, or | ||
| 12882 | (3) the new file name does not particularly specify any mode. | ||
| 12883 | |||
| 12884 | This applies to M-x set-visited-file-name as well. | ||
| 12885 | |||
| 12886 | However, if you set change-major-mode-with-file-name to nil, then | ||
| 12887 | these commands do not change the major mode. | ||
| 12888 | |||
| 12889 | ** M-x occur changes. | ||
| 12890 | |||
| 12891 | *** If the argument to M-x occur contains upper case letters, | ||
| 12892 | it performs a case-sensitive search. | ||
| 12893 | |||
| 12894 | *** In the *Occur* buffer made by M-x occur, | ||
| 12895 | if you type g or M-x revert-buffer, this repeats the search | ||
| 12896 | using the same regular expression and the same buffer as before. | ||
| 12897 | |||
| 12898 | ** In Transient Mark mode, the region in any one buffer is highlighted | ||
| 12899 | in just one window at a time. At first, it is highlighted in the | ||
| 12900 | window where you set the mark. The buffer's highlighting remains in | ||
| 12901 | that window unless you select to another window which shows the same | ||
| 12902 | buffer--then the highlighting moves to that window. | ||
| 12903 | |||
| 12904 | ** The feature to suggest key bindings when you use M-x now operates | ||
| 12905 | after the command finishes. The message suggesting key bindings | ||
| 12906 | appears temporarily in the echo area. The previous echo area contents | ||
| 12907 | come back after a few seconds, in case they contain useful information. | ||
| 12908 | |||
| 12909 | ** Each frame now independently records the order for recently | ||
| 12910 | selected buffers, so that the default for C-x b is now based on the | ||
| 12911 | buffers recently selected in the selected frame. | ||
| 12912 | |||
| 12913 | ** Outline mode changes. | ||
| 12914 | |||
| 12915 | *** Outline mode now uses overlays (this is the former noutline.el). | ||
| 12916 | |||
| 12917 | *** Incremental searches skip over invisible text in Outline mode. | ||
| 12918 | |||
| 12919 | ** When a minibuffer window is active but not the selected window, if | ||
| 12920 | you try to use the minibuffer, you used to get a nested minibuffer. | ||
| 12921 | Now, this not only gives an error, it also cancels the minibuffer that | ||
| 12922 | was already active. | ||
| 12923 | |||
| 12924 | The motive for this change is so that beginning users do not | ||
| 12925 | unknowingly move away from minibuffers, leaving them active, and then | ||
| 12926 | get confused by it. | ||
| 12927 | |||
| 12928 | If you want to be able to have recursive minibuffers, you must | ||
| 12929 | set enable-recursive-minibuffers to non-nil. | ||
| 12930 | |||
| 12931 | ** Changes in dynamic abbrevs. | ||
| 12932 | |||
| 12933 | *** Expanding dynamic abbrevs with M-/ is now smarter about case | ||
| 12934 | conversion. If the expansion has mixed case not counting the first | ||
| 12935 | character, and the abbreviation matches the beginning of the expansion | ||
| 12936 | including case, then the expansion is copied verbatim. | ||
| 12937 | |||
| 12938 | The expansion is also copied verbatim if the abbreviation itself has | ||
| 12939 | mixed case. And using SPC M-/ to copy an additional word always | ||
| 12940 | copies it verbatim except when the previous copied word is all caps. | ||
| 12941 | |||
| 12942 | *** The values of `dabbrev-case-replace' and `dabbrev-case-fold-search' | ||
| 12943 | are no longer Lisp expressions. They have simply three possible | ||
| 12944 | values. | ||
| 12945 | |||
| 12946 | `dabbrev-case-replace' has these three values: nil (don't preserve | ||
| 12947 | case), t (do), or `case-replace' (do like M-x query-replace). | ||
| 12948 | `dabbrev-case-fold-search' has these three values: nil (don't ignore | ||
| 12949 | case), t (do), or `case-fold-search' (do like search). | ||
| 12950 | |||
| 12951 | ** Minibuffer history lists are truncated automatically now to a | ||
| 12952 | certain length. The variable history-length specifies how long they | ||
| 12953 | can be. The default value is 30. | ||
| 12954 | |||
| 12955 | ** Changes in Mail mode. | ||
| 12956 | |||
| 12957 | *** The key C-x m no longer runs the `mail' command directly. | ||
| 12958 | Instead, it runs the command `compose-mail', which invokes the mail | ||
| 12959 | composition mechanism you have selected with the variable | ||
| 12960 | `mail-user-agent'. The default choice of user agent is | ||
| 12961 | `sendmail-user-agent', which gives behavior compatible with the old | ||
| 12962 | behavior. | ||
| 12963 | |||
| 12964 | C-x 4 m now runs compose-mail-other-window, and C-x 5 m runs | ||
| 12965 | compose-mail-other-frame. | ||
| 12966 | |||
| 12967 | *** While composing a reply to a mail message, from Rmail, you can use | ||
| 12968 | the command C-c C-r to cite just the region from the message you are | ||
| 12969 | replying to. This copies the text which is the selected region in the | ||
| 12970 | buffer that shows the original message. | ||
| 12971 | |||
| 12972 | *** The command C-c C-i inserts a file at the end of the message, | ||
| 12973 | with separator lines around the contents. | ||
| 12974 | |||
| 12975 | *** The command M-x expand-mail-aliases expands all mail aliases | ||
| 12976 | in suitable mail headers. Emacs automatically extracts mail alias | ||
| 12977 | definitions from your mail alias file (e.g., ~/.mailrc). You do not | ||
| 12978 | need to expand mail aliases yourself before sending mail. | ||
| 12979 | |||
| 12980 | *** New features in the mail-complete command. | ||
| 12981 | |||
| 12982 | **** The mail-complete command now inserts the user's full name, | ||
| 12983 | for local users or if that is known. The variable mail-complete-style | ||
| 12984 | controls the style to use, and whether to do this at all. | ||
| 12985 | Its values are like those of mail-from-style. | ||
| 12986 | |||
| 12987 | **** The variable mail-passwd-command lets you specify a shell command | ||
| 12988 | to run to fetch a set of password-entries that add to the ones in | ||
| 12989 | /etc/passwd. | ||
| 12990 | |||
| 12991 | **** The variable mail-passwd-file now specifies a list of files to read | ||
| 12992 | to get the list of user ids. By default, one file is used: | ||
| 12993 | /etc/passwd. | ||
| 12994 | |||
| 12995 | ** You can "quote" a file name to inhibit special significance of | ||
| 12996 | special syntax, by adding `/:' to the beginning. Thus, if you have a | ||
| 12997 | directory named `/foo:', you can prevent it from being treated as a | ||
| 12998 | reference to a remote host named `foo' by writing it as `/:/foo:'. | ||
| 12999 | |||
| 13000 | Emacs uses this new construct automatically when necessary, such as | ||
| 13001 | when you start it with a working directory whose name might otherwise | ||
| 13002 | be taken to be magic. | ||
| 13003 | |||
| 13004 | ** There is a new command M-x grep-find which uses find to select | ||
| 13005 | files to search through, and grep to scan them. The output is | ||
| 13006 | available in a Compile mode buffer, as with M-x grep. | ||
| 13007 | |||
| 13008 | M-x grep now uses the -e option if the grep program supports that. | ||
| 13009 | (-e prevents problems if the search pattern starts with a dash.) | ||
| 13010 | |||
| 13011 | ** In Dired, the & command now flags for deletion the files whose names | ||
| 13012 | suggest they are probably not needed in the long run. | ||
| 13013 | |||
| 13014 | In Dired, * is now a prefix key for mark-related commands. | ||
| 13015 | |||
| 13016 | new key dired.el binding old key | ||
| 13017 | ------- ---------------- ------- | ||
| 13018 | * c dired-change-marks c | ||
| 13019 | * m dired-mark m | ||
| 13020 | * * dired-mark-executables * (binding deleted) | ||
| 13021 | * / dired-mark-directories / (binding deleted) | ||
| 13022 | * @ dired-mark-symlinks @ (binding deleted) | ||
| 13023 | * u dired-unmark u | ||
| 13024 | * DEL dired-unmark-backward DEL | ||
| 13025 | * ? dired-unmark-all-files C-M-? | ||
| 13026 | * ! dired-unmark-all-marks | ||
| 13027 | * % dired-mark-files-regexp % m | ||
| 13028 | * C-n dired-next-marked-file M-} | ||
| 13029 | * C-p dired-prev-marked-file M-{ | ||
| 13030 | |||
| 13031 | ** Rmail changes. | ||
| 13032 | |||
| 13033 | *** When Rmail cannot convert your incoming mail into Babyl format, it | ||
| 13034 | saves the new mail in the file RMAILOSE.n, where n is an integer | ||
| 13035 | chosen to make a unique name. This way, Rmail will not keep crashing | ||
| 13036 | each time you run it. | ||
| 13037 | |||
| 13038 | *** In Rmail, the variable rmail-summary-line-count-flag now controls | ||
| 13039 | whether to include the line count in the summary. Non-nil means yes. | ||
| 13040 | |||
| 13041 | *** In Rmail summary buffers, d and C-d (the commands to delete | ||
| 13042 | messages) now take repeat counts as arguments. A negative argument | ||
| 13043 | means to move in the opposite direction. | ||
| 13044 | |||
| 13045 | *** In Rmail, the t command now takes an optional argument which lets | ||
| 13046 | you specify whether to show the message headers in full or pruned. | ||
| 13047 | |||
| 13048 | *** In Rmail, the new command w (rmail-output-body-to-file) writes | ||
| 13049 | just the body of the current message into a file, without the headers. | ||
| 13050 | It takes the file name from the message subject, by default, but you | ||
| 13051 | can edit that file name in the minibuffer before it is actually used | ||
| 13052 | for output. | ||
| 13053 | |||
| 13054 | ** Gnus changes. | ||
| 13055 | |||
| 13056 | *** nntp.el has been totally rewritten in an asynchronous fashion. | ||
| 13057 | |||
| 13058 | *** Article prefetching functionality has been moved up into | ||
| 13059 | Gnus. | ||
| 13060 | |||
| 13061 | *** Scoring can now be performed with logical operators like | ||
| 13062 | `and', `or', `not', and parent redirection. | ||
| 13063 | |||
| 13064 | *** Article washing status can be displayed in the | ||
| 13065 | article mode line. | ||
| 13066 | |||
| 13067 | *** gnus.el has been split into many smaller files. | ||
| 13068 | |||
| 13069 | *** Suppression of duplicate articles based on Message-ID. | ||
| 13070 | |||
| 13071 | (setq gnus-suppress-duplicates t) | ||
| 13072 | |||
| 13073 | *** New variables for specifying what score and adapt files | ||
| 13074 | are to be considered home score and adapt files. See | ||
| 13075 | `gnus-home-score-file' and `gnus-home-adapt-files'. | ||
| 13076 | |||
| 13077 | *** Groups can inherit group parameters from parent topics. | ||
| 13078 | |||
| 13079 | *** Article editing has been revamped and is now usable. | ||
| 13080 | |||
| 13081 | *** Signatures can be recognized in more intelligent fashions. | ||
| 13082 | See `gnus-signature-separator' and `gnus-signature-limit'. | ||
| 13083 | |||
| 13084 | *** Summary pick mode has been made to look more nn-like. | ||
| 13085 | Line numbers are displayed and the `.' command can be | ||
| 13086 | used to pick articles. | ||
| 13087 | |||
| 13088 | *** Commands for moving the .newsrc.eld from one server to | ||
| 13089 | another have been added. | ||
| 13090 | |||
| 13091 | `M-x gnus-change-server' | ||
| 13092 | |||
| 13093 | *** A way to specify that "uninteresting" fields be suppressed when | ||
| 13094 | generating lines in buffers. | ||
| 13095 | |||
| 13096 | *** Several commands in the group buffer can be undone with | ||
| 13097 | `C-M-_'. | ||
| 13098 | |||
| 13099 | *** Scoring can be done on words using the new score type `w'. | ||
| 13100 | |||
| 13101 | *** Adaptive scoring can be done on a Subject word-by-word basis: | ||
| 13102 | |||
| 13103 | (setq gnus-use-adaptive-scoring '(word)) | ||
| 13104 | |||
| 13105 | *** Scores can be decayed. | ||
| 13106 | |||
| 13107 | (setq gnus-decay-scores t) | ||
| 13108 | |||
| 13109 | *** Scoring can be performed using a regexp on the Date header. The | ||
| 13110 | Date is normalized to compact ISO 8601 format first. | ||
| 13111 | |||
| 13112 | *** A new command has been added to remove all data on articles from | ||
| 13113 | the native server. | ||
| 13114 | |||
| 13115 | `M-x gnus-group-clear-data-on-native-groups' | ||
| 13116 | |||
| 13117 | *** A new command for reading collections of documents | ||
| 13118 | (nndoc with nnvirtual on top) has been added -- `C-M-d'. | ||
| 13119 | |||
| 13120 | *** Process mark sets can be pushed and popped. | ||
| 13121 | |||
| 13122 | *** A new mail-to-news backend makes it possible to post | ||
| 13123 | even when the NNTP server doesn't allow posting. | ||
| 13124 | |||
| 13125 | *** A new backend for reading searches from Web search engines | ||
| 13126 | (DejaNews, Alta Vista, InReference) has been added. | ||
| 13127 | |||
| 13128 | Use the `G w' command in the group buffer to create such | ||
| 13129 | a group. | ||
| 13130 | |||
| 13131 | *** Groups inside topics can now be sorted using the standard | ||
| 13132 | sorting functions, and each topic can be sorted independently. | ||
| 13133 | |||
| 13134 | See the commands under the `T S' submap. | ||
| 13135 | |||
| 13136 | *** Subsets of the groups can be sorted independently. | ||
| 13137 | |||
| 13138 | See the commands under the `G P' submap. | ||
| 13139 | |||
| 13140 | *** Cached articles can be pulled into the groups. | ||
| 13141 | |||
| 13142 | Use the `Y c' command. | ||
| 13143 | |||
| 13144 | *** Score files are now applied in a more reliable order. | ||
| 13145 | |||
| 13146 | *** Reports on where mail messages end up can be generated. | ||
| 13147 | |||
| 13148 | `M-x nnmail-split-history' | ||
| 13149 | |||
| 13150 | *** More hooks and functions have been added to remove junk | ||
| 13151 | from incoming mail before saving the mail. | ||
| 13152 | |||
| 13153 | See `nnmail-prepare-incoming-header-hook'. | ||
| 13154 | |||
| 13155 | *** The nnml mail backend now understands compressed article files. | ||
| 13156 | |||
| 13157 | *** To enable Gnus to read/post multi-lingual articles, you must execute | ||
| 13158 | the following code, for instance, in your .emacs. | ||
| 13159 | |||
| 13160 | (add-hook 'gnus-startup-hook 'gnus-mule-initialize) | ||
| 13161 | |||
| 13162 | Then, when you start Gnus, it will decode non-ASCII text automatically | ||
| 13163 | and show appropriate characters. (Note: if you are using gnus-mime | ||
| 13164 | from the SEMI package, formerly known as TM, you should NOT add this | ||
| 13165 | hook to gnus-startup-hook; gnus-mime has its own method of handling | ||
| 13166 | this issue.) | ||
| 13167 | |||
| 13168 | Since it is impossible to distinguish all coding systems | ||
| 13169 | automatically, you may need to specify a choice of coding system for a | ||
| 13170 | particular news group. This can be done by: | ||
| 13171 | |||
| 13172 | (gnus-mule-add-group NEWSGROUP 'CODING-SYSTEM) | ||
| 13173 | |||
| 13174 | Here NEWSGROUP should be a string which names a newsgroup or a tree | ||
| 13175 | of newsgroups. If NEWSGROUP is "XXX.YYY", all news groups under | ||
| 13176 | "XXX.YYY" (including "XXX.YYY.ZZZ") will use the specified coding | ||
| 13177 | system. CODING-SYSTEM specifies which coding system to use (for both | ||
| 13178 | for reading and posting). | ||
| 13179 | |||
| 13180 | CODING-SYSTEM can also be a cons cell of the form | ||
| 13181 | (READ-CODING-SYSTEM . POST-CODING-SYSTEM) | ||
| 13182 | Then READ-CODING-SYSTEM is used when you read messages from the | ||
| 13183 | newsgroups, while POST-CODING-SYSTEM is used when you post messages | ||
| 13184 | there. | ||
| 13185 | |||
| 13186 | Emacs knows the right coding systems for certain newsgroups by | ||
| 13187 | default. Here are some of these default settings: | ||
| 13188 | |||
| 13189 | (gnus-mule-add-group "fj" 'iso-2022-7) | ||
| 13190 | (gnus-mule-add-group "alt.chinese.text" 'hz-gb-2312) | ||
| 13191 | (gnus-mule-add-group "alt.hk" 'hz-gb-2312) | ||
| 13192 | (gnus-mule-add-group "alt.chinese.text.big5" 'cn-big5) | ||
| 13193 | (gnus-mule-add-group "soc.culture.vietnamese" '(nil . viqr)) | ||
| 13194 | |||
| 13195 | When you reply by mail to an article, these settings are ignored; | ||
| 13196 | the mail is encoded according to sendmail-coding-system, as usual. | ||
| 13197 | |||
| 13198 | ** CC mode changes. | ||
| 13199 | |||
| 13200 | *** If you edit primarily one style of C (or C++, Objective-C, Java) | ||
| 13201 | code, you may want to make the CC Mode style variables have global | ||
| 13202 | values so that you can set them directly in your .emacs file. To do | ||
| 13203 | this, set c-style-variables-are-local-p to nil in your .emacs file. | ||
| 13204 | Note that this only takes effect if you do it *before* cc-mode.el is | ||
| 13205 | loaded. | ||
| 13206 | |||
| 13207 | If you typically edit more than one style of C (or C++, Objective-C, | ||
| 13208 | Java) code in a single Emacs session, you may want to make the CC Mode | ||
| 13209 | style variables have buffer local values. By default, all buffers | ||
| 13210 | share the same style variable settings; to make them buffer local, set | ||
| 13211 | c-style-variables-are-local-p to t in your .emacs file. Note that you | ||
| 13212 | must do this *before* CC Mode is loaded. | ||
| 13213 | |||
| 13214 | *** The new variable c-indentation-style holds the C style name | ||
| 13215 | of the current buffer. | ||
| 13216 | |||
| 13217 | *** The variable c-block-comments-indent-p has been deleted, because | ||
| 13218 | it is no longer necessary. C mode now handles all the supported styles | ||
| 13219 | of block comments, with no need to say which one you will use. | ||
| 13220 | |||
| 13221 | *** There is a new indentation style "python", which specifies the C | ||
| 13222 | style that the Python developers like. | ||
| 13223 | |||
| 13224 | *** There is a new c-cleanup-list option: brace-elseif-brace. | ||
| 13225 | This says to put ...} else if (...) {... on one line, | ||
| 13226 | just as brace-else-brace says to put ...} else {... on one line. | ||
| 13227 | |||
| 13228 | ** VC Changes [new] | ||
| 13229 | |||
| 13230 | *** In vc-retrieve-snapshot (C-x v r), if you don't specify a snapshot | ||
| 13231 | name, it retrieves the *latest* versions of all files in the current | ||
| 13232 | directory and its subdirectories (aside from files already locked). | ||
| 13233 | |||
| 13234 | This feature is useful if your RCS directory is a link to a common | ||
| 13235 | master directory, and you want to pick up changes made by other | ||
| 13236 | developers. | ||
| 13237 | |||
| 13238 | You can do the same thing for an individual file by typing C-u C-x C-q | ||
| 13239 | RET in a buffer visiting that file. | ||
| 13240 | |||
| 13241 | *** VC can now handle files under CVS that are being "watched" by | ||
| 13242 | other developers. Such files are made read-only by CVS. To get a | ||
| 13243 | writable copy, type C-x C-q in a buffer visiting such a file. VC then | ||
| 13244 | calls "cvs edit", which notifies the other developers of it. | ||
| 13245 | |||
| 13246 | *** vc-version-diff (C-u C-x v =) now suggests reasonable defaults for | ||
| 13247 | version numbers, based on the current state of the file. | ||
| 13248 | |||
| 13249 | ** Calendar changes. | ||
| 13250 | |||
| 13251 | *** A new function, list-holidays, allows you list holidays or | ||
| 13252 | subclasses of holidays for ranges of years. Related menu items allow | ||
| 13253 | you do this for the year of the selected date, or the | ||
| 13254 | following/previous years. | ||
| 13255 | |||
| 13256 | *** There is now support for the Baha'i calendar system. Use `pb' in | ||
| 13257 | the *Calendar* buffer to display the current Baha'i date. The Baha'i | ||
| 13258 | calendar, or "Badi calendar" is a system of 19 months with 19 days | ||
| 13259 | each, and 4 intercalary days (5 during a Gregorian leap year). The | ||
| 13260 | calendar begins May 23, 1844, with each of the months named after a | ||
| 13261 | supposed attribute of God. | ||
| 13262 | |||
| 13263 | ** ps-print changes | ||
| 13264 | |||
| 13265 | There are some new user variables and subgroups for customizing the page | ||
| 13266 | layout. | ||
| 13267 | |||
| 13268 | *** Headers & Footers (subgroup) | ||
| 13269 | |||
| 13270 | Some printer systems print a header page and force the first page to | ||
| 13271 | be printed on the back of the header page when using duplex. If your | ||
| 13272 | printer system has this behavior, set variable | ||
| 13273 | `ps-banner-page-when-duplexing' to t. | ||
| 13274 | |||
| 13275 | If variable `ps-banner-page-when-duplexing' is non-nil, it prints a | ||
| 13276 | blank page as the very first printed page. So, it behaves as if the | ||
| 13277 | very first character of buffer (or region) were a form feed ^L (\014). | ||
| 13278 | |||
| 13279 | The variable `ps-spool-config' specifies who is responsible for | ||
| 13280 | setting duplex mode and page size. Valid values are: | ||
| 13281 | |||
| 13282 | lpr-switches duplex and page size are configured by `ps-lpr-switches'. | ||
| 13283 | Don't forget to set `ps-lpr-switches' to select duplex | ||
| 13284 | printing for your printer. | ||
| 13285 | |||
| 13286 | setpagedevice duplex and page size are configured by ps-print using the | ||
| 13287 | setpagedevice PostScript operator. | ||
| 13288 | |||
| 13289 | nil duplex and page size are configured by ps-print *not* using | ||
| 13290 | the setpagedevice PostScript operator. | ||
| 13291 | |||
| 13292 | The variable `ps-spool-tumble' specifies how the page images on | ||
| 13293 | opposite sides of a sheet are oriented with respect to each other. If | ||
| 13294 | `ps-spool-tumble' is nil, ps-print produces output suitable for | ||
| 13295 | bindings on the left or right. If `ps-spool-tumble' is non-nil, | ||
| 13296 | ps-print produces output suitable for bindings at the top or bottom. | ||
| 13297 | This variable takes effect only if `ps-spool-duplex' is non-nil. | ||
| 13298 | The default value is nil. | ||
| 13299 | |||
| 13300 | The variable `ps-header-frame-alist' specifies a header frame | ||
| 13301 | properties alist. Valid frame properties are: | ||
| 13302 | |||
| 13303 | fore-color Specify the foreground frame color. | ||
| 13304 | Value should be a float number between 0.0 (black | ||
| 13305 | color) and 1.0 (white color), or a string which is a | ||
| 13306 | color name, or a list of 3 float numbers which | ||
| 13307 | correspond to the Red Green Blue color scale, each | ||
| 13308 | float number between 0.0 (dark color) and 1.0 (bright | ||
| 13309 | color). The default is 0 ("black"). | ||
| 13310 | |||
| 13311 | back-color Specify the background frame color (similar to fore-color). | ||
| 13312 | The default is 0.9 ("gray90"). | ||
| 13313 | |||
| 13314 | shadow-color Specify the shadow color (similar to fore-color). | ||
| 13315 | The default is 0 ("black"). | ||
| 13316 | |||
| 13317 | border-color Specify the border color (similar to fore-color). | ||
| 13318 | The default is 0 ("black"). | ||
| 13319 | |||
| 13320 | border-width Specify the border width. | ||
| 13321 | The default is 0.4. | ||
| 13322 | |||
| 13323 | Any other property is ignored. | ||
| 13324 | |||
| 13325 | Don't change this alist directly; instead use Custom, or the | ||
| 13326 | `ps-value', `ps-get', `ps-put' and `ps-del' functions (see there for | ||
| 13327 | documentation). | ||
| 13328 | |||
| 13329 | Ps-print can also print footers. The footer variables are: | ||
| 13330 | `ps-print-footer', `ps-footer-offset', `ps-print-footer-frame', | ||
| 13331 | `ps-footer-font-family', `ps-footer-font-size', `ps-footer-line-pad', | ||
| 13332 | `ps-footer-lines', `ps-left-footer', `ps-right-footer' and | ||
| 13333 | `ps-footer-frame-alist'. These variables are similar to those | ||
| 13334 | controlling headers. | ||
| 13335 | |||
| 13336 | *** Color management (subgroup) | ||
| 13337 | |||
| 13338 | If `ps-print-color-p' is non-nil, the buffer's text will be printed in | ||
| 13339 | color. | ||
| 13340 | |||
| 13341 | *** Face Management (subgroup) | ||
| 13342 | |||
| 13343 | If you need to print without worrying about face background colors, | ||
| 13344 | set the variable `ps-use-face-background' which specifies if face | ||
| 13345 | background should be used. Valid values are: | ||
| 13346 | |||
| 13347 | t always use face background color. | ||
| 13348 | nil never use face background color. | ||
| 13349 | (face...) list of faces whose background color will be used. | ||
| 13350 | |||
| 13351 | *** N-up printing (subgroup) | ||
| 13352 | |||
| 13353 | The variable `ps-n-up-printing' specifies the number of pages per | ||
| 13354 | sheet of paper. | ||
| 13355 | |||
| 13356 | The variable `ps-n-up-margin' specifies the margin in points (pt) | ||
| 13357 | between the sheet border and the n-up printing. | ||
| 13358 | |||
| 13359 | If variable `ps-n-up-border-p' is non-nil, a border is drawn around | ||
| 13360 | each page. | ||
| 13361 | |||
| 13362 | The variable `ps-n-up-filling' specifies how the page matrix is filled | ||
| 13363 | on each sheet of paper. Following are the valid values for | ||
| 13364 | `ps-n-up-filling' with a filling example using a 3x4 page matrix: | ||
| 13365 | |||
| 13366 | `left-top' 1 2 3 4 `left-bottom' 9 10 11 12 | ||
| 13367 | 5 6 7 8 5 6 7 8 | ||
| 13368 | 9 10 11 12 1 2 3 4 | ||
| 13369 | |||
| 13370 | `right-top' 4 3 2 1 `right-bottom' 12 11 10 9 | ||
| 13371 | 8 7 6 5 8 7 6 5 | ||
| 13372 | 12 11 10 9 4 3 2 1 | ||
| 13373 | |||
| 13374 | `top-left' 1 4 7 10 `bottom-left' 3 6 9 12 | ||
| 13375 | 2 5 8 11 2 5 8 11 | ||
| 13376 | 3 6 9 12 1 4 7 10 | ||
| 13377 | |||
| 13378 | `top-right' 10 7 4 1 `bottom-right' 12 9 6 3 | ||
| 13379 | 11 8 5 2 11 8 5 2 | ||
| 13380 | 12 9 6 3 10 7 4 1 | ||
| 13381 | |||
| 13382 | Any other value is treated as `left-top'. | ||
| 13383 | |||
| 13384 | *** Zebra stripes (subgroup) | ||
| 13385 | |||
| 13386 | The variable `ps-zebra-color' controls the zebra stripes grayscale or | ||
| 13387 | RGB color. | ||
| 13388 | |||
| 13389 | The variable `ps-zebra-stripe-follow' specifies how zebra stripes | ||
| 13390 | continue on next page. Visually, valid values are (the character `+' | ||
| 13391 | to the right of each column indicates that a line is printed): | ||
| 13392 | |||
| 13393 | `nil' `follow' `full' `full-follow' | ||
| 13394 | Current Page -------- ----------- --------- ---------------- | ||
| 13395 | 1 XXXXX + 1 XXXXXXXX + 1 XXXXXX + 1 XXXXXXXXXXXXX + | ||
| 13396 | 2 XXXXX + 2 XXXXXXXX + 2 XXXXXX + 2 XXXXXXXXXXXXX + | ||
| 13397 | 3 XXXXX + 3 XXXXXXXX + 3 XXXXXX + 3 XXXXXXXXXXXXX + | ||
| 13398 | 4 + 4 + 4 + 4 + | ||
| 13399 | 5 + 5 + 5 + 5 + | ||
| 13400 | 6 + 6 + 6 + 6 + | ||
| 13401 | 7 XXXXX + 7 XXXXXXXX + 7 XXXXXX + 7 XXXXXXXXXXXXX + | ||
| 13402 | 8 XXXXX + 8 XXXXXXXX + 8 XXXXXX + 8 XXXXXXXXXXXXX + | ||
| 13403 | 9 XXXXX + 9 XXXXXXXX + 9 XXXXXX + 9 XXXXXXXXXXXXX + | ||
| 13404 | 10 + 10 + | ||
| 13405 | 11 + 11 + | ||
| 13406 | -------- ----------- --------- ---------------- | ||
| 13407 | Next Page -------- ----------- --------- ---------------- | ||
| 13408 | 12 XXXXX + 12 + 10 XXXXXX + 10 + | ||
| 13409 | 13 XXXXX + 13 XXXXXXXX + 11 XXXXXX + 11 + | ||
| 13410 | 14 XXXXX + 14 XXXXXXXX + 12 XXXXXX + 12 + | ||
| 13411 | 15 + 15 XXXXXXXX + 13 + 13 XXXXXXXXXXXXX + | ||
| 13412 | 16 + 16 + 14 + 14 XXXXXXXXXXXXX + | ||
| 13413 | 17 + 17 + 15 + 15 XXXXXXXXXXXXX + | ||
| 13414 | 18 XXXXX + 18 + 16 XXXXXX + 16 + | ||
| 13415 | 19 XXXXX + 19 XXXXXXXX + 17 XXXXXX + 17 + | ||
| 13416 | 20 XXXXX + 20 XXXXXXXX + 18 XXXXXX + 18 + | ||
| 13417 | 21 + 21 XXXXXXXX + | ||
| 13418 | 22 + 22 + | ||
| 13419 | -------- ----------- --------- ---------------- | ||
| 13420 | |||
| 13421 | Any other value is treated as `nil'. | ||
| 13422 | |||
| 13423 | |||
| 13424 | *** Printer management (subgroup) | ||
| 13425 | |||
| 13426 | The variable `ps-printer-name-option' determines the option used by | ||
| 13427 | some utilities to indicate the printer name; it's used only when | ||
| 13428 | `ps-printer-name' is a non-empty string. If you're using the lpr | ||
| 13429 | utility to print, for example, `ps-printer-name-option' should be set | ||
| 13430 | to "-P". | ||
| 13431 | |||
| 13432 | The variable `ps-manual-feed' indicates if the printer requires manual | ||
| 13433 | paper feeding. If it's nil, automatic feeding takes place. If it's | ||
| 13434 | non-nil, manual feeding takes place. | ||
| 13435 | |||
| 13436 | The variable `ps-end-with-control-d' specifies whether C-d (\x04) | ||
| 13437 | should be inserted at end of the generated PostScript. Non-nil means | ||
| 13438 | do so. | ||
| 13439 | |||
| 13440 | *** Page settings (subgroup) | ||
| 13441 | |||
| 13442 | If variable `ps-warn-paper-type' is nil, it's *not* treated as an | ||
| 13443 | error if the PostScript printer doesn't have a paper with the size | ||
| 13444 | indicated by `ps-paper-type'; the default paper size will be used | ||
| 13445 | instead. If `ps-warn-paper-type' is non-nil, an error is signaled if | ||
| 13446 | the PostScript printer doesn't support a paper with the size indicated | ||
| 13447 | by `ps-paper-type'. This is used when `ps-spool-config' is set to | ||
| 13448 | `setpagedevice'. | ||
| 13449 | |||
| 13450 | The variable `ps-print-upside-down' determines the orientation for | ||
| 13451 | printing pages: nil means `normal' printing, non-nil means | ||
| 13452 | `upside-down' printing (that is, the page is rotated by 180 degrees). | ||
| 13453 | |||
| 13454 | The variable `ps-selected-pages' specifies which pages to print. If | ||
| 13455 | it's nil, all pages are printed. If it's a list, list elements may be | ||
| 13456 | integers specifying a single page to print, or cons cells (FROM . TO) | ||
| 13457 | specifying to print from page FROM to TO. Invalid list elements, that | ||
| 13458 | is integers smaller than one, or elements whose FROM is greater than | ||
| 13459 | its TO, are ignored. | ||
| 13460 | |||
| 13461 | The variable `ps-even-or-odd-pages' specifies how to print even/odd | ||
| 13462 | pages. Valid values are: | ||
| 13463 | |||
| 13464 | nil print all pages. | ||
| 13465 | |||
| 13466 | `even-page' print only even pages. | ||
| 13467 | |||
| 13468 | `odd-page' print only odd pages. | ||
| 13469 | |||
| 13470 | `even-sheet' print only even sheets. | ||
| 13471 | That is, if `ps-n-up-printing' is 1, it behaves like | ||
| 13472 | `even-page', but for values greater than 1, it'll | ||
| 13473 | print only the even sheet of paper. | ||
| 13474 | |||
| 13475 | `odd-sheet' print only odd sheets. | ||
| 13476 | That is, if `ps-n-up-printing' is 1, it behaves like | ||
| 13477 | `odd-page'; but for values greater than 1, it'll print | ||
| 13478 | only the odd sheet of paper. | ||
| 13479 | |||
| 13480 | Any other value is treated as nil. | ||
| 13481 | |||
| 13482 | If you set `ps-selected-pages' (see there for documentation), pages | ||
| 13483 | are filtered by `ps-selected-pages', and then by | ||
| 13484 | `ps-even-or-odd-pages'. For example, if we have: | ||
| 13485 | |||
| 13486 | (setq ps-selected-pages '(1 4 (6 . 10) (12 . 16) 20)) | ||
| 13487 | |||
| 13488 | and we combine this with `ps-even-or-odd-pages' and | ||
| 13489 | `ps-n-up-printing', we get: | ||
| 13490 | |||
| 13491 | `ps-n-up-printing' = 1: | ||
| 13492 | `ps-even-or-odd-pages' PAGES PRINTED | ||
| 13493 | nil 1, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 20 | ||
| 13494 | even-page 4, 6, 8, 10, 12, 14, 16, 20 | ||
| 13495 | odd-page 1, 7, 9, 13, 15 | ||
| 13496 | even-sheet 4, 6, 8, 10, 12, 14, 16, 20 | ||
| 13497 | odd-sheet 1, 7, 9, 13, 15 | ||
| 13498 | |||
| 13499 | `ps-n-up-printing' = 2: | ||
| 13500 | `ps-even-or-odd-pages' PAGES PRINTED | ||
| 13501 | nil 1/4, 6/7, 8/9, 10/12, 13/14, 15/16, 20 | ||
| 13502 | even-page 4/6, 8/10, 12/14, 16/20 | ||
| 13503 | odd-page 1/7, 9/13, 15 | ||
| 13504 | even-sheet 6/7, 10/12, 15/16 | ||
| 13505 | odd-sheet 1/4, 8/9, 13/14, 20 | ||
| 13506 | |||
| 13507 | *** Miscellany (subgroup) | ||
| 13508 | |||
| 13509 | The variable `ps-error-handler-message' specifies where error handler | ||
| 13510 | messages should be sent. | ||
| 13511 | |||
| 13512 | It is also possible to add a user-defined PostScript prologue code in | ||
| 13513 | front of all generated prologue code by setting the variable | ||
| 13514 | `ps-user-defined-prologue'. | ||
| 13515 | |||
| 13516 | The variable `ps-line-number-font' specifies the font for line numbers. | ||
| 13517 | |||
| 13518 | The variable `ps-line-number-font-size' specifies the font size in | ||
| 13519 | points for line numbers. | ||
| 13520 | |||
| 13521 | The variable `ps-line-number-color' specifies the color for line | ||
| 13522 | numbers. See `ps-zebra-color' for documentation. | ||
| 13523 | |||
| 13524 | The variable `ps-line-number-step' specifies the interval in which | ||
| 13525 | line numbers are printed. For example, if `ps-line-number-step' is set | ||
| 13526 | to 2, the printing will look like: | ||
| 13527 | |||
| 13528 | 1 one line | ||
| 13529 | one line | ||
| 13530 | 3 one line | ||
| 13531 | one line | ||
| 13532 | 5 one line | ||
| 13533 | one line | ||
| 13534 | ... | ||
| 13535 | |||
| 13536 | Valid values are: | ||
| 13537 | |||
| 13538 | integer an integer specifying the interval in which line numbers are | ||
| 13539 | printed. If it's smaller than or equal to zero, 1 | ||
| 13540 | is used. | ||
| 13541 | |||
| 13542 | `zebra' specifies that only the line number of the first line in a | ||
| 13543 | zebra stripe is to be printed. | ||
| 13544 | |||
| 13545 | Any other value is treated as `zebra'. | ||
| 13546 | |||
| 13547 | The variable `ps-line-number-start' specifies the starting point in | ||
| 13548 | the interval given by `ps-line-number-step'. For example, if | ||
| 13549 | `ps-line-number-step' is set to 3, and `ps-line-number-start' is set to | ||
| 13550 | 3, the output will look like: | ||
| 13551 | |||
| 13552 | one line | ||
| 13553 | one line | ||
| 13554 | 3 one line | ||
| 13555 | one line | ||
| 13556 | one line | ||
| 13557 | 6 one line | ||
| 13558 | one line | ||
| 13559 | one line | ||
| 13560 | 9 one line | ||
| 13561 | one line | ||
| 13562 | ... | ||
| 13563 | |||
| 13564 | The variable `ps-postscript-code-directory' specifies the directory | ||
| 13565 | where the PostScript prologue file used by ps-print is found. | ||
| 13566 | |||
| 13567 | The variable `ps-line-spacing' determines the line spacing in points, | ||
| 13568 | for ordinary text, when generating PostScript (similar to | ||
| 13569 | `ps-font-size'). | ||
| 13570 | |||
| 13571 | The variable `ps-paragraph-spacing' determines the paragraph spacing, | ||
| 13572 | in points, for ordinary text, when generating PostScript (similar to | ||
| 13573 | `ps-font-size'). | ||
| 13574 | |||
| 13575 | The variable `ps-paragraph-regexp' specifies the paragraph delimiter. | ||
| 13576 | |||
| 13577 | The variable `ps-begin-cut-regexp' and `ps-end-cut-regexp' specify the | ||
| 13578 | start and end of a region to cut out when printing. | ||
| 13579 | |||
| 13580 | ** hideshow changes. | ||
| 13581 | |||
| 13582 | *** now supports hiding of blocks of single line comments (like // for | ||
| 13583 | C++, ; for lisp). | ||
| 13584 | |||
| 13585 | *** Support for java-mode added. | ||
| 13586 | |||
| 13587 | *** When doing `hs-hide-all' it is now possible to also hide the comments | ||
| 13588 | in the file if `hs-hide-comments-when-hiding-all' is set. | ||
| 13589 | |||
| 13590 | *** The new function `hs-hide-initial-comment' hides the comments at | ||
| 13591 | the beginning of the files. Finally those huge RCS logs don't stay in your | ||
| 13592 | way! This is run by default when entering the `hs-minor-mode'. | ||
| 13593 | |||
| 13594 | *** Now uses overlays instead of `selective-display', so is more | ||
| 13595 | robust and a lot faster. | ||
| 13596 | |||
| 13597 | *** A block beginning can span multiple lines. | ||
| 13598 | |||
| 13599 | *** The new variable `hs-show-hidden-short-form' if t, directs hideshow | ||
| 13600 | to show only the beginning of a block when it is hidden. See the | ||
| 13601 | documentation for more details. | ||
| 13602 | |||
| 13603 | ** Changes in Enriched mode. | ||
| 13604 | |||
| 13605 | *** When you visit a file in enriched-mode, Emacs will make sure it is | ||
| 13606 | filled to the current fill-column. This behavior is now independent | ||
| 13607 | of the size of the window. When you save the file, the fill-column in | ||
| 13608 | use is stored as well, so that the whole buffer need not be refilled | ||
| 13609 | the next time unless the fill-column is different. | ||
| 13610 | |||
| 13611 | *** use-hard-newlines is now a minor mode. When it is enabled, Emacs | ||
| 13612 | distinguishes between hard and soft newlines, and treats hard newlines | ||
| 13613 | as paragraph boundaries. Otherwise all newlines inserted are marked | ||
| 13614 | as soft, and paragraph boundaries are determined solely from the text. | ||
| 13615 | |||
| 13616 | ** Font Lock mode | ||
| 13617 | |||
| 13618 | *** Custom support | ||
| 13619 | |||
| 13620 | The variables font-lock-face-attributes, font-lock-display-type and | ||
| 13621 | font-lock-background-mode are now obsolete; the recommended way to specify | ||
| 13622 | the faces to use for Font Lock mode is with M-x customize-group on the new | ||
| 13623 | custom group font-lock-faces. If you set font-lock-face-attributes in your | ||
| 13624 | ~/.emacs file, Font Lock mode will respect its value. However, you should | ||
| 13625 | consider converting from setting that variable to using M-x customize. | ||
| 13626 | |||
| 13627 | You can still use X resources to specify Font Lock face appearances. | ||
| 13628 | |||
| 13629 | *** Maximum decoration | ||
| 13630 | |||
| 13631 | Fontification now uses the maximum level of decoration supported by | ||
| 13632 | default. Previously, fontification used a mode-specific default level | ||
| 13633 | of decoration, which is typically the minimum level of decoration | ||
| 13634 | supported. You can set font-lock-maximum-decoration to nil | ||
| 13635 | to get the old behavior. | ||
| 13636 | |||
| 13637 | *** New support | ||
| 13638 | |||
| 13639 | Support is now provided for Java, Objective-C, AWK and SIMULA modes. | ||
| 13640 | |||
| 13641 | Note that Font Lock mode can be turned on without knowing exactly what modes | ||
| 13642 | support Font Lock mode, via the command global-font-lock-mode. | ||
| 13643 | |||
| 13644 | *** Configurable support | ||
| 13645 | |||
| 13646 | Support for C, C++, Objective-C and Java can be more easily configured for | ||
| 13647 | additional types and classes via the new variables c-font-lock-extra-types, | ||
| 13648 | c++-font-lock-extra-types, objc-font-lock-extra-types and, you guessed it, | ||
| 13649 | java-font-lock-extra-types. These value of each of these variables should be a | ||
| 13650 | list of regexps matching the extra type names. For example, the default value | ||
| 13651 | of c-font-lock-extra-types is ("\\sw+_t") which means fontification follows the | ||
| 13652 | convention that C type names end in _t. This results in slower fontification. | ||
| 13653 | |||
| 13654 | Of course, you can change the variables that specify fontification in whatever | ||
| 13655 | way you wish, typically by adding regexps. However, these new variables make | ||
| 13656 | it easier to make specific and common changes for the fontification of types. | ||
| 13657 | |||
| 13658 | *** Adding highlighting patterns to existing support | ||
| 13659 | |||
| 13660 | You can use the new function font-lock-add-keywords to add your own | ||
| 13661 | highlighting patterns, such as for project-local or user-specific constructs, | ||
| 13662 | for any mode. | ||
| 13663 | |||
| 13664 | For example, to highlight `FIXME:' words in C comments, put: | ||
| 13665 | |||
| 13666 | (font-lock-add-keywords 'c-mode '(("\\<FIXME:" 0 font-lock-warning-face t))) | ||
| 13667 | |||
| 13668 | in your ~/.emacs. | ||
| 13669 | |||
| 13670 | *** New faces | ||
| 13671 | |||
| 13672 | Font Lock now defines two new faces, font-lock-builtin-face and | ||
| 13673 | font-lock-warning-face. These are intended to highlight builtin keywords, | ||
| 13674 | distinct from a language's normal keywords, and objects that should be brought | ||
| 13675 | to user attention, respectively. Various modes now use these new faces. | ||
| 13676 | |||
| 13677 | *** Changes to fast-lock support mode | ||
| 13678 | |||
| 13679 | The fast-lock package, one of the two Font Lock support modes, can now process | ||
| 13680 | cache files silently. You can use the new variable fast-lock-verbose, in the | ||
| 13681 | same way as font-lock-verbose, to control this feature. | ||
| 13682 | |||
| 13683 | *** Changes to lazy-lock support mode | ||
| 13684 | |||
| 13685 | The lazy-lock package, one of the two Font Lock support modes, can now fontify | ||
| 13686 | according to the true syntactic context relative to other lines. You can use | ||
| 13687 | the new variable lazy-lock-defer-contextually to control this feature. If | ||
| 13688 | non-nil, changes to the buffer will cause subsequent lines in the buffer to be | ||
| 13689 | refontified after lazy-lock-defer-time seconds of idle time. If nil, then only | ||
| 13690 | the modified lines will be refontified; this is the same as the previous Lazy | ||
| 13691 | Lock mode behavior and the behavior of Font Lock mode. | ||
| 13692 | |||
| 13693 | This feature is useful in modes where strings or comments can span lines. | ||
| 13694 | For example, if a string or comment terminating character is deleted, then if | ||
| 13695 | this feature is enabled subsequent lines in the buffer will be correctly | ||
| 13696 | refontified to reflect their new syntactic context. Previously, only the line | ||
| 13697 | containing the deleted character would be refontified and you would have to use | ||
| 13698 | the command M-o M-o (font-lock-fontify-block) to refontify some lines. | ||
| 13699 | |||
| 13700 | As a consequence of this new feature, two other variables have changed: | ||
| 13701 | |||
| 13702 | Variable `lazy-lock-defer-driven' is renamed `lazy-lock-defer-on-scrolling'. | ||
| 13703 | Variable `lazy-lock-defer-time' can now only be a time, i.e., a number. | ||
| 13704 | Buffer modes for which on-the-fly deferral applies can be specified via the | ||
| 13705 | new variable `lazy-lock-defer-on-the-fly'. | ||
| 13706 | |||
| 13707 | If you set these variables in your ~/.emacs, then you may have to change those | ||
| 13708 | settings. | ||
| 13709 | |||
| 13710 | ** Ada mode changes. | ||
| 13711 | |||
| 13712 | *** There is now better support for using find-file.el with Ada mode. | ||
| 13713 | If you switch between spec and body, the cursor stays in the same | ||
| 13714 | procedure (modulo overloading). If a spec has no body file yet, but | ||
| 13715 | you try to switch to its body file, Ada mode now generates procedure | ||
| 13716 | stubs. | ||
| 13717 | |||
| 13718 | *** There are two new commands: | ||
| 13719 | - `ada-make-local' : invokes gnatmake on the current buffer | ||
| 13720 | - `ada-check-syntax' : check syntax of current buffer. | ||
| 13721 | |||
| 13722 | The user options `ada-compiler-make', `ada-make-options', | ||
| 13723 | `ada-language-version', `ada-compiler-syntax-check', and | ||
| 13724 | `ada-compile-options' are used within these commands. | ||
| 13725 | |||
| 13726 | *** Ada mode can now work with Outline minor mode. The outline level | ||
| 13727 | is calculated from the indenting, not from syntactic constructs. | ||
| 13728 | Outlining does not work if your code is not correctly indented. | ||
| 13729 | |||
| 13730 | *** The new function `ada-gnat-style' converts the buffer to the style of | ||
| 13731 | formatting used in GNAT. It places two blanks after a comment start, | ||
| 13732 | places one blank between a word end and an opening '(', and puts one | ||
| 13733 | space between a comma and the beginning of a word. | ||
| 13734 | |||
| 13735 | ** Scheme mode changes. | ||
| 13736 | |||
| 13737 | *** Scheme mode indentation now uses many of the facilities of Lisp | ||
| 13738 | mode; therefore, the variables to customize it are the variables used | ||
| 13739 | for Lisp mode which have names starting with `lisp-'. The variables | ||
| 13740 | with names starting with `scheme-' which used to do this no longer | ||
| 13741 | have any effect. | ||
| 13742 | |||
| 13743 | If you want to use different indentation for Scheme and Lisp, this is | ||
| 13744 | still possible, but now you must do it by adding a hook to | ||
| 13745 | scheme-mode-hook, which could work by setting the `lisp-' indentation | ||
| 13746 | variables as buffer-local variables. | ||
| 13747 | |||
| 13748 | *** DSSSL mode is a variant of Scheme mode, for editing DSSSL scripts. | ||
| 13749 | Use M-x dsssl-mode. | ||
| 13750 | |||
| 13751 | ** Changes to the emacsclient program | ||
| 13752 | |||
| 13753 | *** If a socket can't be found, and environment variables LOGNAME or | ||
| 13754 | USER are set, emacsclient now looks for a socket based on the UID | ||
| 13755 | associated with the name. That is an emacsclient running as root | ||
| 13756 | can connect to an Emacs server started by a non-root user. | ||
| 13757 | |||
| 13758 | *** The emacsclient program now accepts an option --no-wait which tells | ||
| 13759 | it to return immediately without waiting for you to "finish" the | ||
| 13760 | buffer in Emacs. | ||
| 13761 | |||
| 13762 | *** The new option --alternate-editor allows to specify an editor to | ||
| 13763 | use if Emacs is not running. The environment variable | ||
| 13764 | ALTERNATE_EDITOR can be used for the same effect; the command line | ||
| 13765 | option takes precedence. | ||
| 13766 | |||
| 13767 | ** M-x eldoc-mode enables a minor mode in which the echo area | ||
| 13768 | constantly shows the parameter list for function being called at point | ||
| 13769 | (in Emacs Lisp and Lisp Interaction modes only). | ||
| 13770 | |||
| 13771 | ** C-x n d now runs the new command narrow-to-defun, | ||
| 13772 | which narrows the accessible parts of the buffer to just | ||
| 13773 | the current defun. | ||
| 13774 | |||
| 13775 | ** Emacs now handles the `--' argument in the standard way; all | ||
| 13776 | following arguments are treated as ordinary file names. | ||
| 13777 | |||
| 13778 | ** On MSDOS and Windows, the bookmark file is now called _emacs.bmk, | ||
| 13779 | and the saved desktop file is now called _emacs.desktop (truncated if | ||
| 13780 | necessary). | ||
| 13781 | |||
| 13782 | ** When you kill a buffer that visits a file, | ||
| 13783 | if there are any registers that save positions in the file, | ||
| 13784 | these register values no longer become completely useless. | ||
| 13785 | If you try to go to such a register with C-x j, then you are | ||
| 13786 | asked whether to visit the file again. If you say yes, | ||
| 13787 | it visits the file and then goes to the same position. | ||
| 13788 | |||
| 13789 | ** When you visit a file that changes frequently outside Emacs--for | ||
| 13790 | example, a log of output from a process that continues to run--it may | ||
| 13791 | be useful for Emacs to revert the file without querying you whenever | ||
| 13792 | you visit the file afresh with C-x C-f. | ||
| 13793 | |||
| 13794 | You can request this behavior for certain files by setting the | ||
| 13795 | variable revert-without-query to a list of regular expressions. If a | ||
| 13796 | file's name matches any of these regular expressions, find-file and | ||
| 13797 | revert-buffer revert the buffer without asking for permission--but | ||
| 13798 | only if you have not edited the buffer text yourself. | ||
| 13799 | |||
| 13800 | ** set-default-font has been renamed to set-frame-font | ||
| 13801 | since it applies only to the current frame. | ||
| 13802 | |||
| 13803 | ** In TeX mode, you can use the variable tex-main-file to specify the | ||
| 13804 | file for tex-file to run TeX on. (By default, tex-main-file is nil, | ||
| 13805 | and tex-file runs TeX on the current visited file.) | ||
| 13806 | |||
| 13807 | This is useful when you are editing a document that consists of | ||
| 13808 | multiple files. In each of the included files, you can set up a local | ||
| 13809 | variable list which specifies the top-level file of your document for | ||
| 13810 | tex-main-file. Then tex-file will run TeX on the whole document | ||
| 13811 | instead of just the file you are editing. | ||
| 13812 | |||
| 13813 | ** RefTeX mode | ||
| 13814 | |||
| 13815 | RefTeX mode is a new minor mode with special support for \label, \ref | ||
| 13816 | and \cite macros in LaTeX documents. RefTeX distinguishes labels of | ||
| 13817 | different environments (equation, figure, ...) and has full support for | ||
| 13818 | multifile documents. To use it, select a buffer with a LaTeX document and | ||
| 13819 | turn the mode on with M-x reftex-mode. Here are the main user commands: | ||
| 13820 | |||
| 13821 | C-c ( reftex-label | ||
| 13822 | Creates a label semi-automatically. RefTeX is context sensitive and | ||
| 13823 | knows which kind of label is needed. | ||
| 13824 | |||
| 13825 | C-c ) reftex-reference | ||
| 13826 | Offers in a menu all labels in the document, along with context of the | ||
| 13827 | label definition. The selected label is referenced as \ref{LABEL}. | ||
| 13828 | |||
| 13829 | C-c [ reftex-citation | ||
| 13830 | Prompts for a regular expression and displays a list of matching BibTeX | ||
| 13831 | database entries. The selected entry is cited with a \cite{KEY} macro. | ||
| 13832 | |||
| 13833 | C-c & reftex-view-crossref | ||
| 13834 | Views the cross reference of a \ref or \cite command near point. | ||
| 13835 | |||
| 13836 | C-c = reftex-toc | ||
| 13837 | Shows a table of contents of the (multifile) document. From there you | ||
| 13838 | can quickly jump to every section. | ||
| 13839 | |||
| 13840 | Under X, RefTeX installs a "Ref" menu in the menu bar, with additional | ||
| 13841 | commands. Press `?' to get help when a prompt mentions this feature. | ||
| 13842 | Full documentation and customization examples are in the file | ||
| 13843 | reftex.el. You can use the finder to view the file documentation: | ||
| 13844 | C-h p --> tex --> reftex.el | ||
| 13845 | |||
| 13846 | ** Changes in BibTeX mode. | ||
| 13847 | |||
| 13848 | *** Info documentation is now available. | ||
| 13849 | |||
| 13850 | *** Don't allow parentheses in string constants anymore. This confused | ||
| 13851 | both the BibTeX program and Emacs BibTeX mode. | ||
| 13852 | |||
| 13853 | *** Renamed variable bibtex-mode-user-optional-fields to | ||
| 13854 | bibtex-user-optional-fields. | ||
| 13855 | |||
| 13856 | *** Removed variable bibtex-include-OPTannote | ||
| 13857 | (use bibtex-user-optional-fields instead). | ||
| 13858 | |||
| 13859 | *** New interactive functions to copy and kill fields and complete | ||
| 13860 | entries to the BibTeX kill ring, from where they can be yanked back by | ||
| 13861 | appropriate functions. | ||
| 13862 | |||
| 13863 | *** New interactive functions for repositioning and marking of | ||
| 13864 | entries. They are bound by default to C-M-l and C-M-h. | ||
| 13865 | |||
| 13866 | *** New hook bibtex-clean-entry-hook. It is called after entry has | ||
| 13867 | been cleaned. | ||
| 13868 | |||
| 13869 | *** New variable bibtex-field-delimiters, which replaces variables | ||
| 13870 | bibtex-field-{left|right}-delimiter. | ||
| 13871 | |||
| 13872 | *** New variable bibtex-entry-delimiters to determine how entries | ||
| 13873 | shall be delimited. | ||
| 13874 | |||
| 13875 | *** Allow preinitialization of fields. See documentation of | ||
| 13876 | bibtex-user-optional-fields, bibtex-entry-field-alist, and | ||
| 13877 | bibtex-include-OPTkey for details. | ||
| 13878 | |||
| 13879 | *** Book and InBook entries require either an author or an editor | ||
| 13880 | field. This is now supported by bibtex.el. Alternative fields are | ||
| 13881 | prefixed with `ALT'. | ||
| 13882 | |||
| 13883 | *** New variable bibtex-entry-format, which replaces variable | ||
| 13884 | bibtex-clean-entry-zap-empty-opts and allows specification of many | ||
| 13885 | formatting options performed on cleaning an entry (see variable | ||
| 13886 | documentation). | ||
| 13887 | |||
| 13888 | *** Even more control on how automatic keys are generated. See | ||
| 13889 | documentation of bibtex-generate-autokey for details. Transcriptions | ||
| 13890 | for foreign languages other than German are now handled, too. | ||
| 13891 | |||
| 13892 | *** New boolean user option bibtex-comma-after-last-field to decide if | ||
| 13893 | comma should be inserted at end of last field. | ||
| 13894 | |||
| 13895 | *** New boolean user option bibtex-align-at-equal-sign to determine if | ||
| 13896 | alignment should be made at left side of field contents or at equal | ||
| 13897 | signs. New user options to control entry layout (e.g. indentation). | ||
| 13898 | |||
| 13899 | *** New function bibtex-fill-entry to realign entries. | ||
| 13900 | |||
| 13901 | *** New function bibtex-reformat to reformat region or buffer. | ||
| 13902 | |||
| 13903 | *** New function bibtex-convert-alien to convert a BibTeX database | ||
| 13904 | from alien sources. | ||
| 13905 | |||
| 13906 | *** New function bibtex-complete-key (similar to bibtex-complete-string) | ||
| 13907 | to complete prefix to a key defined in buffer. Mainly useful in | ||
| 13908 | crossref entries. | ||
| 13909 | |||
| 13910 | *** New function bibtex-count-entries to count entries in buffer or | ||
| 13911 | region. | ||
| 13912 | |||
| 13913 | *** Added support for imenu. | ||
| 13914 | |||
| 13915 | *** The function `bibtex-validate' now checks current region instead | ||
| 13916 | of buffer if mark is active. Now it shows all errors of buffer in a | ||
| 13917 | `compilation mode' buffer. You can use the normal commands (e.g. | ||
| 13918 | `next-error') for compilation modes to jump to errors. | ||
| 13919 | |||
| 13920 | *** New variable `bibtex-string-file-path' to determine where the files | ||
| 13921 | from `bibtex-string-files' are searched. | ||
| 13922 | |||
| 13923 | ** Iso Accents mode now supports Latin-3 as an alternative. | ||
| 13924 | |||
| 13925 | ** The command next-error now opens blocks hidden by hideshow. | ||
| 13926 | |||
| 13927 | ** The function using-unix-filesystems has been replaced by the | ||
| 13928 | functions add-untranslated-filesystem and remove-untranslated-filesystem. | ||
| 13929 | Each of these functions takes the name of a drive letter or directory | ||
| 13930 | as an argument. | ||
| 13931 | |||
| 13932 | When a filesystem is added as untranslated, all files on it are read | ||
| 13933 | and written in binary mode (no cr/lf translation is performed). | ||
| 13934 | |||
| 13935 | ** browse-url changes | ||
| 13936 | |||
| 13937 | *** New methods for: Grail (browse-url-generic), MMM (browse-url-mmm), | ||
| 13938 | Lynx in a separate xterm (browse-url-lynx-xterm) or in an Emacs window | ||
| 13939 | (browse-url-lynx-emacs), remote W3 (browse-url-w3-gnudoit), generic | ||
| 13940 | non-remote-controlled browsers (browse-url-generic) and associated | ||
| 13941 | customization variables. | ||
| 13942 | |||
| 13943 | *** New commands `browse-url-of-region' and `browse-url'. | ||
| 13944 | |||
| 13945 | *** URLs marked up with <URL:...> (RFC1738) work if broken across | ||
| 13946 | lines. Browsing methods can be associated with URL regexps | ||
| 13947 | (e.g. mailto: URLs) via `browse-url-browser-function'. | ||
| 13948 | |||
| 13949 | ** Changes in Ediff | ||
| 13950 | |||
| 13951 | *** Clicking Mouse-2 on a brief command description in Ediff control panel | ||
| 13952 | pops up the Info file for this command. | ||
| 13953 | |||
| 13954 | *** There is now a variable, ediff-autostore-merges, which controls whether | ||
| 13955 | the result of a merge is saved in a file. By default, this is done only when | ||
| 13956 | merge is done from a session group (eg, when merging files in two different | ||
| 13957 | directories). | ||
| 13958 | |||
| 13959 | *** Since Emacs 19.31 (this hasn't been announced before), Ediff can compare | ||
| 13960 | and merge groups of files residing in different directories, or revisions of | ||
| 13961 | files in the same directory. | ||
| 13962 | |||
| 13963 | *** Since Emacs 19.31, Ediff can apply multi-file patches interactively. | ||
| 13964 | The patches must be in the context format or GNU unified format. (The bug | ||
| 13965 | related to the GNU format has now been fixed.) | ||
| 13966 | |||
| 13967 | ** Changes in Viper | ||
| 13968 | |||
| 13969 | *** The startup file is now .viper instead of .vip | ||
| 13970 | *** All variable/function names have been changed to start with viper- | ||
| 13971 | instead of vip-. | ||
| 13972 | *** C-\ now simulates the meta-key in all Viper states. | ||
| 13973 | *** C-z in Insert state now escapes to Vi for the duration of the next | ||
| 13974 | Viper command. In Vi and Insert states, C-z behaves as before. | ||
| 13975 | *** C-c \ escapes to Vi for one command if Viper is in Insert or Emacs states. | ||
| 13976 | *** _ is no longer the meta-key in Vi state. | ||
| 13977 | *** The variable viper-insert-state-cursor-color can be used to change cursor | ||
| 13978 | color when Viper is in insert state. | ||
| 13979 | *** If search lands the cursor near the top or the bottom of the window, | ||
| 13980 | Viper pulls the window up or down to expose more context. The variable | ||
| 13981 | viper-adjust-window-after-search controls this behavior. | ||
| 13982 | |||
| 13983 | ** Etags changes. | ||
| 13984 | |||
| 13985 | *** In C, C++, Objective C and Java, Etags tags global variables by | ||
| 13986 | default. The resulting tags files are inflated by 30% on average. | ||
| 13987 | Use --no-globals to turn this feature off. Etags can also tag | ||
| 13988 | variables which are members of structure-like constructs, but it does | ||
| 13989 | not by default. Use --members to turn this feature on. | ||
| 13990 | |||
| 13991 | *** C++ member functions are now recognized as tags. | ||
| 13992 | |||
| 13993 | *** Java is tagged like C++. In addition, "extends" and "implements" | ||
| 13994 | constructs are tagged. Files are recognized by the extension .java. | ||
| 13995 | |||
| 13996 | *** Etags can now handle programs written in Postscript. Files are | ||
| 13997 | recognized by the extensions .ps and .pdb (Postscript with C syntax). | ||
| 13998 | In Postscript, tags are lines that start with a slash. | ||
| 13999 | |||
| 14000 | *** Etags now handles Objective C and Objective C++ code. The usual C and | ||
| 14001 | C++ tags are recognized in these languages; in addition, etags | ||
| 14002 | recognizes special Objective C syntax for classes, class categories, | ||
| 14003 | methods and protocols. | ||
| 14004 | |||
| 14005 | *** Etags also handles Cobol. Files are recognized by the extension | ||
| 14006 | .cobol. The tagged lines are those containing a word that begins in | ||
| 14007 | column 8 and ends in a full stop, i.e. anything that could be a | ||
| 14008 | paragraph name. | ||
| 14009 | |||
| 14010 | *** Regexps in Etags now support intervals, as in ed or grep. The syntax of | ||
| 14011 | an interval is \{M,N\}, and it means to match the preceding expression | ||
| 14012 | at least M times and as many as N times. | ||
| 14013 | |||
| 14014 | ** The format for specifying a custom format for time-stamp to insert | ||
| 14015 | in files has changed slightly. | ||
| 14016 | |||
| 14017 | With the new enhancements to the functionality of format-time-string, | ||
| 14018 | time-stamp-format will change to be eventually compatible with it. | ||
| 14019 | This conversion is being done in two steps to maintain compatibility | ||
| 14020 | with old time-stamp-format values. | ||
| 14021 | |||
| 14022 | In the new scheme, alternate case is signified by the number-sign | ||
| 14023 | (`#') modifier, rather than changing the case of the format character. | ||
| 14024 | This feature is as yet incompletely implemented for compatibility | ||
| 14025 | reasons. | ||
| 14026 | |||
| 14027 | In the old time-stamp-format, all numeric fields defaulted to their | ||
| 14028 | natural width. (With format-time-string, each format has a | ||
| 14029 | fixed-width default.) In this version, you can specify the colon | ||
| 14030 | (`:') modifier to a numeric conversion to mean "give me the historical | ||
| 14031 | time-stamp-format width default." Do not use colon if you are | ||
| 14032 | specifying an explicit width, as in "%02d". | ||
| 14033 | |||
| 14034 | Numbers are no longer truncated to the requested width, except in the | ||
| 14035 | case of "%02y", which continues to give a two-digit year. Digit | ||
| 14036 | truncation probably wasn't being used for anything else anyway. | ||
| 14037 | |||
| 14038 | The new formats will work with old versions of Emacs. New formats are | ||
| 14039 | being recommended now to allow time-stamp-format to change in the | ||
| 14040 | future to be compatible with format-time-string. The new forms being | ||
| 14041 | recommended now will continue to work then. | ||
| 14042 | |||
| 14043 | See the documentation string for the variable time-stamp-format for | ||
| 14044 | details. | ||
| 14045 | |||
| 14046 | ** There are some additional major modes: | ||
| 14047 | |||
| 14048 | dcl-mode, for editing VMS DCL files. | ||
| 14049 | m4-mode, for editing files of m4 input. | ||
| 14050 | meta-mode, for editing MetaFont and MetaPost source files. | ||
| 14051 | |||
| 14052 | ** In Shell mode, the command shell-copy-environment-variable lets you | ||
| 14053 | copy the value of a specified environment variable from the subshell | ||
| 14054 | into Emacs. | ||
| 14055 | |||
| 14056 | ** New Lisp packages include: | ||
| 14057 | |||
| 14058 | *** battery.el displays battery status for laptops. | ||
| 14059 | |||
| 14060 | *** M-x bruce (named after Lenny Bruce) is a program that might | ||
| 14061 | be used for adding some indecent words to your email. | ||
| 14062 | |||
| 14063 | *** M-x crisp-mode enables an emulation for the CRiSP editor. | ||
| 14064 | |||
| 14065 | *** M-x dirtrack arranges for better tracking of directory changes | ||
| 14066 | in shell buffers. | ||
| 14067 | |||
| 14068 | *** The new library elint.el provides for linting of Emacs Lisp code. | ||
| 14069 | See the documentation for `elint-initialize', `elint-current-buffer' | ||
| 14070 | and `elint-defun'. | ||
| 14071 | |||
| 14072 | *** M-x expand-add-abbrevs defines a special kind of abbrev which is | ||
| 14073 | meant for programming constructs. These abbrevs expand like ordinary | ||
| 14074 | ones, when you type SPC, but only at the end of a line and not within | ||
| 14075 | strings or comments. | ||
| 14076 | |||
| 14077 | These abbrevs can act as templates: you can define places within an | ||
| 14078 | abbrev for insertion of additional text. Once you expand the abbrev, | ||
| 14079 | you can then use C-x a p and C-x a n to move back and forth to these | ||
| 14080 | insertion points. Thus you can conveniently insert additional text | ||
| 14081 | at these points. | ||
| 14082 | |||
| 14083 | *** filecache.el remembers the location of files so that you | ||
| 14084 | can visit them by short forms of their names. | ||
| 14085 | |||
| 14086 | *** find-func.el lets you find the definition of the user-loaded | ||
| 14087 | Emacs Lisp function at point. | ||
| 14088 | |||
| 14089 | *** M-x handwrite converts text to a "handwritten" picture. | ||
| 14090 | |||
| 14091 | *** M-x iswitchb-buffer is a command for switching to a buffer, much like | ||
| 14092 | switch-buffer, but it reads the argument in a more helpful way. | ||
| 14093 | |||
| 14094 | *** M-x landmark implements a neural network for landmark learning. | ||
| 14095 | |||
| 14096 | *** M-x locate provides a convenient interface to the `locate' program. | ||
| 14097 | |||
| 14098 | *** M4 mode is a new mode for editing files of m4 input. | ||
| 14099 | |||
| 14100 | *** mantemp.el creates C++ manual template instantiations | ||
| 14101 | from the GCC error messages which indicate which instantiations are needed. | ||
| 14102 | |||
| 14103 | *** mouse-copy.el provides a one-click copy and move feature. | ||
| 14104 | You can drag a region with M-mouse-1, and it is automatically | ||
| 14105 | inserted at point. M-Shift-mouse-1 deletes the text from its | ||
| 14106 | original place after inserting the copy. | ||
| 14107 | |||
| 14108 | *** mouse-drag.el lets you do scrolling by dragging Mouse-2 | ||
| 14109 | on the buffer. | ||
| 14110 | |||
| 14111 | You click the mouse and move; that distance either translates into the | ||
| 14112 | velocity to scroll (with mouse-drag-throw) or the distance to scroll | ||
| 14113 | (with mouse-drag-drag). Horizontal scrolling is enabled when needed. | ||
| 14114 | |||
| 14115 | Enable mouse-drag with: | ||
| 14116 | (global-set-key [down-mouse-2] 'mouse-drag-throw) | ||
| 14117 | -or- | ||
| 14118 | (global-set-key [down-mouse-2] 'mouse-drag-drag) | ||
| 14119 | |||
| 14120 | *** mspools.el is useful for determining which mail folders have | ||
| 14121 | mail waiting to be read in them. It works with procmail. | ||
| 14122 | |||
| 14123 | *** Octave mode is a major mode for editing files of input for Octave. | ||
| 14124 | It comes with a facility for communicating with an Octave subprocess. | ||
| 14125 | |||
| 14126 | *** ogonek | ||
| 14127 | |||
| 14128 | The ogonek package provides functions for changing the coding of | ||
| 14129 | Polish diacritic characters in buffers. Codings known from various | ||
| 14130 | platforms are supported such as ISO8859-2, Mazovia, IBM Latin2, and | ||
| 14131 | TeX. For example, you can change the coding from Mazovia to | ||
| 14132 | ISO8859-2. Another example is a change of coding from ISO8859-2 to | ||
| 14133 | prefix notation (in which `/a' stands for the aogonek character, for | ||
| 14134 | instance) and vice versa. | ||
| 14135 | |||
| 14136 | To use this package load it using | ||
| 14137 | M-x load-library [enter] ogonek | ||
| 14138 | Then, you may get an explanation by calling one of | ||
| 14139 | M-x ogonek-jak -- in Polish | ||
| 14140 | M-x ogonek-how -- in English | ||
| 14141 | The info specifies the commands and variables provided as well as the | ||
| 14142 | ways of customization in `.emacs'. | ||
| 14143 | |||
| 14144 | *** Interface to ph. | ||
| 14145 | |||
| 14146 | Emacs provides a client interface to CCSO Nameservers (ph/qi) | ||
| 14147 | |||
| 14148 | The CCSO nameserver is used in many universities to provide directory | ||
| 14149 | services about people. ph.el provides a convenient Emacs interface to | ||
| 14150 | these servers. | ||
| 14151 | |||
| 14152 | *** uce.el is useful for replying to unsolicited commercial email. | ||
| 14153 | |||
| 14154 | *** vcursor.el implements a "virtual cursor" feature. | ||
| 14155 | You can move the virtual cursor with special commands | ||
| 14156 | while the real cursor does not move. | ||
| 14157 | |||
| 14158 | *** webjump.el is a "hot list" package which you can set up | ||
| 14159 | for visiting your favorite web sites. | ||
| 14160 | |||
| 14161 | *** M-x winner-mode is a minor mode which saves window configurations, | ||
| 14162 | so you can move back to other configurations that you have recently used. | ||
| 14163 | |||
| 14164 | ** movemail change | ||
| 14165 | |||
| 14166 | Movemail no longer needs to be installed setuid root in order for POP | ||
| 14167 | mail retrieval to function properly. This is because it no longer | ||
| 14168 | supports the RPOP (reserved-port POP) protocol; instead, it uses the | ||
| 14169 | user's POP password to authenticate to the mail server. | ||
| 14170 | |||
| 14171 | This change was made earlier, but not reported in NEWS before. | ||
| 14172 | |||
| 14173 | * Emacs 20.1 changes for MS-DOS and MS-Windows. | ||
| 14174 | |||
| 14175 | ** Changes in handling MS-DOS/MS-Windows text files. | ||
| 14176 | |||
| 14177 | Emacs handles three different conventions for representing | ||
| 14178 | end-of-line: CRLF for MSDOS, LF for Unix and GNU, and CR (used on the | ||
| 14179 | Macintosh). Emacs determines which convention is used in a specific | ||
| 14180 | file based on the contents of that file (except for certain special | ||
| 14181 | file names), and when it saves the file, it uses the same convention. | ||
| 14182 | |||
| 14183 | To save the file and change the end-of-line convention, you can use | ||
| 14184 | C-x RET f (set-buffer-file-coding-system) to specify a different | ||
| 14185 | coding system for the buffer. Then, when you save the file, the newly | ||
| 14186 | specified coding system will take effect. For example, to save with | ||
| 14187 | LF, specify undecided-unix (or some other ...-unix coding system); to | ||
| 14188 | save with CRLF, specify undecided-dos. | ||
| 14189 | |||
| 14190 | * Lisp Changes in Emacs 20.1 | ||
| 14191 | |||
| 14192 | ** Byte-compiled files made with Emacs 20 will, in general, work in | ||
| 14193 | Emacs 19 as well, as long as the source code runs in Emacs 19. And | ||
| 14194 | vice versa: byte-compiled files made with Emacs 19 should also run in | ||
| 14195 | Emacs 20, as long as the program itself works in Emacs 20. | ||
| 14196 | |||
| 14197 | ** Windows-specific functions and variables have been renamed | ||
| 14198 | to start with w32- instead of win32-. | ||
| 14199 | |||
| 14200 | In hacker language, calling something a "win" is a form of praise. We | ||
| 14201 | don't want to praise a non-free Microsoft system, so we don't call it | ||
| 14202 | "win". | ||
| 14203 | |||
| 14204 | ** Basic Lisp changes | ||
| 14205 | |||
| 14206 | *** A symbol whose name starts with a colon now automatically | ||
| 14207 | evaluates to itself. Therefore such a symbol can be used as a constant. | ||
| 14208 | |||
| 14209 | *** The defined purpose of `defconst' has been changed. It should now | ||
| 14210 | be used only for values that should not be changed whether by a program | ||
| 14211 | or by the user. | ||
| 14212 | |||
| 14213 | The actual behavior of defconst has not been changed. | ||
| 14214 | |||
| 14215 | *** There are new macros `when' and `unless' | ||
| 14216 | |||
| 14217 | (when CONDITION BODY...) is short for (if CONDITION (progn BODY...)) | ||
| 14218 | (unless CONDITION BODY...) is short for (if CONDITION nil BODY...) | ||
| 14219 | |||
| 14220 | *** Emacs now defines functions caar, cadr, cdar and cddr with their | ||
| 14221 | usual Lisp meanings. For example, caar returns the car of the car of | ||
| 14222 | its argument. | ||
| 14223 | |||
| 14224 | *** equal, when comparing strings, now ignores their text properties. | ||
| 14225 | |||
| 14226 | *** The new function `functionp' tests whether an object is a function. | ||
| 14227 | |||
| 14228 | *** arrayp now returns t for char-tables and bool-vectors. | ||
| 14229 | |||
| 14230 | *** Certain primitives which use characters (as integers) now get an | ||
| 14231 | error if the integer is not a valid character code. These primitives | ||
| 14232 | include insert-char, char-to-string, and the %c construct in the | ||
| 14233 | `format' function. | ||
| 14234 | |||
| 14235 | *** The `require' function now insists on adding a suffix, either .el | ||
| 14236 | or .elc, to the file name. Thus, (require 'foo) will not use a file | ||
| 14237 | whose name is just foo. It insists on foo.el or foo.elc. | ||
| 14238 | |||
| 14239 | *** The `autoload' function, when the file name does not contain | ||
| 14240 | either a directory name or the suffix .el or .elc, insists on | ||
| 14241 | adding one of these suffixes. | ||
| 14242 | |||
| 14243 | *** string-to-number now takes an optional second argument BASE | ||
| 14244 | which specifies the base to use when converting an integer. | ||
| 14245 | If BASE is omitted, base 10 is used. | ||
| 14246 | |||
| 14247 | We have not implemented other radices for floating point numbers, | ||
| 14248 | because that would be much more work and does not seem useful. | ||
| 14249 | |||
| 14250 | *** substring now handles vectors as well as strings. | ||
| 14251 | |||
| 14252 | *** The Common Lisp function eql is no longer defined normally. | ||
| 14253 | You must load the `cl' library to define it. | ||
| 14254 | |||
| 14255 | *** The new macro `with-current-buffer' lets you evaluate an expression | ||
| 14256 | conveniently with a different current buffer. It looks like this: | ||
| 14257 | |||
| 14258 | (with-current-buffer BUFFER BODY-FORMS...) | ||
| 14259 | |||
| 14260 | BUFFER is the expression that says which buffer to use. | ||
| 14261 | BODY-FORMS say what to do in that buffer. | ||
| 14262 | |||
| 14263 | *** The new primitive `save-current-buffer' saves and restores the | ||
| 14264 | choice of current buffer, like `save-excursion', but without saving or | ||
| 14265 | restoring the value of point or the mark. `with-current-buffer' | ||
| 14266 | works using `save-current-buffer'. | ||
| 14267 | |||
| 14268 | *** The new macro `with-temp-file' lets you do some work in a new buffer and | ||
| 14269 | write the output to a specified file. Like `progn', it returns the value | ||
| 14270 | of the last form. | ||
| 14271 | |||
| 14272 | *** The new macro `with-temp-buffer' lets you do some work in a new buffer, | ||
| 14273 | which is discarded after use. Like `progn', it returns the value of the | ||
| 14274 | last form. If you wish to return the buffer contents, use (buffer-string) | ||
| 14275 | as the last form. | ||
| 14276 | |||
| 14277 | *** The new function split-string takes a string, splits it at certain | ||
| 14278 | characters, and returns a list of the substrings in between the | ||
| 14279 | matches. | ||
| 14280 | |||
| 14281 | For example, (split-string "foo bar lose" " +") returns ("foo" "bar" "lose"). | ||
| 14282 | |||
| 14283 | *** The new macro with-output-to-string executes some Lisp expressions | ||
| 14284 | with standard-output set up so that all output feeds into a string. | ||
| 14285 | Then it returns that string. | ||
| 14286 | |||
| 14287 | For example, if the current buffer name is `foo', | ||
| 14288 | |||
| 14289 | (with-output-to-string | ||
| 14290 | (princ "The buffer is ") | ||
| 14291 | (princ (buffer-name))) | ||
| 14292 | |||
| 14293 | returns "The buffer is foo". | ||
| 14294 | |||
| 14295 | ** Non-ASCII characters are now supported, if enable-multibyte-characters | ||
| 14296 | is non-nil. | ||
| 14297 | |||
| 14298 | These characters have character codes above 256. When inserted in the | ||
| 14299 | buffer or stored in a string, they are represented as multibyte | ||
| 14300 | characters that occupy several buffer positions each. | ||
| 14301 | |||
| 14302 | *** When enable-multibyte-characters is non-nil, a single character in | ||
| 14303 | a buffer or string can be two or more bytes (as many as four). | ||
| 14304 | |||
| 14305 | Buffers and strings are still made up of unibyte elements; | ||
| 14306 | character positions and string indices are always measured in bytes. | ||
| 14307 | Therefore, moving forward one character can increase the buffer | ||
| 14308 | position by 2, 3 or 4. The function forward-char moves by whole | ||
| 14309 | characters, and therefore is no longer equivalent to | ||
| 14310 | (lambda (n) (goto-char (+ (point) n))). | ||
| 14311 | |||
| 14312 | ASCII characters (codes 0 through 127) are still single bytes, always. | ||
| 14313 | Sequences of byte values 128 through 255 are used to represent | ||
| 14314 | non-ASCII characters. These sequences are called "multibyte | ||
| 14315 | characters". | ||
| 14316 | |||
| 14317 | The first byte of a multibyte character is always in the range 128 | ||
| 14318 | through 159 (octal 0200 through 0237). These values are called | ||
| 14319 | "leading codes". The second and subsequent bytes are always in the | ||
| 14320 | range 160 through 255 (octal 0240 through 0377). The first byte, the | ||
| 14321 | leading code, determines how many bytes long the sequence is. | ||
| 14322 | |||
| 14323 | *** The function forward-char moves over characters, and therefore | ||
| 14324 | (forward-char 1) may increase point by more than 1 if it moves over a | ||
| 14325 | multibyte character. Likewise, delete-char always deletes a | ||
| 14326 | character, which may be more than one buffer position. | ||
| 14327 | |||
| 14328 | This means that some Lisp programs, which assume that a character is | ||
| 14329 | always one buffer position, need to be changed. | ||
| 14330 | |||
| 14331 | However, all ASCII characters are always one buffer position. | ||
| 14332 | |||
| 14333 | *** The regexp [\200-\377] no longer matches all non-ASCII characters, | ||
| 14334 | because when enable-multibyte-characters is non-nil, these characters | ||
| 14335 | have codes that are not in the range octal 200 to octal 377. However, | ||
| 14336 | the regexp [^\000-\177] does match all non-ASCII characters, | ||
| 14337 | guaranteed. | ||
| 14338 | |||
| 14339 | *** The function char-boundary-p returns non-nil if position POS is | ||
| 14340 | between two characters in the buffer (not in the middle of a | ||
| 14341 | character). | ||
| 14342 | |||
| 14343 | When the value is non-nil, it says what kind of character follows POS: | ||
| 14344 | |||
| 14345 | 0 if POS is at an ASCII character or at the end of range, | ||
| 14346 | 1 if POS is before a 2-byte length multi-byte form, | ||
| 14347 | 2 if POS is at a head of 3-byte length multi-byte form, | ||
| 14348 | 3 if POS is at a head of 4-byte length multi-byte form, | ||
| 14349 | 4 if POS is at a head of multi-byte form of a composite character. | ||
| 14350 | |||
| 14351 | *** The function char-bytes returns how many bytes the character CHAR uses. | ||
| 14352 | |||
| 14353 | *** Strings can contain multibyte characters. The function | ||
| 14354 | `length' returns the string length counting bytes, which may be | ||
| 14355 | more than the number of characters. | ||
| 14356 | |||
| 14357 | You can include a multibyte character in a string constant by writing | ||
| 14358 | it literally. You can also represent it with a hex escape, | ||
| 14359 | \xNNNNNNN..., using as many digits as necessary. Any character which | ||
| 14360 | is not a valid hex digit terminates this construct. If you want to | ||
| 14361 | follow it with a character that is a hex digit, write backslash and | ||
| 14362 | newline in between; that will terminate the hex escape. | ||
| 14363 | |||
| 14364 | *** The function concat-chars takes arguments which are characters | ||
| 14365 | and returns a string containing those characters. | ||
| 14366 | |||
| 14367 | *** The function sref access a multibyte character in a string. | ||
| 14368 | (sref STRING INDX) returns the character in STRING at INDEX. INDEX | ||
| 14369 | counts from zero. If INDEX is at a position in the middle of a | ||
| 14370 | character, sref signals an error. | ||
| 14371 | |||
| 14372 | *** The function chars-in-string returns the number of characters | ||
| 14373 | in a string. This is less than the length of the string, if the | ||
| 14374 | string contains multibyte characters (the length counts bytes). | ||
| 14375 | |||
| 14376 | *** The function chars-in-region returns the number of characters | ||
| 14377 | in a region from BEG to END. This is less than (- END BEG) if the | ||
| 14378 | region contains multibyte characters (the length counts bytes). | ||
| 14379 | |||
| 14380 | *** The function string-to-list converts a string to a list of | ||
| 14381 | the characters in it. string-to-vector converts a string | ||
| 14382 | to a vector of the characters in it. | ||
| 14383 | |||
| 14384 | *** The function store-substring alters part of the contents | ||
| 14385 | of a string. You call it as follows: | ||
| 14386 | |||
| 14387 | (store-substring STRING IDX OBJ) | ||
| 14388 | |||
| 14389 | This says to alter STRING, by storing OBJ starting at index IDX in | ||
| 14390 | STRING. OBJ may be either a character or a (smaller) string. | ||
| 14391 | This function really does alter the contents of STRING. | ||
| 14392 | Since it is impossible to change the length of an existing string, | ||
| 14393 | it is an error if OBJ doesn't fit within STRING's actual length. | ||
| 14394 | |||
| 14395 | *** char-width returns the width (in columns) of the character CHAR, | ||
| 14396 | if it were displayed in the current buffer and the selected window. | ||
| 14397 | |||
| 14398 | *** string-width returns the width (in columns) of the text in STRING, | ||
| 14399 | if it were displayed in the current buffer and the selected window. | ||
| 14400 | |||
| 14401 | *** truncate-string-to-width shortens a string, if necessary, | ||
| 14402 | to fit within a certain number of columns. (Of course, it does | ||
| 14403 | not alter the string that you give it; it returns a new string | ||
| 14404 | which contains all or just part of the existing string.) | ||
| 14405 | |||
| 14406 | (truncate-string-to-width STR END-COLUMN &optional START-COLUMN PADDING) | ||
| 14407 | |||
| 14408 | This returns the part of STR up to column END-COLUMN. | ||
| 14409 | |||
| 14410 | The optional argument START-COLUMN specifies the starting column. | ||
| 14411 | If this is non-nil, then the first START-COLUMN columns of the string | ||
| 14412 | are not included in the resulting value. | ||
| 14413 | |||
| 14414 | The optional argument PADDING, if non-nil, is a padding character to be added | ||
| 14415 | at the beginning and end the resulting string, to extend it to exactly | ||
| 14416 | WIDTH columns. If PADDING is nil, that means do not pad; then, if STRING | ||
| 14417 | is narrower than WIDTH, the value is equal to STRING. | ||
| 14418 | |||
| 14419 | If PADDING and START-COLUMN are both non-nil, and if there is no clean | ||
| 14420 | place in STRING that corresponds to START-COLUMN (because one | ||
| 14421 | character extends across that column), then the padding character | ||
| 14422 | PADDING is added one or more times at the beginning of the result | ||
| 14423 | string, so that its columns line up as if it really did start at | ||
| 14424 | column START-COLUMN. | ||
| 14425 | |||
| 14426 | *** When the functions in the list after-change-functions are called, | ||
| 14427 | the third argument is the number of bytes in the pre-change text, not | ||
| 14428 | necessarily the number of characters. It is, in effect, the | ||
| 14429 | difference in buffer position between the beginning and the end of the | ||
| 14430 | changed text, before the change. | ||
| 14431 | |||
| 14432 | *** The characters Emacs uses are classified in various character | ||
| 14433 | sets, each of which has a name which is a symbol. In general there is | ||
| 14434 | one character set for each script, not for each language. | ||
| 14435 | |||
| 14436 | **** The function charsetp tests whether an object is a character set name. | ||
| 14437 | |||
| 14438 | **** The variable charset-list holds a list of character set names. | ||
| 14439 | |||
| 14440 | **** char-charset, given a character code, returns the name of the character | ||
| 14441 | set that the character belongs to. (The value is a symbol.) | ||
| 14442 | |||
| 14443 | **** split-char, given a character code, returns a list containing the | ||
| 14444 | name of the character set, followed by one or two byte-values | ||
| 14445 | which identify the character within that character set. | ||
| 14446 | |||
| 14447 | **** make-char, given a character set name and one or two subsequent | ||
| 14448 | byte-values, constructs a character code. This is roughly the | ||
| 14449 | opposite of split-char. | ||
| 14450 | |||
| 14451 | **** find-charset-region returns a list of the character sets | ||
| 14452 | of all the characters between BEG and END. | ||
| 14453 | |||
| 14454 | **** find-charset-string returns a list of the character sets | ||
| 14455 | of all the characters in a string. | ||
| 14456 | |||
| 14457 | *** Here are the Lisp facilities for working with coding systems | ||
| 14458 | and specifying coding systems. | ||
| 14459 | |||
| 14460 | **** The function coding-system-list returns a list of all coding | ||
| 14461 | system names (symbols). With optional argument t, it returns a list | ||
| 14462 | of all distinct base coding systems, not including variants. | ||
| 14463 | (Variant coding systems are those like latin-1-dos, latin-1-unix | ||
| 14464 | and latin-1-mac which specify the end-of-line conversion as well | ||
| 14465 | as what to do about code conversion.) | ||
| 14466 | |||
| 14467 | **** coding-system-p tests a symbol to see if it is a coding system | ||
| 14468 | name. It returns t if so, nil if not. | ||
| 14469 | |||
| 14470 | **** file-coding-system-alist specifies which coding systems to use | ||
| 14471 | for certain file names. It works like network-coding-system-alist, | ||
| 14472 | except that the PATTERN is matched against the file name. | ||
| 14473 | |||
| 14474 | Each element has the format (PATTERN . VAL), where PATTERN determines | ||
| 14475 | which file names the element applies to. PATTERN should be a regexp | ||
| 14476 | to match against a file name. | ||
| 14477 | |||
| 14478 | VAL is a coding system, a cons cell containing two coding systems, or | ||
| 14479 | a function symbol. If VAL is a coding system, it is used for both | ||
| 14480 | decoding what received from the network stream and encoding what sent | ||
| 14481 | to the network stream. If VAL is a cons cell containing two coding | ||
| 14482 | systems, the car specifies the coding system for decoding, and the cdr | ||
| 14483 | specifies the coding system for encoding. | ||
| 14484 | |||
| 14485 | If VAL is a function symbol, the function must return a coding system | ||
| 14486 | or a cons cell containing two coding systems, which is used as above. | ||
| 14487 | |||
| 14488 | **** The variable network-coding-system-alist specifies | ||
| 14489 | the coding system to use for network sockets. | ||
| 14490 | |||
| 14491 | Each element has the format (PATTERN . VAL), where PATTERN determines | ||
| 14492 | which network sockets the element applies to. PATTERN should be | ||
| 14493 | either a port number or a regular expression matching some network | ||
| 14494 | service names. | ||
| 14495 | |||
| 14496 | VAL is a coding system, a cons cell containing two coding systems, or | ||
| 14497 | a function symbol. If VAL is a coding system, it is used for both | ||
| 14498 | decoding what received from the network stream and encoding what sent | ||
| 14499 | to the network stream. If VAL is a cons cell containing two coding | ||
| 14500 | systems, the car specifies the coding system for decoding, and the cdr | ||
| 14501 | specifies the coding system for encoding. | ||
| 14502 | |||
| 14503 | If VAL is a function symbol, the function must return a coding system | ||
| 14504 | or a cons cell containing two coding systems, which is used as above. | ||
| 14505 | |||
| 14506 | **** process-coding-system-alist specifies which coding systems to use | ||
| 14507 | for certain subprocess. It works like network-coding-system-alist, | ||
| 14508 | except that the PATTERN is matched against the program name used to | ||
| 14509 | start the subprocess. | ||
| 14510 | |||
| 14511 | **** The variable default-process-coding-system specifies the coding | ||
| 14512 | systems to use for subprocess (and net connection) input and output, | ||
| 14513 | when nothing else specifies what to do. The value is a cons cell | ||
| 14514 | (OUTPUT-CODING . INPUT-CODING). OUTPUT-CODING applies to output | ||
| 14515 | to the subprocess, and INPUT-CODING applies to input from it. | ||
| 14516 | |||
| 14517 | **** The variable coding-system-for-write, if non-nil, specifies the | ||
| 14518 | coding system to use for writing a file, or for output to a synchronous | ||
| 14519 | subprocess. | ||
| 14520 | |||
| 14521 | It also applies to any asynchronous subprocess or network connection, | ||
| 14522 | but in a different way: the value of coding-system-for-write when you | ||
| 14523 | start the subprocess or connection affects that subprocess or | ||
| 14524 | connection permanently or until overridden. | ||
| 14525 | |||
| 14526 | The variable coding-system-for-write takes precedence over | ||
| 14527 | file-coding-system-alist, process-coding-system-alist and | ||
| 14528 | network-coding-system-alist, and all other methods of specifying a | ||
| 14529 | coding system for output. But most of the time this variable is nil. | ||
| 14530 | It exists so that Lisp programs can bind it to a specific coding | ||
| 14531 | system for one operation at a time. | ||
| 14532 | |||
| 14533 | **** coding-system-for-read applies similarly to input from | ||
| 14534 | files, subprocesses or network connections. | ||
| 14535 | |||
| 14536 | **** The function process-coding-system tells you what | ||
| 14537 | coding systems(s) an existing subprocess is using. | ||
| 14538 | The value is a cons cell, | ||
| 14539 | (DECODING-CODING-SYSTEM . ENCODING-CODING-SYSTEM) | ||
| 14540 | where DECODING-CODING-SYSTEM is used for decoding output from | ||
| 14541 | the subprocess, and ENCODING-CODING-SYSTEM is used for encoding | ||
| 14542 | input to the subprocess. | ||
| 14543 | |||
| 14544 | **** The function set-process-coding-system can be used to | ||
| 14545 | change the coding systems in use for an existing subprocess. | ||
| 14546 | |||
| 14547 | ** Emacs has a new facility to help users manage the many | ||
| 14548 | customization options. To make a Lisp program work with this facility, | ||
| 14549 | you need to use the new macros defgroup and defcustom. | ||
| 14550 | |||
| 14551 | You use defcustom instead of defvar, for defining a user option | ||
| 14552 | variable. The difference is that you specify two additional pieces of | ||
| 14553 | information (usually): the "type" which says what values are | ||
| 14554 | legitimate, and the "group" which specifies the hierarchy for | ||
| 14555 | customization. | ||
| 14556 | |||
| 14557 | Thus, instead of writing | ||
| 14558 | |||
| 14559 | (defvar foo-blurgoze nil | ||
| 14560 | "*Non-nil means that foo will act very blurgozely.") | ||
| 14561 | |||
| 14562 | you would now write this: | ||
| 14563 | |||
| 14564 | (defcustom foo-blurgoze nil | ||
| 14565 | "*Non-nil means that foo will act very blurgozely." | ||
| 14566 | :type 'boolean | ||
| 14567 | :group foo) | ||
| 14568 | |||
| 14569 | The type `boolean' means that this variable has only | ||
| 14570 | two meaningful states: nil and non-nil. Other type values | ||
| 14571 | describe other possibilities; see the manual for Custom | ||
| 14572 | for a description of them. | ||
| 14573 | |||
| 14574 | The "group" argument is used to specify a group which the option | ||
| 14575 | should belong to. You define a new group like this: | ||
| 14576 | |||
| 14577 | (defgroup ispell nil | ||
| 14578 | "Spell checking using Ispell." | ||
| 14579 | :group 'processes) | ||
| 14580 | |||
| 14581 | The "group" argument in defgroup specifies the parent group. The root | ||
| 14582 | group is called `emacs'; it should not contain any variables itself, | ||
| 14583 | but only other groups. The immediate subgroups of `emacs' correspond | ||
| 14584 | to the keywords used by C-h p. Under these subgroups come | ||
| 14585 | second-level subgroups that belong to individual packages. | ||
| 14586 | |||
| 14587 | Each Emacs package should have its own set of groups. A simple | ||
| 14588 | package should have just one group; a more complex package should | ||
| 14589 | have a hierarchy of its own groups. The sole or root group of a | ||
| 14590 | package should be a subgroup of one or more of the "keyword" | ||
| 14591 | first-level subgroups. | ||
| 14592 | |||
| 14593 | ** New `widget' library for inserting UI components in buffers. | ||
| 14594 | |||
| 14595 | This library, used by the new custom library, is documented in a | ||
| 14596 | separate manual that accompanies Emacs. | ||
| 14597 | |||
| 14598 | ** easy-mmode | ||
| 14599 | |||
| 14600 | The easy-mmode package provides macros and functions that make | ||
| 14601 | developing minor modes easier. Roughly, the programmer has to code | ||
| 14602 | only the functionality of the minor mode. All the rest--toggles, | ||
| 14603 | predicate, and documentation--can be done in one call to the macro | ||
| 14604 | `easy-mmode-define-minor-mode' (see the documentation). See also | ||
| 14605 | `easy-mmode-define-keymap'. | ||
| 14606 | |||
| 14607 | ** Text property changes | ||
| 14608 | |||
| 14609 | *** The `intangible' property now works on overlays as well as on a | ||
| 14610 | text property. | ||
| 14611 | |||
| 14612 | *** The new functions next-char-property-change and | ||
| 14613 | previous-char-property-change scan through the buffer looking for a | ||
| 14614 | place where either a text property or an overlay might change. The | ||
| 14615 | functions take two arguments, POSITION and LIMIT. POSITION is the | ||
| 14616 | starting position for the scan. LIMIT says where to stop the scan. | ||
| 14617 | |||
| 14618 | If no property change is found before LIMIT, the value is LIMIT. If | ||
| 14619 | LIMIT is nil, scan goes to the beginning or end of the accessible part | ||
| 14620 | of the buffer. If no property change is found, the value is the | ||
| 14621 | position of the beginning or end of the buffer. | ||
| 14622 | |||
| 14623 | *** In the `local-map' text property or overlay property, the property | ||
| 14624 | value can now be a symbol whose function definition is a keymap. This | ||
| 14625 | is an alternative to using the keymap itself. | ||
| 14626 | |||
| 14627 | ** Changes in invisibility features | ||
| 14628 | |||
| 14629 | *** Isearch can now temporarily show parts of the buffer which are | ||
| 14630 | hidden by an overlay with a invisible property, when the search match | ||
| 14631 | is inside that portion of the buffer. To enable this the overlay | ||
| 14632 | should have a isearch-open-invisible property which is a function that | ||
| 14633 | would be called having the overlay as an argument, the function should | ||
| 14634 | make the overlay visible. | ||
| 14635 | |||
| 14636 | During incremental search the overlays are shown by modifying the | ||
| 14637 | invisible and intangible properties, if beside this more actions are | ||
| 14638 | needed the overlay should have a isearch-open-invisible-temporary | ||
| 14639 | which is a function. The function is called with 2 arguments: one is | ||
| 14640 | the overlay and the second is nil when it should show the overlay and | ||
| 14641 | t when it should hide it. | ||
| 14642 | |||
| 14643 | *** add-to-invisibility-spec, remove-from-invisibility-spec | ||
| 14644 | |||
| 14645 | Modes that use overlays to hide portions of a buffer should set the | ||
| 14646 | invisible property of the overlay to the mode's name (or another symbol) | ||
| 14647 | and modify the `buffer-invisibility-spec' to include that symbol. | ||
| 14648 | Use `add-to-invisibility-spec' and `remove-from-invisibility-spec' to | ||
| 14649 | manipulate the `buffer-invisibility-spec'. | ||
| 14650 | Here is an example of how to do this: | ||
| 14651 | |||
| 14652 | ;; If we want to display an ellipsis: | ||
| 14653 | (add-to-invisibility-spec '(my-symbol . t)) | ||
| 14654 | ;; If you don't want ellipsis: | ||
| 14655 | (add-to-invisibility-spec 'my-symbol) | ||
| 14656 | |||
| 14657 | ... | ||
| 14658 | (overlay-put (make-overlay beginning end) 'invisible 'my-symbol) | ||
| 14659 | |||
| 14660 | ... | ||
| 14661 | ;; When done with the overlays: | ||
| 14662 | (remove-from-invisibility-spec '(my-symbol . t)) | ||
| 14663 | ;; Or respectively: | ||
| 14664 | (remove-from-invisibility-spec 'my-symbol) | ||
| 14665 | |||
| 14666 | ** Changes in syntax parsing. | ||
| 14667 | |||
| 14668 | *** The syntax-directed buffer-scan functions (such as | ||
| 14669 | `parse-partial-sexp', `forward-word' and similar functions) can now | ||
| 14670 | obey syntax information specified by text properties, if the variable | ||
| 14671 | `parse-sexp-lookup-properties' is non-nil. | ||
| 14672 | |||
| 14673 | If the value of `parse-sexp-lookup-properties' is nil, the behavior | ||
| 14674 | is as before: the syntax-table of the current buffer is always | ||
| 14675 | used to determine the syntax of the character at the position. | ||
| 14676 | |||
| 14677 | When `parse-sexp-lookup-properties' is non-nil, the syntax of a | ||
| 14678 | character in the buffer is calculated thus: | ||
| 14679 | |||
| 14680 | a) if the `syntax-table' text-property of that character | ||
| 14681 | is a cons, this cons becomes the syntax-type; | ||
| 14682 | |||
| 14683 | Valid values of `syntax-table' text-property are: nil, a valid | ||
| 14684 | syntax-table, and a valid syntax-table element, i.e., | ||
| 14685 | a cons cell of the form (SYNTAX-CODE . MATCHING-CHAR). | ||
| 14686 | |||
| 14687 | b) if the character's `syntax-table' text-property | ||
| 14688 | is a syntax table, this syntax table is used | ||
| 14689 | (instead of the syntax-table of the current buffer) to | ||
| 14690 | determine the syntax type of the character. | ||
| 14691 | |||
| 14692 | c) otherwise the syntax-type is determined by the syntax-table | ||
| 14693 | of the current buffer. | ||
| 14694 | |||
| 14695 | *** The meaning of \s in regular expressions is also affected by the | ||
| 14696 | value of `parse-sexp-lookup-properties'. The details are the same as | ||
| 14697 | for the syntax-directed buffer-scan functions. | ||
| 14698 | |||
| 14699 | *** There are two new syntax-codes, `!' and `|' (numeric values 14 | ||
| 14700 | and 15). A character with a code `!' starts a comment which is ended | ||
| 14701 | only by another character with the same code (unless quoted). A | ||
| 14702 | character with a code `|' starts a string which is ended only by | ||
| 14703 | another character with the same code (unless quoted). | ||
| 14704 | |||
| 14705 | These codes are mainly meant for use as values of the `syntax-table' | ||
| 14706 | text property. | ||
| 14707 | |||
| 14708 | *** The function `parse-partial-sexp' has new semantics for the sixth | ||
| 14709 | arg COMMENTSTOP. If it is `syntax-table', parse stops after the start | ||
| 14710 | of a comment or a string, or after end of a comment or a string. | ||
| 14711 | |||
| 14712 | *** The state-list which the return value from `parse-partial-sexp' | ||
| 14713 | (and can also be used as an argument) now has an optional ninth | ||
| 14714 | element: the character address of the start of last comment or string; | ||
| 14715 | nil if none. The fourth and eighth elements have special values if the | ||
| 14716 | string/comment is started by a "!" or "|" syntax-code. | ||
| 14717 | |||
| 14718 | *** Since new features of `parse-partial-sexp' allow a complete | ||
| 14719 | syntactic parsing, `font-lock' no longer supports | ||
| 14720 | `font-lock-comment-start-regexp'. | ||
| 14721 | |||
| 14722 | ** Changes in face features | ||
| 14723 | |||
| 14724 | *** The face functions are now unconditionally defined in Emacs, even | ||
| 14725 | if it does not support displaying on a device that supports faces. | ||
| 14726 | |||
| 14727 | *** The function face-documentation returns the documentation string | ||
| 14728 | of a face (or nil if it doesn't have one). | ||
| 14729 | |||
| 14730 | *** The function face-bold-p returns t if a face should be bold. | ||
| 14731 | set-face-bold-p sets that flag. | ||
| 14732 | |||
| 14733 | *** The function face-italic-p returns t if a face should be italic. | ||
| 14734 | set-face-italic-p sets that flag. | ||
| 14735 | |||
| 14736 | *** You can now specify foreground and background colors for text | ||
| 14737 | by adding elements of the form (foreground-color . COLOR-NAME) | ||
| 14738 | and (background-color . COLOR-NAME) to the list of faces in | ||
| 14739 | the `face' property (either the character's text property or an | ||
| 14740 | overlay property). | ||
| 14741 | |||
| 14742 | This means that you no longer need to create named faces to use | ||
| 14743 | arbitrary colors in a Lisp package. | ||
| 14744 | |||
| 14745 | ** Changes in file-handling functions | ||
| 14746 | |||
| 14747 | *** File-access primitive functions no longer discard an extra redundant | ||
| 14748 | directory name from the beginning of the file name. In other words, | ||
| 14749 | they no longer do anything special with // or /~. That conversion | ||
| 14750 | is now done only in substitute-in-file-name. | ||
| 14751 | |||
| 14752 | This makes it possible for a Lisp program to open a file whose name | ||
| 14753 | begins with ~. | ||
| 14754 | |||
| 14755 | *** If copy-file is unable to set the date of the output file, | ||
| 14756 | it now signals an error with the condition file-date-error. | ||
| 14757 | |||
| 14758 | *** The inode number returned by file-attributes may be an integer (if | ||
| 14759 | the number fits in a Lisp integer) or a list of integers. | ||
| 14760 | |||
| 14761 | *** insert-file-contents can now read from a special file, | ||
| 14762 | as long as the arguments VISIT and REPLACE are nil. | ||
| 14763 | |||
| 14764 | *** The RAWFILE arg to find-file-noselect, if non-nil, now suppresses | ||
| 14765 | character code conversion as well as other things. | ||
| 14766 | |||
| 14767 | Meanwhile, this feature does work with remote file names | ||
| 14768 | (formerly it did not). | ||
| 14769 | |||
| 14770 | *** Lisp packages which create temporary files should use the TMPDIR | ||
| 14771 | environment variable to decide which directory to put them in. | ||
| 14772 | |||
| 14773 | *** interpreter-mode-alist elements now specify regexps | ||
| 14774 | instead of constant strings. | ||
| 14775 | |||
| 14776 | *** expand-file-name no longer treats `//' or `/~' specially. It used | ||
| 14777 | to delete all the text of a file name up through the first slash of | ||
| 14778 | any `//' or `/~' sequence. Now it passes them straight through. | ||
| 14779 | |||
| 14780 | substitute-in-file-name continues to treat those sequences specially, | ||
| 14781 | in the same way as before. | ||
| 14782 | |||
| 14783 | *** The variable `format-alist' is more general now. | ||
| 14784 | The FROM-FN and TO-FN in a format definition can now be strings | ||
| 14785 | which specify shell commands to use as filters to perform conversion. | ||
| 14786 | |||
| 14787 | *** The new function access-file tries to open a file, and signals an | ||
| 14788 | error if that fails. If the open succeeds, access-file does nothing | ||
| 14789 | else, and returns nil. | ||
| 14790 | |||
| 14791 | *** The function insert-directory now signals an error if the specified | ||
| 14792 | directory cannot be listed. | ||
| 14793 | |||
| 14794 | ** Changes in minibuffer input | ||
| 14795 | |||
| 14796 | *** The functions read-buffer, read-variable, read-command, read-string | ||
| 14797 | read-file-name, read-from-minibuffer and completing-read now take an | ||
| 14798 | additional argument which specifies the default value. If this | ||
| 14799 | argument is non-nil, it should be a string; that string is used in two | ||
| 14800 | ways: | ||
| 14801 | |||
| 14802 | It is returned if the user enters empty input. | ||
| 14803 | It is available through the history command M-n. | ||
| 14804 | |||
| 14805 | *** The functions read-string, read-from-minibuffer, | ||
| 14806 | read-no-blanks-input and completing-read now take an additional | ||
| 14807 | argument INHERIT-INPUT-METHOD. If this is non-nil, then the | ||
| 14808 | minibuffer inherits the current input method and the setting of | ||
| 14809 | enable-multibyte-characters from the previously current buffer. | ||
| 14810 | |||
| 14811 | In an interactive spec, you can use M instead of s to read an | ||
| 14812 | argument in this way. | ||
| 14813 | |||
| 14814 | *** All minibuffer input functions discard text properties | ||
| 14815 | from the text you enter in the minibuffer, unless the variable | ||
| 14816 | minibuffer-allow-text-properties is non-nil. | ||
| 14817 | |||
| 14818 | ** Echo area features | ||
| 14819 | |||
| 14820 | *** Clearing the echo area now runs the normal hook | ||
| 14821 | echo-area-clear-hook. Note that the echo area can be used while the | ||
| 14822 | minibuffer is active; in that case, the minibuffer is still active | ||
| 14823 | after the echo area is cleared. | ||
| 14824 | |||
| 14825 | *** The function current-message returns the message currently displayed | ||
| 14826 | in the echo area, or nil if there is none. | ||
| 14827 | |||
| 14828 | ** Keyboard input features | ||
| 14829 | |||
| 14830 | *** tty-erase-char is a new variable that reports which character was | ||
| 14831 | set up as the terminal's erase character when time Emacs was started. | ||
| 14832 | |||
| 14833 | *** num-nonmacro-input-events is the total number of input events | ||
| 14834 | received so far from the terminal. It does not count those generated | ||
| 14835 | by keyboard macros. | ||
| 14836 | |||
| 14837 | ** Frame-related changes | ||
| 14838 | |||
| 14839 | *** make-frame runs the normal hook before-make-frame-hook just before | ||
| 14840 | creating a frame, and just after creating a frame it runs the abnormal | ||
| 14841 | hook after-make-frame-functions with the new frame as arg. | ||
| 14842 | |||
| 14843 | *** The new hook window-configuration-change-hook is now run every time | ||
| 14844 | the window configuration has changed. The frame whose configuration | ||
| 14845 | has changed is the selected frame when the hook is run. | ||
| 14846 | |||
| 14847 | *** Each frame now independently records the order for recently | ||
| 14848 | selected buffers, in its buffer-list frame parameter, so that the | ||
| 14849 | value of other-buffer is now based on the buffers recently displayed | ||
| 14850 | in the selected frame. | ||
| 14851 | |||
| 14852 | *** The value of the frame parameter vertical-scroll-bars | ||
| 14853 | is now `left', `right' or nil. A non-nil value specifies | ||
| 14854 | which side of the window to put the scroll bars on. | ||
| 14855 | |||
| 14856 | ** X Windows features | ||
| 14857 | |||
| 14858 | *** You can examine X resources for other applications by binding | ||
| 14859 | x-resource-class around a call to x-get-resource. The usual value of | ||
| 14860 | x-resource-class is "Emacs", which is the correct value for Emacs. | ||
| 14861 | |||
| 14862 | *** In menus, checkboxes and radio buttons now actually work. | ||
| 14863 | The menu displays the current status of the box or button. | ||
| 14864 | |||
| 14865 | *** The function x-list-fonts now takes an optional fourth argument | ||
| 14866 | MAXIMUM which sets a limit on how many matching fonts to return. | ||
| 14867 | A smaller value of MAXIMUM makes the function faster. | ||
| 14868 | |||
| 14869 | If the only question is whether *any* font matches the pattern, | ||
| 14870 | it is good to supply 1 for this argument. | ||
| 14871 | |||
| 14872 | ** Subprocess features | ||
| 14873 | |||
| 14874 | *** A reminder: it is no longer necessary for subprocess filter | ||
| 14875 | functions and sentinels to do save-match-data, because Emacs does this | ||
| 14876 | automatically. | ||
| 14877 | |||
| 14878 | *** The new function shell-command-to-string executes a shell command | ||
| 14879 | and returns the output from the command as a string. | ||
| 14880 | |||
| 14881 | *** The new function process-contact returns t for a child process, | ||
| 14882 | and (HOSTNAME SERVICE) for a net connection. | ||
| 14883 | |||
| 14884 | ** An error in running pre-command-hook or post-command-hook | ||
| 14885 | does clear the variable to nil. The documentation was wrong before. | ||
| 14886 | |||
| 14887 | ** In define-key-after, if AFTER is t, the new binding now always goes | ||
| 14888 | at the end of the keymap. If the keymap is a menu, this means it | ||
| 14889 | goes after the other menu items. | ||
| 14890 | |||
| 14891 | ** If you have a program that makes several changes in the same area | ||
| 14892 | of the buffer, you can use the macro combine-after-change-calls | ||
| 14893 | around that Lisp code to make it faster when after-change hooks | ||
| 14894 | are in use. | ||
| 14895 | |||
| 14896 | The macro arranges to call the after-change functions just once for a | ||
| 14897 | series of several changes--if that seems safe. | ||
| 14898 | |||
| 14899 | Don't alter the variables after-change-functions and | ||
| 14900 | after-change-function within the body of a combine-after-change-calls | ||
| 14901 | form. | ||
| 14902 | |||
| 14903 | ** If you define an abbrev (with define-abbrev) whose EXPANSION | ||
| 14904 | is not a string, then the abbrev does not expand in the usual sense, | ||
| 14905 | but its hook is still run. | ||
| 14906 | |||
| 14907 | ** Normally, the Lisp debugger is not used (even if you have enabled it) | ||
| 14908 | for errors that are handled by condition-case. | ||
| 14909 | |||
| 14910 | If you set debug-on-signal to a non-nil value, then the debugger is called | ||
| 14911 | regardless of whether there is a handler for the condition. This is | ||
| 14912 | useful for debugging problems that happen inside of a condition-case. | ||
| 14913 | |||
| 14914 | This mode of operation seems to be unreliable in other ways. Errors that | ||
| 14915 | are normal and ought to be handled, perhaps in timers or process | ||
| 14916 | filters, will instead invoke the debugger. So don't say you weren't | ||
| 14917 | warned. | ||
| 14918 | |||
| 14919 | ** The new variable ring-bell-function lets you specify your own | ||
| 14920 | way for Emacs to "ring the bell". | ||
| 14921 | |||
| 14922 | ** If run-at-time's TIME argument is t, the action is repeated at | ||
| 14923 | integral multiples of REPEAT from the epoch; this is useful for | ||
| 14924 | functions like display-time. | ||
| 14925 | |||
| 14926 | ** You can use the function locate-library to find the precise file | ||
| 14927 | name of a Lisp library. This isn't new, but wasn't documented before. | ||
| 14928 | |||
| 14929 | ** Commands for entering view mode have new optional arguments that | ||
| 14930 | can be used from Lisp. Low-level entrance to and exit from view mode | ||
| 14931 | is done by functions view-mode-enter and view-mode-exit. | ||
| 14932 | |||
| 14933 | ** batch-byte-compile-file now makes Emacs return a nonzero status code | ||
| 14934 | if there is an error in compilation. | ||
| 14935 | |||
| 14936 | ** pop-to-buffer, switch-to-buffer-other-window and | ||
| 14937 | switch-to-buffer-other-frame now accept an additional optional | ||
| 14938 | argument NORECORD, much like switch-to-buffer. If it is non-nil, | ||
| 14939 | they don't put the buffer at the front of the buffer list. | ||
| 14940 | |||
| 14941 | ** If your .emacs file leaves the *scratch* buffer non-empty, | ||
| 14942 | Emacs does not display the startup message, so as to avoid changing | ||
| 14943 | the *scratch* buffer. | ||
| 14944 | |||
| 14945 | ** The new function regexp-opt returns an efficient regexp to match a string. | ||
| 14946 | The arguments are STRINGS and (optionally) PAREN. This function can be used | ||
| 14947 | where regexp matching or searching is intensively used and speed is important, | ||
| 14948 | e.g., in Font Lock mode. | ||
| 14949 | |||
| 14950 | ** The variable buffer-display-count is local to each buffer, | ||
| 14951 | and is incremented each time the buffer is displayed in a window. | ||
| 14952 | It starts at 0 when the buffer is created. | ||
| 14953 | |||
| 14954 | ** The new function compose-mail starts composing a mail message | ||
| 14955 | using the user's chosen mail composition agent (specified with the | ||
| 14956 | variable mail-user-agent). It has variants compose-mail-other-window | ||
| 14957 | and compose-mail-other-frame. | ||
| 14958 | |||
| 14959 | ** The `user-full-name' function now takes an optional parameter which | ||
| 14960 | can either be a number (the UID) or a string (the login name). The | ||
| 14961 | full name of the specified user will be returned. | ||
| 14962 | |||
| 14963 | ** Lisp packages that load files of customizations, or any other sort | ||
| 14964 | of user profile, should obey the variable init-file-user in deciding | ||
| 14965 | where to find it. They should load the profile of the user name found | ||
| 14966 | in that variable. If init-file-user is nil, meaning that the -q | ||
| 14967 | option was used, then Lisp packages should not load the customization | ||
| 14968 | files at all. | ||
| 14969 | |||
| 14970 | ** format-time-string now allows you to specify the field width | ||
| 14971 | and type of padding. This works as in printf: you write the field | ||
| 14972 | width as digits in the middle of a %-construct. If you start | ||
| 14973 | the field width with 0, it means to pad with zeros. | ||
| 14974 | |||
| 14975 | For example, %S normally specifies the number of seconds since the | ||
| 14976 | minute; %03S means to pad this with zeros to 3 positions, %_3S to pad | ||
| 14977 | with spaces to 3 positions. Plain %3S pads with zeros, because that | ||
| 14978 | is how %S normally pads to two positions. | ||
| 14979 | |||
| 14980 | ** thing-at-point now supports a new kind of "thing": url. | ||
| 14981 | |||
| 14982 | ** imenu.el changes. | ||
| 14983 | |||
| 14984 | You can now specify a function to be run when selecting an | ||
| 14985 | item from menu created by imenu. | ||
| 14986 | |||
| 14987 | An example of using this feature: if we define imenu items for the | ||
| 14988 | #include directives in a C file, we can open the included file when we | ||
| 14989 | select one of those items. | ||
| 14990 | |||
| 14991 | * For older news, see the file ONEWS | ||
| 14992 | |||
| 14993 | ---------------------------------------------------------------------- | 5668 | ---------------------------------------------------------------------- |
| 14994 | Copyright information: | 5669 | Copyright information: |
| 14995 | 5670 | ||
| 14996 | Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, | 5671 | Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 |
| 14997 | 2005, 2006 Free Software Foundation, Inc. | 5672 | Free Software Foundation, Inc. |
| 14998 | 5673 | ||
| 14999 | Permission is granted to anyone to make or distribute verbatim copies | 5674 | Permission is granted to anyone to make or distribute verbatim copies |
| 15000 | of this document as received, in any medium, provided that the | 5675 | of this document as received, in any medium, provided that the |
diff --git a/etc/ONEWS.2 b/etc/NEWS.1-17 index d9f75c278ed..0297c928b72 100644 --- a/etc/ONEWS.2 +++ b/etc/NEWS.1-17 | |||
| @@ -1,8 +1,10 @@ | |||
| 1 | GNU Emacs NEWS -- history of user-visible changes. 26-Mar-1986 | 1 | GNU Emacs NEWS -- history of user-visible changes. 26-Mar-1986 |
| 2 | Copyright (C) 1986 Richard M. Stallman. | 2 | Copyright (C) 1985, 1986, 2006 Richard M. Stallman. |
| 3 | See the end for copying conditions. | 3 | See the end for copying conditions. |
| 4 | 4 | ||
| 5 | For older news, see the file ONEWS.1. | 5 | This file is about changes in emacs versions 1 through 17. |
| 6 | |||
| 7 | |||
| 6 | 8 | ||
| 7 | Changes in Emacs 17 | 9 | Changes in Emacs 17 |
| 8 | 10 | ||
| @@ -407,6 +409,7 @@ By default it is still "--text follows this line--". | |||
| 407 | 409 | ||
| 408 | Just before each garbage collection, all but the last 30 elements | 410 | Just before each garbage collection, all but the last 30 elements |
| 409 | of the command history are discarded. | 411 | of the command history are discarded. |
| 412 | |||
| 410 | 413 | ||
| 411 | Incompatible Lisp Programming Changes in Emacs 17 | 414 | Incompatible Lisp Programming Changes in Emacs 17 |
| 412 | 415 | ||
| @@ -484,6 +487,7 @@ The functions `forward-to-word', `backward-to-word', | |||
| 484 | `upcase-char', `mark-beginning-of-buffer' and `mark-end-of-buffer' | 487 | `upcase-char', `mark-beginning-of-buffer' and `mark-end-of-buffer' |
| 485 | have been removed. Their definitions can be found in file | 488 | have been removed. Their definitions can be found in file |
| 486 | lisp/unused.el if you need them. | 489 | lisp/unused.el if you need them. |
| 490 | |||
| 487 | 491 | ||
| 488 | Upward Compatible Lisp Programming Changes in Emacs 17 | 492 | Upward Compatible Lisp Programming Changes in Emacs 17 |
| 489 | 493 | ||
| @@ -804,6 +808,8 @@ a period in `modify-syntax-entry'. | |||
| 804 | 808 | ||
| 805 | Backup suffixes of all kinds are now stripped from a file's name | 809 | Backup suffixes of all kinds are now stripped from a file's name |
| 806 | before searching `auto-mode-alist'. | 810 | before searching `auto-mode-alist'. |
| 811 | |||
| 812 | |||
| 807 | 813 | ||
| 808 | Changes in Emacs 16 | 814 | Changes in Emacs 16 |
| 809 | 815 | ||
| @@ -1325,13 +1331,1187 @@ except when `-batch' has been specified. | |||
| 1325 | * Emacs can be built with output redirected to a file. | 1331 | * Emacs can be built with output redirected to a file. |
| 1326 | 1332 | ||
| 1327 | This is because -batch (see above) is now used in building Emacs. | 1333 | This is because -batch (see above) is now used in building Emacs. |
| 1334 | |||
| 1335 | |||
| 1336 | |||
| 1337 | Changes in Emacs 15 | ||
| 1338 | |||
| 1339 | * Emacs now runs on Sun and Megatest 68000 systems; | ||
| 1340 | also on at least one 16000 system running 4.2. | ||
| 1341 | |||
| 1342 | * Emacs now alters the output-start and output-stop characters | ||
| 1343 | to prevent C-s and C-q from being considered as flow control | ||
| 1344 | by cretinous rlogin software in 4.2. | ||
| 1345 | |||
| 1346 | * It is now possible convert Mocklisp code (for Gosling Emacs) to Lisp code | ||
| 1347 | that can run in GNU Emacs. M-x convert-mocklisp-buffer | ||
| 1348 | converts the contents of the current buffer from Mocklisp to | ||
| 1349 | GNU Emacs Lisp. You should then save the converted buffer with C-x C-w | ||
| 1350 | under a name ending in ".el" | ||
| 1351 | |||
| 1352 | There are probably some Mocklisp constructs that are not handled. | ||
| 1353 | If you encounter one, feel free to report the failure as a bug. | ||
| 1354 | The construct will be handled in a future Emacs release, if that is not | ||
| 1355 | not too hard to do. | ||
| 1356 | |||
| 1357 | Note that lisp code converted from Mocklisp code will not necessarily | ||
| 1358 | run as fast as code specifically written for GNU Emacs, nor will it use | ||
| 1359 | the many features of GNU Emacs which are not present in Gosling's emacs. | ||
| 1360 | (In particular, the byte-compiler (m-x byte-compile-file) knows little | ||
| 1361 | about compilation of code directly converted from mocklisp.) | ||
| 1362 | It is envisaged that old mocklisp code will be incrementally converted | ||
| 1363 | to GNU lisp code, with M-x convert-mocklisp-buffer being the first | ||
| 1364 | step in this process. | ||
| 1365 | |||
| 1366 | * Control-x n (narrow-to-region) is now by default a disabled command. | ||
| 1367 | |||
| 1368 | This means that, if you issue this command, it will ask whether | ||
| 1369 | you really mean it. You have the opportunity to enable the | ||
| 1370 | command permanently at that time, so you will not be asked again. | ||
| 1371 | This will place the form "(put 'narrow-to-region 'disabled nil)" in your | ||
| 1372 | .emacs file. | ||
| 1373 | |||
| 1374 | * Tags now prompts for the tag table file name to use. | ||
| 1375 | |||
| 1376 | All the tags commands ask for the tag table file name | ||
| 1377 | if you have not yet specified one. | ||
| 1378 | |||
| 1379 | Also, the command M-x visit-tag-table can now be used to | ||
| 1380 | specify the tag table file name initially, or to switch | ||
| 1381 | to a new tag table. | ||
| 1382 | |||
| 1383 | * If truncate-partial-width-windows is non-nil (as it intially is), | ||
| 1384 | all windows less than the full screen width (that is, | ||
| 1385 | made by side-by-side splitting) truncate lines rather than continuing | ||
| 1386 | them. | ||
| 1387 | |||
| 1388 | * Emacs now checks for Lisp stack overflow to avoid fatal errors. | ||
| 1389 | The depth in eval, apply and funcall may not exceed max-lisp-eval-depth. | ||
| 1390 | The depth in variable bindings and unwind-protects may not exceed | ||
| 1391 | max-specpdl-size. If either limit is exceeded, an error occurs. | ||
| 1392 | You can set the limits to larger values if you wish, but if you make them | ||
| 1393 | too large, you are vulnerable to a fatal error if you invoke | ||
| 1394 | Lisp code that does infinite recursion. | ||
| 1395 | |||
| 1396 | * New hooks find-file-hook and write-file-hook. | ||
| 1397 | Both of these variables if non-nil should be functions of no arguments. | ||
| 1398 | At the time they are called (current-buffer) will be the buffer being | ||
| 1399 | read or written respectively. | ||
| 1400 | |||
| 1401 | find-file-hook is called whenever a file is read into its own buffer, | ||
| 1402 | such as by calling find-file, revert-buffer, etc. It is not called by | ||
| 1403 | functions such as insert-file which do not read the file into a buffer of | ||
| 1404 | its own. | ||
| 1405 | find-file-hook is called after the file has been read in and its | ||
| 1406 | local variables (if any) have been processed. | ||
| 1407 | |||
| 1408 | write-file-hook is called just before writing out a file from a buffer. | ||
| 1409 | |||
| 1410 | * The initial value of shell-prompt-pattern is now "^[^#$%>]*[#$%>] *" | ||
| 1411 | |||
| 1412 | * If the .emacs file sets inhibit-startup-message to non-nil, | ||
| 1413 | the messages normally printed by Emacs at startup time | ||
| 1414 | are inhibited. | ||
| 1415 | |||
| 1416 | * Facility for run-time conditionalization on the basis of emacs features. | ||
| 1417 | |||
| 1418 | The new variable features is a list of symbols which represent "features" | ||
| 1419 | of the executing emacs, for use in run-time conditionalization. | ||
| 1420 | |||
| 1421 | The function featurep of one argument may be used to test for the | ||
| 1422 | presence of a feature. It is just the same as | ||
| 1423 | (not (null (memq FEATURE features))) where FEATURE is its argument. | ||
| 1424 | For example, (if (featurep 'magic-window-hack) | ||
| 1425 | (transmogrify-window 'vertical) | ||
| 1426 | (split-window-vertically)) | ||
| 1427 | |||
| 1428 | The function provide of one argument "announces" that FEATURE is present. | ||
| 1429 | It is much the same as (if (not (featurep FEATURE)) | ||
| 1430 | (setq features (cons FEATURE features))) | ||
| 1431 | |||
| 1432 | The function require with arguments FEATURE and FILE-NAME loads FILE-NAME | ||
| 1433 | (which should contain the form (provide FEATURE)) unless FEATURE is present. | ||
| 1434 | It is much the same as (if (not (featurep FEATURE)) | ||
| 1435 | (progn (load FILE-NAME) | ||
| 1436 | (if (not featurep FEATURE) (error ...)))) | ||
| 1437 | FILE-NAME is optional and defaults to FEATURE. | ||
| 1438 | |||
| 1439 | * New function load-average. | ||
| 1440 | |||
| 1441 | This returns a list of three integers, which are | ||
| 1442 | the current 1 minute, 5 minute and 15 minute load averages, | ||
| 1443 | each multiplied by a hundred (since normally they are floating | ||
| 1444 | point numbers). | ||
| 1445 | |||
| 1446 | * Per-terminal libraries loaded automatically. | ||
| 1447 | |||
| 1448 | Emacs when starting up on terminal type T automatically loads | ||
| 1449 | a library named term-T. T is the value of the TERM environment variable. | ||
| 1450 | Thus, on terminal type vt100, Emacs would do (load "term-vt100" t t). | ||
| 1451 | Such libraries are good places to set the character translation table. | ||
| 1452 | |||
| 1453 | It is a bad idea to redefine lots of commands in a per-terminal library, | ||
| 1454 | since this affects all users. Instead, define a command to do the | ||
| 1455 | redefinitions and let the user's init file, which is loaded later, | ||
| 1456 | call that command or not, as the user prefers. | ||
| 1457 | |||
| 1458 | * Programmer's note: detecting killed buffers. | ||
| 1459 | |||
| 1460 | Buffers are eliminated by explicitly killing them, using | ||
| 1461 | the function kill-buffer. This does not eliminate or affect | ||
| 1462 | the pointers to the buffer which may exist in list structure. | ||
| 1463 | If you have a pointer to a buffer and wish to tell whether | ||
| 1464 | the buffer has been killed, use the function buffer-name. | ||
| 1465 | It returns nil on a killed buffer, and a string on a live buffer. | ||
| 1466 | |||
| 1467 | * New ways to access the last command input character. | ||
| 1468 | |||
| 1469 | The function last-key-struck, which used to return the last | ||
| 1470 | input character that was read by command input, is eliminated. | ||
| 1471 | Instead, you can find this information as the value of the | ||
| 1472 | variable last-command-char. (This variable used to be called | ||
| 1473 | last-key). | ||
| 1474 | |||
| 1475 | Another new variable, last-input-char, holds the last character | ||
| 1476 | read from the command input stream regardless of what it was | ||
| 1477 | read for. last-input-char and last-command-char are different | ||
| 1478 | only inside a command that has called read-char to read input. | ||
| 1479 | |||
| 1480 | * The new switch -kill causes Emacs to exit after processing the | ||
| 1481 | preceding command line arguments. Thus, | ||
| 1482 | emacs -l lib data -e do-it -kill | ||
| 1483 | means to load lib, find file data, call do-it on no arguments, | ||
| 1484 | and then exit. | ||
| 1485 | |||
| 1486 | * The config.h file has been modularized. | ||
| 1487 | |||
| 1488 | Options that depend on the machine you are running on are defined | ||
| 1489 | in a file whose name starts with "m-", such as m-vax.h. | ||
| 1490 | Options that depend on the operating system software version you are | ||
| 1491 | running on are defined in a file whose name starts with "s-", | ||
| 1492 | such as s-bsd4.2.h. | ||
| 1493 | |||
| 1494 | config.h includes one m- file and one s- file. It also defines a | ||
| 1495 | few other options whose values do not follow from the machine type | ||
| 1496 | and system type being used. Installers normally will have to | ||
| 1497 | select the correct m- and s- files but will never have to change their | ||
| 1498 | contents. | ||
| 1499 | |||
| 1500 | * Termcap AL and DL strings are understood. | ||
| 1501 | |||
| 1502 | If the termcap entry defines AL and DL strings, for insertion | ||
| 1503 | and deletion of multiple lines in one blow, Emacs now uses them. | ||
| 1504 | This matters most on certain bit map display terminals for which | ||
| 1505 | scrolling is comparatively slow. | ||
| 1506 | |||
| 1507 | * Bias against scrolling screen far on fast terminals. | ||
| 1508 | |||
| 1509 | Emacs now prefers to redraw a few lines rather than | ||
| 1510 | shift them a long distance on the screen, when the terminal is fast. | ||
| 1511 | |||
| 1512 | * New major mode, mim-mode. | ||
| 1513 | |||
| 1514 | This major mode is for editing MDL code. Perhaps a MDL | ||
| 1515 | user can explain why it is not called mdl-mode. | ||
| 1516 | You must load the library mim-mode explicitly to use this. | ||
| 1517 | |||
| 1518 | * GNU documentation formatter `texinfo'. | ||
| 1519 | |||
| 1520 | The `texinfo' library defines a format for documentation | ||
| 1521 | files which can be passed through Tex to make a printed manual | ||
| 1522 | or passed through texinfo to make an Info file. Texinfo is | ||
| 1523 | documented fully by its own Info file; compare this file | ||
| 1524 | with its source, texinfo.texinfo, for additional guidance. | ||
| 1525 | |||
| 1526 | All documentation files for GNU utilities should be written | ||
| 1527 | in texinfo input format. | ||
| 1528 | |||
| 1529 | Tex processing of texinfo files requires the Botex macro package. | ||
| 1530 | This is not ready for distribution yet, but will appear at | ||
| 1531 | a later time. | ||
| 1532 | |||
| 1533 | * New function read-from-string (emacs 15.29) | ||
| 1534 | |||
| 1535 | read-from-string takes three arguments: a string to read from, | ||
| 1536 | and optionally start and end indices which delimit a substring | ||
| 1537 | from which to read. (They default to 0 and the length of the string, | ||
| 1538 | respectively.) | ||
| 1539 | |||
| 1540 | This function returns a cons cell whose car is the object produced | ||
| 1541 | by reading from the string and whose cdr is a number giving the | ||
| 1542 | index in the string of the first character not read. That index may | ||
| 1543 | be passed as the second argument to a later call to read-from-string | ||
| 1544 | to read the next form represented by the string. | ||
| 1545 | |||
| 1546 | In addition, the function read now accepts a string as its argument. | ||
| 1547 | In this case, it calls read-from-string on the whole string, and | ||
| 1548 | returns the car of the result. (ie the actual object read.) | ||
| 1549 | |||
| 1550 | |||
| 1551 | |||
| 1552 | Changes in Emacs 14 | ||
| 1553 | |||
| 1554 | * Completion now prints various messages such as [Sole Completion] | ||
| 1555 | or [Next Character Not Unique] to describe the results obtained. | ||
| 1556 | These messages appear after the text in the minibuffer, and remain | ||
| 1557 | on the screen until a few seconds go by or you type a key. | ||
| 1558 | |||
| 1559 | * The buffer-read-only flag is implemented. | ||
| 1560 | Setting or binding this per-buffer variable to a non-nil value | ||
| 1561 | makes illegal any operation which would modify the textual content of | ||
| 1562 | the buffer. (Such operations signal a buffer-read-only error) | ||
| 1563 | The read-only state of a buffer may be altered using toggle-read-only | ||
| 1564 | (C-x C-q) | ||
| 1565 | The buffers used by Rmail, Dired, Rnews, and Info are now read-only | ||
| 1566 | by default to prevent accidental damage to the information in those | ||
| 1567 | buffers. | ||
| 1568 | |||
| 1569 | * Functions car-safe and cdr-safe. | ||
| 1570 | These functions are like car and cdr when the argument is a cons. | ||
| 1571 | Given an argument not a cons, car-safe always returns nil, with | ||
| 1572 | no error; the same for cdr-safe. | ||
| 1573 | |||
| 1574 | * The new function user-real-login-name returns the name corresponding | ||
| 1575 | to the real uid of the Emacs process. This is usually the same | ||
| 1576 | as what user-login-name returns; however, when Emacs is invoked | ||
| 1577 | from su, user-real-login-name returns "root" but user-login-name | ||
| 1578 | returns the name of the user who invoked su. | ||
| 1579 | |||
| 1580 | |||
| 1581 | |||
| 1582 | Changes in Emacs 13 | ||
| 1583 | |||
| 1584 | * There is a new version numbering scheme. | ||
| 1585 | |||
| 1586 | What used to be the first version number, which was 1, | ||
| 1587 | has been discarded since it does not seem that I need three | ||
| 1588 | levels of version number. | ||
| 1589 | |||
| 1590 | However, a new third version number has been added to represent | ||
| 1591 | changes by user sites. This number will always be zero in | ||
| 1592 | Emacs when I distribute it; it will be incremented each time | ||
| 1593 | Emacs is built at another site. | ||
| 1594 | |||
| 1595 | * There is now a reader syntax for Meta characters: | ||
| 1596 | \M-CHAR means CHAR or'ed with the Meta bit. For example: | ||
| 1597 | |||
| 1598 | ?\M-x is (+ ?x 128) | ||
| 1599 | ?\M-\n is (+ ?\n 128) | ||
| 1600 | ?\M-\^f is (+ ?\^f 128) | ||
| 1601 | |||
| 1602 | This syntax can be used in strings too. Note, however, that | ||
| 1603 | Meta characters are not meaningful in key sequences being passed | ||
| 1604 | to define-key or lookup-key; you must use ESC characters (\e) | ||
| 1605 | in them instead. | ||
| 1606 | |||
| 1607 | ?\C- can be used likewise for control characters. (13.9) | ||
| 1608 | |||
| 1609 | * Installation change | ||
| 1610 | The string "../lisp" now adds to the front of the load-path | ||
| 1611 | used for searching for Lisp files during Emacs initialization. | ||
| 1612 | It used to replace the path specified in paths.h entirely. | ||
| 1613 | Now the directory ../lisp is searched first and the directoris | ||
| 1614 | specified in paths.h are searched afterward. | ||
| 1615 | |||
| 1616 | |||
| 1617 | |||
| 1618 | Changes in Emacs 1.12 | ||
| 1619 | |||
| 1620 | * There is a new installation procedure. | ||
| 1621 | See the file INSTALL that comes in the top level | ||
| 1622 | directory in the tar file or tape. | ||
| 1623 | |||
| 1624 | * The Meta key is now supported on terminals that have it. | ||
| 1625 | This is a shift key which causes the high bit to be turned on | ||
| 1626 | in all input characters typed while it is held down. | ||
| 1627 | |||
| 1628 | read-char now returns a value in the range 128-255 if | ||
| 1629 | a Meta character is typed. When interpreted as command | ||
| 1630 | input, a Meta character is equivalent to a two character | ||
| 1631 | sequence, the meta prefix character followed by the un-metized | ||
| 1632 | character (Meta-G unmetized is G). | ||
| 1633 | |||
| 1634 | The meta prefix character | ||
| 1635 | is specified by the value of the variable meta-prefix-char. | ||
| 1636 | If this character (normally Escape) has been redefined locally | ||
| 1637 | with a non-prefix definition (such as happens in completing | ||
| 1638 | minibuffers) then the local redefinition is suppressed when | ||
| 1639 | the character is not the last one in a key sequence. | ||
| 1640 | So the local redefinition is effective if you type the character | ||
| 1641 | explicitly, but not effective if the character comes from | ||
| 1642 | the use of the Meta key. | ||
| 1643 | |||
| 1644 | * `-' is no longer a completion command in the minibuffer. | ||
| 1645 | It is an ordinary self-inserting character. | ||
| 1646 | |||
| 1647 | * The list load-path of directories load to search for Lisp files | ||
| 1648 | is now controlled by the EMACSLOADPATH environment variable | ||
| 1649 | [[ Note this was originally EMACS-LOAD-PATH and has been changed | ||
| 1650 | again; sh does not deal properly with hyphens in env variable names]] | ||
| 1651 | rather than the EPATH environment variable. This is to avoid | ||
| 1652 | conflicts with other Emacses. | ||
| 1653 | |||
| 1654 | While Emacs is being built initially, the load-path | ||
| 1655 | is now just ("../lisp"), ignoring paths.h. It does not | ||
| 1656 | ignore EMACSLOADPATH, however; you should avoid having | ||
| 1657 | this variable set while building Emacs. | ||
| 1658 | |||
| 1659 | * You can now specify a translation table for keyboard | ||
| 1660 | input characters, as a way of exchanging or substituting | ||
| 1661 | keys on the keyboard. | ||
| 1662 | |||
| 1663 | If the value of keyboard-translate-table is a string, | ||
| 1664 | every character received from the keyboard is used as an | ||
| 1665 | index in that string, and the character at that index in | ||
| 1666 | the string is used as input instead of what was actually | ||
| 1667 | typed. If the actual input character is >= the length of | ||
| 1668 | the string, it is used unchanged. | ||
| 1669 | |||
| 1670 | One way this feature can be used is to fix bad keyboard | ||
| 1671 | designes. For example, on some terminals, Delete is | ||
| 1672 | Shift-Underscore. Since Delete is a more useful character | ||
| 1673 | than Underscore, it is an improvement to make the unshifted | ||
| 1674 | character Delete and the shifted one Underscore. This can | ||
| 1675 | be done with | ||
| 1676 | |||
| 1677 | ;; First make a translate table that does the identity translation. | ||
| 1678 | (setq keyboard-translate-table (make-string 128 0)) | ||
| 1679 | (let ((i 0)) | ||
| 1680 | (while (< i 128) | ||
| 1681 | (aset keyboard-translate-table i i) | ||
| 1682 | (setq i (1+ i)))) | ||
| 1683 | |||
| 1684 | ;; Now alter translations of some characters. | ||
| 1685 | (aset keyboard-translate-table ?\_ ?\^?) | ||
| 1686 | (aset keyboard-translate-table ?\^? ?\_) | ||
| 1687 | |||
| 1688 | If your terminal has a Meta key and can therefore send | ||
| 1689 | codes up to 255, Meta characters are translated through | ||
| 1690 | elements 128 through 255 of the translate table, and therefore | ||
| 1691 | are translated independently of the corresponding non-Meta | ||
| 1692 | characters. You must therefore establish translations | ||
| 1693 | independently for the Meta characters if you want them too: | ||
| 1694 | |||
| 1695 | ;; First make a translate table that does the identity translation. | ||
| 1696 | (setq keyboard-translate-table (make-string 256 0)) | ||
| 1697 | (let ((i 0)) | ||
| 1698 | (while (< i 256) | ||
| 1699 | (aset keyboard-translate-table i i) | ||
| 1700 | (setq i (1+ i)))) | ||
| 1701 | |||
| 1702 | ;; Now alter translations of some characters. | ||
| 1703 | (aset keyboard-translate-table ?\_ ?\^?) | ||
| 1704 | (aset keyboard-translate-table ?\^? ?\_) | ||
| 1705 | |||
| 1706 | ;; Now alter translations of some Meta characters. | ||
| 1707 | (aset keyboard-translate-table (+ 128 ?\_) (+ 128 ?\^?)) | ||
| 1708 | (aset keyboard-translate-table (+ 128 ?\^?) (+ 128 ?\_)) | ||
| 1709 | |||
| 1710 | * (process-kill-without-query PROCESS) | ||
| 1711 | |||
| 1712 | This marks the process so that, when you kill Emacs, | ||
| 1713 | you will not on its account be queried about active subprocesses. | ||
| 1714 | |||
| 1715 | |||
| 1716 | |||
| 1717 | Changes in Emacs 1.11 | ||
| 1718 | |||
| 1719 | * The commands C-c and C-z have been interchanged, | ||
| 1720 | for greater compatibility with normal Unix usage. | ||
| 1721 | C-z now runs suspend-emacs and C-c runs exit-recursive-edit. | ||
| 1722 | |||
| 1723 | * The value returned by file-name-directory now ends | ||
| 1724 | with a slash. (file-name-directory "foo/bar") => "foo/". | ||
| 1725 | This avoids confusing results when dealing with files | ||
| 1726 | in the root directory. | ||
| 1727 | |||
| 1728 | The value of the per-buffer variable default-directory | ||
| 1729 | is also supposed to have a final slash now. | ||
| 1730 | |||
| 1731 | * There are now variables to control the switches passed to | ||
| 1732 | `ls' by the C-x C-d command (list-directory). | ||
| 1733 | list-directory-brief-switches is a string, initially "-CF", | ||
| 1734 | used for brief listings, and list-directory-verbose-switches | ||
| 1735 | is a string, initially "-l", used for verbose ones. | ||
| 1736 | |||
| 1737 | * For Ann Arbor Ambassador terminals, the termcap "ti" string | ||
| 1738 | is now used to initialize the screen geometry on entry to Emacs, | ||
| 1739 | and the "te" string is used to set it back on exit. | ||
| 1740 | If the termcap entry does not define the "ti" or "te" string, | ||
| 1741 | Emacs does what it used to do. | ||
| 1742 | |||
| 1743 | |||
| 1744 | |||
| 1745 | Changes in Emacs 1.10 | ||
| 1746 | |||
| 1747 | * GNU Emacs has been made almost 1/3 smaller. | ||
| 1748 | It now dumps out as only 530kbytes on Vax 4.2bsd. | ||
| 1749 | |||
| 1750 | * The term "checkpoint" has been replaced by "auto save" | ||
| 1751 | throughout the function names, variable names and documentation | ||
| 1752 | of GNU Emacs. | ||
| 1753 | |||
| 1754 | * The function load now tries appending ".elc" and ".el" | ||
| 1755 | to the specified filename BEFORE it tries the filename | ||
| 1756 | without change. | ||
| 1757 | |||
| 1758 | * rmail now makes the mode line display the total number | ||
| 1759 | of messages and the current message number. | ||
| 1760 | The "f" command now means forward a message to another user. | ||
| 1761 | The command to search through all messages for a string is now "F". | ||
| 1762 | The "u" command now means to move back to the previous | ||
| 1763 | message and undelete it. To undelete the selected message, use Meta-u. | ||
| 1764 | |||
| 1765 | * The hyphen character is now equivalent to a Space while | ||
| 1766 | in completing minibuffers. Both mean to complete an additional word. | ||
| 1767 | |||
| 1768 | * The Lisp function error now takes args like format | ||
| 1769 | which are used to construct the error message. | ||
| 1770 | |||
| 1771 | * Redisplay will refuse to start its display at the end of the buffer. | ||
| 1772 | It will pick a new place to display from, rather than use that. | ||
| 1773 | |||
| 1774 | * The value returned by garbage-collect has been changed. | ||
| 1775 | Its first element is no longer a number but a cons, | ||
| 1776 | whose car is the number of cons cells now in use, | ||
| 1777 | and whose cdr is the number of cons cells that have been | ||
| 1778 | made but are now free. | ||
| 1779 | The second element is similar but describes symbols rather than cons cells. | ||
| 1780 | The third element is similar but describes markers. | ||
| 1781 | |||
| 1782 | * The variable buffer-name has been eliminated. | ||
| 1783 | The function buffer-name still exists. This is to prevent | ||
| 1784 | user programs from changing buffer names without going | ||
| 1785 | through the rename-buffer function. | ||
| 1786 | |||
| 1787 | |||
| 1788 | |||
| 1789 | Changes in Emacs 1.9 | ||
| 1790 | |||
| 1791 | * When a fill prefix is in effect, paragraphs are started | ||
| 1792 | or separated by lines that do not start with the fill prefix. | ||
| 1793 | Also, a line which consists of the fill prefix followed by | ||
| 1794 | white space separates paragraphs. | ||
| 1795 | |||
| 1796 | * C-x C-v runs the new function find-alternate-file. | ||
| 1797 | It finds the specified file, switches to that buffer, | ||
| 1798 | and kills the previous current buffer. (It requires | ||
| 1799 | confirmation if that buffer had changes.) This is | ||
| 1800 | most useful after you find the wrong file due to a typo. | ||
| 1801 | |||
| 1802 | * Exiting the minibuffer moves the cursor to column 0, | ||
| 1803 | to show you that it has really been exited. | ||
| 1804 | |||
| 1805 | * Meta-g (fill-region) now fills each paragraph in the | ||
| 1806 | region individually. To fill the region as if it were | ||
| 1807 | a single paragraph (for when the paragraph-delimiting mechanism | ||
| 1808 | does the wrong thing), use fill-region-as-paragraph. | ||
| 1809 | |||
| 1810 | * Tab in text mode now runs the function tab-to-tab-stop. | ||
| 1811 | A new mode called indented-text-mode is like text-mode | ||
| 1812 | except that in it Tab runs the function indent-relative, | ||
| 1813 | which indents the line under the previous line. | ||
| 1814 | If auto fill is enabled while in indented-text-mode, | ||
| 1815 | the new lines that it makes are indented. | ||
| 1816 | |||
| 1817 | * Functions kill-rectangle and yank-rectangle. | ||
| 1818 | kill-rectangle deletes the rectangle specified by dot and mark | ||
| 1819 | (or by two arguments) and saves it in the variable killed-rectangle. | ||
| 1820 | yank-rectangle inserts the rectangle in that variable. | ||
| 1821 | |||
| 1822 | Tab characters in a rectangle being saved are replaced | ||
| 1823 | by spaces in such a way that their appearance will | ||
| 1824 | not be changed if the rectangle is later reinserted | ||
| 1825 | at a different column position. | ||
| 1826 | |||
| 1827 | * `+' in a regular expression now means | ||
| 1828 | to repeat the previous expression one or more times. | ||
| 1829 | `?' means to repeat it zero or one time. | ||
| 1830 | They are in all regards like `*' except for the | ||
| 1831 | number of repetitions they match. | ||
| 1832 | |||
| 1833 | \< in a regular expression now matches the null string | ||
| 1834 | when it is at the beginning of a word; \> matches | ||
| 1835 | the null string at the end of a word. | ||
| 1836 | |||
| 1837 | * C-x p narrows the buffer so that only the current page | ||
| 1838 | is visible. | ||
| 1839 | |||
| 1840 | * C-x ) with argument repeats the kbd macro just | ||
| 1841 | defined that many times, counting the definition | ||
| 1842 | as one repetition. | ||
| 1843 | |||
| 1844 | * C-x ( with argument begins defining a kbd macro | ||
| 1845 | starting with the last one defined. It executes that | ||
| 1846 | previous kbd macro initially, just as if you began | ||
| 1847 | by typing it over again. | ||
| 1848 | |||
| 1849 | * C-x q command queries the user during kbd macro execution. | ||
| 1850 | With prefix argument, enters recursive edit, | ||
| 1851 | reading keyboard commands even within a kbd macro. | ||
| 1852 | You can give different commands each time the macro executes. | ||
| 1853 | Without prefix argument, reads a character. Your options are: | ||
| 1854 | Space -- execute the rest of the macro. | ||
| 1855 | Delete -- skip the rest of the macro; start next repetition. | ||
| 1856 | C-d -- skip rest of the macro and don't repeat it any more. | ||
| 1857 | C-r -- enter a recursive edit, then on exit ask again for a character | ||
| 1858 | C-l -- redisplay screen and ask again." | ||
| 1859 | |||
| 1860 | * write-kbd-macro and append-kbd-macro are used to save | ||
| 1861 | a kbd macro definition in a file (as Lisp code to | ||
| 1862 | redefine the macro when the file is loaded). | ||
| 1863 | These commands differ in that write-kbd-macro | ||
| 1864 | discards the previous contents of the file. | ||
| 1865 | If given a prefix argument, both commands | ||
| 1866 | record the keys which invoke the macro as well as the | ||
| 1867 | macro's definition. | ||
| 1868 | |||
| 1869 | * The variable global-minor-modes is used to display | ||
| 1870 | strings in the mode line of all buffers. It should be | ||
| 1871 | a list of elements thaht are conses whose cdrs are strings | ||
| 1872 | to be displayed. This complements the variable | ||
| 1873 | minor-modes, which has the same effect but has a separate | ||
| 1874 | value in each buffer. | ||
| 1875 | |||
| 1876 | * C-x = describes horizontal scrolling in effect, if any. | ||
| 1877 | |||
| 1878 | * Return now auto-fills the line it is ending, in auto fill mode. | ||
| 1879 | Space with zero as argument auto-fills the line before it | ||
| 1880 | just like Space without an argument. | ||
| 1881 | |||
| 1882 | |||
| 1883 | |||
| 1884 | Changes in Emacs 1.8 | ||
| 1885 | |||
| 1886 | This release mostly fixes bugs. There are a few new features: | ||
| 1887 | |||
| 1888 | * apropos now sorts the symbols before displaying them. | ||
| 1889 | Also, it returns a list of the symbols found. | ||
| 1890 | |||
| 1891 | apropos now accepts a second arg PRED which should be a function | ||
| 1892 | of one argument; if PRED is non-nil, each symbol is tested | ||
| 1893 | with PRED and only symbols for which PRED returns non-nil | ||
| 1894 | appear in the output or the returned list. | ||
| 1895 | |||
| 1896 | If the third argument to apropos is non-nil, apropos does not | ||
| 1897 | display anything; it merely returns the list of symbols found. | ||
| 1898 | |||
| 1899 | C-h a now runs the new function command-apropos rather than | ||
| 1900 | apropos, and shows only symbols with definitions as commands. | ||
| 1901 | |||
| 1902 | * M-x shell sends the command | ||
| 1903 | if (-f ~/.emacs_NAME)source ~/.emacs_NAME | ||
| 1904 | invisibly to the shell when it starts. Here NAME | ||
| 1905 | is replaced by the name of shell used, | ||
| 1906 | as it came from your ESHELL or SHELL environment variable | ||
| 1907 | but with directory name, if any, removed. | ||
| 1908 | |||
| 1909 | * M-, now runs the command tags-loop-continue, which is used | ||
| 1910 | to resume a terminated tags-search or tags-query-replace. | ||
| 1911 | |||
| 1912 | |||
| 1913 | |||
| 1914 | Changes in Emacs 1.7 | ||
| 1915 | |||
| 1916 | It's Beat CCA Week. | ||
| 1917 | |||
| 1918 | * The initial buffer is now called "*scratch*" instead of "scratch", | ||
| 1919 | so that all buffer names used automatically by Emacs now have *'s. | ||
| 1920 | |||
| 1921 | * Undo information is now stored separately for each buffer. | ||
| 1922 | The Undo command (C-x u) always applies to the current | ||
| 1923 | buffer only. | ||
| 1924 | |||
| 1925 | C-_ is now a synonym for C-x u. | ||
| 1926 | |||
| 1927 | (buffer-flush-undo BUFFER) causes undo information not to | ||
| 1928 | be kept for BUFFER, and frees the space that would have | ||
| 1929 | been used to hold it. In any case, no undo information is | ||
| 1930 | kept for buffers whose names start with spaces. (These | ||
| 1931 | buffers also do not appear in the C-x C-b display.) | ||
| 1932 | |||
| 1933 | * Rectangle operations are now implemented. | ||
| 1934 | C-x r stores the rectangle described by dot and mark | ||
| 1935 | into a register; it reads the register name from the keyboard. | ||
| 1936 | C-x g, the command to insert the contents of a register, | ||
| 1937 | can be used to reinsert the rectangle elsewhere. | ||
| 1938 | |||
| 1939 | Other rectangle commands include | ||
| 1940 | open-rectangle: | ||
| 1941 | insert a blank rectangle in the position and size | ||
| 1942 | described by dot and mark, at its corners; | ||
| 1943 | the existing text is pushed to the right. | ||
| 1944 | clear-rectangle: | ||
| 1945 | replace the rectangle described by dot ane mark | ||
| 1946 | with blanks. The previous text is deleted. | ||
| 1947 | delete-rectangle: | ||
| 1948 | delete the text of the specified rectangle, | ||
| 1949 | moving the text beyond it on each line leftward. | ||
| 1950 | |||
| 1951 | * Side-by-side windows are allowed. Use C-x 5 to split the | ||
| 1952 | current window into two windows side by side. | ||
| 1953 | C-x } makes the selected window ARG columns wider at the | ||
| 1954 | expense of the windows at its sides. C-x { makes the selected | ||
| 1955 | window ARG columns narrower. An argument to C-x 5 specifies | ||
| 1956 | how many columns to give to the leftmost of the two windows made. | ||
| 1957 | |||
| 1958 | C-x 2 now accepts a numeric argument to specify the number of | ||
| 1959 | lines to give to the uppermost of the two windows it makes. | ||
| 1960 | |||
| 1961 | * Horizontal scrolling of the lines in a window is now implemented. | ||
| 1962 | C-x < (scroll-left) scrolls all displayed lines left, | ||
| 1963 | with the numeric argument (default 1) saying how far to scroll. | ||
| 1964 | When the window is scrolled left, some amount of the beginning | ||
| 1965 | of each nonempty line is replaced by an "$". | ||
| 1966 | C-x > scrolls right. If a window has no text hidden at the left | ||
| 1967 | margin, it cannot be scrolled any farther right than that. | ||
| 1968 | When nonzero leftwards scrolling is in effect in a window. | ||
| 1969 | lines are automatically truncated at the window's right margin | ||
| 1970 | regardless of the value of the variable truncate-lines in the | ||
| 1971 | buffer being displayed. | ||
| 1972 | |||
| 1973 | * C-x C-d now uses the default output format of `ls', | ||
| 1974 | which gives just file names in multiple columns. | ||
| 1975 | C-u C-x C-d passes the -l switch to `ls'. | ||
| 1976 | |||
| 1977 | * C-t at the end of a line now exchanges the two preceding characters. | ||
| 1978 | |||
| 1979 | All the transpose commands now interpret zero as an argument | ||
| 1980 | to mean to transpose the textual unit after or around dot | ||
| 1981 | with the one after or around the mark. | ||
| 1982 | |||
| 1983 | * M-! executes a shell command in an inferior shell | ||
| 1984 | and displays the output from it. With a prefix argument, | ||
| 1985 | it inserts the output in the current buffer after dot | ||
| 1986 | and sets the mark after the output. The shell command | ||
| 1987 | gets /dev/null as its standard input. | ||
| 1988 | |||
| 1989 | M-| is like M-! but passes the contents of the region | ||
| 1990 | as input to the shell command. A prefix argument makes | ||
| 1991 | the output from the command replace the contents of the region. | ||
| 1992 | |||
| 1993 | * The mode line will now say "Def" after the major mode | ||
| 1994 | while a keyboard macro is being defined. | ||
| 1995 | |||
| 1996 | * The variable fill-prefix is now used by Meta-q. | ||
| 1997 | Meta-q removes the fill prefix from lines that start with it | ||
| 1998 | before filling, and inserts the fill prefix on each line | ||
| 1999 | after filling. | ||
| 2000 | |||
| 2001 | The command C-x . sets the fill prefix equal to the text | ||
| 2002 | on the current line before dot. | ||
| 2003 | |||
| 2004 | * The new command Meta-j (indent-new-comment-line), | ||
| 2005 | is like Linefeed (indent-new-line) except when dot is inside a comment; | ||
| 2006 | in that case, Meta-j inserts a comment starter on the new line, | ||
| 2007 | indented under the comment starter above. It also inserts | ||
| 2008 | a comment terminator at the end of the line above, | ||
| 2009 | if the language being edited calls for one. | ||
| 2010 | |||
| 2011 | * Rmail should work correctly now, and has some C-h m documentation. | ||
| 2012 | |||
| 2013 | |||
| 2014 | |||
| 2015 | Changes in Emacs 1.6 | ||
| 2016 | |||
| 2017 | * save-buffers-kill-emacs is now on C-x C-c | ||
| 2018 | while C-x C-z does suspend-emacs. This is to make | ||
| 2019 | C-x C-c like the normal Unix meaning of C-c | ||
| 2020 | and C-x C-z linke the normal Unix meaning of C-z. | ||
| 2021 | |||
| 2022 | * M-ESC (eval-expression) is now a disabled command by default. | ||
| 2023 | This prevents users who type ESC ESC accidentally from | ||
| 2024 | getting confusing results. Put | ||
| 2025 | (put 'eval-expression 'disabled nil) | ||
| 2026 | in your ~/.emacs file to enable the command. | ||
| 2027 | |||
| 2028 | * Self-inserting text is grouped into bunches for undoing. | ||
| 2029 | Each C-x u command undoes up to 20 consecutive self-inserting | ||
| 2030 | characters. | ||
| 2031 | |||
| 2032 | * Help f now uses as a default the function being called | ||
| 2033 | in the innermost Lisp expression that dot is in. | ||
| 2034 | This makes it more convenient to use while writing | ||
| 2035 | Lisp code to run in Emacs. | ||
| 2036 | (If the text around dot does not appear to be a call | ||
| 2037 | to a Lisp function, there is no default.) | ||
| 2038 | |||
| 2039 | Likewise, Help v uses the symbol around or before dot | ||
| 2040 | as a default, if that is a variable name. | ||
| 2041 | |||
| 2042 | * Commands that read filenames now insert the default | ||
| 2043 | directory in the minibuffer, to become part of your input. | ||
| 2044 | This allows you to see what the default is. | ||
| 2045 | You may type a filename which goes at the end of the | ||
| 2046 | default directory, or you may edit the default directory | ||
| 2047 | as you like to create the input you want to give. | ||
| 2048 | You may also type an absolute pathname (starting with /) | ||
| 2049 | or refer to a home directory (input starting with ~) | ||
| 2050 | after the default; the presence of // or /~ causes | ||
| 2051 | everything up through the slash that precedes your | ||
| 2052 | type-in to be ignored. | ||
| 2053 | |||
| 2054 | Returning the default directory without change, | ||
| 2055 | including the terminating slash, requests the use | ||
| 2056 | of the default file name (usually the visited file's name). | ||
| 2057 | |||
| 2058 | Set the variable insert-default-directory to nil | ||
| 2059 | to turn off this feature. | ||
| 2060 | |||
| 2061 | * M-x shell now uses the environment variable ESHELL, | ||
| 2062 | if it exists, as the file name of the shell to run. | ||
| 2063 | If there is no ESHELL variable, the SHELL variable is used. | ||
| 2064 | This is because some shells do not work properly as inferiors | ||
| 2065 | of Emacs (or anything like Emacs). | ||
| 2066 | |||
| 2067 | * A new variable minor-modes now exists, with a separate value | ||
| 2068 | in each buffer. Its value should be an alist of elements | ||
| 2069 | (MODE-FUNCTION-SYMBOL . PRETTY-NAME-STRING), one for each | ||
| 2070 | minor mode that is turned on in the buffer. The pretty | ||
| 2071 | name strings are displayed in the mode line after the name of the | ||
| 2072 | major mode (with spaces between them). The mode function | ||
| 2073 | symbols should be symbols whose function definitions will | ||
| 2074 | turn on the minor mode if given 1 as an argument; they are present | ||
| 2075 | so that Help m can find their documentation strings. | ||
| 2076 | |||
| 2077 | * The format of tag table files has been changed. | ||
| 2078 | The new format enables Emacs to find tags much faster. | ||
| 2079 | |||
| 2080 | A new program, etags, exists to make the kind of | ||
| 2081 | tag table that Emacs wants. etags is invoked just | ||
| 2082 | like ctags; in fact, if you give it any switches, | ||
| 2083 | it does exactly what ctags would do. Give it the | ||
| 2084 | empty switch ("-") to make it act like ctags with no switches. | ||
| 2085 | |||
| 2086 | etags names the tag table file "TAGS" rather than "tags", | ||
| 2087 | so that these tag tables and the standard Unix ones | ||
| 2088 | can coexist. | ||
| 2089 | |||
| 2090 | The tags library can no longer use standard ctags-style | ||
| 2091 | tag tables files. | ||
| 2092 | |||
| 2093 | * The file of Lisp code Emacs reads on startup is now | ||
| 2094 | called ~/.emacs rather than ~/.emacs_pro. | ||
| 2095 | |||
| 2096 | * copy-file now gives the copied file the same mode bits | ||
| 2097 | as the original file. | ||
| 2098 | |||
| 2099 | * Output from a process inserted into the process's buffer | ||
| 2100 | no longer sets the buffer's mark. Instead it sets a | ||
| 2101 | marker associated with the process to point to the end | ||
| 2102 | of the inserted text. You can access this marker with | ||
| 2103 | (process-mark PROCESS) | ||
| 2104 | and then either examine its position with marker-position | ||
| 2105 | or set its position with set-marker. | ||
| 2106 | |||
| 2107 | * completing-read takes a new optional fifth argument which, | ||
| 2108 | if non-nil, should be a string of text to insert into | ||
| 2109 | the minibuffer before reading user commands. | ||
| 2110 | |||
| 2111 | * The Lisp function elt now exists: | ||
| 2112 | (elt ARRAY N) is like (aref ARRAY N), | ||
| 2113 | (elt LIST N) is like (nth N LIST). | ||
| 2114 | |||
| 2115 | * rplaca is now a synonym for setcar, and rplacd for setcdr. | ||
| 2116 | eql is now a synonym for eq; it turns out that the Common Lisp | ||
| 2117 | distinction between eq and eql is insignificant in Emacs. | ||
| 2118 | numberp is a new synonym for integerp. | ||
| 2119 | |||
| 2120 | * auto-save has been renamed to auto-save-mode. | ||
| 2121 | |||
| 2122 | * Auto save file names for buffers are now created by the | ||
| 2123 | function make-auto-save-file-name. This is so you can | ||
| 2124 | redefine that function to change the way auto save file names | ||
| 2125 | are chosen. | ||
| 2126 | |||
| 2127 | * expand-file-name no longer discards a final slash. | ||
| 2128 | (expand-file-name "foo" "/lose") => "/lose/foo" | ||
| 2129 | (expand-file-name "foo/" "/lose") => "/lose/foo/" | ||
| 2130 | |||
| 2131 | Also, expand-file-name no longer substitutes $ constructs. | ||
| 2132 | A new function substitute-in-file-name does this. Reading | ||
| 2133 | a file name with read-file-name or the `f' or`F' option | ||
| 2134 | of interactive calling uses substitute-in-file-name | ||
| 2135 | on the file name that was read and returns the result. | ||
| 2136 | |||
| 2137 | All I/O primitives including insert-file-contents and | ||
| 2138 | delete-file call expand-file-name on the file name supplied. | ||
| 2139 | This change makes them considerably faster in the usual case. | ||
| 2140 | |||
| 2141 | * Interactive calling spec strings allow the new code letter 'D' | ||
| 2142 | which means to read a directory name. It is like 'f' except | ||
| 2143 | that the default if the user makes no change in the minibuffer | ||
| 2144 | is to return the current default directory rather than the | ||
| 2145 | current visited file name. | ||
| 2146 | |||
| 2147 | |||
| 2148 | |||
| 2149 | Changes in Emacs 1.5 | ||
| 2150 | |||
| 2151 | * suspend-emacs now accepts an optional argument | ||
| 2152 | which is a string to be stuffed as terminal input | ||
| 2153 | to be read by Emacs's superior shell after Emacs exits. | ||
| 2154 | |||
| 2155 | A library called ledit exists which uses this feature | ||
| 2156 | to transmit text to a Lisp job running as a sibling of | ||
| 2157 | Emacs. | ||
| 2158 | |||
| 2159 | * If find-file is given the name of a directory, | ||
| 2160 | it automatically invokes dired on that directory | ||
| 2161 | rather than reading in the binary data that make up | ||
| 2162 | the actual contents of the directory according to Unix. | ||
| 2163 | |||
| 2164 | * Saving an Emacs buffer now preserves the file modes | ||
| 2165 | of any previously existing file with the same name. | ||
| 2166 | This works using new Lisp functions file-modes and | ||
| 2167 | set-file-modes, which can be used to read or set the mode | ||
| 2168 | bits of any file. | ||
| 2169 | |||
| 2170 | * The Lisp function cond now exists, with its traditional meaning. | ||
| 2171 | |||
| 2172 | * defvar and defconst now permit the documentation string | ||
| 2173 | to be omitted. defvar also permits the initial value | ||
| 2174 | to be omitted; then it acts only as a comment. | ||
| 2175 | |||
| 2176 | |||
| 2177 | |||
| 2178 | Changes in Emacs 1.4 | ||
| 2179 | |||
| 2180 | * Auto-filling now normally indents the new line it creates | ||
| 2181 | by calling indent-according-to-mode. This function, meanwhile, | ||
| 2182 | has in Fundamental and Text modes the effect of making the line | ||
| 2183 | have an indentation of the value of left-margin, a per-buffer variable. | ||
| 2184 | |||
| 2185 | Tab no longer precisely does indent-according-to-mode; | ||
| 2186 | it does that in all modes that supply their own indentation routine, | ||
| 2187 | but in Fundamental, Text and allied modes it inserts a tab character. | ||
| 2188 | |||
| 2189 | * The command M-x grep now invokes grep (on arguments | ||
| 2190 | supplied by the user) and reads the output from grep | ||
| 2191 | asynchronously into a buffer. The command C-x ` can | ||
| 2192 | be used to move to the lines that grep has found. | ||
| 2193 | This is an adaptation of the mechanism used for | ||
| 2194 | running compilations and finding the loci of error messages. | ||
| 2195 | |||
| 2196 | You can now use C-x ` even while grep or compilation | ||
| 2197 | is proceeding; as more matches or error messages arrive, | ||
| 2198 | C-x ` will parse them and be able to find them. | ||
| 2199 | |||
| 2200 | * M-x mail now provides a command to send the message | ||
| 2201 | and "exit"--that is, return to the previously selected | ||
| 2202 | buffer. It is C-z C-z. | ||
| 2203 | |||
| 2204 | * Tab in C mode now tries harder to adapt to all indentation styles. | ||
| 2205 | If the line being indented is a statement that is not the first | ||
| 2206 | one in the containing compound-statement, it is aligned under | ||
| 2207 | the beginning of the first statement. | ||
| 2208 | |||
| 2209 | * The functions screen-width and screen-height return the | ||
| 2210 | total width and height of the screen as it is now being used. | ||
| 2211 | set-screen-width and set-screen-height tell Emacs how big | ||
| 2212 | to assume the screen is; they each take one argument, | ||
| 2213 | an integer. | ||
| 2214 | |||
| 2215 | * The Lisp function 'function' now exists. function is the | ||
| 2216 | same as quote, except that it serves as a signal to the | ||
| 2217 | Lisp compiler that the argument should be compiled as | ||
| 2218 | a function. Example: | ||
| 2219 | (mapcar (function (lambda (x) (+ x 5))) list) | ||
| 2220 | |||
| 2221 | * The function set-key has been renamed to global-set-key. | ||
| 2222 | undefine-key and local-undefine-key has been renamed to | ||
| 2223 | global-unset-key and local-unset-key. | ||
| 2224 | |||
| 2225 | * Emacs now collects input from asynchronous subprocesses | ||
| 2226 | while waiting in the functions sleep-for and sit-for. | ||
| 2227 | |||
| 2228 | * Shell mode's Newline command attempts to distinguish subshell | ||
| 2229 | prompts from user input when issued in the middle of the buffer. | ||
| 2230 | It no longer reexecutes from dot to the end of the line; | ||
| 2231 | it reeexecutes the entire line minus any prompt. | ||
| 2232 | The prompt is recognized by searching for the value of | ||
| 2233 | shell-prompt-pattern, starting from the beginning of the line. | ||
| 2234 | Anything thus skipped is not reexecuted. | ||
| 2235 | |||
| 2236 | |||
| 1328 | 2237 | ||
| 1329 | For older news, see the file ONEWS.1. | 2238 | Changes in Emacs 1.3 |
| 1330 | 2239 | ||
| 2240 | * An undo facility exists now. Type C-x u to undo a batch of | ||
| 2241 | changes (usually one command's changes, but some commands | ||
| 2242 | such as query-replace divide their changes into multiple | ||
| 2243 | batches. You can repeat C-x u to undo further. As long | ||
| 2244 | as no commands other than C-x u intervene, each one undoes | ||
| 2245 | another batch. A numeric argument to C-x u acts as a repeat | ||
| 2246 | count. | ||
| 2247 | |||
| 2248 | If you keep on undoing, eventually you may be told that | ||
| 2249 | you have used up all the recorded undo information. | ||
| 2250 | Some actions, such as reading in files, discard all | ||
| 2251 | undo information. | ||
| 2252 | |||
| 2253 | The undo information is not currently stored separately | ||
| 2254 | for each buffer, so it is mainly good if you do something | ||
| 2255 | totally spastic. [This has since been fixed.] | ||
| 2256 | |||
| 2257 | * A learn-by-doing tutorial introduction to Emacs now exists. | ||
| 2258 | Type C-h t to enter it. | ||
| 2259 | |||
| 2260 | * An Info documentation browser exists. Do M-x info to enter it. | ||
| 2261 | It contains a tutorial introduction so that no more documentation | ||
| 2262 | is needed here. As of now, the only documentation in it | ||
| 2263 | is that of Info itself. | ||
| 2264 | |||
| 2265 | * Help k and Help c are now different. Help c prints just the | ||
| 2266 | name of the function which the specified key invokes. Help k | ||
| 2267 | prints the documentation of the function as well. | ||
| 2268 | |||
| 2269 | * A document of the differences between GNU Emacs and Twenex Emacs | ||
| 2270 | now exists. It is called DIFF, in the same directory as this file. | ||
| 2271 | |||
| 2272 | * C mode can now indent comments better, including multi-line ones. | ||
| 2273 | Meta-Control-q now reindents comment lines within the expression | ||
| 2274 | being aligned. | ||
| 2275 | |||
| 2276 | * Insertion of a close-parenthesis now shows the matching open-parenthesis | ||
| 2277 | even if it is off screen, by printing the text following it on its line | ||
| 2278 | in the minibuffer. | ||
| 2279 | |||
| 2280 | * A file can now contain a list of local variable values | ||
| 2281 | to be in effect when the file is edited. See the file DIFF | ||
| 2282 | in the same directory as this file for full details. | ||
| 2283 | |||
| 2284 | * A function nth is defined. It means the same thing as in Common Lisp. | ||
| 2285 | |||
| 2286 | * The function install-command has been renamed to set-key. | ||
| 2287 | It now takes the key sequence as the first argument | ||
| 2288 | and the definition for it as the second argument. | ||
| 2289 | Likewise, local-install-command has been renamed to local-set-key. | ||
| 2290 | |||
| 2291 | |||
| 2292 | |||
| 2293 | Changes in Emacs 1.2 | ||
| 2294 | |||
| 2295 | * A Lisp single-stepping and debugging facility exists. | ||
| 2296 | To cause the debugger to be entered when an error | ||
| 2297 | occurs, set the variable debug-on-error non-nil. | ||
| 2298 | |||
| 2299 | To cause the debugger to be entered whenever function foo | ||
| 2300 | is called, do (debug-on-entry 'foo). To cancel this, | ||
| 2301 | do (cancel-debug-on-entry 'foo). debug-on-entry does | ||
| 2302 | not work for primitives (written in C), only functions | ||
| 2303 | written in Lisp. Most standard Emacs commands are in Lisp. | ||
| 2304 | |||
| 2305 | When the debugger is entered, the selected window shows | ||
| 2306 | a buffer called " *Backtrace" which displays a series | ||
| 2307 | of stack frames, most recently entered first. For each | ||
| 2308 | frame, the function name called is shown, usually followed | ||
| 2309 | by the argument values unless arguments are still being | ||
| 2310 | calculated. At the beginning of the buffer is a description | ||
| 2311 | of why the debugger was entered: function entry, function exit, | ||
| 2312 | error, or simply that the user called the function `debug'. | ||
| 2313 | |||
| 2314 | To exit the debugger and return to top level, type `q'. | ||
| 2315 | |||
| 2316 | In the debugger, you can evaluate Lisp expressions by | ||
| 2317 | typing `e'. This is equivalent to `M-ESC'. | ||
| 2318 | |||
| 2319 | When the debugger is entered due to an error, that is | ||
| 2320 | all you can do. When it is entered due to function entry | ||
| 2321 | (such as, requested by debug-on-entry), you have two | ||
| 2322 | options: | ||
| 2323 | Continue execution and reenter debugger after the | ||
| 2324 | completion of the function being entered. Type `c'. | ||
| 2325 | Continue execution but enter the debugger before | ||
| 2326 | the next subexpression. Type `d'. | ||
| 2327 | |||
| 2328 | You will see that some stack frames are marked with *. | ||
| 2329 | This means the debugger will be entered when those | ||
| 2330 | frames exit. You will see the value being returned | ||
| 2331 | in the first line of the backtrace buffer. Your options: | ||
| 2332 | Continue execution, and return that value. Type `c'. | ||
| 2333 | Continue execution, and return a specified value. Type `r'. | ||
| 2334 | |||
| 2335 | You can mark a frame to enter the debugger on exit | ||
| 2336 | with the `b' command, or clear such a mark with `u'. | ||
| 2337 | |||
| 2338 | * Lisp macros now exist. | ||
| 2339 | For example, you can write | ||
| 2340 | (defmacro cadr (arg) (list 'car (list 'cdr arg))) | ||
| 2341 | and then the expression | ||
| 2342 | (cadr foo) | ||
| 2343 | will expand into | ||
| 2344 | (car (cdr foo)) | ||
| 2345 | |||
| 2346 | |||
| 2347 | |||
| 2348 | Changes in Emacs 1.1 | ||
| 2349 | |||
| 2350 | * The initial buffer is now called "scratch" and is in a | ||
| 2351 | new major mode, Lisp Interaction mode. This mode is | ||
| 2352 | intended for typing Lisp expressions, evaluating them, | ||
| 2353 | and having the values printed into the buffer. | ||
| 2354 | |||
| 2355 | Type Linefeed after a Lisp expression, to evaluate the | ||
| 2356 | expression and have its value printed into the buffer, | ||
| 2357 | advancing dot. | ||
| 2358 | |||
| 2359 | The other commands of Lisp mode are available. | ||
| 2360 | |||
| 2361 | * The C-x C-e command for evaluating the Lisp expression | ||
| 2362 | before dot has been changed to print the value in the | ||
| 2363 | minibuffer line rather than insert it in the buffer. | ||
| 2364 | A numeric argument causes the printed value to appear | ||
| 2365 | in the buffer instead. | ||
| 2366 | |||
| 2367 | * In Lisp mode, the command M-C-x evaluates the defun | ||
| 2368 | containing or following dot. The value is printed in | ||
| 2369 | the minibuffer. | ||
| 2370 | |||
| 2371 | * The value of a Lisp expression evaluated using M-ESC | ||
| 2372 | is now printed in the minibuffer. | ||
| 2373 | |||
| 2374 | * M-q now runs fill-paragraph, independent of major mode. | ||
| 2375 | |||
| 2376 | * C-h m now prints documentation on the current buffer's | ||
| 2377 | major mode. What it prints is the documentation of the | ||
| 2378 | major mode name as a function. All major modes have been | ||
| 2379 | equipped with documentation that describes all commands | ||
| 2380 | peculiar to the major mode, for this purpose. | ||
| 2381 | |||
| 2382 | * You can display a Unix manual entry with | ||
| 2383 | the M-x manual-entry command. | ||
| 2384 | |||
| 2385 | * You can run a shell, displaying its output in a buffer, | ||
| 2386 | with the M-x shell command. The Return key sends input | ||
| 2387 | to the subshell. Output is printed inserted automatically | ||
| 2388 | in the buffer. Commands C-c, C-d, C-u, C-w and C-z are redefined | ||
| 2389 | for controlling the subshell and its subjobs. | ||
| 2390 | "cd", "pushd" and "popd" commands are recognized as you | ||
| 2391 | enter them, so that the default directory of the Emacs buffer | ||
| 2392 | always remains the same as that of the subshell. | ||
| 2393 | |||
| 2394 | * C-x $ (that's a real dollar sign) controls line-hiding based | ||
| 2395 | on indentation. With a numeric arg N > 0, it causes all lines | ||
| 2396 | indented by N or more columns to become invisible. | ||
| 2397 | They are, effectively, tacked onto the preceding line, where | ||
| 2398 | they are represented by " ..." on the screen. | ||
| 2399 | (The end of the preceding visible line corresponds to a | ||
| 2400 | screen cursor position before the "...". Anywhere in the | ||
| 2401 | invisible lines that follow appears on the screen as a cursor | ||
| 2402 | position after the "...".) | ||
| 2403 | Currently, all editing commands treat invisible lines just | ||
| 2404 | like visible ones, except for C-n and C-p, which have special | ||
| 2405 | code to count visible lines only. | ||
| 2406 | C-x $ with no argument turns off this mode, which in any case | ||
| 2407 | is remembered separately for each buffer. | ||
| 2408 | |||
| 2409 | * Outline mode is another form of selective display. | ||
| 2410 | It is a major mode invoked with M-x outline-mode. | ||
| 2411 | It is intended for editing files that are structured as | ||
| 2412 | outlines, with heading lines (lines that begin with one | ||
| 2413 | or more asterisks) and text lines (all other lines). | ||
| 2414 | The number of asterisks in a heading line are its level; | ||
| 2415 | the subheadings of a heading line are all following heading | ||
| 2416 | lines at higher levels, until but not including the next | ||
| 2417 | heading line at the same or a lower level, regardless | ||
| 2418 | of intervening text lines. | ||
| 2419 | |||
| 2420 | In outline mode, you have commands to hide (remove from display) | ||
| 2421 | or show the text or subheadings under each heading line | ||
| 2422 | independently. Hidden text or subheadings are invisibly | ||
| 2423 | attached to the end of the preceding heading line, so that | ||
| 2424 | if you kill the hading line and yank it back elsewhere | ||
| 2425 | all the invisible lines accompany it. | ||
| 2426 | |||
| 2427 | All editing commands treat hidden outline-mode lines | ||
| 2428 | as part of the preceding visible line. | ||
| 2429 | |||
| 2430 | * C-x C-z runs save-buffers-kill-emacs | ||
| 2431 | offers to save each file buffer, then exits. | ||
| 2432 | |||
| 2433 | * C-c's function is now called suspend-emacs. | ||
| 2434 | |||
| 2435 | * The command C-x m runs mail, which switches to a buffer *mail* | ||
| 2436 | and lets you compose a message to send. C-x 4 m runs mail in | ||
| 2437 | another window. Type C-z C-s in the mail buffer to send the | ||
| 2438 | message according to what you have entered in the buffer. | ||
| 2439 | |||
| 2440 | You must separate the headers from the message text with | ||
| 2441 | an empty line. | ||
| 2442 | |||
| 2443 | * You can now dired partial directories (specified with names | ||
| 2444 | containing *'s, etc, all processed by the shell). Also, you | ||
| 2445 | can dired more than one directory; dired names the buffer | ||
| 2446 | according to the filespec or directory name. Reinvoking | ||
| 2447 | dired on a directory already direded just switches back to | ||
| 2448 | the same directory used last time; do M-x revert if you want | ||
| 2449 | to read in the current contents of the directory. | ||
| 2450 | |||
| 2451 | C-x d runs dired, and C-x 4 d runs dired in another window. | ||
| 2452 | |||
| 2453 | C-x C-d (list-directory) also allows partial directories now. | ||
| 2454 | |||
| 2455 | |||
| 2456 | Lisp programming changes | ||
| 2457 | |||
| 2458 | * t as an output stream now means "print to the minibuffer". | ||
| 2459 | If there is already text in the minibuffer printed via t | ||
| 2460 | as an output stream, the new text is appended to the old | ||
| 2461 | (or is truncated and lost at the margin). If the minibuffer | ||
| 2462 | contains text put there for some other reason, it is cleared | ||
| 2463 | first. | ||
| 2464 | |||
| 2465 | t is now the top-level value of standard-output. | ||
| 2466 | |||
| 2467 | t as an input stream now means "read via the minibuffer". | ||
| 2468 | The minibuffer is used to read a line of input, with editing, | ||
| 2469 | and this line is then parsed. Any excess not used by `read' | ||
| 2470 | is ignored; each `read' from t reads fresh input. | ||
| 2471 | t is now the top-level value of standard-input. | ||
| 2472 | |||
| 2473 | * A marker may be used as an input stream or an output stream. | ||
| 2474 | The effect is to grab input from where the marker points, | ||
| 2475 | advancing it over the characters read, or to insert output | ||
| 2476 | at the marker and advance it. | ||
| 2477 | |||
| 2478 | * Output from an asynchronous subprocess is now inserted at | ||
| 2479 | the end of the associated buffer, not at the buffer's dot, | ||
| 2480 | and the buffer's mark is set to the end of the inserted output | ||
| 2481 | each time output is inserted. | ||
| 2482 | |||
| 2483 | * (pos-visible-in-window-p POS WINDOW) | ||
| 2484 | returns t if position POS in WINDOW's buffer is in the range | ||
| 2485 | that is being displayed in WINDOW; nil if it is scrolled | ||
| 2486 | vertically out of visibility. | ||
| 2487 | |||
| 2488 | If display in WINDOW is not currently up to date, this function | ||
| 2489 | calculates carefully whether POS would appear if display were | ||
| 2490 | done immediately based on the current (window-start WINDOW). | ||
| 2491 | |||
| 2492 | POS defaults to (dot), and WINDOW to (selected-window). | ||
| 2493 | |||
| 2494 | * Variable buffer-alist replaced by function (buffer-list). | ||
| 2495 | The actual alist of buffers used internally by Emacs is now | ||
| 2496 | no longer accessible, to prevent the user from crashing Emacs | ||
| 2497 | by modifying it. The function buffer-list returns a list | ||
| 2498 | of all existing buffers. Modifying this list cannot hurt anything | ||
| 2499 | as a new list is constructed by each call to buffer-list. | ||
| 2500 | |||
| 2501 | * load now takes an optional third argument NOMSG which, if non-nil, | ||
| 2502 | prevents load from printing a message when it starts and when | ||
| 2503 | it is done. | ||
| 2504 | |||
| 2505 | * byte-recompile-directory is a new function which finds all | ||
| 2506 | the .elc files in a directory, and regenerates each one which | ||
| 2507 | is older than the corresponding .el (Lisp source) file. | ||
| 2508 | |||
| 2509 | |||
| 2510 | |||
| 1331 | ---------------------------------------------------------------------- | 2511 | ---------------------------------------------------------------------- |
| 1332 | Copyright information: | 2512 | Copyright information: |
| 1333 | 2513 | ||
| 1334 | Copyright (C) 1985 Richard M. Stallman | 2514 | Copyright (C) 1985, 1986, 2006 Richard M. Stallman |
| 1335 | 2515 | ||
| 1336 | Permission is granted to anyone to make or distribute verbatim copies | 2516 | Permission is granted to anyone to make or distribute verbatim copies |
| 1337 | of this document as received, in any medium, provided that the | 2517 | of this document as received, in any medium, provided that the |
diff --git a/etc/ONEWS.3 b/etc/NEWS.18 index f7f36c4b1d1..9d68613d1ca 100644 --- a/etc/ONEWS.3 +++ b/etc/NEWS.18 | |||
| @@ -1,8 +1,10 @@ | |||
| 1 | GNU Emacs NEWS -- history of user-visible changes. 17-Aug-1988 | 1 | GNU Emacs NEWS -- history of user-visible changes. 17-Aug-1988 |
| 2 | Copyright (C) 1988 Free Software Foundation, Inc. | 2 | Copyright (C) 1988, 2006 Free Software Foundation, Inc. |
| 3 | See the end for copying conditions. | 3 | See the end for copying conditions. |
| 4 | 4 | ||
| 5 | For older news, see the file ONEWS.2. | 5 | This file is about changes in emacs version 18. |
| 6 | |||
| 7 | |||
| 6 | 8 | ||
| 7 | Changes in version 18.52. | 9 | Changes in version 18.52. |
| 8 | 10 | ||
| @@ -111,6 +113,8 @@ The second is used with the window system: it iconifies the Emacs window. | |||
| 111 | ** VMS: the new function `define-logical-name' allows you to create | 113 | ** VMS: the new function `define-logical-name' allows you to create |
| 112 | job-wide logical names. The old function `define-dcl-symbol' has been | 114 | job-wide logical names. The old function `define-dcl-symbol' has been |
| 113 | removed. | 115 | removed. |
| 116 | |||
| 117 | |||
| 114 | 118 | ||
| 115 | Changes in version 18.50. | 119 | Changes in version 18.50. |
| 116 | 120 | ||
| @@ -166,6 +170,8 @@ Emacs run. End of file causes Emacs to exit. | |||
| 166 | These variables cannot really work because the 24-bit range of an | 170 | These variables cannot really work because the 24-bit range of an |
| 167 | integer in (most ports of) GNU Emacs is not large enough to hold their | 171 | integer in (most ports of) GNU Emacs is not large enough to hold their |
| 168 | values on many systems. | 172 | values on many systems. |
| 173 | |||
| 174 | |||
| 169 | 175 | ||
| 170 | Changes in version 18.45, since version 18.41. | 176 | Changes in version 18.45, since version 18.41. |
| 171 | 177 | ||
| @@ -221,6 +227,8 @@ case. You can use either upper or lower case indiscriminately. | |||
| 221 | 227 | ||
| 222 | This is a new name for the function formerly called | 228 | This is a new name for the function formerly called |
| 223 | `define-logical-name'. | 229 | `define-logical-name'. |
| 230 | |||
| 231 | |||
| 224 | 232 | ||
| 225 | Editing Changes in Emacs 18 | 233 | Editing Changes in Emacs 18 |
| 226 | 234 | ||
| @@ -798,6 +806,7 @@ can put in requests at the same time. | |||
| 798 | 806 | ||
| 799 | The client/server work only on Berkeley Unix, since they use the Berkeley | 807 | The client/server work only on Berkeley Unix, since they use the Berkeley |
| 800 | sockets mechanism for their communication. | 808 | sockets mechanism for their communication. |
| 809 | |||
| 801 | 810 | ||
| 802 | Changes in Lisp programming in Emacs version 18. | 811 | Changes in Lisp programming in Emacs version 18. |
| 803 | 812 | ||
| @@ -1586,13 +1595,13 @@ LD_SWITCH_MACHINE can be defined by the m- file to specify extra `ld' switches. | |||
| 1586 | C_DEBUG_SWITCH defines the switches to give `cc' when debugging. Default `-g'. | 1595 | C_DEBUG_SWITCH defines the switches to give `cc' when debugging. Default `-g'. |
| 1587 | C_OPTIMIZE_SWITCH defines the switches to give `cc' to optimize. Default `-O'. | 1596 | C_OPTIMIZE_SWITCH defines the switches to give `cc' to optimize. Default `-O'. |
| 1588 | C_SWITCH_MACHINE can be defined by the m- file to specify extra `cc' switches. | 1597 | C_SWITCH_MACHINE can be defined by the m- file to specify extra `cc' switches. |
| 1589 | |||
| 1590 | For older news, see the file ONEWS.2. | ||
| 1591 | 1598 | ||
| 1599 | |||
| 1600 | |||
| 1592 | ---------------------------------------------------------------------- | 1601 | ---------------------------------------------------------------------- |
| 1593 | Copyright information: | 1602 | Copyright information: |
| 1594 | 1603 | ||
| 1595 | Copyright (C) 1988 Free Software Foundation, Inc. | 1604 | Copyright (C) 1988, 2006 Free Software Foundation, Inc. |
| 1596 | 1605 | ||
| 1597 | Permission is granted to anyone to make or distribute verbatim copies | 1606 | Permission is granted to anyone to make or distribute verbatim copies |
| 1598 | of this document as received, in any medium, provided that the | 1607 | of this document as received, in any medium, provided that the |
diff --git a/etc/ONEWS b/etc/NEWS.19 index e92965c89d9..2d2e5f57066 100644 --- a/etc/ONEWS +++ b/etc/NEWS.19 | |||
| @@ -1,10 +1,14 @@ | |||
| 1 | GNU Emacs NEWS -- history of user-visible changes. 1992. | 1 | GNU Emacs NEWS -- history of user-visible changes. 1992. |
| 2 | Copyright (C) 1995, 2001 Free Software Foundation, Inc. | 2 | Copyright (C) 1993, 1994, 1995, 2001, 2006 Free Software Foundation, Inc. |
| 3 | See the end for copying conditions. | 3 | See the end for copying conditions. |
| 4 | 4 | ||
| 5 | For older news, see the file ONEWS.4. | 5 | This file is about changes in emacs versions 19. |
| 6 | |||
| 7 | |||
| 6 | 8 | ||
| 7 | * Emacs 19.34 is a bug-fix release with no user-visible changes. | 9 | * Emacs 19.34 is a bug-fix release with no user-visible changes. |
| 10 | |||
| 11 | |||
| 8 | 12 | ||
| 9 | * Changes in Emacs 19.33. | 13 | * Changes in Emacs 19.33. |
| 10 | 14 | ||
| @@ -14,6 +18,8 @@ mode should do that--it is the user's choice.) | |||
| 14 | ** The variable normal-auto-fill-function specifies the function to | 18 | ** The variable normal-auto-fill-function specifies the function to |
| 15 | use for auto-fill-function, if and when Auto Fill is turned on. | 19 | use for auto-fill-function, if and when Auto Fill is turned on. |
| 16 | Major modes can set this locally to alter how Auto Fill works. | 20 | Major modes can set this locally to alter how Auto Fill works. |
| 21 | |||
| 22 | |||
| 17 | 23 | ||
| 18 | * Editing Changes in Emacs 19.32 | 24 | * Editing Changes in Emacs 19.32 |
| 19 | 25 | ||
| @@ -255,6 +261,7 @@ cited text to hide is now customizable. | |||
| 255 | 261 | ||
| 256 | The Gnus manual has been expanded. It explains all these new features | 262 | The Gnus manual has been expanded. It explains all these new features |
| 257 | in greater detail. | 263 | in greater detail. |
| 264 | |||
| 258 | 265 | ||
| 259 | * Lisp Changes in Emacs 19.32 | 266 | * Lisp Changes in Emacs 19.32 |
| 260 | 267 | ||
| @@ -279,6 +286,8 @@ name. In such a case, you should give that alias symbol a non-nil | |||
| 279 | menu-alias property. That property tells the menu system to look for | 286 | menu-alias property. That property tells the menu system to look for |
| 280 | equivalent keys for the real name instead of equivalent keys for the | 287 | equivalent keys for the real name instead of equivalent keys for the |
| 281 | alias. | 288 | alias. |
| 289 | |||
| 290 | |||
| 282 | 291 | ||
| 283 | * Editing Changes in Emacs 19.31 | 292 | * Editing Changes in Emacs 19.31 |
| 284 | 293 | ||
| @@ -583,6 +592,7 @@ implementation of Emacs timers, see below). | |||
| 583 | **** `M-x list-colors-display' displays all the available colors. | 592 | **** `M-x list-colors-display' displays all the available colors. |
| 584 | 593 | ||
| 585 | **** The `TPU-EDT' package works. | 594 | **** The `TPU-EDT' package works. |
| 595 | |||
| 586 | 596 | ||
| 587 | * Lisp changes in Emacs 19.31. | 597 | * Lisp changes in Emacs 19.31. |
| 588 | 598 | ||
| @@ -1029,7 +1039,7 @@ your working file with the latest version from the master. | |||
| 1029 | *** RCS customization. | 1039 | *** RCS customization. |
| 1030 | 1040 | ||
| 1031 | There is a new variable vc-consult-headers. If it is t (the default), | 1041 | There is a new variable vc-consult-headers. If it is t (the default), |
| 1032 | VC searches for RCS headers in working files (like `$Id: ONEWS,v 1.8 2003/02/04 14:30:40 lektu Exp $') and | 1042 | VC searches for RCS headers in working files (like `$Id$') and |
| 1033 | determines the state of the file from them, not from the master file. | 1043 | determines the state of the file from them, not from the master file. |
| 1034 | This is fast and more reliable when you use branches. (The variable | 1044 | This is fast and more reliable when you use branches. (The variable |
| 1035 | was already present in Emacs 19.29, but didn't get mentioned in the | 1045 | was already present in Emacs 19.29, but didn't get mentioned in the |
| @@ -1290,6 +1300,7 @@ new file should include all the special entries from the old one. | |||
| 1290 | This new file is under active development as part of the ncurses | 1300 | This new file is under active development as part of the ncurses |
| 1291 | project. If you have any questions about this file, or problems with | 1301 | project. If you have any questions about this file, or problems with |
| 1292 | an entry in it, email terminfo@ccil.org. | 1302 | an entry in it, email terminfo@ccil.org. |
| 1303 | |||
| 1293 | 1304 | ||
| 1294 | * Lisp changes in Emacs 19.30. | 1305 | * Lisp changes in Emacs 19.30. |
| 1295 | 1306 | ||
| @@ -1453,6 +1464,8 @@ sequence containing the events that were used to invoke the command. | |||
| 1453 | 1464 | ||
| 1454 | ** The environment variable NAME, if set, now specifies the value of | 1465 | ** The environment variable NAME, if set, now specifies the value of |
| 1455 | (user-full-name), when Emacs starts up. | 1466 | (user-full-name), when Emacs starts up. |
| 1467 | |||
| 1468 | |||
| 1456 | 1469 | ||
| 1457 | * User Editing Changes in Emacs 19.29 | 1470 | * User Editing Changes in Emacs 19.29 |
| 1458 | 1471 | ||
| @@ -2155,6 +2168,7 @@ bibtex-sort-ignore-string-entries is now t. | |||
| 2155 | used reference types are now on control-modified keys, mediocre used | 2168 | used reference types are now on control-modified keys, mediocre used |
| 2156 | types are on unmodified keys, seldom used types are on shift-modified | 2169 | types are on unmodified keys, seldom used types are on shift-modified |
| 2157 | keys and almost never used types on meta-modified keys. | 2170 | keys and almost never used types on meta-modified keys. |
| 2171 | |||
| 2158 | 2172 | ||
| 2159 | * Configuration Changes in Emacs 19.29 | 2173 | * Configuration Changes in Emacs 19.29 |
| 2160 | 2174 | ||
| @@ -2171,6 +2185,7 @@ automatically enable X support if X is installed on your machine.) | |||
| 2171 | mail-host-address to a string in the dumped Emacs, that string becomes | 2185 | mail-host-address to a string in the dumped Emacs, that string becomes |
| 2172 | the default host address for initializing user-mail-address. | 2186 | the default host address for initializing user-mail-address. |
| 2173 | It is used instead of the value of (system-name). | 2187 | It is used instead of the value of (system-name). |
| 2188 | |||
| 2174 | 2189 | ||
| 2175 | * Lisp-Level Changes in Emacs 19.29 | 2190 | * Lisp-Level Changes in Emacs 19.29 |
| 2176 | 2191 | ||
| @@ -2906,6 +2921,8 @@ three integers.) | |||
| 2906 | **** The new function encode-time converts specific items of time | 2921 | **** The new function encode-time converts specific items of time |
| 2907 | information--the second, minute, hour, day, month, year, and time | 2922 | information--the second, minute, hour, day, month, year, and time |
| 2908 | zone--into a time value. | 2923 | zone--into a time value. |
| 2924 | |||
| 2925 | |||
| 2909 | 2926 | ||
| 2910 | * Changes in Emacs 19.27 | 2927 | * Changes in Emacs 19.27 |
| 2911 | 2928 | ||
| @@ -2921,6 +2938,8 @@ reach the end of a subnode, SPC moves into the next subnode, and so | |||
| 2921 | on. | 2938 | on. |
| 2922 | 2939 | ||
| 2923 | DEL more or less scrolls through the same text in reverse order. | 2940 | DEL more or less scrolls through the same text in reverse order. |
| 2941 | |||
| 2942 | |||
| 2924 | 2943 | ||
| 2925 | * User Editing Changes in Emacs 19.26 | 2944 | * User Editing Changes in Emacs 19.26 |
| 2926 | 2945 | ||
| @@ -2998,6 +3017,7 @@ for asking for a list of the subcommands of C-c C-v. | |||
| 2998 | setting just one variable, user-mail-address. This currently applies | 3017 | setting just one variable, user-mail-address. This currently applies |
| 2999 | to posting news with GNUS and to making change log entries. It may | 3018 | to posting news with GNUS and to making change log entries. It may |
| 3000 | apply to additional Emacs features in the future. | 3019 | apply to additional Emacs features in the future. |
| 3020 | |||
| 3001 | 3021 | ||
| 3002 | * Lisp-Level Changes in Emacs 19.26: | 3022 | * Lisp-Level Changes in Emacs 19.26: |
| 3003 | 3023 | ||
| @@ -3044,6 +3064,7 @@ delete-old-versions. | |||
| 3044 | other window for C-M-v to scroll. | 3064 | other window for C-M-v to scroll. |
| 3045 | 3065 | ||
| 3046 | ** Note that the function fceiling was mistakenly documented as fceil before. | 3066 | ** Note that the function fceiling was mistakenly documented as fceil before. |
| 3067 | |||
| 3047 | 3068 | ||
| 3048 | * Changes in cc-mode.el in Emacs 19.26: | 3069 | * Changes in cc-mode.el in Emacs 19.26: |
| 3049 | 3070 | ||
| @@ -3081,11 +3102,15 @@ other window for C-M-v to scroll. | |||
| 3081 | 3102 | ||
| 3082 | ** new buffer-local variable c-comment-start-regexp for (potential) | 3103 | ** new buffer-local variable c-comment-start-regexp for (potential) |
| 3083 | flexibility in adding new modes based on cc-mode.el | 3104 | flexibility in adding new modes based on cc-mode.el |
| 3105 | |||
| 3106 | |||
| 3084 | 3107 | ||
| 3085 | * Changes in Emacs 19.25 | 3108 | * Changes in Emacs 19.25 |
| 3086 | 3109 | ||
| 3087 | The variable x-cross-pointer-shape (which didn't really exist) has | 3110 | The variable x-cross-pointer-shape (which didn't really exist) has |
| 3088 | been renamed to x-sensitive-text-pointer-shape, and now does exist. | 3111 | been renamed to x-sensitive-text-pointer-shape, and now does exist. |
| 3112 | |||
| 3113 | |||
| 3089 | 3114 | ||
| 3090 | * Changes in Emacs 19.24 | 3115 | * Changes in Emacs 19.24 |
| 3091 | 3116 | ||
| @@ -3110,6 +3135,8 @@ s-region.el Set region by holding shift. | |||
| 3110 | skeleton.el Templates for statement insertion. | 3135 | skeleton.el Templates for statement insertion. |
| 3111 | soundex.el Classifying words by how they sound. | 3136 | soundex.el Classifying words by how they sound. |
| 3112 | tempo.el Template insertion with hotspots. | 3137 | tempo.el Template insertion with hotspots. |
| 3138 | |||
| 3139 | |||
| 3113 | 3140 | ||
| 3114 | * User Editing Changes in 19.23. | 3141 | * User Editing Changes in 19.23. |
| 3115 | 3142 | ||
| @@ -3407,6 +3434,7 @@ debugged. | |||
| 3407 | 3434 | ||
| 3408 | *** A new command, top-level-nonstop, does not even stop for unwind-protect, | 3435 | *** A new command, top-level-nonstop, does not even stop for unwind-protect, |
| 3409 | as top-level would. | 3436 | as top-level would. |
| 3437 | |||
| 3410 | 3438 | ||
| 3411 | * Changes in CC mode in Emacs 19.23. | 3439 | * Changes in CC mode in Emacs 19.23. |
| 3412 | 3440 | ||
| @@ -3577,6 +3605,7 @@ convention of VariableNamesWithoutUnderscoresButEachWordCapitalized. | |||
| 3577 | c-label-offset | 3605 | c-label-offset |
| 3578 | c-continued-statement-offset | 3606 | c-continued-statement-offset |
| 3579 | c-continued-brace-offset | 3607 | c-continued-brace-offset |
| 3608 | |||
| 3580 | 3609 | ||
| 3581 | * Lisp programming changes in Emacs 19.23. | 3610 | * Lisp programming changes in Emacs 19.23. |
| 3582 | 3611 | ||
| @@ -3977,6 +4006,8 @@ Now the file version.el contains only the first two version numbers. | |||
| 3977 | The third component is now determined on the basis of the names of the | 4006 | The third component is now determined on the basis of the names of the |
| 3978 | existing executable files. This means that version.el is not altered | 4007 | existing executable files. This means that version.el is not altered |
| 3979 | by building Emacs. | 4008 | by building Emacs. |
| 4009 | |||
| 4010 | |||
| 3980 | 4011 | ||
| 3981 | * Changes in 19.22. | 4012 | * Changes in 19.22. |
| 3982 | 4013 | ||
| @@ -4039,12 +4070,16 @@ greater than what it used to be. It is the position between the two | |||
| 4039 | characters whose properties differ, which is one greater than the | 4070 | characters whose properties differ, which is one greater than the |
| 4040 | position of the first character found (while scanning back) with | 4071 | position of the first character found (while scanning back) with |
| 4041 | different properties. | 4072 | different properties. |
| 4073 | |||
| 4074 | |||
| 4042 | 4075 | ||
| 4043 | * User editing changes in version 19.21. | 4076 | * User editing changes in version 19.21. |
| 4044 | 4077 | ||
| 4045 | ** ISO Accents mode supports four additional characters: | 4078 | ** ISO Accents mode supports four additional characters: |
| 4046 | A-with-ring (entered as /A), AE ligature (entered as /E), | 4079 | A-with-ring (entered as /A), AE ligature (entered as /E), |
| 4047 | and their lower-case equivalents. | 4080 | and their lower-case equivalents. |
| 4081 | |||
| 4082 | |||
| 4048 | 4083 | ||
| 4049 | * User editing changes in version 19.20. | 4084 | * User editing changes in version 19.20. |
| 4050 | (See following page for Lisp programming changes.) | 4085 | (See following page for Lisp programming changes.) |
| @@ -4265,6 +4300,7 @@ whether `pushd' behaves like `cd' if no argument is given | |||
| 4265 | (`shell-pushd-dextract'), and only add directories to the directory | 4300 | (`shell-pushd-dextract'), and only add directories to the directory |
| 4266 | stack if they are not already on it (`shell-pushd-dunique'). The | 4301 | stack if they are not already on it (`shell-pushd-dunique'). The |
| 4267 | configuration you choose should match the underlying shell, of course. | 4302 | configuration you choose should match the underlying shell, of course. |
| 4303 | |||
| 4268 | 4304 | ||
| 4269 | * Emacs Lisp programming changes in Emacs 19.20. | 4305 | * Emacs Lisp programming changes in Emacs 19.20. |
| 4270 | 4306 | ||
| @@ -4442,6 +4478,8 @@ delete-region in comint-previous-matching-input. | |||
| 4442 | 4478 | ||
| 4443 | The input history retrieval commands still wrap-around the input ring, unlike | 4479 | The input history retrieval commands still wrap-around the input ring, unlike |
| 4444 | Emacs command history. | 4480 | Emacs command history. |
| 4481 | |||
| 4482 | |||
| 4445 | 4483 | ||
| 4446 | * Changes in version 19.19. | 4484 | * Changes in version 19.19. |
| 4447 | 4485 | ||
| @@ -4474,6 +4512,8 @@ taken. | |||
| 4474 | 4512 | ||
| 4475 | ** `%' no longer allows floating point arguments, since the results were often | 4513 | ** `%' no longer allows floating point arguments, since the results were often |
| 4476 | inconsistent with integer `%'. | 4514 | inconsistent with integer `%'. |
| 4515 | |||
| 4516 | |||
| 4477 | 4517 | ||
| 4478 | * Changes in version 19.18. | 4518 | * Changes in version 19.18. |
| 4479 | 4519 | ||
| @@ -4614,6 +4654,8 @@ of the directory containing the Emacs executable that was run. | |||
| 4614 | 4654 | ||
| 4615 | ** The new function minibuffer-window-active-p takes one argument, a | 4655 | ** The new function minibuffer-window-active-p takes one argument, a |
| 4616 | minibuffer window, and returns t if the window is currently active. | 4656 | minibuffer window, and returns t if the window is currently active. |
| 4657 | |||
| 4658 | |||
| 4617 | 4659 | ||
| 4618 | * Changes in version 19.17. | 4660 | * Changes in version 19.17. |
| 4619 | 4661 | ||
| @@ -4801,6 +4843,7 @@ argument FRAME, which specifies which frames it should affect. | |||
| 4801 | + If FRAME is a frame, then `delete-windows-on' only deletes windows on | 4843 | + If FRAME is a frame, then `delete-windows-on' only deletes windows on |
| 4802 | the given frame; other frames are unaffected. | 4844 | the given frame; other frames are unaffected. |
| 4803 | 4845 | ||
| 4846 | |||
| 4804 | 4847 | ||
| 4805 | * Changes in version 19.16. | 4848 | * Changes in version 19.16. |
| 4806 | 4849 | ||
| @@ -4927,6 +4970,7 @@ in a singleton list when it first inserts the prefix, but doesn't | |||
| 4927 | insert the prefix when processing events whose PLACE-SYMBOLs are | 4970 | insert the prefix when processing events whose PLACE-SYMBOLs are |
| 4928 | already thus enclosed. | 4971 | already thus enclosed. |
| 4929 | 4972 | ||
| 4973 | |||
| 4930 | 4974 | ||
| 4931 | * Changes in version 19.15. | 4975 | * Changes in version 19.15. |
| 4932 | 4976 | ||
| @@ -4973,6 +5017,8 @@ it works the same in Emacs 18 and Emacs 19. | |||
| 4973 | 5017 | ||
| 4974 | (This change actually took place earlier, but we didn't know about it | 5018 | (This change actually took place earlier, but we didn't know about it |
| 4975 | and thus didn't document it.) | 5019 | and thus didn't document it.) |
| 5020 | |||
| 5021 | |||
| 4976 | 5022 | ||
| 4977 | * Changes in version 19.14. | 5023 | * Changes in version 19.14. |
| 4978 | 5024 | ||
| @@ -5017,6 +5063,8 @@ and END that specify which part of the file to insert. BEG defaults to | |||
| 5017 | 0 (the beginning of the file), and END defaults to the end of the file. | 5063 | 0 (the beginning of the file), and END defaults to the end of the file. |
| 5018 | 5064 | ||
| 5019 | If you specify BEG or END, then the argument VISIT must be nil. | 5065 | If you specify BEG or END, then the argument VISIT must be nil. |
| 5066 | |||
| 5067 | |||
| 5020 | 5068 | ||
| 5021 | * Changes in version 19.13. | 5069 | * Changes in version 19.13. |
| 5022 | 5070 | ||
| @@ -5035,11 +5083,15 @@ the search a case-sensitive one. | |||
| 5035 | C-c LETTER, since those keys are reserved for users. | 5083 | C-c LETTER, since those keys are reserved for users. |
| 5036 | Those commands have been moved to C-c M-LETTER. | 5084 | Those commands have been moved to C-c M-LETTER. |
| 5037 | We may move them again for greater consistency with other modes. | 5085 | We may move them again for greater consistency with other modes. |
| 5086 | |||
| 5087 | |||
| 5038 | 5088 | ||
| 5039 | * Changes in version 19.12. | 5089 | * Changes in version 19.12. |
| 5040 | 5090 | ||
| 5041 | ** You can now make many of the sort commands ignore case by setting | 5091 | ** You can now make many of the sort commands ignore case by setting |
| 5042 | `sort-fold-case' to a non-nil value. | 5092 | `sort-fold-case' to a non-nil value. |
| 5093 | |||
| 5094 | |||
| 5043 | 5095 | ||
| 5044 | * Changes in version 19.11. | 5096 | * Changes in version 19.11. |
| 5045 | 5097 | ||
| @@ -5057,6 +5109,8 @@ that you write. This is what `basic-save-buffer' does when | |||
| 5057 | it writes a file in the usual way. | 5109 | it writes a file in the usual way. |
| 5058 | 5110 | ||
| 5059 | (This is not actually new, but wasn't documented before.) | 5111 | (This is not actually new, but wasn't documented before.) |
| 5112 | |||
| 5113 | |||
| 5060 | 5114 | ||
| 5061 | * Changes in version 19.10. | 5115 | * Changes in version 19.10. |
| 5062 | 5116 | ||
| @@ -5069,6 +5123,8 @@ The reason for this change is to make function keys work after C-x. | |||
| 5069 | the region is highlighted in windows other than the selected window | 5123 | the region is highlighted in windows other than the selected window |
| 5070 | (in Transient Mark mode only, of course, and currently only when | 5124 | (in Transient Mark mode only, of course, and currently only when |
| 5071 | using X). | 5125 | using X). |
| 5126 | |||
| 5127 | |||
| 5072 | 5128 | ||
| 5073 | * Changes in version 19.8. | 5129 | * Changes in version 19.8. |
| 5074 | 5130 | ||
| @@ -6458,14 +6514,13 @@ distribution, using the contents of the source tree. Object files, | |||
| 6458 | old file versions, executables, DOC files, and other | 6514 | old file versions, executables, DOC files, and other |
| 6459 | architecture-specific or easy-to-recreate files are not included in | 6515 | architecture-specific or easy-to-recreate files are not included in |
| 6460 | the tar file. | 6516 | the tar file. |
| 6461 | |||
| 6462 | * For older news, see the file ONEWS.4. For Lisp changes in (the first | ||
| 6463 | * release of) Emacs 19, see the file LNEWS. | ||
| 6464 | 6517 | ||
| 6518 | |||
| 6519 | |||
| 6465 | ---------------------------------------------------------------------- | 6520 | ---------------------------------------------------------------------- |
| 6466 | Copyright information: | 6521 | Copyright information: |
| 6467 | 6522 | ||
| 6468 | Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc. | 6523 | Copyright (C) 1993, 1994, 1995, 2001, 2006 Free Software Foundation, Inc. |
| 6469 | 6524 | ||
| 6470 | Permission is granted to anyone to make or distribute verbatim copies | 6525 | Permission is granted to anyone to make or distribute verbatim copies |
| 6471 | of this document as received, in any medium, provided that the | 6526 | of this document as received, in any medium, provided that the |
diff --git a/etc/NEWS.20 b/etc/NEWS.20 new file mode 100644 index 00000000000..44d5600ecb4 --- /dev/null +++ b/etc/NEWS.20 | |||
| @@ -0,0 +1,4513 @@ | |||
| 1 | GNU Emacs NEWS -- history of user-visible changes. 2006-05-31 | ||
| 2 | Copyright (C) 1999, 2000, 2001, 2006 | ||
| 3 | Free Software Foundation, Inc. | ||
| 4 | See the end for copying conditions. | ||
| 5 | |||
| 6 | Please send Emacs bug reports to bug-gnu-emacs@gnu.org. | ||
| 7 | If possible, use M-x report-emacs-bug. | ||
| 8 | |||
| 9 | This file is about changes in emacs version 20. | ||
| 10 | |||
| 11 | |||
| 12 | |||
| 13 | * Emacs 20.7 is a bug-fix release with few user-visible changes | ||
| 14 | |||
| 15 | ** It is now possible to use CCL-based coding systems for keyboard | ||
| 16 | input. | ||
| 17 | |||
| 18 | ** ange-ftp now handles FTP security extensions, like Kerberos. | ||
| 19 | |||
| 20 | ** Rmail has been extended to recognize more forms of digest messages. | ||
| 21 | |||
| 22 | ** Now, most coding systems set in keyboard coding system work not | ||
| 23 | only for character input, but also in incremental search. The | ||
| 24 | exceptions are such coding systems that handle 2-byte character sets | ||
| 25 | (e.g euc-kr, euc-jp) and that use ISO's escape sequence | ||
| 26 | (e.g. iso-2022-jp). They are ignored in incremental search. | ||
| 27 | |||
| 28 | ** Support for Macintosh PowerPC-based machines running GNU/Linux has | ||
| 29 | been added. | ||
| 30 | |||
| 31 | |||
| 32 | |||
| 33 | * Emacs 20.6 is a bug-fix release with one user-visible change | ||
| 34 | |||
| 35 | ** Support for ARM-based non-RISCiX machines has been added. | ||
| 36 | |||
| 37 | |||
| 38 | |||
| 39 | * Emacs 20.5 is a bug-fix release with no user-visible changes. | ||
| 40 | |||
| 41 | ** Not new, but not mentioned before: | ||
| 42 | M-w when Transient Mark mode is enabled disables the mark. | ||
| 43 | |||
| 44 | |||
| 45 | |||
| 46 | * Changes in Emacs 20.4 | ||
| 47 | |||
| 48 | ** Init file may be called .emacs.el. | ||
| 49 | |||
| 50 | You can now call the Emacs init file `.emacs.el'. | ||
| 51 | Formerly the name had to be `.emacs'. If you use the name | ||
| 52 | `.emacs.el', you can byte-compile the file in the usual way. | ||
| 53 | |||
| 54 | If both `.emacs' and `.emacs.el' exist, the latter file | ||
| 55 | is the one that is used. | ||
| 56 | |||
| 57 | ** shell-command, and shell-command-on-region, now return | ||
| 58 | the exit code of the command (unless it is asynchronous). | ||
| 59 | Also, you can specify a place to put the error output, | ||
| 60 | separate from the command's regular output. | ||
| 61 | Interactively, the variable shell-command-default-error-buffer | ||
| 62 | says where to put error output; set it to a buffer name. | ||
| 63 | In calls from Lisp, an optional argument ERROR-BUFFER specifies | ||
| 64 | the buffer name. | ||
| 65 | |||
| 66 | When you specify a non-nil error buffer (or buffer name), any error | ||
| 67 | output is inserted before point in that buffer, with \f\n to separate | ||
| 68 | it from the previous batch of error output. The error buffer is not | ||
| 69 | cleared, so error output from successive commands accumulates there. | ||
| 70 | |||
| 71 | ** Setting the default value of enable-multibyte-characters to nil in | ||
| 72 | the .emacs file, either explicitly using setq-default, or via Custom, | ||
| 73 | is now essentially equivalent to using --unibyte: all buffers | ||
| 74 | created during startup will be made unibyte after loading .emacs. | ||
| 75 | |||
| 76 | ** C-x C-f now handles the wildcards * and ? in file names. For | ||
| 77 | example, typing C-x C-f c*.c RET visits all the files whose names | ||
| 78 | match c*.c. To visit a file whose name contains * or ?, add the | ||
| 79 | quoting sequence /: to the beginning of the file name. | ||
| 80 | |||
| 81 | ** The M-x commands keep-lines, flush-lines and count-matches | ||
| 82 | now have the same feature as occur and query-replace: | ||
| 83 | if the pattern contains any upper case letters, then | ||
| 84 | they never ignore case. | ||
| 85 | |||
| 86 | ** The end-of-line format conversion feature previously mentioned | ||
| 87 | under `* Emacs 20.1 changes for MS-DOS and MS-Windows' actually | ||
| 88 | applies to all operating systems. Emacs recognizes from the contents | ||
| 89 | of a file what convention it uses to separate lines--newline, CRLF, or | ||
| 90 | just CR--and automatically converts the contents to the normal Emacs | ||
| 91 | convention (using newline to separate lines) for editing. This is a | ||
| 92 | part of the general feature of coding system conversion. | ||
| 93 | |||
| 94 | If you subsequently save the buffer, Emacs converts the text back to | ||
| 95 | the same format that was used in the file before. | ||
| 96 | |||
| 97 | You can turn off end-of-line conversion by setting the variable | ||
| 98 | `inhibit-eol-conversion' to non-nil, e.g. with Custom in the MULE group. | ||
| 99 | |||
| 100 | ** The character set property `prefered-coding-system' has been | ||
| 101 | renamed to `preferred-coding-system', for the sake of correct spelling. | ||
| 102 | This is a fairly internal feature, so few programs should be affected. | ||
| 103 | |||
| 104 | ** Mode-line display of end-of-line format is changed. | ||
| 105 | The indication of the end-of-line format of the file visited by a | ||
| 106 | buffer is now more explicit when that format is not the usual one for | ||
| 107 | your operating system. For example, the DOS-style end-of-line format | ||
| 108 | is displayed as "(DOS)" on Unix and GNU/Linux systems. The usual | ||
| 109 | end-of-line format is still displayed as a single character (colon for | ||
| 110 | Unix, backslash for DOS and Windows, and forward slash for the Mac). | ||
| 111 | |||
| 112 | The values of the variables eol-mnemonic-unix, eol-mnemonic-dos, | ||
| 113 | eol-mnemonic-mac, and eol-mnemonic-undecided, which are strings, | ||
| 114 | control what is displayed in the mode line for each end-of-line | ||
| 115 | format. You can now customize these variables. | ||
| 116 | |||
| 117 | ** In the previous version of Emacs, tar-mode didn't work well if a | ||
| 118 | filename contained non-ASCII characters. Now this is fixed. Such a | ||
| 119 | filename is decoded by file-name-coding-system if the default value of | ||
| 120 | enable-multibyte-characters is non-nil. | ||
| 121 | |||
| 122 | ** The command temp-buffer-resize-mode toggles a minor mode | ||
| 123 | in which temporary buffers (such as help buffers) are given | ||
| 124 | windows just big enough to hold the whole contents. | ||
| 125 | |||
| 126 | ** If you use completion.el, you must now run the function | ||
| 127 | dynamic-completion-mode to enable it. Just loading the file | ||
| 128 | doesn't have any effect. | ||
| 129 | |||
| 130 | ** In Flyspell mode, the default is now to make just one Ispell process, | ||
| 131 | not one per buffer. | ||
| 132 | |||
| 133 | ** If you use iswitchb but do not call (iswitchb-default-keybindings) to | ||
| 134 | use the default keybindings, you will need to add the following line: | ||
| 135 | (add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup) | ||
| 136 | |||
| 137 | ** Auto-show mode is no longer enabled just by loading auto-show.el. | ||
| 138 | To control it, set `auto-show-mode' via Custom or use the | ||
| 139 | `auto-show-mode' command. | ||
| 140 | |||
| 141 | ** Handling of X fonts' ascent/descent parameters has been changed to | ||
| 142 | avoid redisplay problems. As a consequence, compared with previous | ||
| 143 | versions the line spacing and frame size now differ with some font | ||
| 144 | choices, typically increasing by a pixel per line. This change | ||
| 145 | occurred in version 20.3 but was not documented then. | ||
| 146 | |||
| 147 | ** If you select the bar cursor style, it uses the frame's | ||
| 148 | cursor-color, rather than the cursor foreground pixel. | ||
| 149 | |||
| 150 | ** In multibyte mode, Rmail decodes incoming MIME messages using the | ||
| 151 | character set specified in the message. If you want to disable this | ||
| 152 | feature, set the variable rmail-decode-mime-charset to nil. | ||
| 153 | |||
| 154 | ** Not new, but not mentioned previously in NEWS: when you use #! at | ||
| 155 | the beginning of a file to make it executable and specify an | ||
| 156 | interpreter program, Emacs looks on the second line for the -*- mode | ||
| 157 | and variable specification, as well as on the first line. | ||
| 158 | |||
| 159 | ** Support for IBM codepage encoding of non-ASCII characters. | ||
| 160 | |||
| 161 | The new command M-x codepage-setup creates a special coding system | ||
| 162 | that can be used to convert text between a specific IBM codepage and | ||
| 163 | one of the character sets built into Emacs which matches that | ||
| 164 | codepage. For example, codepage 850 corresponds to Latin-1 character | ||
| 165 | set, codepage 855 corresponds to Cyrillic-ISO character set, etc. | ||
| 166 | |||
| 167 | Windows codepages 1250, 1251 and some others, where Windows deviates | ||
| 168 | from the corresponding ISO character set, are also supported. | ||
| 169 | |||
| 170 | IBM box-drawing characters and other glyphs which don't have | ||
| 171 | equivalents in the corresponding ISO character set, are converted to | ||
| 172 | a character defined by dos-unsupported-char-glyph on MS-DOS, and to | ||
| 173 | `?' on other systems. | ||
| 174 | |||
| 175 | IBM codepages are widely used on MS-DOS and MS-Windows, so this | ||
| 176 | feature is most useful on those platforms, but it can also be used on | ||
| 177 | Unix. | ||
| 178 | |||
| 179 | Emacs compiled for MS-DOS automatically loads the support for the | ||
| 180 | current codepage when it starts. | ||
| 181 | |||
| 182 | ** Mail changes | ||
| 183 | |||
| 184 | *** When mail is sent using compose-mail (C-x m), and if | ||
| 185 | `mail-send-nonascii' is set to the new default value `mime', | ||
| 186 | appropriate MIME headers are added. The headers are added only if | ||
| 187 | non-ASCII characters are present in the body of the mail, and no other | ||
| 188 | MIME headers are already present. For example, the following three | ||
| 189 | headers are added if the coding system used in the *mail* buffer is | ||
| 190 | latin-1: | ||
| 191 | |||
| 192 | MIME-version: 1.0 | ||
| 193 | Content-type: text/plain; charset=iso-8859-1 | ||
| 194 | Content-Transfer-Encoding: 8bit | ||
| 195 | |||
| 196 | *** The new variable default-sendmail-coding-system specifies the | ||
| 197 | default way to encode outgoing mail. This has higher priority than | ||
| 198 | default-buffer-file-coding-system but has lower priority than | ||
| 199 | sendmail-coding-system and the local value of | ||
| 200 | buffer-file-coding-system. | ||
| 201 | |||
| 202 | You should not set this variable manually. Instead, set | ||
| 203 | sendmail-coding-system to specify a fixed encoding for all outgoing | ||
| 204 | mail. | ||
| 205 | |||
| 206 | *** When you try to send a message that contains non-ASCII characters, | ||
| 207 | if the coding system specified by those variables doesn't handle them, | ||
| 208 | Emacs will ask you to select a suitable coding system while showing a | ||
| 209 | list of possible coding systems. | ||
| 210 | |||
| 211 | ** CC Mode changes | ||
| 212 | |||
| 213 | *** c-default-style can now take an association list that maps major | ||
| 214 | modes to style names. When this variable is an alist, Java mode no | ||
| 215 | longer hardcodes a setting to "java" style. See the variable's | ||
| 216 | docstring for details. | ||
| 217 | |||
| 218 | *** It's now possible to put a list as the offset on a syntactic | ||
| 219 | symbol. The list is evaluated recursively until a non-nil offset is | ||
| 220 | found. This is useful to combine several lineup functions to act in a | ||
| 221 | prioritized order on a single line. However, none of the supplied | ||
| 222 | lineup functions use this feature currently. | ||
| 223 | |||
| 224 | *** New syntactic symbol catch-clause, which is used on the "catch" and | ||
| 225 | "finally" lines in try-catch constructs in C++ and Java. | ||
| 226 | |||
| 227 | *** New cleanup brace-catch-brace on c-cleanup-list, which does for | ||
| 228 | "catch" lines what brace-elseif-brace does for "else if" lines. | ||
| 229 | |||
| 230 | *** The braces of Java anonymous inner classes are treated separately | ||
| 231 | from the braces of other classes in auto-newline mode. Two new | ||
| 232 | symbols inexpr-class-open and inexpr-class-close may be used on | ||
| 233 | c-hanging-braces-alist to control the automatic newlines used for | ||
| 234 | anonymous classes. | ||
| 235 | |||
| 236 | *** Support for the Pike language added, along with new Pike specific | ||
| 237 | syntactic symbols: inlambda, lambda-intro-cont | ||
| 238 | |||
| 239 | *** Support for Java anonymous classes via new syntactic symbol | ||
| 240 | inexpr-class. New syntactic symbol inexpr-statement for Pike | ||
| 241 | support and gcc-style statements inside expressions. New lineup | ||
| 242 | function c-lineup-inexpr-block. | ||
| 243 | |||
| 244 | *** New syntactic symbol brace-entry-open which is used in brace lists | ||
| 245 | (i.e. static initializers) when a list entry starts with an open | ||
| 246 | brace. These used to be recognized as brace-list-entry's. | ||
| 247 | c-electric-brace also recognizes brace-entry-open braces | ||
| 248 | (brace-list-entry's can no longer be electrified). | ||
| 249 | |||
| 250 | *** New command c-indent-line-or-region, not bound by default. | ||
| 251 | |||
| 252 | *** `#' is only electric when typed in the indentation of a line. | ||
| 253 | |||
| 254 | *** Parentheses are now electric (via the new command c-electric-paren) | ||
| 255 | for auto-reindenting lines when parens are typed. | ||
| 256 | |||
| 257 | *** In "gnu" style, inline-open offset is now set to zero. | ||
| 258 | |||
| 259 | *** Uniform handling of the inclass syntactic symbol. The indentation | ||
| 260 | associated with it is now always relative to the class opening brace. | ||
| 261 | This means that the indentation behavior has changed in some | ||
| 262 | circumstances, but only if you've put anything besides 0 on the | ||
| 263 | class-open syntactic symbol (none of the default styles do that). | ||
| 264 | |||
| 265 | ** Gnus changes. | ||
| 266 | |||
| 267 | *** New functionality for using Gnus as an offline newsreader has been | ||
| 268 | added. A plethora of new commands and modes have been added. See the | ||
| 269 | Gnus manual for the full story. | ||
| 270 | |||
| 271 | *** The nndraft backend has returned, but works differently than | ||
| 272 | before. All Message buffers are now also articles in the nndraft | ||
| 273 | group, which is created automatically. | ||
| 274 | |||
| 275 | *** `gnus-alter-header-function' can now be used to alter header | ||
| 276 | values. | ||
| 277 | |||
| 278 | *** `gnus-summary-goto-article' now accept Message-ID's. | ||
| 279 | |||
| 280 | *** A new Message command for deleting text in the body of a message | ||
| 281 | outside the region: `C-c C-v'. | ||
| 282 | |||
| 283 | *** You can now post to component group in nnvirtual groups with | ||
| 284 | `C-u C-c C-c'. | ||
| 285 | |||
| 286 | *** `nntp-rlogin-program' -- new variable to ease customization. | ||
| 287 | |||
| 288 | *** `C-u C-c C-c' in `gnus-article-edit-mode' will now inhibit | ||
| 289 | re-highlighting of the article buffer. | ||
| 290 | |||
| 291 | *** New element in `gnus-boring-article-headers' -- `long-to'. | ||
| 292 | |||
| 293 | *** `M-i' symbolic prefix command. See the section "Symbolic | ||
| 294 | Prefixes" in the Gnus manual for details. | ||
| 295 | |||
| 296 | *** `L' and `I' in the summary buffer now take the symbolic prefix | ||
| 297 | `a' to add the score rule to the "all.SCORE" file. | ||
| 298 | |||
| 299 | *** `gnus-simplify-subject-functions' variable to allow greater | ||
| 300 | control over simplification. | ||
| 301 | |||
| 302 | *** `A T' -- new command for fetching the current thread. | ||
| 303 | |||
| 304 | *** `/ T' -- new command for including the current thread in the | ||
| 305 | limit. | ||
| 306 | |||
| 307 | *** `M-RET' is a new Message command for breaking cited text. | ||
| 308 | |||
| 309 | *** \\1-expressions are now valid in `nnmail-split-methods'. | ||
| 310 | |||
| 311 | *** The `custom-face-lookup' function has been removed. | ||
| 312 | If you used this function in your initialization files, you must | ||
| 313 | rewrite them to use `face-spec-set' instead. | ||
| 314 | |||
| 315 | *** Canceling now uses the current select method. Symbolic prefix | ||
| 316 | `a' forces normal posting method. | ||
| 317 | |||
| 318 | *** New command to translate M******** sm*rtq**t*s into proper text | ||
| 319 | -- `W d'. | ||
| 320 | |||
| 321 | *** For easier debugging of nntp, you can set `nntp-record-commands' | ||
| 322 | to a non-nil value. | ||
| 323 | |||
| 324 | *** nntp now uses ~/.authinfo, a .netrc-like file, for controlling | ||
| 325 | where and how to send AUTHINFO to NNTP servers. | ||
| 326 | |||
| 327 | *** A command for editing group parameters from the summary buffer | ||
| 328 | has been added. | ||
| 329 | |||
| 330 | *** A history of where mails have been split is available. | ||
| 331 | |||
| 332 | *** A new article date command has been added -- `article-date-iso8601'. | ||
| 333 | |||
| 334 | *** Subjects can be simplified when threading by setting | ||
| 335 | `gnus-score-thread-simplify'. | ||
| 336 | |||
| 337 | *** A new function for citing in Message has been added -- | ||
| 338 | `message-cite-original-without-signature'. | ||
| 339 | |||
| 340 | *** `article-strip-all-blank-lines' -- new article command. | ||
| 341 | |||
| 342 | *** A new Message command to kill to the end of the article has | ||
| 343 | been added. | ||
| 344 | |||
| 345 | *** A minimum adaptive score can be specified by using the | ||
| 346 | `gnus-adaptive-word-minimum' variable. | ||
| 347 | |||
| 348 | *** The "lapsed date" article header can be kept continually | ||
| 349 | updated by the `gnus-start-date-timer' command. | ||
| 350 | |||
| 351 | *** Web listserv archives can be read with the nnlistserv backend. | ||
| 352 | |||
| 353 | *** Old dejanews archives can now be read by nnweb. | ||
| 354 | |||
| 355 | *** `gnus-posting-styles' has been re-activated. | ||
| 356 | |||
| 357 | ** Changes to TeX and LaTeX mode | ||
| 358 | |||
| 359 | *** The new variable `tex-start-options-string' can be used to give | ||
| 360 | options for the TeX run. The default value causes TeX to run in | ||
| 361 | nonstopmode. For an interactive TeX run set it to nil or "". | ||
| 362 | |||
| 363 | *** The command `tex-feed-input' sends input to the Tex Shell. In a | ||
| 364 | TeX buffer it is bound to the keys C-RET, C-c RET, and C-c C-m (some | ||
| 365 | of these keys may not work on all systems). For instance, if you run | ||
| 366 | TeX interactively and if the TeX run stops because of an error, you | ||
| 367 | can continue it without leaving the TeX buffer by typing C-RET. | ||
| 368 | |||
| 369 | *** The Tex Shell Buffer is now in `compilation-shell-minor-mode'. | ||
| 370 | All error-parsing commands of the Compilation major mode are available | ||
| 371 | but bound to keys that don't collide with the shell. Thus you can use | ||
| 372 | the Tex Shell for command line executions like a usual shell. | ||
| 373 | |||
| 374 | *** The commands `tex-validate-region' and `tex-validate-buffer' check | ||
| 375 | the matching of braces and $'s. The errors are listed in a *Occur* | ||
| 376 | buffer and you can use C-c C-c or mouse-2 to go to a particular | ||
| 377 | mismatch. | ||
| 378 | |||
| 379 | ** Changes to RefTeX mode | ||
| 380 | |||
| 381 | *** The table of contents buffer can now also display labels and | ||
| 382 | file boundaries in addition to sections. Use `l', `i', and `c' keys. | ||
| 383 | |||
| 384 | *** Labels derived from context (the section heading) are now | ||
| 385 | lowercase by default. To make the label legal in LaTeX, latin-1 | ||
| 386 | characters will lose their accent. All Mule characters will be | ||
| 387 | removed from the label. | ||
| 388 | |||
| 389 | *** The automatic display of cross reference information can also use | ||
| 390 | a window instead of the echo area. See variable `reftex-auto-view-crossref'. | ||
| 391 | |||
| 392 | *** kpsewhich can be used by RefTeX to find TeX and BibTeX files. See the | ||
| 393 | customization group `reftex-finding-files'. | ||
| 394 | |||
| 395 | *** The option `reftex-bibfile-ignore-list' has been renamed to | ||
| 396 | `reftex-bibfile-ignore-regexps' and indeed can be fed with regular | ||
| 397 | expressions. | ||
| 398 | |||
| 399 | *** Multiple Selection buffers are now hidden buffers. | ||
| 400 | |||
| 401 | ** New/deleted modes and packages | ||
| 402 | |||
| 403 | *** The package snmp-mode.el provides major modes for editing SNMP and | ||
| 404 | SNMPv2 MIBs. It has entries on `auto-mode-alist'. | ||
| 405 | |||
| 406 | *** The package sql.el provides a major mode, M-x sql-mode, for | ||
| 407 | editing SQL files, and M-x sql-interactive-mode for interacting with | ||
| 408 | SQL interpreters. It has an entry on `auto-mode-alist'. | ||
| 409 | |||
| 410 | *** ispell4.el has been deleted. It got in the way of ispell.el and | ||
| 411 | this was hard to fix reliably. It has long been obsolete -- use | ||
| 412 | Ispell 3.1 and ispell.el. | ||
| 413 | |||
| 414 | |||
| 415 | * MS-DOS changes in Emacs 20.4 | ||
| 416 | |||
| 417 | ** Emacs compiled for MS-DOS now supports MULE features better. | ||
| 418 | This includes support for display of all ISO 8859-N character sets, | ||
| 419 | conversion to and from IBM codepage encoding of non-ASCII characters, | ||
| 420 | and automatic setup of the MULE environment at startup. For details, | ||
| 421 | check out the section `MS-DOS and MULE' in the manual. | ||
| 422 | |||
| 423 | The MS-DOS installation procedure automatically configures and builds | ||
| 424 | Emacs with input method support if it finds an unpacked Leim | ||
| 425 | distribution when the config.bat script is run. | ||
| 426 | |||
| 427 | ** Formerly, the value of lpr-command did not affect printing on | ||
| 428 | MS-DOS unless print-region-function was set to nil, but now it | ||
| 429 | controls whether an external program is invoked or output is written | ||
| 430 | directly to a printer port. Similarly, in the previous version of | ||
| 431 | Emacs, the value of ps-lpr-command did not affect PostScript printing | ||
| 432 | on MS-DOS unless ps-printer-name was set to something other than a | ||
| 433 | string (eg. t or `pipe'), but now it controls whether an external | ||
| 434 | program is used. (These changes were made so that configuration of | ||
| 435 | printing variables would be almost identical across all platforms.) | ||
| 436 | |||
| 437 | ** In the previous version of Emacs, PostScript and non-PostScript | ||
| 438 | output was piped to external programs, but because most print programs | ||
| 439 | available for MS-DOS and MS-Windows cannot read data from their standard | ||
| 440 | input, on those systems the data to be output is now written to a | ||
| 441 | temporary file whose name is passed as the last argument to the external | ||
| 442 | program. | ||
| 443 | |||
| 444 | An exception is made for `print', a standard program on Windows NT, | ||
| 445 | and `nprint', a standard program on Novell Netware. For both of these | ||
| 446 | programs, the command line is constructed in the appropriate syntax | ||
| 447 | automatically, using only the value of printer-name or ps-printer-name | ||
| 448 | as appropriate--the value of the relevant `-switches' variable is | ||
| 449 | ignored, as both programs have no useful switches. | ||
| 450 | |||
| 451 | ** The value of the variable dos-printer (cf. dos-ps-printer), if it has | ||
| 452 | a value, overrides the value of printer-name (cf. ps-printer-name), on | ||
| 453 | MS-DOS and MS-Windows only. This has been true since version 20.3, but | ||
| 454 | was not documented clearly before. | ||
| 455 | |||
| 456 | ** All the Emacs games now work on MS-DOS terminals. | ||
| 457 | This includes Tetris and Snake. | ||
| 458 | |||
| 459 | |||
| 460 | * Lisp changes in Emacs 20.4 | ||
| 461 | |||
| 462 | ** New functions line-beginning-position and line-end-position | ||
| 463 | return the position of the beginning or end of the current line. | ||
| 464 | They both accept an optional argument, which has the same | ||
| 465 | meaning as the argument to beginning-of-line or end-of-line. | ||
| 466 | |||
| 467 | ** find-file and allied functions now have an optional argument | ||
| 468 | WILDCARD. If this is non-nil, they do wildcard processing, | ||
| 469 | and visit all files that match the wildcard pattern. | ||
| 470 | |||
| 471 | ** Changes in the file-attributes function. | ||
| 472 | |||
| 473 | *** The file size returned by file-attributes may be an integer or a float. | ||
| 474 | It is an integer if the size fits in a Lisp integer, float otherwise. | ||
| 475 | |||
| 476 | *** The inode number returned by file-attributes may be an integer (if | ||
| 477 | the number fits in a Lisp integer) or a cons cell containing two | ||
| 478 | integers. | ||
| 479 | |||
| 480 | ** The new function directory-files-and-attributes returns a list of | ||
| 481 | files in a directory and their attributes. It accepts the same | ||
| 482 | arguments as directory-files and has similar semantics, except that | ||
| 483 | file names and attributes are returned. | ||
| 484 | |||
| 485 | ** The new function file-attributes-lessp is a helper function for | ||
| 486 | sorting the list generated by directory-files-and-attributes. It | ||
| 487 | accepts two arguments, each a list of a file name and its attributes. | ||
| 488 | It compares the file names of each according to string-lessp and | ||
| 489 | returns the result. | ||
| 490 | |||
| 491 | ** The new function file-expand-wildcards expands a wildcard-pattern | ||
| 492 | to produce a list of existing files that match the pattern. | ||
| 493 | |||
| 494 | ** New functions for base64 conversion: | ||
| 495 | |||
| 496 | The function base64-encode-region converts a part of the buffer | ||
| 497 | into the base64 code used in MIME. base64-decode-region | ||
| 498 | performs the opposite conversion. Line-breaking is supported | ||
| 499 | optionally. | ||
| 500 | |||
| 501 | Functions base64-encode-string and base64-decode-string do a similar | ||
| 502 | job on the text in a string. They return the value as a new string. | ||
| 503 | |||
| 504 | ** | ||
| 505 | The new function process-running-child-p | ||
| 506 | will tell you if a subprocess has given control of its | ||
| 507 | terminal to its own child process. | ||
| 508 | |||
| 509 | ** interrupt-process and such functions have a new feature: | ||
| 510 | when the second argument is `lambda', they send a signal | ||
| 511 | to the running child of the subshell, if any, but if the shell | ||
| 512 | itself owns its terminal, no signal is sent. | ||
| 513 | |||
| 514 | ** There are new widget types `plist' and `alist' which can | ||
| 515 | be used for customizing variables whose values are plists or alists. | ||
| 516 | |||
| 517 | ** easymenu.el now understands `:key-sequence' and `:style button'. | ||
| 518 | :included is an alias for :visible. | ||
| 519 | |||
| 520 | easy-menu-add-item now understands the values returned by | ||
| 521 | easy-menu-remove-item and easy-menu-item-present-p. This can be used | ||
| 522 | to move or copy menu entries. | ||
| 523 | |||
| 524 | ** Multibyte editing changes | ||
| 525 | |||
| 526 | *** The definitions of sref and char-bytes are changed. Now, sref is | ||
| 527 | an alias of aref and char-bytes always returns 1. This change is to | ||
| 528 | make some Emacs Lisp code which works on 20.2 and earlier also | ||
| 529 | work on the latest Emacs. Such code uses a combination of sref and | ||
| 530 | char-bytes in a loop typically as below: | ||
| 531 | (setq char (sref str idx) | ||
| 532 | idx (+ idx (char-bytes idx))) | ||
| 533 | The byte-compiler now warns that this is obsolete. | ||
| 534 | |||
| 535 | If you want to know how many bytes a specific multibyte character | ||
| 536 | (say, CH) occupies in a multibyte buffer, use this code: | ||
| 537 | (charset-bytes (char-charset ch)) | ||
| 538 | |||
| 539 | *** In multibyte mode, when you narrow a buffer to some region, and the | ||
| 540 | region is preceded or followed by non-ASCII codes, inserting or | ||
| 541 | deleting at the head or the end of the region may signal this error: | ||
| 542 | |||
| 543 | Byte combining across boundary of accessible buffer text inhibited | ||
| 544 | |||
| 545 | This is to avoid some bytes being combined together into a character | ||
| 546 | across the boundary. | ||
| 547 | |||
| 548 | *** The functions find-charset-region and find-charset-string include | ||
| 549 | `unknown' in the returned list in the following cases: | ||
| 550 | o The current buffer or the target string is unibyte and | ||
| 551 | contains 8-bit characters. | ||
| 552 | o The current buffer or the target string is multibyte and | ||
| 553 | contains invalid characters. | ||
| 554 | |||
| 555 | *** The functions decode-coding-region and encode-coding-region remove | ||
| 556 | text properties of the target region. Ideally, they should correctly | ||
| 557 | preserve text properties, but for the moment, it's hard. Removing | ||
| 558 | text properties is better than preserving them in a less-than-correct | ||
| 559 | way. | ||
| 560 | |||
| 561 | *** prefer-coding-system sets EOL conversion of default coding systems. | ||
| 562 | If the argument to prefer-coding-system specifies a certain type of | ||
| 563 | end of line conversion, the default coding systems set by | ||
| 564 | prefer-coding-system will specify that conversion type for end of line. | ||
| 565 | |||
| 566 | *** The new function thai-compose-string can be used to properly | ||
| 567 | compose Thai characters in a string. | ||
| 568 | |||
| 569 | ** The primitive `define-prefix-command' now takes an optional third | ||
| 570 | argument NAME, which should be a string. It supplies the menu name | ||
| 571 | for the created keymap. Keymaps created in order to be displayed as | ||
| 572 | menus should always use the third argument. | ||
| 573 | |||
| 574 | ** The meanings of optional second arguments for read-char, | ||
| 575 | read-event, and read-char-exclusive are flipped. Now the second | ||
| 576 | arguments are INHERIT-INPUT-METHOD. These functions use the current | ||
| 577 | input method (if any) if and only if INHERIT-INPUT-METHOD is non-nil. | ||
| 578 | |||
| 579 | ** The new function clear-this-command-keys empties out the contents | ||
| 580 | of the vector that (this-command-keys) returns. This is useful in | ||
| 581 | programs that read passwords, to prevent the passwords from echoing | ||
| 582 | inadvertently as part of the next command in certain cases. | ||
| 583 | |||
| 584 | ** The new macro `with-temp-message' displays a temporary message in | ||
| 585 | the echo area, while executing some Lisp code. Like `progn', it | ||
| 586 | returns the value of the last form, but it also restores the previous | ||
| 587 | echo area contents. | ||
| 588 | |||
| 589 | (with-temp-message MESSAGE &rest BODY) | ||
| 590 | |||
| 591 | ** The function `require' now takes an optional third argument | ||
| 592 | NOERROR. If it is non-nil, then there is no error if the | ||
| 593 | requested feature cannot be loaded. | ||
| 594 | |||
| 595 | ** In the function modify-face, an argument of (nil) for the | ||
| 596 | foreground color, background color or stipple pattern | ||
| 597 | means to clear out that attribute. | ||
| 598 | |||
| 599 | ** The `outer-window-id' frame property of an X frame | ||
| 600 | gives the window number of the outermost X window for the frame. | ||
| 601 | |||
| 602 | ** Temporary buffers made with with-output-to-temp-buffer are now | ||
| 603 | read-only by default, and normally use the major mode Help mode | ||
| 604 | unless you put them in some other non-Fundamental mode before the | ||
| 605 | end of with-output-to-temp-buffer. | ||
| 606 | |||
| 607 | ** The new functions gap-position and gap-size return information on | ||
| 608 | the gap of the current buffer. | ||
| 609 | |||
| 610 | ** The new functions position-bytes and byte-to-position provide a way | ||
| 611 | to convert between character positions and byte positions in the | ||
| 612 | current buffer. | ||
| 613 | |||
| 614 | ** vc.el defines two new macros, `edit-vc-file' and `with-vc-file', to | ||
| 615 | facilitate working with version-controlled files from Lisp programs. | ||
| 616 | These macros check out a given file automatically if needed, and check | ||
| 617 | it back in after any modifications have been made. | ||
| 618 | |||
| 619 | |||
| 620 | |||
| 621 | * Installation Changes in Emacs 20.3 | ||
| 622 | |||
| 623 | ** The default value of load-path now includes most subdirectories of | ||
| 624 | the site-specific directories /usr/local/share/emacs/site-lisp and | ||
| 625 | /usr/local/share/emacs/VERSION/site-lisp, in addition to those | ||
| 626 | directories themselves. Both immediate subdirectories and | ||
| 627 | subdirectories multiple levels down are added to load-path. | ||
| 628 | |||
| 629 | Not all subdirectories are included, though. Subdirectories whose | ||
| 630 | names do not start with a letter or digit are excluded. | ||
| 631 | Subdirectories named RCS or CVS are excluded. Also, a subdirectory | ||
| 632 | which contains a file named `.nosearch' is excluded. You can use | ||
| 633 | these methods to prevent certain subdirectories from being searched. | ||
| 634 | |||
| 635 | Emacs finds these subdirectories and adds them to load-path when it | ||
| 636 | starts up. While it would be cleaner to find the subdirectories each | ||
| 637 | time Emacs loads a file, that would be much slower. | ||
| 638 | |||
| 639 | This feature is an incompatible change. If you have stored some Emacs | ||
| 640 | Lisp files in a subdirectory of the site-lisp directory specifically | ||
| 641 | to prevent them from being used, you will need to rename the | ||
| 642 | subdirectory to start with a non-alphanumeric character, or create a | ||
| 643 | `.nosearch' file in it, in order to continue to achieve the desired | ||
| 644 | results. | ||
| 645 | |||
| 646 | ** Emacs no longer includes an old version of the C preprocessor from | ||
| 647 | GCC. This was formerly used to help compile Emacs with C compilers | ||
| 648 | that had limits on the significant length of an identifier, but in | ||
| 649 | fact we stopped supporting such compilers some time ago. | ||
| 650 | |||
| 651 | |||
| 652 | * Changes in Emacs 20.3 | ||
| 653 | |||
| 654 | ** The new command C-x z (repeat) repeats the previous command | ||
| 655 | including its argument. If you repeat the z afterward, | ||
| 656 | it repeats the command additional times; thus, you can | ||
| 657 | perform many repetitions with one keystroke per repetition. | ||
| 658 | |||
| 659 | ** Emacs now supports "selective undo" which undoes only within a | ||
| 660 | specified region. To do this, set point and mark around the desired | ||
| 661 | region and type C-u C-x u (or C-u C-_). You can then continue undoing | ||
| 662 | further, within the same region, by repeating the ordinary undo | ||
| 663 | command C-x u or C-_. This will keep undoing changes that were made | ||
| 664 | within the region you originally specified, until either all of them | ||
| 665 | are undone, or it encounters a change which crosses the edge of that | ||
| 666 | region. | ||
| 667 | |||
| 668 | In Transient Mark mode, undoing when a region is active requests | ||
| 669 | selective undo. | ||
| 670 | |||
| 671 | ** If you specify --unibyte when starting Emacs, then all buffers are | ||
| 672 | unibyte, except when a Lisp program specifically creates a multibyte | ||
| 673 | buffer. Setting the environment variable EMACS_UNIBYTE has the same | ||
| 674 | effect. The --no-unibyte option overrides EMACS_UNIBYTE and directs | ||
| 675 | Emacs to run normally in multibyte mode. | ||
| 676 | |||
| 677 | The option --unibyte does not affect the reading of Emacs Lisp files, | ||
| 678 | though. If you want a Lisp file to be read in unibyte mode, use | ||
| 679 | -*-unibyte: t;-*- on its first line. That will force Emacs to | ||
| 680 | load that file in unibyte mode, regardless of how Emacs was started. | ||
| 681 | |||
| 682 | ** toggle-enable-multibyte-characters no longer has a key binding and | ||
| 683 | no longer appears in the menu bar. We've realized that changing the | ||
| 684 | enable-multibyte-characters variable in an existing buffer is | ||
| 685 | something that most users not do. | ||
| 686 | |||
| 687 | ** You can specify a coding system to use for the next cut or paste | ||
| 688 | operations through the window system with the command C-x RET X. | ||
| 689 | The coding system can make a difference for communication with other | ||
| 690 | applications. | ||
| 691 | |||
| 692 | C-x RET x specifies a coding system for all subsequent cutting and | ||
| 693 | pasting operations. | ||
| 694 | |||
| 695 | ** You can specify the printer to use for commands that do printing by | ||
| 696 | setting the variable `printer-name'. Just what a printer name looks | ||
| 697 | like depends on your operating system. You can specify a different | ||
| 698 | printer for the Postscript printing commands by setting | ||
| 699 | `ps-printer-name'. | ||
| 700 | |||
| 701 | ** Emacs now supports on-the-fly spell checking by the means of a | ||
| 702 | minor mode. It is called M-x flyspell-mode. You don't have to remember | ||
| 703 | any other special commands to use it, and you will hardly notice it | ||
| 704 | except when you make a spelling error. Flyspell works by highlighting | ||
| 705 | incorrect words as soon as they are completed or as soon as the cursor | ||
| 706 | hits a new word. | ||
| 707 | |||
| 708 | Flyspell mode works with whichever dictionary you have selected for | ||
| 709 | Ispell in Emacs. In TeX mode, it understands TeX syntax so as not | ||
| 710 | to be confused by TeX commands. | ||
| 711 | |||
| 712 | You can correct a misspelled word by editing it into something | ||
| 713 | correct. You can also correct it, or accept it as correct, by | ||
| 714 | clicking on the word with Mouse-2; that gives you a pop-up menu | ||
| 715 | of various alternative replacements and actions. | ||
| 716 | |||
| 717 | Flyspell mode also proposes "automatic" corrections. M-TAB replaces | ||
| 718 | the current misspelled word with a possible correction. If several | ||
| 719 | corrections are made possible, M-TAB cycles through them in | ||
| 720 | alphabetical order, or in order of decreasing likelihood if | ||
| 721 | flyspell-sort-corrections is nil. | ||
| 722 | |||
| 723 | Flyspell mode also flags an error when a word is repeated, if | ||
| 724 | flyspell-mark-duplications-flag is non-nil. | ||
| 725 | |||
| 726 | ** Changes in input method usage. | ||
| 727 | |||
| 728 | Now you can use arrow keys (right, left, down, up) for selecting among | ||
| 729 | the alternatives just the same way as you do by C-f, C-b, C-n, and C-p | ||
| 730 | respectively. | ||
| 731 | |||
| 732 | You can use the ENTER key to accept the current conversion. | ||
| 733 | |||
| 734 | If you type TAB to display a list of alternatives, you can select one | ||
| 735 | of the alternatives with Mouse-2. | ||
| 736 | |||
| 737 | The meaning of the variable `input-method-verbose-flag' is changed so | ||
| 738 | that you can set it to t, nil, `default', or `complex-only'. | ||
| 739 | |||
| 740 | If the value is nil, extra guidance is never given. | ||
| 741 | |||
| 742 | If the value is t, extra guidance is always given. | ||
| 743 | |||
| 744 | If the value is `complex-only', extra guidance is always given only | ||
| 745 | when you are using complex input methods such as chinese-py. | ||
| 746 | |||
| 747 | If the value is `default' (this is the default), extra guidance is | ||
| 748 | given in the following case: | ||
| 749 | o When you are using a complex input method. | ||
| 750 | o When you are using a simple input method but not in the minibuffer. | ||
| 751 | |||
| 752 | If you are using Emacs through a very slow line, setting | ||
| 753 | input-method-verbose-flag to nil or to complex-only is a good choice, | ||
| 754 | and if you are using an input method you are not familiar with, | ||
| 755 | setting it to t is helpful. | ||
| 756 | |||
| 757 | The old command select-input-method is now called set-input-method. | ||
| 758 | |||
| 759 | In the language environment "Korean", you can use the following | ||
| 760 | keys: | ||
| 761 | Shift-SPC toggle-korean-input-method | ||
| 762 | C-F9 quail-hangul-switch-symbol-ksc | ||
| 763 | F9 quail-hangul-switch-hanja | ||
| 764 | These key bindings are canceled when you switch to another language | ||
| 765 | environment. | ||
| 766 | |||
| 767 | ** The minibuffer history of file names now records the specified file | ||
| 768 | names, not the entire minibuffer input. For example, if the | ||
| 769 | minibuffer starts out with /usr/foo/, you might type in /etc/passwd to | ||
| 770 | get | ||
| 771 | |||
| 772 | /usr/foo//etc/passwd | ||
| 773 | |||
| 774 | which stands for the file /etc/passwd. | ||
| 775 | |||
| 776 | Formerly, this used to put /usr/foo//etc/passwd in the history list. | ||
| 777 | Now this puts just /etc/passwd in the history list. | ||
| 778 | |||
| 779 | ** If you are root, Emacs sets backup-by-copying-when-mismatch to t | ||
| 780 | at startup, so that saving a file will be sure to preserve | ||
| 781 | its owner and group. | ||
| 782 | |||
| 783 | ** find-func.el can now also find the place of definition of Emacs | ||
| 784 | Lisp variables in user-loaded libraries. | ||
| 785 | |||
| 786 | ** C-x r t (string-rectangle) now deletes the existing rectangle | ||
| 787 | contents before inserting the specified string on each line. | ||
| 788 | |||
| 789 | ** There is a new command delete-whitespace-rectangle | ||
| 790 | which deletes whitespace starting from a particular column | ||
| 791 | in all the lines on a rectangle. The column is specified | ||
| 792 | by the left edge of the rectangle. | ||
| 793 | |||
| 794 | ** You can now store a number into a register with C-u NUMBER C-x r n REG, | ||
| 795 | increment it by INC with C-u INC C-x r + REG (to increment by one, omit | ||
| 796 | C-u INC), and insert it in the buffer with C-x r g REG. This is useful | ||
| 797 | for writing keyboard macros. | ||
| 798 | |||
| 799 | ** The new command M-x speedbar displays a frame in which directories, | ||
| 800 | files, and tags can be displayed, manipulated, and jumped to. The | ||
| 801 | frame defaults to 20 characters in width, and is the same height as | ||
| 802 | the frame that it was started from. Some major modes define | ||
| 803 | additional commands for the speedbar, including Rmail, GUD/GDB, and | ||
| 804 | info. | ||
| 805 | |||
| 806 | ** query-replace-regexp is now bound to C-M-%. | ||
| 807 | |||
| 808 | ** In Transient Mark mode, when the region is active, M-x | ||
| 809 | query-replace and the other replace commands now operate on the region | ||
| 810 | contents only. | ||
| 811 | |||
| 812 | ** M-x write-region, when used interactively, now asks for | ||
| 813 | confirmation before overwriting an existing file. When you call | ||
| 814 | the function from a Lisp program, a new optional argument CONFIRM | ||
| 815 | says whether to ask for confirmation in this case. | ||
| 816 | |||
| 817 | ** If you use find-file-literally and the file is already visited | ||
| 818 | non-literally, the command asks you whether to revisit the file | ||
| 819 | literally. If you say no, it signals an error. | ||
| 820 | |||
| 821 | ** Major modes defined with the "derived mode" feature | ||
| 822 | now use the proper name for the mode hook: WHATEVER-mode-hook. | ||
| 823 | Formerly they used the name WHATEVER-mode-hooks, but that is | ||
| 824 | inconsistent with Emacs conventions. | ||
| 825 | |||
| 826 | ** shell-command-on-region (and shell-command) reports success or | ||
| 827 | failure if the command produces no output. | ||
| 828 | |||
| 829 | ** Set focus-follows-mouse to nil if your window system or window | ||
| 830 | manager does not transfer focus to another window when you just move | ||
| 831 | the mouse. | ||
| 832 | |||
| 833 | ** mouse-menu-buffer-maxlen has been renamed to | ||
| 834 | mouse-buffer-menu-maxlen to be consistent with the other related | ||
| 835 | function and variable names. | ||
| 836 | |||
| 837 | ** The new variable auto-coding-alist specifies coding systems for | ||
| 838 | reading specific files. This has higher priority than | ||
| 839 | file-coding-system-alist. | ||
| 840 | |||
| 841 | ** If you set the variable unibyte-display-via-language-environment to | ||
| 842 | t, then Emacs displays non-ASCII characters are displayed by | ||
| 843 | converting them to the equivalent multibyte characters according to | ||
| 844 | the current language environment. As a result, they are displayed | ||
| 845 | according to the current fontset. | ||
| 846 | |||
| 847 | ** C-q's handling of codes in the range 0200 through 0377 is changed. | ||
| 848 | |||
| 849 | The codes in the range 0200 through 0237 are inserted as one byte of | ||
| 850 | that code regardless of the values of nonascii-translation-table and | ||
| 851 | nonascii-insert-offset. | ||
| 852 | |||
| 853 | For the codes in the range 0240 through 0377, if | ||
| 854 | enable-multibyte-characters is non-nil and nonascii-translation-table | ||
| 855 | nor nonascii-insert-offset can't convert them to valid multibyte | ||
| 856 | characters, they are converted to Latin-1 characters. | ||
| 857 | |||
| 858 | ** If you try to find a file that is not read-accessible, you now get | ||
| 859 | an error, rather than an empty buffer and a warning. | ||
| 860 | |||
| 861 | ** In the minibuffer history commands M-r and M-s, an upper case | ||
| 862 | letter in the regular expression forces case-sensitive search. | ||
| 863 | |||
| 864 | ** In the *Help* buffer, cross-references to commands and variables | ||
| 865 | are inferred and hyperlinked. Use C-h m in Help mode for the relevant | ||
| 866 | command keys. | ||
| 867 | |||
| 868 | ** M-x apropos-command, with a prefix argument, no longer looks for | ||
| 869 | user option variables--instead it looks for noninteractive functions. | ||
| 870 | |||
| 871 | Meanwhile, the command apropos-variable normally searches for | ||
| 872 | user option variables; with a prefix argument, it looks at | ||
| 873 | all variables that have documentation. | ||
| 874 | |||
| 875 | ** When you type a long line in the minibuffer, and the minibuffer | ||
| 876 | shows just one line, automatically scrolling works in a special way | ||
| 877 | that shows you overlap with the previous line of text. The variable | ||
| 878 | minibuffer-scroll-overlap controls how many characters of overlap | ||
| 879 | it should show; the default is 20. | ||
| 880 | |||
| 881 | Meanwhile, Resize Minibuffer mode is still available; in that mode, | ||
| 882 | the minibuffer grows taller (up to a point) as needed to show the whole | ||
| 883 | of your input. | ||
| 884 | |||
| 885 | ** The new command M-x customize-changed-options lets you customize | ||
| 886 | all the options whose meanings or default values have changed in | ||
| 887 | recent Emacs versions. You specify a previous Emacs version number as | ||
| 888 | argument, and the command creates a customization buffer showing all | ||
| 889 | the customizable options which were changed since that version. | ||
| 890 | Newly added options are included as well. | ||
| 891 | |||
| 892 | If you don't specify a particular version number argument, | ||
| 893 | then the customization buffer shows all the customizable options | ||
| 894 | for which Emacs versions of changes are recorded. | ||
| 895 | |||
| 896 | This function is also bound to the Changed Options entry in the | ||
| 897 | Customize menu. | ||
| 898 | |||
| 899 | ** When you run M-x grep with a prefix argument, it figures out | ||
| 900 | the tag around point and puts that into the default grep command. | ||
| 901 | |||
| 902 | ** The new command M-* (pop-tag-mark) pops back through a history of | ||
| 903 | buffer positions from which M-. or other tag-finding commands were | ||
| 904 | invoked. | ||
| 905 | |||
| 906 | ** The new variable comment-padding specifies the number of spaces | ||
| 907 | that `comment-region' will insert before the actual text of the comment. | ||
| 908 | The default is 1. | ||
| 909 | |||
| 910 | ** In Fortran mode the characters `.', `_' and `$' now have symbol | ||
| 911 | syntax, not word syntax. Fortran mode now supports `imenu' and has | ||
| 912 | new commands fortran-join-line (M-^) and fortran-narrow-to-subprogram | ||
| 913 | (C-x n d). M-q can be used to fill a statement or comment block | ||
| 914 | sensibly. | ||
| 915 | |||
| 916 | ** GUD now supports jdb, the Java debugger, and pdb, the Python debugger. | ||
| 917 | |||
| 918 | ** If you set the variable add-log-keep-changes-together to a non-nil | ||
| 919 | value, the command `C-x 4 a' will automatically notice when you make | ||
| 920 | two entries in one day for one file, and combine them. | ||
| 921 | |||
| 922 | ** You can use the command M-x diary-mail-entries to mail yourself a | ||
| 923 | reminder about upcoming diary entries. See the documentation string | ||
| 924 | for a sample shell script for calling this function automatically | ||
| 925 | every night. | ||
| 926 | |||
| 927 | ** Desktop changes | ||
| 928 | |||
| 929 | *** All you need to do to enable use of the Desktop package, is to set | ||
| 930 | the variable desktop-enable to t with Custom. | ||
| 931 | |||
| 932 | *** Minor modes are now restored. Which minor modes are restored | ||
| 933 | and how modes are restored is controlled by `desktop-minor-mode-table'. | ||
| 934 | |||
| 935 | ** There is no need to do anything special, now, to enable Gnus to | ||
| 936 | read and post multi-lingual articles. | ||
| 937 | |||
| 938 | ** Outline mode has now support for showing hidden outlines when | ||
| 939 | doing an isearch. In order for this to happen search-invisible should | ||
| 940 | be set to open (the default). If an isearch match is inside a hidden | ||
| 941 | outline the outline is made visible. If you continue pressing C-s and | ||
| 942 | the match moves outside the formerly invisible outline, the outline is | ||
| 943 | made invisible again. | ||
| 944 | |||
| 945 | ** Mail reading and sending changes | ||
| 946 | |||
| 947 | *** The Rmail e command now switches to displaying the whole header of | ||
| 948 | the message before it lets you edit the message. This is so that any | ||
| 949 | changes you make in the header will not be lost if you subsequently | ||
| 950 | toggle. | ||
| 951 | |||
| 952 | *** The w command in Rmail, which writes the message body into a file, | ||
| 953 | now works in the summary buffer as well. (The command to delete the | ||
| 954 | summary buffer is now Q.) The default file name for the w command, if | ||
| 955 | the message has no subject, is stored in the variable | ||
| 956 | rmail-default-body-file. | ||
| 957 | |||
| 958 | *** Most of the commands and modes that operate on mail and netnews no | ||
| 959 | longer depend on the value of mail-header-separator. Instead, they | ||
| 960 | handle whatever separator the buffer happens to use. | ||
| 961 | |||
| 962 | *** If you set mail-signature to a value which is not t, nil, or a string, | ||
| 963 | it should be an expression. When you send a message, this expression | ||
| 964 | is evaluated to insert the signature. | ||
| 965 | |||
| 966 | *** The new Lisp library feedmail.el (version 8) enhances processing of | ||
| 967 | outbound email messages. It works in coordination with other email | ||
| 968 | handling packages (e.g., rmail, VM, gnus) and is responsible for | ||
| 969 | putting final touches on messages and actually submitting them for | ||
| 970 | transmission. Users of the emacs program "fakemail" might be | ||
| 971 | especially interested in trying feedmail. | ||
| 972 | |||
| 973 | feedmail is not enabled by default. See comments at the top of | ||
| 974 | feedmail.el for set-up instructions. Among the bigger features | ||
| 975 | provided by feedmail are: | ||
| 976 | |||
| 977 | **** you can park outgoing messages into a disk-based queue and | ||
| 978 | stimulate sending some or all of them later (handy for laptop users); | ||
| 979 | there is also a queue for draft messages | ||
| 980 | |||
| 981 | **** you can get one last look at the prepped outbound message and | ||
| 982 | be prompted for confirmation | ||
| 983 | |||
| 984 | **** does smart filling of address headers | ||
| 985 | |||
| 986 | **** can generate a MESSAGE-ID: line and a DATE: line; the date can be | ||
| 987 | the time the message was written or the time it is being sent; this | ||
| 988 | can make FCC copies more closely resemble copies that recipients get | ||
| 989 | |||
| 990 | **** you can specify an arbitrary function for actually transmitting | ||
| 991 | the message; included in feedmail are interfaces for /bin/[r]mail, | ||
| 992 | /usr/lib/sendmail, and Emacs Lisp smtpmail; it's easy to write a new | ||
| 993 | function for something else (10-20 lines of Lisp code). | ||
| 994 | |||
| 995 | ** Dired changes | ||
| 996 | |||
| 997 | *** The Dired function dired-do-toggle, which toggles marked and unmarked | ||
| 998 | files, is now bound to "t" instead of "T". | ||
| 999 | |||
| 1000 | *** dired-at-point has been added to ffap.el. It allows one to easily | ||
| 1001 | run Dired on the directory name at point. | ||
| 1002 | |||
| 1003 | *** Dired has a new command: %g. It searches the contents of | ||
| 1004 | files in the directory and marks each file that contains a match | ||
| 1005 | for a specified regexp. | ||
| 1006 | |||
| 1007 | ** VC Changes | ||
| 1008 | |||
| 1009 | *** New option vc-ignore-vc-files lets you turn off version control | ||
| 1010 | conveniently. | ||
| 1011 | |||
| 1012 | *** VC Dired has been completely rewritten. It is now much | ||
| 1013 | faster, especially for CVS, and works very similar to ordinary | ||
| 1014 | Dired. | ||
| 1015 | |||
| 1016 | VC Dired is invoked by typing C-x v d and entering the name of the | ||
| 1017 | directory to display. By default, VC Dired gives you a recursive | ||
| 1018 | listing of all files at or below the given directory which are | ||
| 1019 | currently locked (for CVS, all files not up-to-date are shown). | ||
| 1020 | |||
| 1021 | You can change the listing format by setting vc-dired-recurse to nil, | ||
| 1022 | then it shows only the given directory, and you may also set | ||
| 1023 | vc-dired-terse-display to nil, then it shows all files under version | ||
| 1024 | control plus the names of any subdirectories, so that you can type `i' | ||
| 1025 | on such lines to insert them manually, as in ordinary Dired. | ||
| 1026 | |||
| 1027 | All Dired commands operate normally in VC Dired, except for `v', which | ||
| 1028 | is redefined as the version control prefix. That means you may type | ||
| 1029 | `v l', `v =' etc. to invoke `vc-print-log', `vc-diff' and the like on | ||
| 1030 | the file named in the current Dired buffer line. `v v' invokes | ||
| 1031 | `vc-next-action' on this file, or on all files currently marked. | ||
| 1032 | |||
| 1033 | The new command `v t' (vc-dired-toggle-terse-mode) allows you to | ||
| 1034 | toggle between terse display (only locked files) and full display (all | ||
| 1035 | VC files plus subdirectories). There is also a special command, | ||
| 1036 | `* l', to mark all files currently locked. | ||
| 1037 | |||
| 1038 | Giving a prefix argument to C-x v d now does the same thing as in | ||
| 1039 | ordinary Dired: it allows you to supply additional options for the ls | ||
| 1040 | command in the minibuffer, to fine-tune VC Dired's output. | ||
| 1041 | |||
| 1042 | *** Under CVS, if you merge changes from the repository into a working | ||
| 1043 | file, and CVS detects conflicts, VC now offers to start an ediff | ||
| 1044 | session to resolve them. | ||
| 1045 | |||
| 1046 | Alternatively, you can use the new command `vc-resolve-conflicts' to | ||
| 1047 | resolve conflicts in a file at any time. It works in any buffer that | ||
| 1048 | contains conflict markers as generated by rcsmerge (which is what CVS | ||
| 1049 | uses as well). | ||
| 1050 | |||
| 1051 | *** You can now transfer changes between branches, using the new | ||
| 1052 | command vc-merge (C-x v m). It is implemented for RCS and CVS. When | ||
| 1053 | you invoke it in a buffer under version-control, you can specify | ||
| 1054 | either an entire branch or a pair of versions, and the changes on that | ||
| 1055 | branch or between the two versions are merged into the working file. | ||
| 1056 | If this results in any conflicts, they may be resolved interactively, | ||
| 1057 | using ediff. | ||
| 1058 | |||
| 1059 | ** Changes in Font Lock | ||
| 1060 | |||
| 1061 | *** The face and variable previously known as font-lock-reference-face | ||
| 1062 | are now called font-lock-constant-face to better reflect their typical | ||
| 1063 | use for highlighting constants and labels. (Its face properties are | ||
| 1064 | unchanged.) The variable font-lock-reference-face remains for now for | ||
| 1065 | compatibility reasons, but its value is font-lock-constant-face. | ||
| 1066 | |||
| 1067 | ** Frame name display changes | ||
| 1068 | |||
| 1069 | *** The command set-frame-name lets you set the name of the current | ||
| 1070 | frame. You can use the new command select-frame-by-name to select and | ||
| 1071 | raise a frame; this is mostly useful on character-only terminals, or | ||
| 1072 | when many frames are invisible or iconified. | ||
| 1073 | |||
| 1074 | *** On character-only terminal (not a window system), changing the | ||
| 1075 | frame name is now reflected on the mode line and in the Buffers/Frames | ||
| 1076 | menu. | ||
| 1077 | |||
| 1078 | ** Comint (subshell) changes | ||
| 1079 | |||
| 1080 | *** In Comint modes, the commands to kill, stop or interrupt a | ||
| 1081 | subjob now also kill pending input. This is for compatibility | ||
| 1082 | with ordinary shells, where the signal characters do this. | ||
| 1083 | |||
| 1084 | *** There are new commands in Comint mode. | ||
| 1085 | |||
| 1086 | C-c C-x fetches the "next" line from the input history; | ||
| 1087 | that is, the line after the last line you got. | ||
| 1088 | You can use this command to fetch successive lines, one by one. | ||
| 1089 | |||
| 1090 | C-c SPC accumulates lines of input. More precisely, it arranges to | ||
| 1091 | send the current line together with the following line, when you send | ||
| 1092 | the following line. | ||
| 1093 | |||
| 1094 | C-c C-a if repeated twice consecutively now moves to the process mark, | ||
| 1095 | which separates the pending input from the subprocess output and the | ||
| 1096 | previously sent input. | ||
| 1097 | |||
| 1098 | C-c M-r now runs comint-previous-matching-input-from-input; | ||
| 1099 | it searches for a previous command, using the current pending input | ||
| 1100 | as the search string. | ||
| 1101 | |||
| 1102 | *** New option compilation-scroll-output can be set to scroll | ||
| 1103 | automatically in compilation-mode windows. | ||
| 1104 | |||
| 1105 | ** C mode changes | ||
| 1106 | |||
| 1107 | *** Multiline macros are now handled, both as they affect indentation, | ||
| 1108 | and as recognized syntax. New syntactic symbol cpp-macro-cont is | ||
| 1109 | assigned to second and subsequent lines of a multiline macro | ||
| 1110 | definition. | ||
| 1111 | |||
| 1112 | *** A new style "user" which captures all non-hook-ified | ||
| 1113 | (i.e. top-level) .emacs file variable settings and customizations. | ||
| 1114 | Style "cc-mode" is an alias for "user" and is deprecated. "gnu" | ||
| 1115 | style is still the default however. | ||
| 1116 | |||
| 1117 | *** "java" style now conforms to Sun's JDK coding style. | ||
| 1118 | |||
| 1119 | *** There are new commands c-beginning-of-defun, c-end-of-defun which | ||
| 1120 | are alternatives which you could bind to C-M-a and C-M-e if you prefer | ||
| 1121 | them. They do not have key bindings by default. | ||
| 1122 | |||
| 1123 | *** New and improved implementations of M-a (c-beginning-of-statement) | ||
| 1124 | and M-e (c-end-of-statement). | ||
| 1125 | |||
| 1126 | *** C++ namespace blocks are supported, with new syntactic symbols | ||
| 1127 | namespace-open, namespace-close, and innamespace. | ||
| 1128 | |||
| 1129 | *** File local variable settings of c-file-style and c-file-offsets | ||
| 1130 | makes the style variables local to that buffer only. | ||
| 1131 | |||
| 1132 | *** New indentation functions c-lineup-close-paren, | ||
| 1133 | c-indent-one-line-block, c-lineup-dont-change. | ||
| 1134 | |||
| 1135 | *** Improvements (hopefully!) to the way CC Mode is loaded. You | ||
| 1136 | should now be able to do a (require 'cc-mode) to get the entire | ||
| 1137 | package loaded properly for customization in your .emacs file. A new | ||
| 1138 | variable c-initialize-on-load controls this and is t by default. | ||
| 1139 | |||
| 1140 | ** Changes to hippie-expand. | ||
| 1141 | |||
| 1142 | *** New customization variable `hippie-expand-dabbrev-skip-space'. If | ||
| 1143 | non-nil, trailing spaces may be included in the abbreviation to search for, | ||
| 1144 | which then gives the same behavior as the original `dabbrev-expand'. | ||
| 1145 | |||
| 1146 | *** New customization variable `hippie-expand-dabbrev-as-symbol'. If | ||
| 1147 | non-nil, characters of syntax '_' is considered part of the word when | ||
| 1148 | expanding dynamically. | ||
| 1149 | |||
| 1150 | *** New customization variable `hippie-expand-no-restriction'. If | ||
| 1151 | non-nil, narrowed buffers are widened before they are searched. | ||
| 1152 | |||
| 1153 | *** New customization variable `hippie-expand-only-buffers'. If | ||
| 1154 | non-empty, buffers searched are restricted to the types specified in | ||
| 1155 | this list. Useful for example when constructing new special-purpose | ||
| 1156 | expansion functions with `make-hippie-expand-function'. | ||
| 1157 | |||
| 1158 | *** Text properties of the expansion are no longer copied. | ||
| 1159 | |||
| 1160 | ** Changes in BibTeX mode. | ||
| 1161 | |||
| 1162 | *** Any titleword matching a regexp in the new variable | ||
| 1163 | bibtex-autokey-titleword-ignore (case sensitive) is ignored during | ||
| 1164 | automatic key generation. This replaces variable | ||
| 1165 | bibtex-autokey-titleword-first-ignore, which only checked for matches | ||
| 1166 | against the first word in the title. | ||
| 1167 | |||
| 1168 | *** Autokey generation now uses all words from the title, not just | ||
| 1169 | capitalized words. To avoid conflicts with existing customizations, | ||
| 1170 | bibtex-autokey-titleword-ignore is set up such that words starting with | ||
| 1171 | lowerkey characters will still be ignored. Thus, if you want to use | ||
| 1172 | lowercase words from the title, you will have to overwrite the | ||
| 1173 | bibtex-autokey-titleword-ignore standard setting. | ||
| 1174 | |||
| 1175 | *** Case conversion of names and title words for automatic key | ||
| 1176 | generation is more flexible. Variable bibtex-autokey-preserve-case is | ||
| 1177 | replaced by bibtex-autokey-titleword-case-convert and | ||
| 1178 | bibtex-autokey-name-case-convert. | ||
| 1179 | |||
| 1180 | ** Changes in vcursor.el. | ||
| 1181 | |||
| 1182 | *** Support for character terminals is available: there is a new keymap | ||
| 1183 | and the vcursor will appear as an arrow between buffer text. A | ||
| 1184 | variable `vcursor-interpret-input' allows input from the vcursor to be | ||
| 1185 | entered exactly as if typed. Numerous functions, including | ||
| 1186 | `vcursor-compare-windows', have been rewritten to improve consistency | ||
| 1187 | in the selection of windows and corresponding keymaps. | ||
| 1188 | |||
| 1189 | *** vcursor options can now be altered with M-x customize under the | ||
| 1190 | Editing group once the package is loaded. | ||
| 1191 | |||
| 1192 | *** Loading vcursor now does not define keys by default, as this is | ||
| 1193 | generally a bad side effect. Use M-x customize to set | ||
| 1194 | vcursor-key-bindings to t to restore the old behavior. | ||
| 1195 | |||
| 1196 | *** vcursor-auto-disable can be `copy', which turns off copying from the | ||
| 1197 | vcursor, but doesn't disable it, after any non-vcursor command. | ||
| 1198 | |||
| 1199 | ** Ispell changes. | ||
| 1200 | |||
| 1201 | *** You can now spell check comments and strings in the current | ||
| 1202 | buffer with M-x ispell-comments-and-strings. Comments and strings | ||
| 1203 | are identified by syntax tables in effect. | ||
| 1204 | |||
| 1205 | *** Generic region skipping implemented. | ||
| 1206 | A single buffer can be broken into a number of regions where text will | ||
| 1207 | and will not be checked. The definitions of the regions can be user | ||
| 1208 | defined. New applications and improvements made available by this | ||
| 1209 | include: | ||
| 1210 | |||
| 1211 | o URLs are automatically skipped | ||
| 1212 | o EMail message checking is vastly improved. | ||
| 1213 | |||
| 1214 | *** Ispell can highlight the erroneous word even on non-window terminals. | ||
| 1215 | |||
| 1216 | ** Changes to RefTeX mode | ||
| 1217 | |||
| 1218 | RefTeX has been updated in order to make it more usable with very | ||
| 1219 | large projects (like a several volume math book). The parser has been | ||
| 1220 | re-written from scratch. To get maximum speed from RefTeX, check the | ||
| 1221 | section `Optimizations' in the manual. | ||
| 1222 | |||
| 1223 | *** New recursive parser. | ||
| 1224 | |||
| 1225 | The old version of RefTeX created a single large buffer containing the | ||
| 1226 | entire multifile document in order to parse the document. The new | ||
| 1227 | recursive parser scans the individual files. | ||
| 1228 | |||
| 1229 | *** Parsing only part of a document. | ||
| 1230 | |||
| 1231 | Reparsing of changed document parts can now be made faster by enabling | ||
| 1232 | partial scans. To use this feature, read the documentation string of | ||
| 1233 | the variable `reftex-enable-partial-scans' and set the variable to t. | ||
| 1234 | |||
| 1235 | (setq reftex-enable-partial-scans t) | ||
| 1236 | |||
| 1237 | *** Storing parsing information in a file. | ||
| 1238 | |||
| 1239 | This can improve startup times considerably. To turn it on, use | ||
| 1240 | |||
| 1241 | (setq reftex-save-parse-info t) | ||
| 1242 | |||
| 1243 | *** Using multiple selection buffers | ||
| 1244 | |||
| 1245 | If the creation of label selection buffers is too slow (this happens | ||
| 1246 | for large documents), you can reuse these buffers by setting | ||
| 1247 | |||
| 1248 | (setq reftex-use-multiple-selection-buffers t) | ||
| 1249 | |||
| 1250 | *** References to external documents. | ||
| 1251 | |||
| 1252 | The LaTeX package `xr' allows to cross-reference labels in external | ||
| 1253 | documents. RefTeX can provide information about the external | ||
| 1254 | documents as well. To use this feature, set up the \externaldocument | ||
| 1255 | macros required by the `xr' package and rescan the document with | ||
| 1256 | RefTeX. The external labels can then be accessed with the `x' key in | ||
| 1257 | the selection buffer provided by `reftex-reference' (bound to `C-c )'). | ||
| 1258 | The `x' key also works in the table of contents buffer. | ||
| 1259 | |||
| 1260 | *** Many more labeled LaTeX environments are recognized by default. | ||
| 1261 | |||
| 1262 | The built-in command list now covers all the standard LaTeX commands, | ||
| 1263 | and all of the major packages included in the LaTeX distribution. | ||
| 1264 | |||
| 1265 | Also, RefTeX now understands the \appendix macro and changes | ||
| 1266 | the enumeration of sections in the *toc* buffer accordingly. | ||
| 1267 | |||
| 1268 | *** Mouse support for selection and *toc* buffers | ||
| 1269 | |||
| 1270 | The mouse can now be used to select items in the selection and *toc* | ||
| 1271 | buffers. See also the new option `reftex-highlight-selection'. | ||
| 1272 | |||
| 1273 | *** New keymaps for selection and table of contents modes. | ||
| 1274 | |||
| 1275 | The selection processes for labels and citation keys, and the table of | ||
| 1276 | contents buffer now have their own keymaps: `reftex-select-label-map', | ||
| 1277 | `reftex-select-bib-map', `reftex-toc-map'. The selection processes | ||
| 1278 | have a number of new keys predefined. In particular, TAB lets you | ||
| 1279 | enter a label with completion. Check the on-the-fly help (press `?' | ||
| 1280 | at the selection prompt) or read the Info documentation to find out | ||
| 1281 | more. | ||
| 1282 | |||
| 1283 | *** Support for the varioref package | ||
| 1284 | |||
| 1285 | The `v' key in the label selection buffer toggles \ref versus \vref. | ||
| 1286 | |||
| 1287 | *** New hooks | ||
| 1288 | |||
| 1289 | Three new hooks can be used to redefine the way labels, references, | ||
| 1290 | and citations are created. These hooks are | ||
| 1291 | `reftex-format-label-function', `reftex-format-ref-function', | ||
| 1292 | `reftex-format-cite-function'. | ||
| 1293 | |||
| 1294 | *** Citations outside LaTeX | ||
| 1295 | |||
| 1296 | The command `reftex-citation' may also be used outside LaTeX (e.g. in | ||
| 1297 | a mail buffer). See the Info documentation for details. | ||
| 1298 | |||
| 1299 | *** Short context is no longer fontified. | ||
| 1300 | |||
| 1301 | The short context in the label menu no longer copies the | ||
| 1302 | fontification from the text in the buffer. If you prefer it to be | ||
| 1303 | fontified, use | ||
| 1304 | |||
| 1305 | (setq reftex-refontify-context t) | ||
| 1306 | |||
| 1307 | ** file-cache-minibuffer-complete now accepts a prefix argument. | ||
| 1308 | With a prefix argument, it does not try to do completion of | ||
| 1309 | the file name within its directory; it only checks for other | ||
| 1310 | directories that contain the same file name. | ||
| 1311 | |||
| 1312 | Thus, given the file name Makefile, and assuming that a file | ||
| 1313 | Makefile.in exists in the same directory, ordinary | ||
| 1314 | file-cache-minibuffer-complete will try to complete Makefile to | ||
| 1315 | Makefile.in and will therefore never look for other directories that | ||
| 1316 | have Makefile. A prefix argument tells it not to look for longer | ||
| 1317 | names such as Makefile.in, so that instead it will look for other | ||
| 1318 | directories--just as if the name were already complete in its present | ||
| 1319 | directory. | ||
| 1320 | |||
| 1321 | ** New modes and packages | ||
| 1322 | |||
| 1323 | *** There is a new alternative major mode for Perl, Cperl mode. | ||
| 1324 | It has many more features than Perl mode, and some people prefer | ||
| 1325 | it, but some do not. | ||
| 1326 | |||
| 1327 | *** There is a new major mode, M-x vhdl-mode, for editing files of VHDL | ||
| 1328 | code. | ||
| 1329 | |||
| 1330 | *** M-x which-function-mode enables a minor mode that displays the | ||
| 1331 | current function name continuously in the mode line, as you move | ||
| 1332 | around in a buffer. | ||
| 1333 | |||
| 1334 | Which Function mode is effective in major modes which support Imenu. | ||
| 1335 | |||
| 1336 | *** Gametree is a major mode for editing game analysis trees. The author | ||
| 1337 | uses it for keeping notes about his postal Chess games, but it should | ||
| 1338 | be helpful for other two-player games as well, as long as they have an | ||
| 1339 | established system of notation similar to Chess. | ||
| 1340 | |||
| 1341 | *** The new minor mode checkdoc-minor-mode provides Emacs Lisp | ||
| 1342 | documentation string checking for style and spelling. The style | ||
| 1343 | guidelines are found in the Emacs Lisp programming manual. | ||
| 1344 | |||
| 1345 | *** The net-utils package makes some common networking features | ||
| 1346 | available in Emacs. Some of these functions are wrappers around | ||
| 1347 | system utilities (ping, nslookup, etc.); others are implementations of | ||
| 1348 | simple protocols (finger, whois) in Emacs Lisp. There are also | ||
| 1349 | functions to make simple connections to TCP/IP ports for debugging and | ||
| 1350 | the like. | ||
| 1351 | |||
| 1352 | *** highlight-changes-mode is a minor mode that uses colors to | ||
| 1353 | identify recently changed parts of the buffer text. | ||
| 1354 | |||
| 1355 | *** The new package `midnight' lets you specify things to be done | ||
| 1356 | within Emacs at midnight--by default, kill buffers that you have not | ||
| 1357 | used in a considerable time. To use this feature, customize | ||
| 1358 | the user option `midnight-mode' to t. | ||
| 1359 | |||
| 1360 | *** The file generic-x.el defines a number of simple major modes. | ||
| 1361 | |||
| 1362 | apache-generic-mode: For Apache and NCSA httpd configuration files | ||
| 1363 | samba-generic-mode: Samba configuration files | ||
| 1364 | fvwm-generic-mode: For fvwm initialization files | ||
| 1365 | x-resource-generic-mode: For X resource files | ||
| 1366 | hosts-generic-mode: For hosts files (.rhosts, /etc/hosts, etc.) | ||
| 1367 | mailagent-rules-generic-mode: For mailagent .rules files | ||
| 1368 | javascript-generic-mode: For JavaScript files | ||
| 1369 | vrml-generic-mode: For VRML files | ||
| 1370 | java-manifest-generic-mode: For Java MANIFEST files | ||
| 1371 | java-properties-generic-mode: For Java property files | ||
| 1372 | mailrc-generic-mode: For .mailrc files | ||
| 1373 | |||
| 1374 | Platform-specific modes: | ||
| 1375 | |||
| 1376 | prototype-generic-mode: For Solaris/Sys V prototype files | ||
| 1377 | pkginfo-generic-mode: For Solaris/Sys V pkginfo files | ||
| 1378 | alias-generic-mode: For C shell alias files | ||
| 1379 | inf-generic-mode: For MS-Windows INF files | ||
| 1380 | ini-generic-mode: For MS-Windows INI files | ||
| 1381 | reg-generic-mode: For MS-Windows Registry files | ||
| 1382 | bat-generic-mode: For MS-Windows BAT scripts | ||
| 1383 | rc-generic-mode: For MS-Windows Resource files | ||
| 1384 | rul-generic-mode: For InstallShield scripts | ||
| 1385 | |||
| 1386 | |||
| 1387 | * Lisp changes in Emacs 20.3 since the Emacs Lisp Manual was published | ||
| 1388 | |||
| 1389 | ** If you want a Lisp file to be read in unibyte mode, | ||
| 1390 | use -*-unibyte: t;-*- on its first line. | ||
| 1391 | That will force Emacs to read that file in unibyte mode. | ||
| 1392 | Otherwise, the file will be loaded and byte-compiled in multibyte mode. | ||
| 1393 | |||
| 1394 | Thus, each lisp file is read in a consistent way regardless of whether | ||
| 1395 | you started Emacs with --unibyte, so that a Lisp program gives | ||
| 1396 | consistent results regardless of how Emacs was started. | ||
| 1397 | |||
| 1398 | ** The new function assoc-default is useful for searching an alist, | ||
| 1399 | and using a default value if the key is not found there. You can | ||
| 1400 | specify a comparison predicate, so this function is useful for | ||
| 1401 | searching comparing a string against an alist of regular expressions. | ||
| 1402 | |||
| 1403 | ** The functions unibyte-char-to-multibyte and | ||
| 1404 | multibyte-char-to-unibyte convert between unibyte and multibyte | ||
| 1405 | character codes, in a way that is appropriate for the current language | ||
| 1406 | environment. | ||
| 1407 | |||
| 1408 | ** The functions read-event, read-char and read-char-exclusive now | ||
| 1409 | take two optional arguments. PROMPT, if non-nil, specifies a prompt | ||
| 1410 | string. SUPPRESS-INPUT-METHOD, if non-nil, says to disable the | ||
| 1411 | current input method for reading this one event. | ||
| 1412 | |||
| 1413 | ** Two new variables print-escape-nonascii and print-escape-multibyte | ||
| 1414 | now control whether to output certain characters as | ||
| 1415 | backslash-sequences. print-escape-nonascii applies to single-byte | ||
| 1416 | non-ASCII characters; print-escape-multibyte applies to multibyte | ||
| 1417 | characters. Both of these variables are used only when printing | ||
| 1418 | in readable fashion (prin1 uses them, princ does not). | ||
| 1419 | |||
| 1420 | |||
| 1421 | * Lisp changes in Emacs 20.3 before the Emacs Lisp Manual was published | ||
| 1422 | |||
| 1423 | ** Compiled Emacs Lisp files made with the modified "MBSK" version | ||
| 1424 | of Emacs 20.2 do not work in Emacs 20.3. | ||
| 1425 | |||
| 1426 | ** Buffer positions are now measured in characters, as they were | ||
| 1427 | in Emacs 19 and before. This means that (forward-char 1) | ||
| 1428 | always increases point by 1. | ||
| 1429 | |||
| 1430 | The function chars-in-region now just subtracts its arguments. It is | ||
| 1431 | considered obsolete. The function char-boundary-p has been deleted. | ||
| 1432 | |||
| 1433 | See below for additional changes relating to multibyte characters. | ||
| 1434 | |||
| 1435 | ** defcustom, defface and defgroup now accept the keyword `:version'. | ||
| 1436 | Use this to specify in which version of Emacs a certain variable's | ||
| 1437 | default value changed. For example, | ||
| 1438 | |||
| 1439 | (defcustom foo-max 34 "*Maximum number of foo's allowed." | ||
| 1440 | :type 'integer | ||
| 1441 | :group 'foo | ||
| 1442 | :version "20.3") | ||
| 1443 | |||
| 1444 | (defgroup foo-group nil "The foo group." | ||
| 1445 | :version "20.3") | ||
| 1446 | |||
| 1447 | If an entire new group is added or the variables in it have the | ||
| 1448 | default values changed, then just add a `:version' to that group. It | ||
| 1449 | is recommended that new packages added to the distribution contain a | ||
| 1450 | `:version' in the top level group. | ||
| 1451 | |||
| 1452 | This information is used to control the customize-changed-options command. | ||
| 1453 | |||
| 1454 | ** It is now an error to change the value of a symbol whose name | ||
| 1455 | starts with a colon--if it is interned in the standard obarray. | ||
| 1456 | |||
| 1457 | However, setting such a symbol to its proper value, which is that | ||
| 1458 | symbol itself, is not an error. This is for the sake of programs that | ||
| 1459 | support previous Emacs versions by explicitly setting these variables | ||
| 1460 | to themselves. | ||
| 1461 | |||
| 1462 | If you set the variable keyword-symbols-constant-flag to nil, | ||
| 1463 | this error is suppressed, and you can set these symbols to any | ||
| 1464 | values whatever. | ||
| 1465 | |||
| 1466 | ** There is a new debugger command, R. | ||
| 1467 | It evaluates an expression like e, but saves the result | ||
| 1468 | in the buffer *Debugger-record*. | ||
| 1469 | |||
| 1470 | ** Frame-local variables. | ||
| 1471 | |||
| 1472 | You can now make a variable local to various frames. To do this, call | ||
| 1473 | the function make-variable-frame-local; this enables frames to have | ||
| 1474 | local bindings for that variable. | ||
| 1475 | |||
| 1476 | These frame-local bindings are actually frame parameters: you create a | ||
| 1477 | frame-local binding in a specific frame by calling | ||
| 1478 | modify-frame-parameters and specifying the variable name as the | ||
| 1479 | parameter name. | ||
| 1480 | |||
| 1481 | Buffer-local bindings take precedence over frame-local bindings. | ||
| 1482 | Thus, if the current buffer has a buffer-local binding, that binding is | ||
| 1483 | active; otherwise, if the selected frame has a frame-local binding, | ||
| 1484 | that binding is active; otherwise, the default binding is active. | ||
| 1485 | |||
| 1486 | It would not be hard to implement window-local bindings, but it is not | ||
| 1487 | clear that this would be very useful; windows tend to come and go in a | ||
| 1488 | very transitory fashion, so that trying to produce any specific effect | ||
| 1489 | through a window-local binding would not be very robust. | ||
| 1490 | |||
| 1491 | ** `sregexq' and `sregex' are two new functions for constructing | ||
| 1492 | "symbolic regular expressions." These are Lisp expressions that, when | ||
| 1493 | evaluated, yield conventional string-based regexps. The symbolic form | ||
| 1494 | makes it easier to construct, read, and maintain complex patterns. | ||
| 1495 | See the documentation in sregex.el. | ||
| 1496 | |||
| 1497 | ** parse-partial-sexp's return value has an additional element which | ||
| 1498 | is used to pass information along if you pass it to another call to | ||
| 1499 | parse-partial-sexp, starting its scan where the first call ended. | ||
| 1500 | The contents of this field are not yet finalized. | ||
| 1501 | |||
| 1502 | ** eval-region now accepts a fourth optional argument READ-FUNCTION. | ||
| 1503 | If it is non-nil, that function is used instead of `read'. | ||
| 1504 | |||
| 1505 | ** unload-feature by default removes the feature's functions from | ||
| 1506 | known hooks to avoid trouble, but a package providing FEATURE can | ||
| 1507 | define a hook FEATURE-unload-hook to be run by unload-feature instead. | ||
| 1508 | |||
| 1509 | ** read-from-minibuffer no longer returns the argument DEFAULT-VALUE | ||
| 1510 | when the user enters empty input. It now returns the null string, as | ||
| 1511 | it did in Emacs 19. The default value is made available in the | ||
| 1512 | history via M-n, but it is not applied here as a default. | ||
| 1513 | |||
| 1514 | The other, more specialized minibuffer-reading functions continue to | ||
| 1515 | return the default value (not the null string) when the user enters | ||
| 1516 | empty input. | ||
| 1517 | |||
| 1518 | ** The new variable read-buffer-function controls which routine to use | ||
| 1519 | for selecting buffers. For example, if you set this variable to | ||
| 1520 | `iswitchb-read-buffer', iswitchb will be used to read buffer names. | ||
| 1521 | Other functions can also be used if they accept the same arguments as | ||
| 1522 | `read-buffer' and return the selected buffer name as a string. | ||
| 1523 | |||
| 1524 | ** The new function read-passwd reads a password from the terminal, | ||
| 1525 | echoing a period for each character typed. It takes three arguments: | ||
| 1526 | a prompt string, a flag which says "read it twice to make sure", and a | ||
| 1527 | default password to use if the user enters nothing. | ||
| 1528 | |||
| 1529 | ** The variable fill-nobreak-predicate gives major modes a way to | ||
| 1530 | specify not to break a line at certain places. Its value is a | ||
| 1531 | function which is called with no arguments, with point located at the | ||
| 1532 | place where a break is being considered. If the function returns | ||
| 1533 | non-nil, then the line won't be broken there. | ||
| 1534 | |||
| 1535 | ** window-end now takes an optional second argument, UPDATE. | ||
| 1536 | If this is non-nil, then the function always returns an accurate | ||
| 1537 | up-to-date value for the buffer position corresponding to the | ||
| 1538 | end of the window, even if this requires computation. | ||
| 1539 | |||
| 1540 | ** other-buffer now takes an optional argument FRAME | ||
| 1541 | which specifies which frame's buffer list to use. | ||
| 1542 | If it is nil, that means use the selected frame's buffer list. | ||
| 1543 | |||
| 1544 | ** The new variable buffer-display-time, always local in every buffer, | ||
| 1545 | holds the value of (current-time) as of the last time that a window | ||
| 1546 | was directed to display this buffer. | ||
| 1547 | |||
| 1548 | ** It is now meaningful to compare two window-configuration objects | ||
| 1549 | with `equal'. Two window-configuration objects are equal if they | ||
| 1550 | describe equivalent arrangements of windows, in the same frame--in | ||
| 1551 | other words, if they would give the same results if passed to | ||
| 1552 | set-window-configuration. | ||
| 1553 | |||
| 1554 | ** compare-window-configurations is a new function that compares two | ||
| 1555 | window configurations loosely. It ignores differences in saved buffer | ||
| 1556 | positions and scrolling, and considers only the structure and sizes of | ||
| 1557 | windows and the choice of buffers to display. | ||
| 1558 | |||
| 1559 | ** The variable minor-mode-overriding-map-alist allows major modes to | ||
| 1560 | override the key bindings of a minor mode. The elements of this alist | ||
| 1561 | look like the elements of minor-mode-map-alist: (VARIABLE . KEYMAP). | ||
| 1562 | |||
| 1563 | If the VARIABLE in an element of minor-mode-overriding-map-alist has a | ||
| 1564 | non-nil value, the paired KEYMAP is active, and totally overrides the | ||
| 1565 | map (if any) specified for the same variable in minor-mode-map-alist. | ||
| 1566 | |||
| 1567 | minor-mode-overriding-map-alist is automatically local in all buffers, | ||
| 1568 | and it is meant to be set by major modes. | ||
| 1569 | |||
| 1570 | ** The function match-string-no-properties is like match-string | ||
| 1571 | except that it discards all text properties from the result. | ||
| 1572 | |||
| 1573 | ** The function load-average now accepts an optional argument | ||
| 1574 | USE-FLOATS. If it is non-nil, the load average values are returned as | ||
| 1575 | floating point numbers, rather than as integers to be divided by 100. | ||
| 1576 | |||
| 1577 | ** The new variable temporary-file-directory specifies the directory | ||
| 1578 | to use for creating temporary files. The default value is determined | ||
| 1579 | in a reasonable way for your operating system; on GNU and Unix systems | ||
| 1580 | it is based on the TMP and TMPDIR environment variables. | ||
| 1581 | |||
| 1582 | ** Menu changes | ||
| 1583 | |||
| 1584 | *** easymenu.el now uses the new menu item format and supports the | ||
| 1585 | keywords :visible and :filter. The existing keyword :keys is now | ||
| 1586 | better supported. | ||
| 1587 | |||
| 1588 | The variable `easy-menu-precalculate-equivalent-keybindings' controls | ||
| 1589 | a new feature which calculates keyboard equivalents for the menu when | ||
| 1590 | you define the menu. The default is t. If you rarely use menus, you | ||
| 1591 | can set the variable to nil to disable this precalculation feature; | ||
| 1592 | then the calculation is done only if you use the menu bar. | ||
| 1593 | |||
| 1594 | *** A new format for menu items is supported. | ||
| 1595 | |||
| 1596 | In a keymap, a key binding that has the format | ||
| 1597 | (STRING . REAL-BINDING) or (STRING HELP-STRING . REAL-BINDING) | ||
| 1598 | defines a menu item. Now a menu item definition may also be a list that | ||
| 1599 | starts with the symbol `menu-item'. | ||
| 1600 | |||
| 1601 | The format is: | ||
| 1602 | (menu-item ITEM-NAME) or | ||
| 1603 | (menu-item ITEM-NAME REAL-BINDING . ITEM-PROPERTY-LIST) | ||
| 1604 | where ITEM-NAME is an expression which evaluates to the menu item | ||
| 1605 | string, and ITEM-PROPERTY-LIST has the form of a property list. | ||
| 1606 | The supported properties include | ||
| 1607 | |||
| 1608 | :enable FORM Evaluate FORM to determine whether the | ||
| 1609 | item is enabled. | ||
| 1610 | :visible FORM Evaluate FORM to determine whether the | ||
| 1611 | item should appear in the menu. | ||
| 1612 | :filter FILTER-FN | ||
| 1613 | FILTER-FN is a function of one argument, | ||
| 1614 | which will be REAL-BINDING. | ||
| 1615 | It should return a binding to use instead. | ||
| 1616 | :keys DESCRIPTION | ||
| 1617 | DESCRIPTION is a string that describes an equivalent keyboard | ||
| 1618 | binding for REAL-BINDING. DESCRIPTION is expanded with | ||
| 1619 | `substitute-command-keys' before it is used. | ||
| 1620 | :key-sequence KEY-SEQUENCE | ||
| 1621 | KEY-SEQUENCE is a key-sequence for an equivalent | ||
| 1622 | keyboard binding. | ||
| 1623 | :key-sequence nil | ||
| 1624 | This means that the command normally has no | ||
| 1625 | keyboard equivalent. | ||
| 1626 | :help HELP HELP is the extra help string (not currently used). | ||
| 1627 | :button (TYPE . SELECTED) | ||
| 1628 | TYPE is :toggle or :radio. | ||
| 1629 | SELECTED is a form, to be evaluated, and its | ||
| 1630 | value says whether this button is currently selected. | ||
| 1631 | |||
| 1632 | Buttons are at the moment only simulated by prefixes in the menu. | ||
| 1633 | Eventually ordinary X-buttons may be supported. | ||
| 1634 | |||
| 1635 | (menu-item ITEM-NAME) defines unselectable item. | ||
| 1636 | |||
| 1637 | ** New event types | ||
| 1638 | |||
| 1639 | *** The new event type `mouse-wheel' is generated by a wheel on a | ||
| 1640 | mouse (such as the MS Intellimouse). The event contains a delta that | ||
| 1641 | corresponds to the amount and direction that the wheel is rotated, | ||
| 1642 | which is typically used to implement a scroll or zoom. The format is: | ||
| 1643 | |||
| 1644 | (mouse-wheel POSITION DELTA) | ||
| 1645 | |||
| 1646 | where POSITION is a list describing the position of the event in the | ||
| 1647 | same format as a mouse-click event, and DELTA is a signed number | ||
| 1648 | indicating the number of increments by which the wheel was rotated. A | ||
| 1649 | negative DELTA indicates that the wheel was rotated backwards, towards | ||
| 1650 | the user, and a positive DELTA indicates that the wheel was rotated | ||
| 1651 | forward, away from the user. | ||
| 1652 | |||
| 1653 | As of now, this event type is generated only on MS Windows. | ||
| 1654 | |||
| 1655 | *** The new event type `drag-n-drop' is generated when a group of | ||
| 1656 | files is selected in an application outside of Emacs, and then dragged | ||
| 1657 | and dropped onto an Emacs frame. The event contains a list of | ||
| 1658 | filenames that were dragged and dropped, which are then typically | ||
| 1659 | loaded into Emacs. The format is: | ||
| 1660 | |||
| 1661 | (drag-n-drop POSITION FILES) | ||
| 1662 | |||
| 1663 | where POSITION is a list describing the position of the event in the | ||
| 1664 | same format as a mouse-click event, and FILES is the list of filenames | ||
| 1665 | that were dragged and dropped. | ||
| 1666 | |||
| 1667 | As of now, this event type is generated only on MS Windows. | ||
| 1668 | |||
| 1669 | ** Changes relating to multibyte characters. | ||
| 1670 | |||
| 1671 | *** The variable enable-multibyte-characters is now read-only; | ||
| 1672 | any attempt to set it directly signals an error. The only way | ||
| 1673 | to change this value in an existing buffer is with set-buffer-multibyte. | ||
| 1674 | |||
| 1675 | *** In a string constant, `\ ' now stands for "nothing at all". You | ||
| 1676 | can use it to terminate a hex escape which is followed by a character | ||
| 1677 | that could otherwise be read as part of the hex escape. | ||
| 1678 | |||
| 1679 | *** String indices are now measured in characters, as they were | ||
| 1680 | in Emacs 19 and before. | ||
| 1681 | |||
| 1682 | The function chars-in-string has been deleted. | ||
| 1683 | The function concat-chars has been renamed to `string'. | ||
| 1684 | |||
| 1685 | *** The function set-buffer-multibyte sets the flag in the current | ||
| 1686 | buffer that says whether the buffer uses multibyte representation or | ||
| 1687 | unibyte representation. If the argument is nil, it selects unibyte | ||
| 1688 | representation. Otherwise it selects multibyte representation. | ||
| 1689 | |||
| 1690 | This function does not change the contents of the buffer, viewed | ||
| 1691 | as a sequence of bytes. However, it does change the contents | ||
| 1692 | viewed as characters; a sequence of two bytes which is treated as | ||
| 1693 | one character when the buffer uses multibyte representation | ||
| 1694 | will count as two characters using unibyte representation. | ||
| 1695 | |||
| 1696 | This function sets enable-multibyte-characters to record which | ||
| 1697 | representation is in use. It also adjusts various data in the buffer | ||
| 1698 | (including its markers, overlays and text properties) so that they are | ||
| 1699 | consistent with the new representation. | ||
| 1700 | |||
| 1701 | *** string-make-multibyte takes a string and converts it to multibyte | ||
| 1702 | representation. Most of the time, you don't need to care | ||
| 1703 | about the representation, because Emacs converts when necessary; | ||
| 1704 | however, it makes a difference when you compare strings. | ||
| 1705 | |||
| 1706 | The conversion of non-ASCII characters works by adding the value of | ||
| 1707 | nonascii-insert-offset to each character, or by translating them | ||
| 1708 | using the table nonascii-translation-table. | ||
| 1709 | |||
| 1710 | *** string-make-unibyte takes a string and converts it to unibyte | ||
| 1711 | representation. Most of the time, you don't need to care about the | ||
| 1712 | representation, but it makes a difference when you compare strings. | ||
| 1713 | |||
| 1714 | The conversion from multibyte to unibyte representation | ||
| 1715 | loses information; the only time Emacs performs it automatically | ||
| 1716 | is when inserting a multibyte string into a unibyte buffer. | ||
| 1717 | |||
| 1718 | *** string-as-multibyte takes a string, and returns another string | ||
| 1719 | which contains the same bytes, but treats them as multibyte. | ||
| 1720 | |||
| 1721 | *** string-as-unibyte takes a string, and returns another string | ||
| 1722 | which contains the same bytes, but treats them as unibyte. | ||
| 1723 | |||
| 1724 | *** The new function compare-strings lets you compare | ||
| 1725 | portions of two strings. Unibyte strings are converted to multibyte, | ||
| 1726 | so that a unibyte string can match a multibyte string. | ||
| 1727 | You can specify whether to ignore case or not. | ||
| 1728 | |||
| 1729 | *** assoc-ignore-case now uses compare-strings so that | ||
| 1730 | it can treat unibyte and multibyte strings as equal. | ||
| 1731 | |||
| 1732 | *** Regular expression operations and buffer string searches now | ||
| 1733 | convert the search pattern to multibyte or unibyte to accord with the | ||
| 1734 | buffer or string being searched. | ||
| 1735 | |||
| 1736 | One consequence is that you cannot always use \200-\377 inside of | ||
| 1737 | [...] to match all non-ASCII characters. This does still work when | ||
| 1738 | searching or matching a unibyte buffer or string, but not when | ||
| 1739 | searching or matching a multibyte string. Unfortunately, there is no | ||
| 1740 | obvious choice of syntax to use within [...] for that job. But, what | ||
| 1741 | you want is just to match all non-ASCII characters, the regular | ||
| 1742 | expression [^\0-\177] works for it. | ||
| 1743 | |||
| 1744 | *** Structure of coding system changed. | ||
| 1745 | |||
| 1746 | All coding systems (including aliases and subsidiaries) are named | ||
| 1747 | by symbols; the symbol's `coding-system' property is a vector | ||
| 1748 | which defines the coding system. Aliases share the same vector | ||
| 1749 | as the principal name, so that altering the contents of this | ||
| 1750 | vector affects the principal name and its aliases. You can define | ||
| 1751 | your own alias name of a coding system by the function | ||
| 1752 | define-coding-system-alias. | ||
| 1753 | |||
| 1754 | The coding system definition includes a property list of its own. Use | ||
| 1755 | the new functions `coding-system-get' and `coding-system-put' to | ||
| 1756 | access such coding system properties as post-read-conversion, | ||
| 1757 | pre-write-conversion, character-translation-table-for-decode, | ||
| 1758 | character-translation-table-for-encode, mime-charset, and | ||
| 1759 | safe-charsets. For instance, (coding-system-get 'iso-latin-1 | ||
| 1760 | 'mime-charset) gives the corresponding MIME-charset parameter | ||
| 1761 | `iso-8859-1'. | ||
| 1762 | |||
| 1763 | Among the coding system properties listed above, safe-charsets is new. | ||
| 1764 | The value of this property is a list of character sets which this | ||
| 1765 | coding system can correctly encode and decode. For instance: | ||
| 1766 | (coding-system-get 'iso-latin-1 'safe-charsets) => (ascii latin-iso8859-1) | ||
| 1767 | |||
| 1768 | Here, "correctly encode" means that the encoded character sets can | ||
| 1769 | also be handled safely by systems other than Emacs as far as they | ||
| 1770 | are capable of that coding system. Though, Emacs itself can encode | ||
| 1771 | the other character sets and read it back correctly. | ||
| 1772 | |||
| 1773 | *** The new function select-safe-coding-system can be used to find a | ||
| 1774 | proper coding system for encoding the specified region or string. | ||
| 1775 | This function requires a user interaction. | ||
| 1776 | |||
| 1777 | *** The new functions find-coding-systems-region and | ||
| 1778 | find-coding-systems-string are helper functions used by | ||
| 1779 | select-safe-coding-system. They return a list of all proper coding | ||
| 1780 | systems to encode a text in some region or string. If you don't want | ||
| 1781 | a user interaction, use one of these functions instead of | ||
| 1782 | select-safe-coding-system. | ||
| 1783 | |||
| 1784 | *** The explicit encoding and decoding functions, such as | ||
| 1785 | decode-coding-region and encode-coding-string, now set | ||
| 1786 | last-coding-system-used to reflect the actual way encoding or decoding | ||
| 1787 | was done. | ||
| 1788 | |||
| 1789 | *** The new function detect-coding-with-language-environment can be | ||
| 1790 | used to detect a coding system of text according to priorities of | ||
| 1791 | coding systems used by some specific language environment. | ||
| 1792 | |||
| 1793 | *** The functions detect-coding-region and detect-coding-string always | ||
| 1794 | return a list if the arg HIGHEST is nil. Thus, if only ASCII | ||
| 1795 | characters are found, they now return a list of single element | ||
| 1796 | `undecided' or its subsidiaries. | ||
| 1797 | |||
| 1798 | *** The new functions coding-system-change-eol-conversion and | ||
| 1799 | coding-system-change-text-conversion can be used to get a different | ||
| 1800 | coding system than what specified only in how end-of-line or text is | ||
| 1801 | converted. | ||
| 1802 | |||
| 1803 | *** The new function set-selection-coding-system can be used to set a | ||
| 1804 | coding system for communicating with other X clients. | ||
| 1805 | |||
| 1806 | *** The function `map-char-table' now passes as argument only valid | ||
| 1807 | character codes, plus generic characters that stand for entire | ||
| 1808 | character sets or entire subrows of a character set. In other words, | ||
| 1809 | each time `map-char-table' calls its FUNCTION argument, the key value | ||
| 1810 | either will be a valid individual character code, or will stand for a | ||
| 1811 | range of characters. | ||
| 1812 | |||
| 1813 | *** The new function `char-valid-p' can be used for checking whether a | ||
| 1814 | Lisp object is a valid character code or not. | ||
| 1815 | |||
| 1816 | *** The new function `charset-after' returns a charset of a character | ||
| 1817 | in the current buffer at position POS. | ||
| 1818 | |||
| 1819 | *** Input methods are now implemented using the variable | ||
| 1820 | input-method-function. If this is non-nil, its value should be a | ||
| 1821 | function; then, whenever Emacs reads an input event that is a printing | ||
| 1822 | character with no modifier bits, it calls that function, passing the | ||
| 1823 | event as an argument. Often this function will read more input, first | ||
| 1824 | binding input-method-function to nil. | ||
| 1825 | |||
| 1826 | The return value should be a list of the events resulting from input | ||
| 1827 | method processing. These events will be processed sequentially as | ||
| 1828 | input, before resorting to unread-command-events. Events returned by | ||
| 1829 | the input method function are not passed to the input method function, | ||
| 1830 | not even if they are printing characters with no modifier bits. | ||
| 1831 | |||
| 1832 | The input method function is not called when reading the second and | ||
| 1833 | subsequent events of a key sequence. | ||
| 1834 | |||
| 1835 | *** You can customize any language environment by using | ||
| 1836 | set-language-environment-hook and exit-language-environment-hook. | ||
| 1837 | |||
| 1838 | The hook `exit-language-environment-hook' should be used to undo | ||
| 1839 | customizations that you made with set-language-environment-hook. For | ||
| 1840 | instance, if you set up a special key binding for a specific language | ||
| 1841 | environment by set-language-environment-hook, you should set up | ||
| 1842 | exit-language-environment-hook to restore the normal key binding. | ||
| 1843 | |||
| 1844 | |||
| 1845 | |||
| 1846 | * Changes in Emacs 20.1 | ||
| 1847 | |||
| 1848 | ** Emacs has a new facility for customization of its many user | ||
| 1849 | options. It is called M-x customize. With this facility you can look | ||
| 1850 | at the many user options in an organized way; they are grouped into a | ||
| 1851 | tree structure. | ||
| 1852 | |||
| 1853 | M-x customize also knows what sorts of values are legitimate for each | ||
| 1854 | user option and ensures that you don't use invalid values. | ||
| 1855 | |||
| 1856 | With M-x customize, you can set options either for the present Emacs | ||
| 1857 | session or permanently. (Permanent settings are stored automatically | ||
| 1858 | in your .emacs file.) | ||
| 1859 | |||
| 1860 | ** Scroll bars are now on the left side of the window. | ||
| 1861 | You can change this with M-x customize-option scroll-bar-mode. | ||
| 1862 | |||
| 1863 | ** The mode line no longer includes the string `Emacs'. | ||
| 1864 | This makes more space in the mode line for other information. | ||
| 1865 | |||
| 1866 | ** When you select a region with the mouse, it is highlighted | ||
| 1867 | immediately afterward. At that time, if you type the DELETE key, it | ||
| 1868 | kills the region. | ||
| 1869 | |||
| 1870 | The BACKSPACE key, and the ASCII character DEL, do not do this; they | ||
| 1871 | delete the character before point, as usual. | ||
| 1872 | |||
| 1873 | ** In an incremental search the whole current match is highlighted | ||
| 1874 | on terminals which support this. (You can disable this feature | ||
| 1875 | by setting search-highlight to nil.) | ||
| 1876 | |||
| 1877 | ** In the minibuffer, in some cases, you can now use M-n to | ||
| 1878 | insert the default value into the minibuffer as text. In effect, | ||
| 1879 | the default value (if the minibuffer routines know it) is tacked | ||
| 1880 | onto the history "in the future". (The more normal use of the | ||
| 1881 | history list is to use M-p to insert minibuffer input used in the | ||
| 1882 | past.) | ||
| 1883 | |||
| 1884 | ** In Text mode, now only blank lines separate paragraphs. | ||
| 1885 | This makes it possible to get the full benefit of Adaptive Fill mode | ||
| 1886 | in Text mode, and other modes derived from it (such as Mail mode). | ||
| 1887 | TAB in Text mode now runs the command indent-relative; this | ||
| 1888 | makes a practical difference only when you use indented paragraphs. | ||
| 1889 | |||
| 1890 | As a result, the old Indented Text mode is now identical to Text mode, | ||
| 1891 | and is an alias for it. | ||
| 1892 | |||
| 1893 | If you want spaces at the beginning of a line to start a paragraph, | ||
| 1894 | use the new mode, Paragraph Indent Text mode. | ||
| 1895 | |||
| 1896 | ** Scrolling changes | ||
| 1897 | |||
| 1898 | *** Scroll commands to scroll a whole screen now preserve the screen | ||
| 1899 | position of the cursor, if scroll-preserve-screen-position is non-nil. | ||
| 1900 | |||
| 1901 | In this mode, if you scroll several screens back and forth, finishing | ||
| 1902 | on the same screen where you started, the cursor goes back to the line | ||
| 1903 | where it started. | ||
| 1904 | |||
| 1905 | *** If you set scroll-conservatively to a small number, then when you | ||
| 1906 | move point a short distance off the screen, Emacs will scroll the | ||
| 1907 | screen just far enough to bring point back on screen, provided that | ||
| 1908 | does not exceed `scroll-conservatively' lines. | ||
| 1909 | |||
| 1910 | *** The new variable scroll-margin says how close point can come to the | ||
| 1911 | top or bottom of a window. It is a number of screen lines; if point | ||
| 1912 | comes within that many lines of the top or bottom of the window, Emacs | ||
| 1913 | recenters the window. | ||
| 1914 | |||
| 1915 | ** International character set support (MULE) | ||
| 1916 | |||
| 1917 | Emacs now supports a wide variety of international character sets, | ||
| 1918 | including European variants of the Latin alphabet, as well as Chinese, | ||
| 1919 | Devanagari (Hindi and Marathi), Ethiopian, Greek, IPA, Japanese, | ||
| 1920 | Korean, Lao, Russian, Thai, Tibetan, and Vietnamese scripts. These | ||
| 1921 | features have been merged from the modified version of Emacs known as | ||
| 1922 | MULE (for "MULti-lingual Enhancement to GNU Emacs") | ||
| 1923 | |||
| 1924 | Users of these scripts have established many more-or-less standard | ||
| 1925 | coding systems for storing files. Emacs uses a single multibyte | ||
| 1926 | character encoding within Emacs buffers; it can translate from a wide | ||
| 1927 | variety of coding systems when reading a file and can translate back | ||
| 1928 | into any of these coding systems when saving a file. | ||
| 1929 | |||
| 1930 | Keyboards, even in the countries where these character sets are used, | ||
| 1931 | generally don't have keys for all the characters in them. So Emacs | ||
| 1932 | supports various "input methods", typically one for each script or | ||
| 1933 | language, to make it possible to type them. | ||
| 1934 | |||
| 1935 | The Emacs internal multibyte encoding represents a non-ASCII | ||
| 1936 | character as a sequence of bytes in the range 0200 through 0377. | ||
| 1937 | |||
| 1938 | The new prefix key C-x RET is used for commands that pertain | ||
| 1939 | to multibyte characters, coding systems, and input methods. | ||
| 1940 | |||
| 1941 | You can disable multibyte character support as follows: | ||
| 1942 | |||
| 1943 | (setq-default enable-multibyte-characters nil) | ||
| 1944 | |||
| 1945 | Calling the function standard-display-european turns off multibyte | ||
| 1946 | characters, unless you specify a non-nil value for the second | ||
| 1947 | argument, AUTO. This provides compatibility for people who are | ||
| 1948 | already using standard-display-european to continue using unibyte | ||
| 1949 | characters for their work until they want to change. | ||
| 1950 | |||
| 1951 | *** Input methods | ||
| 1952 | |||
| 1953 | An input method is a kind of character conversion which is designed | ||
| 1954 | specifically for interactive input. In Emacs, typically each language | ||
| 1955 | has its own input method (though sometimes several languages which use | ||
| 1956 | the same characters can share one input method). Some languages | ||
| 1957 | support several input methods. | ||
| 1958 | |||
| 1959 | The simplest kind of input method works by mapping ASCII letters into | ||
| 1960 | another alphabet. This is how the Greek and Russian input methods | ||
| 1961 | work. | ||
| 1962 | |||
| 1963 | A more powerful technique is composition: converting sequences of | ||
| 1964 | characters into one letter. Many European input methods use | ||
| 1965 | composition to produce a single non-ASCII letter from a sequence which | ||
| 1966 | consists of a letter followed by diacritics. For example, a' is one | ||
| 1967 | sequence of two characters that might be converted into a single | ||
| 1968 | letter. | ||
| 1969 | |||
| 1970 | The input methods for syllabic scripts typically use mapping followed | ||
| 1971 | by conversion. The input methods for Thai and Korean work this way. | ||
| 1972 | First, letters are mapped into symbols for particular sounds or tone | ||
| 1973 | marks; then, sequences of these which make up a whole syllable are | ||
| 1974 | mapped into one syllable sign--most often a "composite character". | ||
| 1975 | |||
| 1976 | None of these methods works very well for Chinese and Japanese, so | ||
| 1977 | they are handled specially. First you input a whole word using | ||
| 1978 | phonetic spelling; then, after the word is in the buffer, Emacs | ||
| 1979 | converts it into one or more characters using a large dictionary. | ||
| 1980 | |||
| 1981 | Since there is more than one way to represent a phonetically spelled | ||
| 1982 | word using Chinese characters, Emacs can only guess which one to use; | ||
| 1983 | typically these input methods give you a way to say "guess again" if | ||
| 1984 | the first guess is wrong. | ||
| 1985 | |||
| 1986 | *** The command C-x RET m (toggle-enable-multibyte-characters) | ||
| 1987 | turns multibyte character support on or off for the current buffer. | ||
| 1988 | |||
| 1989 | If multibyte character support is turned off in a buffer, then each | ||
| 1990 | byte is a single character, even codes 0200 through 0377--exactly as | ||
| 1991 | they did in Emacs 19.34. This includes the features for support for | ||
| 1992 | the European characters, ISO Latin-1 and ISO Latin-2. | ||
| 1993 | |||
| 1994 | However, there is no need to turn off multibyte character support to | ||
| 1995 | use ISO Latin-1 or ISO Latin-2; the Emacs multibyte character set | ||
| 1996 | includes all the characters in these character sets, and Emacs can | ||
| 1997 | translate automatically to and from either one. | ||
| 1998 | |||
| 1999 | *** Visiting a file in unibyte mode. | ||
| 2000 | |||
| 2001 | Turning off multibyte character support in the buffer after visiting a | ||
| 2002 | file with multibyte code conversion will display the multibyte | ||
| 2003 | sequences already in the buffer, byte by byte. This is probably not | ||
| 2004 | what you want. | ||
| 2005 | |||
| 2006 | If you want to edit a file of unibyte characters (Latin-1, for | ||
| 2007 | example), you can do it by specifying `no-conversion' as the coding | ||
| 2008 | system when reading the file. This coding system also turns off | ||
| 2009 | multibyte characters in that buffer. | ||
| 2010 | |||
| 2011 | If you turn off multibyte character support entirely, this turns off | ||
| 2012 | character conversion as well. | ||
| 2013 | |||
| 2014 | *** Displaying international characters on X Windows. | ||
| 2015 | |||
| 2016 | A font for X typically displays just one alphabet or script. | ||
| 2017 | Therefore, displaying the entire range of characters Emacs supports | ||
| 2018 | requires using many fonts. | ||
| 2019 | |||
| 2020 | Therefore, Emacs now supports "fontsets". Each fontset is a | ||
| 2021 | collection of fonts, each assigned to a range of character codes. | ||
| 2022 | |||
| 2023 | A fontset has a name, like a font. Individual fonts are defined by | ||
| 2024 | the X server; fontsets are defined within Emacs itself. But once you | ||
| 2025 | have defined a fontset, you can use it in a face or a frame just as | ||
| 2026 | you would use a font. | ||
| 2027 | |||
| 2028 | If a fontset specifies no font for a certain character, or if it | ||
| 2029 | specifies a font that does not exist on your system, then it cannot | ||
| 2030 | display that character. It will display an empty box instead. | ||
| 2031 | |||
| 2032 | The fontset height and width are determined by the ASCII characters | ||
| 2033 | (that is, by the font in the fontset which is used for ASCII | ||
| 2034 | characters). | ||
| 2035 | |||
| 2036 | *** Defining fontsets. | ||
| 2037 | |||
| 2038 | Emacs does not use any fontset by default. Its default font is still | ||
| 2039 | chosen as in previous versions. You can tell Emacs to use a fontset | ||
| 2040 | with the `-fn' option or the `Font' X resource. | ||
| 2041 | |||
| 2042 | Emacs creates a standard fontset automatically according to the value | ||
| 2043 | of standard-fontset-spec. This fontset's short name is | ||
| 2044 | `fontset-standard'. Bold, italic, and bold-italic variants of the | ||
| 2045 | standard fontset are created automatically. | ||
| 2046 | |||
| 2047 | If you specify a default ASCII font with the `Font' resource or `-fn' | ||
| 2048 | argument, a fontset is generated from it. This works by replacing the | ||
| 2049 | FOUNDARY, FAMILY, ADD_STYLE, and AVERAGE_WIDTH fields of the font name | ||
| 2050 | with `*' then using this to specify a fontset. This fontset's short | ||
| 2051 | name is `fontset-startup'. | ||
| 2052 | |||
| 2053 | Emacs checks resources of the form Fontset-N where N is 0, 1, 2... | ||
| 2054 | The resource value should have this form: | ||
| 2055 | FONTSET-NAME, [CHARSET-NAME:FONT-NAME]... | ||
| 2056 | FONTSET-NAME should have the form of a standard X font name, except: | ||
| 2057 | * most fields should be just the wild card "*". | ||
| 2058 | * the CHARSET_REGISTRY field should be "fontset" | ||
| 2059 | * the CHARSET_ENCODING field can be any nickname of the fontset. | ||
| 2060 | The construct CHARSET-NAME:FONT-NAME can be repeated any number | ||
| 2061 | of times; each time specifies the font for one character set. | ||
| 2062 | CHARSET-NAME should be the name of a character set, and FONT-NAME | ||
| 2063 | should specify an actual font to use for that character set. | ||
| 2064 | |||
| 2065 | Each of these fontsets has an alias which is made from the | ||
| 2066 | last two font name fields, CHARSET_REGISTRY and CHARSET_ENCODING. | ||
| 2067 | You can refer to the fontset by that alias or by its full name. | ||
| 2068 | |||
| 2069 | For any character sets that you don't mention, Emacs tries to choose a | ||
| 2070 | font by substituting into FONTSET-NAME. For instance, with the | ||
| 2071 | following resource, | ||
| 2072 | Emacs*Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24 | ||
| 2073 | the font for ASCII is generated as below: | ||
| 2074 | -*-fixed-medium-r-normal-*-24-*-ISO8859-1 | ||
| 2075 | Here is the substitution rule: | ||
| 2076 | Change CHARSET_REGISTRY and CHARSET_ENCODING to that of the charset | ||
| 2077 | defined in the variable x-charset-registries. For instance, ASCII has | ||
| 2078 | the entry (ascii . "ISO8859-1") in this variable. Then, reduce | ||
| 2079 | sequences of wild cards -*-...-*- with a single wildcard -*-. | ||
| 2080 | (This is to prevent use of auto-scaled fonts.) | ||
| 2081 | |||
| 2082 | The function which processes the fontset resource value to create the | ||
| 2083 | fontset is called create-fontset-from-fontset-spec. You can also call | ||
| 2084 | that function explicitly to create a fontset. | ||
| 2085 | |||
| 2086 | With the X resource Emacs.Font, you can specify a fontset name just | ||
| 2087 | like an actual font name. But be careful not to specify a fontset | ||
| 2088 | name in a wildcard resource like Emacs*Font--that tries to specify the | ||
| 2089 | fontset for other purposes including menus, and they cannot handle | ||
| 2090 | fontsets. | ||
| 2091 | |||
| 2092 | *** The command M-x set-language-environment sets certain global Emacs | ||
| 2093 | defaults for a particular choice of language. | ||
| 2094 | |||
| 2095 | Selecting a language environment typically specifies a default input | ||
| 2096 | method and which coding systems to recognize automatically when | ||
| 2097 | visiting files. However, it does not try to reread files you have | ||
| 2098 | already visited; the text in those buffers is not affected. The | ||
| 2099 | language environment may also specify a default choice of coding | ||
| 2100 | system for new files that you create. | ||
| 2101 | |||
| 2102 | It makes no difference which buffer is current when you use | ||
| 2103 | set-language-environment, because these defaults apply globally to the | ||
| 2104 | whole Emacs session. | ||
| 2105 | |||
| 2106 | For example, M-x set-language-environment RET Latin-1 RET | ||
| 2107 | chooses the Latin-1 character set. In the .emacs file, you can do this | ||
| 2108 | with (set-language-environment "Latin-1"). | ||
| 2109 | |||
| 2110 | *** The command C-x RET f (set-buffer-file-coding-system) | ||
| 2111 | specifies the file coding system for the current buffer. This | ||
| 2112 | specifies what sort of character code translation to do when saving | ||
| 2113 | the file. As an argument, you must specify the name of one of the | ||
| 2114 | coding systems that Emacs supports. | ||
| 2115 | |||
| 2116 | *** The command C-x RET c (universal-coding-system-argument) | ||
| 2117 | lets you specify a coding system when you read or write a file. | ||
| 2118 | This command uses the minibuffer to read a coding system name. | ||
| 2119 | After you exit the minibuffer, the specified coding system | ||
| 2120 | is used for *the immediately following command*. | ||
| 2121 | |||
| 2122 | So if the immediately following command is a command to read or | ||
| 2123 | write a file, it uses the specified coding system for that file. | ||
| 2124 | |||
| 2125 | If the immediately following command does not use the coding system, | ||
| 2126 | then C-x RET c ultimately has no effect. | ||
| 2127 | |||
| 2128 | For example, C-x RET c iso-8859-1 RET C-x C-f temp RET | ||
| 2129 | visits the file `temp' treating it as ISO Latin-1. | ||
| 2130 | |||
| 2131 | *** You can specify the coding system for a file using the -*- | ||
| 2132 | construct. Include `coding: CODINGSYSTEM;' inside the -*-...-*- | ||
| 2133 | to specify use of coding system CODINGSYSTEM. You can also | ||
| 2134 | specify the coding system in a local variable list at the end | ||
| 2135 | of the file. | ||
| 2136 | |||
| 2137 | *** The command C-x RET t (set-terminal-coding-system) specifies | ||
| 2138 | the coding system for terminal output. If you specify a character | ||
| 2139 | code for terminal output, all characters output to the terminal are | ||
| 2140 | translated into that character code. | ||
| 2141 | |||
| 2142 | This feature is useful for certain character-only terminals built in | ||
| 2143 | various countries to support the languages of those countries. | ||
| 2144 | |||
| 2145 | By default, output to the terminal is not translated at all. | ||
| 2146 | |||
| 2147 | *** The command C-x RET k (set-keyboard-coding-system) specifies | ||
| 2148 | the coding system for keyboard input. | ||
| 2149 | |||
| 2150 | Character code translation of keyboard input is useful for terminals | ||
| 2151 | with keys that send non-ASCII graphic characters--for example, | ||
| 2152 | some terminals designed for ISO Latin-1 or subsets of it. | ||
| 2153 | |||
| 2154 | By default, keyboard input is not translated at all. | ||
| 2155 | |||
| 2156 | Character code translation of keyboard input is similar to using an | ||
| 2157 | input method, in that both define sequences of keyboard input that | ||
| 2158 | translate into single characters. However, input methods are designed | ||
| 2159 | to be convenient for interactive use, while the code translations are | ||
| 2160 | designed to work with terminals. | ||
| 2161 | |||
| 2162 | *** The command C-x RET p (set-buffer-process-coding-system) | ||
| 2163 | specifies the coding system for input and output to a subprocess. | ||
| 2164 | This command applies to the current buffer; normally, each subprocess | ||
| 2165 | has its own buffer, and thus you can use this command to specify | ||
| 2166 | translation to and from a particular subprocess by giving the command | ||
| 2167 | in the corresponding buffer. | ||
| 2168 | |||
| 2169 | By default, process input and output are not translated at all. | ||
| 2170 | |||
| 2171 | *** The variable file-name-coding-system specifies the coding system | ||
| 2172 | to use for encoding file names before operating on them. | ||
| 2173 | It is also used for decoding file names obtained from the system. | ||
| 2174 | |||
| 2175 | *** The command C-\ (toggle-input-method) activates or deactivates | ||
| 2176 | an input method. If no input method has been selected before, the | ||
| 2177 | command prompts for you to specify the language and input method you | ||
| 2178 | want to use. | ||
| 2179 | |||
| 2180 | C-u C-\ (select-input-method) lets you switch to a different input | ||
| 2181 | method. C-h C-\ (or C-h I) describes the current input method. | ||
| 2182 | |||
| 2183 | *** Some input methods remap the keyboard to emulate various keyboard | ||
| 2184 | layouts commonly used for particular scripts. How to do this | ||
| 2185 | remapping properly depends on your actual keyboard layout. To specify | ||
| 2186 | which layout your keyboard has, use M-x quail-set-keyboard-layout. | ||
| 2187 | |||
| 2188 | *** The command C-h C (describe-coding-system) displays | ||
| 2189 | the coding systems currently selected for various purposes, plus | ||
| 2190 | related information. | ||
| 2191 | |||
| 2192 | *** The command C-h h (view-hello-file) displays a file called | ||
| 2193 | HELLO, which has examples of text in many languages, using various | ||
| 2194 | scripts. | ||
| 2195 | |||
| 2196 | *** The command C-h L (describe-language-support) displays | ||
| 2197 | information about the support for a particular language. | ||
| 2198 | You specify the language as an argument. | ||
| 2199 | |||
| 2200 | *** The mode line now contains a letter or character that identifies | ||
| 2201 | the coding system used in the visited file. It normally follows the | ||
| 2202 | first dash. | ||
| 2203 | |||
| 2204 | A dash indicates the default state of affairs: no code conversion | ||
| 2205 | (except CRLF => newline if appropriate). `=' means no conversion | ||
| 2206 | whatsoever. The ISO 8859 coding systems are represented by digits | ||
| 2207 | 1 through 9. Other coding systems are represented by letters: | ||
| 2208 | |||
| 2209 | A alternativnyj (Russian) | ||
| 2210 | B big5 (Chinese) | ||
| 2211 | C cn-gb-2312 (Chinese) | ||
| 2212 | C iso-2022-cn (Chinese) | ||
| 2213 | D in-is13194-devanagari (Indian languages) | ||
| 2214 | E euc-japan (Japanese) | ||
| 2215 | I iso-2022-cjk or iso-2022-ss2 (Chinese, Japanese, Korean) | ||
| 2216 | J junet (iso-2022-7) or old-jis (iso-2022-jp-1978-irv) (Japanese) | ||
| 2217 | K euc-korea (Korean) | ||
| 2218 | R koi8 (Russian) | ||
| 2219 | Q tibetan | ||
| 2220 | S shift_jis (Japanese) | ||
| 2221 | T lao | ||
| 2222 | T tis620 (Thai) | ||
| 2223 | V viscii or vscii (Vietnamese) | ||
| 2224 | i iso-2022-lock (Chinese, Japanese, Korean) | ||
| 2225 | k iso-2022-kr (Korean) | ||
| 2226 | v viqr (Vietnamese) | ||
| 2227 | z hz (Chinese) | ||
| 2228 | |||
| 2229 | When you are using a character-only terminal (not a window system), | ||
| 2230 | two additional characters appear in between the dash and the file | ||
| 2231 | coding system. These two characters describe the coding system for | ||
| 2232 | keyboard input, and the coding system for terminal output. | ||
| 2233 | |||
| 2234 | *** The new variable rmail-file-coding-system specifies the code | ||
| 2235 | conversion to use for RMAIL files. The default value is nil. | ||
| 2236 | |||
| 2237 | When you read mail with Rmail, each message is decoded automatically | ||
| 2238 | into Emacs' internal format. This has nothing to do with | ||
| 2239 | rmail-file-coding-system. That variable controls reading and writing | ||
| 2240 | Rmail files themselves. | ||
| 2241 | |||
| 2242 | *** The new variable sendmail-coding-system specifies the code | ||
| 2243 | conversion for outgoing mail. The default value is nil. | ||
| 2244 | |||
| 2245 | Actually, there are three different ways of specifying the coding system | ||
| 2246 | for sending mail: | ||
| 2247 | |||
| 2248 | - If you use C-x RET f in the mail buffer, that takes priority. | ||
| 2249 | - Otherwise, if you set sendmail-coding-system non-nil, that specifies it. | ||
| 2250 | - Otherwise, the default coding system for new files is used, | ||
| 2251 | if that is non-nil. That comes from your language environment. | ||
| 2252 | - Otherwise, Latin-1 is used. | ||
| 2253 | |||
| 2254 | *** The command C-h t (help-with-tutorial) accepts a prefix argument | ||
| 2255 | to specify the language for the tutorial file. Currently, English, | ||
| 2256 | Japanese, Korean and Thai are supported. We welcome additional | ||
| 2257 | translations. | ||
| 2258 | |||
| 2259 | ** An easy new way to visit a file with no code or format conversion | ||
| 2260 | of any kind: Use M-x find-file-literally. There is also a command | ||
| 2261 | insert-file-literally which inserts a file into the current buffer | ||
| 2262 | without any conversion. | ||
| 2263 | |||
| 2264 | ** C-q's handling of octal character codes is changed. | ||
| 2265 | You can now specify any number of octal digits. | ||
| 2266 | RET terminates the digits and is discarded; | ||
| 2267 | any other non-digit terminates the digits and is then used as input. | ||
| 2268 | |||
| 2269 | ** There are new commands for looking up Info documentation for | ||
| 2270 | functions, variables and file names used in your programs. | ||
| 2271 | |||
| 2272 | Type M-x info-lookup-symbol to look up a symbol in the buffer at point. | ||
| 2273 | Type M-x info-lookup-file to look up a file in the buffer at point. | ||
| 2274 | |||
| 2275 | Precisely which Info files are used to look it up depends on the major | ||
| 2276 | mode. For example, in C mode, the GNU libc manual is used. | ||
| 2277 | |||
| 2278 | ** M-TAB in most programming language modes now runs the command | ||
| 2279 | complete-symbol. This command performs completion on the symbol name | ||
| 2280 | in the buffer before point. | ||
| 2281 | |||
| 2282 | With a numeric argument, it performs completion based on the set of | ||
| 2283 | symbols documented in the Info files for the programming language that | ||
| 2284 | you are using. | ||
| 2285 | |||
| 2286 | With no argument, it does completion based on the current tags tables, | ||
| 2287 | just like the old binding of M-TAB (complete-tag). | ||
| 2288 | |||
| 2289 | ** File locking works with NFS now. | ||
| 2290 | |||
| 2291 | The lock file for FILENAME is now a symbolic link named .#FILENAME, | ||
| 2292 | in the same directory as FILENAME. | ||
| 2293 | |||
| 2294 | This means that collision detection between two different machines now | ||
| 2295 | works reasonably well; it also means that no file server or directory | ||
| 2296 | can become a bottleneck. | ||
| 2297 | |||
| 2298 | The new method does have drawbacks. It means that collision detection | ||
| 2299 | does not operate when you edit a file in a directory where you cannot | ||
| 2300 | create new files. Collision detection also doesn't operate when the | ||
| 2301 | file server does not support symbolic links. But these conditions are | ||
| 2302 | rare, and the ability to have collision detection while using NFS is | ||
| 2303 | so useful that the change is worth while. | ||
| 2304 | |||
| 2305 | When Emacs or a system crashes, this may leave behind lock files which | ||
| 2306 | are stale. So you may occasionally get warnings about spurious | ||
| 2307 | collisions. When you determine that the collision is spurious, just | ||
| 2308 | tell Emacs to go ahead anyway. | ||
| 2309 | |||
| 2310 | ** If you wish to use Show Paren mode to display matching parentheses, | ||
| 2311 | it is no longer sufficient to load paren.el. Instead you must call | ||
| 2312 | show-paren-mode. | ||
| 2313 | |||
| 2314 | ** If you wish to use Delete Selection mode to replace a highlighted | ||
| 2315 | selection when you insert new text, it is no longer sufficient to load | ||
| 2316 | delsel.el. Instead you must call the function delete-selection-mode. | ||
| 2317 | |||
| 2318 | ** If you wish to use Partial Completion mode to complete partial words | ||
| 2319 | within symbols or filenames, it is no longer sufficient to load | ||
| 2320 | complete.el. Instead you must call the function partial-completion-mode. | ||
| 2321 | |||
| 2322 | ** If you wish to use uniquify to rename buffers for you, | ||
| 2323 | it is no longer sufficient to load uniquify.el. You must also | ||
| 2324 | set uniquify-buffer-name-style to one of the non-nil legitimate values. | ||
| 2325 | |||
| 2326 | ** Changes in View mode. | ||
| 2327 | |||
| 2328 | *** Several new commands are available in View mode. | ||
| 2329 | Do H in view mode for a list of commands. | ||
| 2330 | |||
| 2331 | *** There are two new commands for entering View mode: | ||
| 2332 | view-file-other-frame and view-buffer-other-frame. | ||
| 2333 | |||
| 2334 | *** Exiting View mode does a better job of restoring windows to their | ||
| 2335 | previous state. | ||
| 2336 | |||
| 2337 | *** New customization variable view-scroll-auto-exit. If non-nil, | ||
| 2338 | scrolling past end of buffer makes view mode exit. | ||
| 2339 | |||
| 2340 | *** New customization variable view-exits-all-viewing-windows. If | ||
| 2341 | non-nil, view-mode will at exit restore all windows viewing buffer, | ||
| 2342 | not just the selected window. | ||
| 2343 | |||
| 2344 | *** New customization variable view-read-only. If non-nil, visiting a | ||
| 2345 | read-only file automatically enters View mode, and toggle-read-only | ||
| 2346 | turns View mode on or off. | ||
| 2347 | |||
| 2348 | *** New customization variable view-remove-frame-by-deleting controls | ||
| 2349 | how to remove a not needed frame at view mode exit. If non-nil, | ||
| 2350 | delete the frame, if nil make an icon of it. | ||
| 2351 | |||
| 2352 | ** C-x v l, the command to print a file's version control log, | ||
| 2353 | now positions point at the entry for the file's current branch version. | ||
| 2354 | |||
| 2355 | ** C-x v =, the command to compare a file with the last checked-in version, | ||
| 2356 | has a new feature. If the file is currently not locked, so that it is | ||
| 2357 | presumably identical to the last checked-in version, the command now asks | ||
| 2358 | which version to compare with. | ||
| 2359 | |||
| 2360 | ** When using hideshow.el, incremental search can temporarily show hidden | ||
| 2361 | blocks if a match is inside the block. | ||
| 2362 | |||
| 2363 | The block is hidden again if the search is continued and the next match | ||
| 2364 | is outside the block. By customizing the variable | ||
| 2365 | isearch-hide-immediately you can choose to hide all the temporarily | ||
| 2366 | shown blocks only when exiting from incremental search. | ||
| 2367 | |||
| 2368 | By customizing the variable hs-isearch-open you can choose what kind | ||
| 2369 | of blocks to temporarily show during isearch: comment blocks, code | ||
| 2370 | blocks, all of them or none. | ||
| 2371 | |||
| 2372 | ** The new command C-x 4 0 (kill-buffer-and-window) kills the | ||
| 2373 | current buffer and deletes the selected window. It asks for | ||
| 2374 | confirmation first. | ||
| 2375 | |||
| 2376 | ** C-x C-w, which saves the buffer into a specified file name, | ||
| 2377 | now changes the major mode according to that file name. | ||
| 2378 | However, the mode will not be changed if | ||
| 2379 | (1) a local variables list or the `-*-' line specifies a major mode, or | ||
| 2380 | (2) the current major mode is a "special" mode, | ||
| 2381 | not suitable for ordinary files, or | ||
| 2382 | (3) the new file name does not particularly specify any mode. | ||
| 2383 | |||
| 2384 | This applies to M-x set-visited-file-name as well. | ||
| 2385 | |||
| 2386 | However, if you set change-major-mode-with-file-name to nil, then | ||
| 2387 | these commands do not change the major mode. | ||
| 2388 | |||
| 2389 | ** M-x occur changes. | ||
| 2390 | |||
| 2391 | *** If the argument to M-x occur contains upper case letters, | ||
| 2392 | it performs a case-sensitive search. | ||
| 2393 | |||
| 2394 | *** In the *Occur* buffer made by M-x occur, | ||
| 2395 | if you type g or M-x revert-buffer, this repeats the search | ||
| 2396 | using the same regular expression and the same buffer as before. | ||
| 2397 | |||
| 2398 | ** In Transient Mark mode, the region in any one buffer is highlighted | ||
| 2399 | in just one window at a time. At first, it is highlighted in the | ||
| 2400 | window where you set the mark. The buffer's highlighting remains in | ||
| 2401 | that window unless you select to another window which shows the same | ||
| 2402 | buffer--then the highlighting moves to that window. | ||
| 2403 | |||
| 2404 | ** The feature to suggest key bindings when you use M-x now operates | ||
| 2405 | after the command finishes. The message suggesting key bindings | ||
| 2406 | appears temporarily in the echo area. The previous echo area contents | ||
| 2407 | come back after a few seconds, in case they contain useful information. | ||
| 2408 | |||
| 2409 | ** Each frame now independently records the order for recently | ||
| 2410 | selected buffers, so that the default for C-x b is now based on the | ||
| 2411 | buffers recently selected in the selected frame. | ||
| 2412 | |||
| 2413 | ** Outline mode changes. | ||
| 2414 | |||
| 2415 | *** Outline mode now uses overlays (this is the former noutline.el). | ||
| 2416 | |||
| 2417 | *** Incremental searches skip over invisible text in Outline mode. | ||
| 2418 | |||
| 2419 | ** When a minibuffer window is active but not the selected window, if | ||
| 2420 | you try to use the minibuffer, you used to get a nested minibuffer. | ||
| 2421 | Now, this not only gives an error, it also cancels the minibuffer that | ||
| 2422 | was already active. | ||
| 2423 | |||
| 2424 | The motive for this change is so that beginning users do not | ||
| 2425 | unknowingly move away from minibuffers, leaving them active, and then | ||
| 2426 | get confused by it. | ||
| 2427 | |||
| 2428 | If you want to be able to have recursive minibuffers, you must | ||
| 2429 | set enable-recursive-minibuffers to non-nil. | ||
| 2430 | |||
| 2431 | ** Changes in dynamic abbrevs. | ||
| 2432 | |||
| 2433 | *** Expanding dynamic abbrevs with M-/ is now smarter about case | ||
| 2434 | conversion. If the expansion has mixed case not counting the first | ||
| 2435 | character, and the abbreviation matches the beginning of the expansion | ||
| 2436 | including case, then the expansion is copied verbatim. | ||
| 2437 | |||
| 2438 | The expansion is also copied verbatim if the abbreviation itself has | ||
| 2439 | mixed case. And using SPC M-/ to copy an additional word always | ||
| 2440 | copies it verbatim except when the previous copied word is all caps. | ||
| 2441 | |||
| 2442 | *** The values of `dabbrev-case-replace' and `dabbrev-case-fold-search' | ||
| 2443 | are no longer Lisp expressions. They have simply three possible | ||
| 2444 | values. | ||
| 2445 | |||
| 2446 | `dabbrev-case-replace' has these three values: nil (don't preserve | ||
| 2447 | case), t (do), or `case-replace' (do like M-x query-replace). | ||
| 2448 | `dabbrev-case-fold-search' has these three values: nil (don't ignore | ||
| 2449 | case), t (do), or `case-fold-search' (do like search). | ||
| 2450 | |||
| 2451 | ** Minibuffer history lists are truncated automatically now to a | ||
| 2452 | certain length. The variable history-length specifies how long they | ||
| 2453 | can be. The default value is 30. | ||
| 2454 | |||
| 2455 | ** Changes in Mail mode. | ||
| 2456 | |||
| 2457 | *** The key C-x m no longer runs the `mail' command directly. | ||
| 2458 | Instead, it runs the command `compose-mail', which invokes the mail | ||
| 2459 | composition mechanism you have selected with the variable | ||
| 2460 | `mail-user-agent'. The default choice of user agent is | ||
| 2461 | `sendmail-user-agent', which gives behavior compatible with the old | ||
| 2462 | behavior. | ||
| 2463 | |||
| 2464 | C-x 4 m now runs compose-mail-other-window, and C-x 5 m runs | ||
| 2465 | compose-mail-other-frame. | ||
| 2466 | |||
| 2467 | *** While composing a reply to a mail message, from Rmail, you can use | ||
| 2468 | the command C-c C-r to cite just the region from the message you are | ||
| 2469 | replying to. This copies the text which is the selected region in the | ||
| 2470 | buffer that shows the original message. | ||
| 2471 | |||
| 2472 | *** The command C-c C-i inserts a file at the end of the message, | ||
| 2473 | with separator lines around the contents. | ||
| 2474 | |||
| 2475 | *** The command M-x expand-mail-aliases expands all mail aliases | ||
| 2476 | in suitable mail headers. Emacs automatically extracts mail alias | ||
| 2477 | definitions from your mail alias file (e.g., ~/.mailrc). You do not | ||
| 2478 | need to expand mail aliases yourself before sending mail. | ||
| 2479 | |||
| 2480 | *** New features in the mail-complete command. | ||
| 2481 | |||
| 2482 | **** The mail-complete command now inserts the user's full name, | ||
| 2483 | for local users or if that is known. The variable mail-complete-style | ||
| 2484 | controls the style to use, and whether to do this at all. | ||
| 2485 | Its values are like those of mail-from-style. | ||
| 2486 | |||
| 2487 | **** The variable mail-passwd-command lets you specify a shell command | ||
| 2488 | to run to fetch a set of password-entries that add to the ones in | ||
| 2489 | /etc/passwd. | ||
| 2490 | |||
| 2491 | **** The variable mail-passwd-file now specifies a list of files to read | ||
| 2492 | to get the list of user ids. By default, one file is used: | ||
| 2493 | /etc/passwd. | ||
| 2494 | |||
| 2495 | ** You can "quote" a file name to inhibit special significance of | ||
| 2496 | special syntax, by adding `/:' to the beginning. Thus, if you have a | ||
| 2497 | directory named `/foo:', you can prevent it from being treated as a | ||
| 2498 | reference to a remote host named `foo' by writing it as `/:/foo:'. | ||
| 2499 | |||
| 2500 | Emacs uses this new construct automatically when necessary, such as | ||
| 2501 | when you start it with a working directory whose name might otherwise | ||
| 2502 | be taken to be magic. | ||
| 2503 | |||
| 2504 | ** There is a new command M-x grep-find which uses find to select | ||
| 2505 | files to search through, and grep to scan them. The output is | ||
| 2506 | available in a Compile mode buffer, as with M-x grep. | ||
| 2507 | |||
| 2508 | M-x grep now uses the -e option if the grep program supports that. | ||
| 2509 | (-e prevents problems if the search pattern starts with a dash.) | ||
| 2510 | |||
| 2511 | ** In Dired, the & command now flags for deletion the files whose names | ||
| 2512 | suggest they are probably not needed in the long run. | ||
| 2513 | |||
| 2514 | In Dired, * is now a prefix key for mark-related commands. | ||
| 2515 | |||
| 2516 | new key dired.el binding old key | ||
| 2517 | ------- ---------------- ------- | ||
| 2518 | * c dired-change-marks c | ||
| 2519 | * m dired-mark m | ||
| 2520 | * * dired-mark-executables * (binding deleted) | ||
| 2521 | * / dired-mark-directories / (binding deleted) | ||
| 2522 | * @ dired-mark-symlinks @ (binding deleted) | ||
| 2523 | * u dired-unmark u | ||
| 2524 | * DEL dired-unmark-backward DEL | ||
| 2525 | * ? dired-unmark-all-files C-M-? | ||
| 2526 | * ! dired-unmark-all-marks | ||
| 2527 | * % dired-mark-files-regexp % m | ||
| 2528 | * C-n dired-next-marked-file M-} | ||
| 2529 | * C-p dired-prev-marked-file M-{ | ||
| 2530 | |||
| 2531 | ** Rmail changes. | ||
| 2532 | |||
| 2533 | *** When Rmail cannot convert your incoming mail into Babyl format, it | ||
| 2534 | saves the new mail in the file RMAILOSE.n, where n is an integer | ||
| 2535 | chosen to make a unique name. This way, Rmail will not keep crashing | ||
| 2536 | each time you run it. | ||
| 2537 | |||
| 2538 | *** In Rmail, the variable rmail-summary-line-count-flag now controls | ||
| 2539 | whether to include the line count in the summary. Non-nil means yes. | ||
| 2540 | |||
| 2541 | *** In Rmail summary buffers, d and C-d (the commands to delete | ||
| 2542 | messages) now take repeat counts as arguments. A negative argument | ||
| 2543 | means to move in the opposite direction. | ||
| 2544 | |||
| 2545 | *** In Rmail, the t command now takes an optional argument which lets | ||
| 2546 | you specify whether to show the message headers in full or pruned. | ||
| 2547 | |||
| 2548 | *** In Rmail, the new command w (rmail-output-body-to-file) writes | ||
| 2549 | just the body of the current message into a file, without the headers. | ||
| 2550 | It takes the file name from the message subject, by default, but you | ||
| 2551 | can edit that file name in the minibuffer before it is actually used | ||
| 2552 | for output. | ||
| 2553 | |||
| 2554 | ** Gnus changes. | ||
| 2555 | |||
| 2556 | *** nntp.el has been totally rewritten in an asynchronous fashion. | ||
| 2557 | |||
| 2558 | *** Article prefetching functionality has been moved up into | ||
| 2559 | Gnus. | ||
| 2560 | |||
| 2561 | *** Scoring can now be performed with logical operators like | ||
| 2562 | `and', `or', `not', and parent redirection. | ||
| 2563 | |||
| 2564 | *** Article washing status can be displayed in the | ||
| 2565 | article mode line. | ||
| 2566 | |||
| 2567 | *** gnus.el has been split into many smaller files. | ||
| 2568 | |||
| 2569 | *** Suppression of duplicate articles based on Message-ID. | ||
| 2570 | |||
| 2571 | (setq gnus-suppress-duplicates t) | ||
| 2572 | |||
| 2573 | *** New variables for specifying what score and adapt files | ||
| 2574 | are to be considered home score and adapt files. See | ||
| 2575 | `gnus-home-score-file' and `gnus-home-adapt-files'. | ||
| 2576 | |||
| 2577 | *** Groups can inherit group parameters from parent topics. | ||
| 2578 | |||
| 2579 | *** Article editing has been revamped and is now usable. | ||
| 2580 | |||
| 2581 | *** Signatures can be recognized in more intelligent fashions. | ||
| 2582 | See `gnus-signature-separator' and `gnus-signature-limit'. | ||
| 2583 | |||
| 2584 | *** Summary pick mode has been made to look more nn-like. | ||
| 2585 | Line numbers are displayed and the `.' command can be | ||
| 2586 | used to pick articles. | ||
| 2587 | |||
| 2588 | *** Commands for moving the .newsrc.eld from one server to | ||
| 2589 | another have been added. | ||
| 2590 | |||
| 2591 | `M-x gnus-change-server' | ||
| 2592 | |||
| 2593 | *** A way to specify that "uninteresting" fields be suppressed when | ||
| 2594 | generating lines in buffers. | ||
| 2595 | |||
| 2596 | *** Several commands in the group buffer can be undone with | ||
| 2597 | `C-M-_'. | ||
| 2598 | |||
| 2599 | *** Scoring can be done on words using the new score type `w'. | ||
| 2600 | |||
| 2601 | *** Adaptive scoring can be done on a Subject word-by-word basis: | ||
| 2602 | |||
| 2603 | (setq gnus-use-adaptive-scoring '(word)) | ||
| 2604 | |||
| 2605 | *** Scores can be decayed. | ||
| 2606 | |||
| 2607 | (setq gnus-decay-scores t) | ||
| 2608 | |||
| 2609 | *** Scoring can be performed using a regexp on the Date header. The | ||
| 2610 | Date is normalized to compact ISO 8601 format first. | ||
| 2611 | |||
| 2612 | *** A new command has been added to remove all data on articles from | ||
| 2613 | the native server. | ||
| 2614 | |||
| 2615 | `M-x gnus-group-clear-data-on-native-groups' | ||
| 2616 | |||
| 2617 | *** A new command for reading collections of documents | ||
| 2618 | (nndoc with nnvirtual on top) has been added -- `C-M-d'. | ||
| 2619 | |||
| 2620 | *** Process mark sets can be pushed and popped. | ||
| 2621 | |||
| 2622 | *** A new mail-to-news backend makes it possible to post | ||
| 2623 | even when the NNTP server doesn't allow posting. | ||
| 2624 | |||
| 2625 | *** A new backend for reading searches from Web search engines | ||
| 2626 | (DejaNews, Alta Vista, InReference) has been added. | ||
| 2627 | |||
| 2628 | Use the `G w' command in the group buffer to create such | ||
| 2629 | a group. | ||
| 2630 | |||
| 2631 | *** Groups inside topics can now be sorted using the standard | ||
| 2632 | sorting functions, and each topic can be sorted independently. | ||
| 2633 | |||
| 2634 | See the commands under the `T S' submap. | ||
| 2635 | |||
| 2636 | *** Subsets of the groups can be sorted independently. | ||
| 2637 | |||
| 2638 | See the commands under the `G P' submap. | ||
| 2639 | |||
| 2640 | *** Cached articles can be pulled into the groups. | ||
| 2641 | |||
| 2642 | Use the `Y c' command. | ||
| 2643 | |||
| 2644 | *** Score files are now applied in a more reliable order. | ||
| 2645 | |||
| 2646 | *** Reports on where mail messages end up can be generated. | ||
| 2647 | |||
| 2648 | `M-x nnmail-split-history' | ||
| 2649 | |||
| 2650 | *** More hooks and functions have been added to remove junk | ||
| 2651 | from incoming mail before saving the mail. | ||
| 2652 | |||
| 2653 | See `nnmail-prepare-incoming-header-hook'. | ||
| 2654 | |||
| 2655 | *** The nnml mail backend now understands compressed article files. | ||
| 2656 | |||
| 2657 | *** To enable Gnus to read/post multi-lingual articles, you must execute | ||
| 2658 | the following code, for instance, in your .emacs. | ||
| 2659 | |||
| 2660 | (add-hook 'gnus-startup-hook 'gnus-mule-initialize) | ||
| 2661 | |||
| 2662 | Then, when you start Gnus, it will decode non-ASCII text automatically | ||
| 2663 | and show appropriate characters. (Note: if you are using gnus-mime | ||
| 2664 | from the SEMI package, formerly known as TM, you should NOT add this | ||
| 2665 | hook to gnus-startup-hook; gnus-mime has its own method of handling | ||
| 2666 | this issue.) | ||
| 2667 | |||
| 2668 | Since it is impossible to distinguish all coding systems | ||
| 2669 | automatically, you may need to specify a choice of coding system for a | ||
| 2670 | particular news group. This can be done by: | ||
| 2671 | |||
| 2672 | (gnus-mule-add-group NEWSGROUP 'CODING-SYSTEM) | ||
| 2673 | |||
| 2674 | Here NEWSGROUP should be a string which names a newsgroup or a tree | ||
| 2675 | of newsgroups. If NEWSGROUP is "XXX.YYY", all news groups under | ||
| 2676 | "XXX.YYY" (including "XXX.YYY.ZZZ") will use the specified coding | ||
| 2677 | system. CODING-SYSTEM specifies which coding system to use (for both | ||
| 2678 | for reading and posting). | ||
| 2679 | |||
| 2680 | CODING-SYSTEM can also be a cons cell of the form | ||
| 2681 | (READ-CODING-SYSTEM . POST-CODING-SYSTEM) | ||
| 2682 | Then READ-CODING-SYSTEM is used when you read messages from the | ||
| 2683 | newsgroups, while POST-CODING-SYSTEM is used when you post messages | ||
| 2684 | there. | ||
| 2685 | |||
| 2686 | Emacs knows the right coding systems for certain newsgroups by | ||
| 2687 | default. Here are some of these default settings: | ||
| 2688 | |||
| 2689 | (gnus-mule-add-group "fj" 'iso-2022-7) | ||
| 2690 | (gnus-mule-add-group "alt.chinese.text" 'hz-gb-2312) | ||
| 2691 | (gnus-mule-add-group "alt.hk" 'hz-gb-2312) | ||
| 2692 | (gnus-mule-add-group "alt.chinese.text.big5" 'cn-big5) | ||
| 2693 | (gnus-mule-add-group "soc.culture.vietnamese" '(nil . viqr)) | ||
| 2694 | |||
| 2695 | When you reply by mail to an article, these settings are ignored; | ||
| 2696 | the mail is encoded according to sendmail-coding-system, as usual. | ||
| 2697 | |||
| 2698 | ** CC mode changes. | ||
| 2699 | |||
| 2700 | *** If you edit primarily one style of C (or C++, Objective-C, Java) | ||
| 2701 | code, you may want to make the CC Mode style variables have global | ||
| 2702 | values so that you can set them directly in your .emacs file. To do | ||
| 2703 | this, set c-style-variables-are-local-p to nil in your .emacs file. | ||
| 2704 | Note that this only takes effect if you do it *before* cc-mode.el is | ||
| 2705 | loaded. | ||
| 2706 | |||
| 2707 | If you typically edit more than one style of C (or C++, Objective-C, | ||
| 2708 | Java) code in a single Emacs session, you may want to make the CC Mode | ||
| 2709 | style variables have buffer local values. By default, all buffers | ||
| 2710 | share the same style variable settings; to make them buffer local, set | ||
| 2711 | c-style-variables-are-local-p to t in your .emacs file. Note that you | ||
| 2712 | must do this *before* CC Mode is loaded. | ||
| 2713 | |||
| 2714 | *** The new variable c-indentation-style holds the C style name | ||
| 2715 | of the current buffer. | ||
| 2716 | |||
| 2717 | *** The variable c-block-comments-indent-p has been deleted, because | ||
| 2718 | it is no longer necessary. C mode now handles all the supported styles | ||
| 2719 | of block comments, with no need to say which one you will use. | ||
| 2720 | |||
| 2721 | *** There is a new indentation style "python", which specifies the C | ||
| 2722 | style that the Python developers like. | ||
| 2723 | |||
| 2724 | *** There is a new c-cleanup-list option: brace-elseif-brace. | ||
| 2725 | This says to put ...} else if (...) {... on one line, | ||
| 2726 | just as brace-else-brace says to put ...} else {... on one line. | ||
| 2727 | |||
| 2728 | ** VC Changes [new] | ||
| 2729 | |||
| 2730 | *** In vc-retrieve-snapshot (C-x v r), if you don't specify a snapshot | ||
| 2731 | name, it retrieves the *latest* versions of all files in the current | ||
| 2732 | directory and its subdirectories (aside from files already locked). | ||
| 2733 | |||
| 2734 | This feature is useful if your RCS directory is a link to a common | ||
| 2735 | master directory, and you want to pick up changes made by other | ||
| 2736 | developers. | ||
| 2737 | |||
| 2738 | You can do the same thing for an individual file by typing C-u C-x C-q | ||
| 2739 | RET in a buffer visiting that file. | ||
| 2740 | |||
| 2741 | *** VC can now handle files under CVS that are being "watched" by | ||
| 2742 | other developers. Such files are made read-only by CVS. To get a | ||
| 2743 | writable copy, type C-x C-q in a buffer visiting such a file. VC then | ||
| 2744 | calls "cvs edit", which notifies the other developers of it. | ||
| 2745 | |||
| 2746 | *** vc-version-diff (C-u C-x v =) now suggests reasonable defaults for | ||
| 2747 | version numbers, based on the current state of the file. | ||
| 2748 | |||
| 2749 | ** Calendar changes. | ||
| 2750 | |||
| 2751 | *** A new function, list-holidays, allows you list holidays or | ||
| 2752 | subclasses of holidays for ranges of years. Related menu items allow | ||
| 2753 | you do this for the year of the selected date, or the | ||
| 2754 | following/previous years. | ||
| 2755 | |||
| 2756 | *** There is now support for the Baha'i calendar system. Use `pb' in | ||
| 2757 | the *Calendar* buffer to display the current Baha'i date. The Baha'i | ||
| 2758 | calendar, or "Badi calendar" is a system of 19 months with 19 days | ||
| 2759 | each, and 4 intercalary days (5 during a Gregorian leap year). The | ||
| 2760 | calendar begins May 23, 1844, with each of the months named after a | ||
| 2761 | supposed attribute of God. | ||
| 2762 | |||
| 2763 | ** ps-print changes | ||
| 2764 | |||
| 2765 | There are some new user variables and subgroups for customizing the page | ||
| 2766 | layout. | ||
| 2767 | |||
| 2768 | *** Headers & Footers (subgroup) | ||
| 2769 | |||
| 2770 | Some printer systems print a header page and force the first page to | ||
| 2771 | be printed on the back of the header page when using duplex. If your | ||
| 2772 | printer system has this behavior, set variable | ||
| 2773 | `ps-banner-page-when-duplexing' to t. | ||
| 2774 | |||
| 2775 | If variable `ps-banner-page-when-duplexing' is non-nil, it prints a | ||
| 2776 | blank page as the very first printed page. So, it behaves as if the | ||
| 2777 | very first character of buffer (or region) were a form feed ^L (\014). | ||
| 2778 | |||
| 2779 | The variable `ps-spool-config' specifies who is responsible for | ||
| 2780 | setting duplex mode and page size. Valid values are: | ||
| 2781 | |||
| 2782 | lpr-switches duplex and page size are configured by `ps-lpr-switches'. | ||
| 2783 | Don't forget to set `ps-lpr-switches' to select duplex | ||
| 2784 | printing for your printer. | ||
| 2785 | |||
| 2786 | setpagedevice duplex and page size are configured by ps-print using the | ||
| 2787 | setpagedevice PostScript operator. | ||
| 2788 | |||
| 2789 | nil duplex and page size are configured by ps-print *not* using | ||
| 2790 | the setpagedevice PostScript operator. | ||
| 2791 | |||
| 2792 | The variable `ps-spool-tumble' specifies how the page images on | ||
| 2793 | opposite sides of a sheet are oriented with respect to each other. If | ||
| 2794 | `ps-spool-tumble' is nil, ps-print produces output suitable for | ||
| 2795 | bindings on the left or right. If `ps-spool-tumble' is non-nil, | ||
| 2796 | ps-print produces output suitable for bindings at the top or bottom. | ||
| 2797 | This variable takes effect only if `ps-spool-duplex' is non-nil. | ||
| 2798 | The default value is nil. | ||
| 2799 | |||
| 2800 | The variable `ps-header-frame-alist' specifies a header frame | ||
| 2801 | properties alist. Valid frame properties are: | ||
| 2802 | |||
| 2803 | fore-color Specify the foreground frame color. | ||
| 2804 | Value should be a float number between 0.0 (black | ||
| 2805 | color) and 1.0 (white color), or a string which is a | ||
| 2806 | color name, or a list of 3 float numbers which | ||
| 2807 | correspond to the Red Green Blue color scale, each | ||
| 2808 | float number between 0.0 (dark color) and 1.0 (bright | ||
| 2809 | color). The default is 0 ("black"). | ||
| 2810 | |||
| 2811 | back-color Specify the background frame color (similar to fore-color). | ||
| 2812 | The default is 0.9 ("gray90"). | ||
| 2813 | |||
| 2814 | shadow-color Specify the shadow color (similar to fore-color). | ||
| 2815 | The default is 0 ("black"). | ||
| 2816 | |||
| 2817 | border-color Specify the border color (similar to fore-color). | ||
| 2818 | The default is 0 ("black"). | ||
| 2819 | |||
| 2820 | border-width Specify the border width. | ||
| 2821 | The default is 0.4. | ||
| 2822 | |||
| 2823 | Any other property is ignored. | ||
| 2824 | |||
| 2825 | Don't change this alist directly; instead use Custom, or the | ||
| 2826 | `ps-value', `ps-get', `ps-put' and `ps-del' functions (see there for | ||
| 2827 | documentation). | ||
| 2828 | |||
| 2829 | Ps-print can also print footers. The footer variables are: | ||
| 2830 | `ps-print-footer', `ps-footer-offset', `ps-print-footer-frame', | ||
| 2831 | `ps-footer-font-family', `ps-footer-font-size', `ps-footer-line-pad', | ||
| 2832 | `ps-footer-lines', `ps-left-footer', `ps-right-footer' and | ||
| 2833 | `ps-footer-frame-alist'. These variables are similar to those | ||
| 2834 | controlling headers. | ||
| 2835 | |||
| 2836 | *** Color management (subgroup) | ||
| 2837 | |||
| 2838 | If `ps-print-color-p' is non-nil, the buffer's text will be printed in | ||
| 2839 | color. | ||
| 2840 | |||
| 2841 | *** Face Management (subgroup) | ||
| 2842 | |||
| 2843 | If you need to print without worrying about face background colors, | ||
| 2844 | set the variable `ps-use-face-background' which specifies if face | ||
| 2845 | background should be used. Valid values are: | ||
| 2846 | |||
| 2847 | t always use face background color. | ||
| 2848 | nil never use face background color. | ||
| 2849 | (face...) list of faces whose background color will be used. | ||
| 2850 | |||
| 2851 | *** N-up printing (subgroup) | ||
| 2852 | |||
| 2853 | The variable `ps-n-up-printing' specifies the number of pages per | ||
| 2854 | sheet of paper. | ||
| 2855 | |||
| 2856 | The variable `ps-n-up-margin' specifies the margin in points (pt) | ||
| 2857 | between the sheet border and the n-up printing. | ||
| 2858 | |||
| 2859 | If variable `ps-n-up-border-p' is non-nil, a border is drawn around | ||
| 2860 | each page. | ||
| 2861 | |||
| 2862 | The variable `ps-n-up-filling' specifies how the page matrix is filled | ||
| 2863 | on each sheet of paper. Following are the valid values for | ||
| 2864 | `ps-n-up-filling' with a filling example using a 3x4 page matrix: | ||
| 2865 | |||
| 2866 | `left-top' 1 2 3 4 `left-bottom' 9 10 11 12 | ||
| 2867 | 5 6 7 8 5 6 7 8 | ||
| 2868 | 9 10 11 12 1 2 3 4 | ||
| 2869 | |||
| 2870 | `right-top' 4 3 2 1 `right-bottom' 12 11 10 9 | ||
| 2871 | 8 7 6 5 8 7 6 5 | ||
| 2872 | 12 11 10 9 4 3 2 1 | ||
| 2873 | |||
| 2874 | `top-left' 1 4 7 10 `bottom-left' 3 6 9 12 | ||
| 2875 | 2 5 8 11 2 5 8 11 | ||
| 2876 | 3 6 9 12 1 4 7 10 | ||
| 2877 | |||
| 2878 | `top-right' 10 7 4 1 `bottom-right' 12 9 6 3 | ||
| 2879 | 11 8 5 2 11 8 5 2 | ||
| 2880 | 12 9 6 3 10 7 4 1 | ||
| 2881 | |||
| 2882 | Any other value is treated as `left-top'. | ||
| 2883 | |||
| 2884 | *** Zebra stripes (subgroup) | ||
| 2885 | |||
| 2886 | The variable `ps-zebra-color' controls the zebra stripes grayscale or | ||
| 2887 | RGB color. | ||
| 2888 | |||
| 2889 | The variable `ps-zebra-stripe-follow' specifies how zebra stripes | ||
| 2890 | continue on next page. Visually, valid values are (the character `+' | ||
| 2891 | to the right of each column indicates that a line is printed): | ||
| 2892 | |||
| 2893 | `nil' `follow' `full' `full-follow' | ||
| 2894 | Current Page -------- ----------- --------- ---------------- | ||
| 2895 | 1 XXXXX + 1 XXXXXXXX + 1 XXXXXX + 1 XXXXXXXXXXXXX + | ||
| 2896 | 2 XXXXX + 2 XXXXXXXX + 2 XXXXXX + 2 XXXXXXXXXXXXX + | ||
| 2897 | 3 XXXXX + 3 XXXXXXXX + 3 XXXXXX + 3 XXXXXXXXXXXXX + | ||
| 2898 | 4 + 4 + 4 + 4 + | ||
| 2899 | 5 + 5 + 5 + 5 + | ||
| 2900 | 6 + 6 + 6 + 6 + | ||
| 2901 | 7 XXXXX + 7 XXXXXXXX + 7 XXXXXX + 7 XXXXXXXXXXXXX + | ||
| 2902 | 8 XXXXX + 8 XXXXXXXX + 8 XXXXXX + 8 XXXXXXXXXXXXX + | ||
| 2903 | 9 XXXXX + 9 XXXXXXXX + 9 XXXXXX + 9 XXXXXXXXXXXXX + | ||
| 2904 | 10 + 10 + | ||
| 2905 | 11 + 11 + | ||
| 2906 | -------- ----------- --------- ---------------- | ||
| 2907 | Next Page -------- ----------- --------- ---------------- | ||
| 2908 | 12 XXXXX + 12 + 10 XXXXXX + 10 + | ||
| 2909 | 13 XXXXX + 13 XXXXXXXX + 11 XXXXXX + 11 + | ||
| 2910 | 14 XXXXX + 14 XXXXXXXX + 12 XXXXXX + 12 + | ||
| 2911 | 15 + 15 XXXXXXXX + 13 + 13 XXXXXXXXXXXXX + | ||
| 2912 | 16 + 16 + 14 + 14 XXXXXXXXXXXXX + | ||
| 2913 | 17 + 17 + 15 + 15 XXXXXXXXXXXXX + | ||
| 2914 | 18 XXXXX + 18 + 16 XXXXXX + 16 + | ||
| 2915 | 19 XXXXX + 19 XXXXXXXX + 17 XXXXXX + 17 + | ||
| 2916 | 20 XXXXX + 20 XXXXXXXX + 18 XXXXXX + 18 + | ||
| 2917 | 21 + 21 XXXXXXXX + | ||
| 2918 | 22 + 22 + | ||
| 2919 | -------- ----------- --------- ---------------- | ||
| 2920 | |||
| 2921 | Any other value is treated as `nil'. | ||
| 2922 | |||
| 2923 | |||
| 2924 | *** Printer management (subgroup) | ||
| 2925 | |||
| 2926 | The variable `ps-printer-name-option' determines the option used by | ||
| 2927 | some utilities to indicate the printer name; it's used only when | ||
| 2928 | `ps-printer-name' is a non-empty string. If you're using the lpr | ||
| 2929 | utility to print, for example, `ps-printer-name-option' should be set | ||
| 2930 | to "-P". | ||
| 2931 | |||
| 2932 | The variable `ps-manual-feed' indicates if the printer requires manual | ||
| 2933 | paper feeding. If it's nil, automatic feeding takes place. If it's | ||
| 2934 | non-nil, manual feeding takes place. | ||
| 2935 | |||
| 2936 | The variable `ps-end-with-control-d' specifies whether C-d (\x04) | ||
| 2937 | should be inserted at end of the generated PostScript. Non-nil means | ||
| 2938 | do so. | ||
| 2939 | |||
| 2940 | *** Page settings (subgroup) | ||
| 2941 | |||
| 2942 | If variable `ps-warn-paper-type' is nil, it's *not* treated as an | ||
| 2943 | error if the PostScript printer doesn't have a paper with the size | ||
| 2944 | indicated by `ps-paper-type'; the default paper size will be used | ||
| 2945 | instead. If `ps-warn-paper-type' is non-nil, an error is signaled if | ||
| 2946 | the PostScript printer doesn't support a paper with the size indicated | ||
| 2947 | by `ps-paper-type'. This is used when `ps-spool-config' is set to | ||
| 2948 | `setpagedevice'. | ||
| 2949 | |||
| 2950 | The variable `ps-print-upside-down' determines the orientation for | ||
| 2951 | printing pages: nil means `normal' printing, non-nil means | ||
| 2952 | `upside-down' printing (that is, the page is rotated by 180 degrees). | ||
| 2953 | |||
| 2954 | The variable `ps-selected-pages' specifies which pages to print. If | ||
| 2955 | it's nil, all pages are printed. If it's a list, list elements may be | ||
| 2956 | integers specifying a single page to print, or cons cells (FROM . TO) | ||
| 2957 | specifying to print from page FROM to TO. Invalid list elements, that | ||
| 2958 | is integers smaller than one, or elements whose FROM is greater than | ||
| 2959 | its TO, are ignored. | ||
| 2960 | |||
| 2961 | The variable `ps-even-or-odd-pages' specifies how to print even/odd | ||
| 2962 | pages. Valid values are: | ||
| 2963 | |||
| 2964 | nil print all pages. | ||
| 2965 | |||
| 2966 | `even-page' print only even pages. | ||
| 2967 | |||
| 2968 | `odd-page' print only odd pages. | ||
| 2969 | |||
| 2970 | `even-sheet' print only even sheets. | ||
| 2971 | That is, if `ps-n-up-printing' is 1, it behaves like | ||
| 2972 | `even-page', but for values greater than 1, it'll | ||
| 2973 | print only the even sheet of paper. | ||
| 2974 | |||
| 2975 | `odd-sheet' print only odd sheets. | ||
| 2976 | That is, if `ps-n-up-printing' is 1, it behaves like | ||
| 2977 | `odd-page'; but for values greater than 1, it'll print | ||
| 2978 | only the odd sheet of paper. | ||
| 2979 | |||
| 2980 | Any other value is treated as nil. | ||
| 2981 | |||
| 2982 | If you set `ps-selected-pages' (see there for documentation), pages | ||
| 2983 | are filtered by `ps-selected-pages', and then by | ||
| 2984 | `ps-even-or-odd-pages'. For example, if we have: | ||
| 2985 | |||
| 2986 | (setq ps-selected-pages '(1 4 (6 . 10) (12 . 16) 20)) | ||
| 2987 | |||
| 2988 | and we combine this with `ps-even-or-odd-pages' and | ||
| 2989 | `ps-n-up-printing', we get: | ||
| 2990 | |||
| 2991 | `ps-n-up-printing' = 1: | ||
| 2992 | `ps-even-or-odd-pages' PAGES PRINTED | ||
| 2993 | nil 1, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 20 | ||
| 2994 | even-page 4, 6, 8, 10, 12, 14, 16, 20 | ||
| 2995 | odd-page 1, 7, 9, 13, 15 | ||
| 2996 | even-sheet 4, 6, 8, 10, 12, 14, 16, 20 | ||
| 2997 | odd-sheet 1, 7, 9, 13, 15 | ||
| 2998 | |||
| 2999 | `ps-n-up-printing' = 2: | ||
| 3000 | `ps-even-or-odd-pages' PAGES PRINTED | ||
| 3001 | nil 1/4, 6/7, 8/9, 10/12, 13/14, 15/16, 20 | ||
| 3002 | even-page 4/6, 8/10, 12/14, 16/20 | ||
| 3003 | odd-page 1/7, 9/13, 15 | ||
| 3004 | even-sheet 6/7, 10/12, 15/16 | ||
| 3005 | odd-sheet 1/4, 8/9, 13/14, 20 | ||
| 3006 | |||
| 3007 | *** Miscellany (subgroup) | ||
| 3008 | |||
| 3009 | The variable `ps-error-handler-message' specifies where error handler | ||
| 3010 | messages should be sent. | ||
| 3011 | |||
| 3012 | It is also possible to add a user-defined PostScript prologue code in | ||
| 3013 | front of all generated prologue code by setting the variable | ||
| 3014 | `ps-user-defined-prologue'. | ||
| 3015 | |||
| 3016 | The variable `ps-line-number-font' specifies the font for line numbers. | ||
| 3017 | |||
| 3018 | The variable `ps-line-number-font-size' specifies the font size in | ||
| 3019 | points for line numbers. | ||
| 3020 | |||
| 3021 | The variable `ps-line-number-color' specifies the color for line | ||
| 3022 | numbers. See `ps-zebra-color' for documentation. | ||
| 3023 | |||
| 3024 | The variable `ps-line-number-step' specifies the interval in which | ||
| 3025 | line numbers are printed. For example, if `ps-line-number-step' is set | ||
| 3026 | to 2, the printing will look like: | ||
| 3027 | |||
| 3028 | 1 one line | ||
| 3029 | one line | ||
| 3030 | 3 one line | ||
| 3031 | one line | ||
| 3032 | 5 one line | ||
| 3033 | one line | ||
| 3034 | ... | ||
| 3035 | |||
| 3036 | Valid values are: | ||
| 3037 | |||
| 3038 | integer an integer specifying the interval in which line numbers are | ||
| 3039 | printed. If it's smaller than or equal to zero, 1 | ||
| 3040 | is used. | ||
| 3041 | |||
| 3042 | `zebra' specifies that only the line number of the first line in a | ||
| 3043 | zebra stripe is to be printed. | ||
| 3044 | |||
| 3045 | Any other value is treated as `zebra'. | ||
| 3046 | |||
| 3047 | The variable `ps-line-number-start' specifies the starting point in | ||
| 3048 | the interval given by `ps-line-number-step'. For example, if | ||
| 3049 | `ps-line-number-step' is set to 3, and `ps-line-number-start' is set to | ||
| 3050 | 3, the output will look like: | ||
| 3051 | |||
| 3052 | one line | ||
| 3053 | one line | ||
| 3054 | 3 one line | ||
| 3055 | one line | ||
| 3056 | one line | ||
| 3057 | 6 one line | ||
| 3058 | one line | ||
| 3059 | one line | ||
| 3060 | 9 one line | ||
| 3061 | one line | ||
| 3062 | ... | ||
| 3063 | |||
| 3064 | The variable `ps-postscript-code-directory' specifies the directory | ||
| 3065 | where the PostScript prologue file used by ps-print is found. | ||
| 3066 | |||
| 3067 | The variable `ps-line-spacing' determines the line spacing in points, | ||
| 3068 | for ordinary text, when generating PostScript (similar to | ||
| 3069 | `ps-font-size'). | ||
| 3070 | |||
| 3071 | The variable `ps-paragraph-spacing' determines the paragraph spacing, | ||
| 3072 | in points, for ordinary text, when generating PostScript (similar to | ||
| 3073 | `ps-font-size'). | ||
| 3074 | |||
| 3075 | The variable `ps-paragraph-regexp' specifies the paragraph delimiter. | ||
| 3076 | |||
| 3077 | The variable `ps-begin-cut-regexp' and `ps-end-cut-regexp' specify the | ||
| 3078 | start and end of a region to cut out when printing. | ||
| 3079 | |||
| 3080 | ** hideshow changes. | ||
| 3081 | |||
| 3082 | *** now supports hiding of blocks of single line comments (like // for | ||
| 3083 | C++, ; for lisp). | ||
| 3084 | |||
| 3085 | *** Support for java-mode added. | ||
| 3086 | |||
| 3087 | *** When doing `hs-hide-all' it is now possible to also hide the comments | ||
| 3088 | in the file if `hs-hide-comments-when-hiding-all' is set. | ||
| 3089 | |||
| 3090 | *** The new function `hs-hide-initial-comment' hides the comments at | ||
| 3091 | the beginning of the files. Finally those huge RCS logs don't stay in your | ||
| 3092 | way! This is run by default when entering the `hs-minor-mode'. | ||
| 3093 | |||
| 3094 | *** Now uses overlays instead of `selective-display', so is more | ||
| 3095 | robust and a lot faster. | ||
| 3096 | |||
| 3097 | *** A block beginning can span multiple lines. | ||
| 3098 | |||
| 3099 | *** The new variable `hs-show-hidden-short-form' if t, directs hideshow | ||
| 3100 | to show only the beginning of a block when it is hidden. See the | ||
| 3101 | documentation for more details. | ||
| 3102 | |||
| 3103 | ** Changes in Enriched mode. | ||
| 3104 | |||
| 3105 | *** When you visit a file in enriched-mode, Emacs will make sure it is | ||
| 3106 | filled to the current fill-column. This behavior is now independent | ||
| 3107 | of the size of the window. When you save the file, the fill-column in | ||
| 3108 | use is stored as well, so that the whole buffer need not be refilled | ||
| 3109 | the next time unless the fill-column is different. | ||
| 3110 | |||
| 3111 | *** use-hard-newlines is now a minor mode. When it is enabled, Emacs | ||
| 3112 | distinguishes between hard and soft newlines, and treats hard newlines | ||
| 3113 | as paragraph boundaries. Otherwise all newlines inserted are marked | ||
| 3114 | as soft, and paragraph boundaries are determined solely from the text. | ||
| 3115 | |||
| 3116 | ** Font Lock mode | ||
| 3117 | |||
| 3118 | *** Custom support | ||
| 3119 | |||
| 3120 | The variables font-lock-face-attributes, font-lock-display-type and | ||
| 3121 | font-lock-background-mode are now obsolete; the recommended way to specify | ||
| 3122 | the faces to use for Font Lock mode is with M-x customize-group on the new | ||
| 3123 | custom group font-lock-faces. If you set font-lock-face-attributes in your | ||
| 3124 | ~/.emacs file, Font Lock mode will respect its value. However, you should | ||
| 3125 | consider converting from setting that variable to using M-x customize. | ||
| 3126 | |||
| 3127 | You can still use X resources to specify Font Lock face appearances. | ||
| 3128 | |||
| 3129 | *** Maximum decoration | ||
| 3130 | |||
| 3131 | Fontification now uses the maximum level of decoration supported by | ||
| 3132 | default. Previously, fontification used a mode-specific default level | ||
| 3133 | of decoration, which is typically the minimum level of decoration | ||
| 3134 | supported. You can set font-lock-maximum-decoration to nil | ||
| 3135 | to get the old behavior. | ||
| 3136 | |||
| 3137 | *** New support | ||
| 3138 | |||
| 3139 | Support is now provided for Java, Objective-C, AWK and SIMULA modes. | ||
| 3140 | |||
| 3141 | Note that Font Lock mode can be turned on without knowing exactly what modes | ||
| 3142 | support Font Lock mode, via the command global-font-lock-mode. | ||
| 3143 | |||
| 3144 | *** Configurable support | ||
| 3145 | |||
| 3146 | Support for C, C++, Objective-C and Java can be more easily configured for | ||
| 3147 | additional types and classes via the new variables c-font-lock-extra-types, | ||
| 3148 | c++-font-lock-extra-types, objc-font-lock-extra-types and, you guessed it, | ||
| 3149 | java-font-lock-extra-types. These value of each of these variables should be a | ||
| 3150 | list of regexps matching the extra type names. For example, the default value | ||
| 3151 | of c-font-lock-extra-types is ("\\sw+_t") which means fontification follows the | ||
| 3152 | convention that C type names end in _t. This results in slower fontification. | ||
| 3153 | |||
| 3154 | Of course, you can change the variables that specify fontification in whatever | ||
| 3155 | way you wish, typically by adding regexps. However, these new variables make | ||
| 3156 | it easier to make specific and common changes for the fontification of types. | ||
| 3157 | |||
| 3158 | *** Adding highlighting patterns to existing support | ||
| 3159 | |||
| 3160 | You can use the new function font-lock-add-keywords to add your own | ||
| 3161 | highlighting patterns, such as for project-local or user-specific constructs, | ||
| 3162 | for any mode. | ||
| 3163 | |||
| 3164 | For example, to highlight `FIXME:' words in C comments, put: | ||
| 3165 | |||
| 3166 | (font-lock-add-keywords 'c-mode '(("\\<FIXME:" 0 font-lock-warning-face t))) | ||
| 3167 | |||
| 3168 | in your ~/.emacs. | ||
| 3169 | |||
| 3170 | *** New faces | ||
| 3171 | |||
| 3172 | Font Lock now defines two new faces, font-lock-builtin-face and | ||
| 3173 | font-lock-warning-face. These are intended to highlight builtin keywords, | ||
| 3174 | distinct from a language's normal keywords, and objects that should be brought | ||
| 3175 | to user attention, respectively. Various modes now use these new faces. | ||
| 3176 | |||
| 3177 | *** Changes to fast-lock support mode | ||
| 3178 | |||
| 3179 | The fast-lock package, one of the two Font Lock support modes, can now process | ||
| 3180 | cache files silently. You can use the new variable fast-lock-verbose, in the | ||
| 3181 | same way as font-lock-verbose, to control this feature. | ||
| 3182 | |||
| 3183 | *** Changes to lazy-lock support mode | ||
| 3184 | |||
| 3185 | The lazy-lock package, one of the two Font Lock support modes, can now fontify | ||
| 3186 | according to the true syntactic context relative to other lines. You can use | ||
| 3187 | the new variable lazy-lock-defer-contextually to control this feature. If | ||
| 3188 | non-nil, changes to the buffer will cause subsequent lines in the buffer to be | ||
| 3189 | refontified after lazy-lock-defer-time seconds of idle time. If nil, then only | ||
| 3190 | the modified lines will be refontified; this is the same as the previous Lazy | ||
| 3191 | Lock mode behavior and the behavior of Font Lock mode. | ||
| 3192 | |||
| 3193 | This feature is useful in modes where strings or comments can span lines. | ||
| 3194 | For example, if a string or comment terminating character is deleted, then if | ||
| 3195 | this feature is enabled subsequent lines in the buffer will be correctly | ||
| 3196 | refontified to reflect their new syntactic context. Previously, only the line | ||
| 3197 | containing the deleted character would be refontified and you would have to use | ||
| 3198 | the command M-o M-o (font-lock-fontify-block) to refontify some lines. | ||
| 3199 | |||
| 3200 | As a consequence of this new feature, two other variables have changed: | ||
| 3201 | |||
| 3202 | Variable `lazy-lock-defer-driven' is renamed `lazy-lock-defer-on-scrolling'. | ||
| 3203 | Variable `lazy-lock-defer-time' can now only be a time, i.e., a number. | ||
| 3204 | Buffer modes for which on-the-fly deferral applies can be specified via the | ||
| 3205 | new variable `lazy-lock-defer-on-the-fly'. | ||
| 3206 | |||
| 3207 | If you set these variables in your ~/.emacs, then you may have to change those | ||
| 3208 | settings. | ||
| 3209 | |||
| 3210 | ** Ada mode changes. | ||
| 3211 | |||
| 3212 | *** There is now better support for using find-file.el with Ada mode. | ||
| 3213 | If you switch between spec and body, the cursor stays in the same | ||
| 3214 | procedure (modulo overloading). If a spec has no body file yet, but | ||
| 3215 | you try to switch to its body file, Ada mode now generates procedure | ||
| 3216 | stubs. | ||
| 3217 | |||
| 3218 | *** There are two new commands: | ||
| 3219 | - `ada-make-local' : invokes gnatmake on the current buffer | ||
| 3220 | - `ada-check-syntax' : check syntax of current buffer. | ||
| 3221 | |||
| 3222 | The user options `ada-compiler-make', `ada-make-options', | ||
| 3223 | `ada-language-version', `ada-compiler-syntax-check', and | ||
| 3224 | `ada-compile-options' are used within these commands. | ||
| 3225 | |||
| 3226 | *** Ada mode can now work with Outline minor mode. The outline level | ||
| 3227 | is calculated from the indenting, not from syntactic constructs. | ||
| 3228 | Outlining does not work if your code is not correctly indented. | ||
| 3229 | |||
| 3230 | *** The new function `ada-gnat-style' converts the buffer to the style of | ||
| 3231 | formatting used in GNAT. It places two blanks after a comment start, | ||
| 3232 | places one blank between a word end and an opening '(', and puts one | ||
| 3233 | space between a comma and the beginning of a word. | ||
| 3234 | |||
| 3235 | ** Scheme mode changes. | ||
| 3236 | |||
| 3237 | *** Scheme mode indentation now uses many of the facilities of Lisp | ||
| 3238 | mode; therefore, the variables to customize it are the variables used | ||
| 3239 | for Lisp mode which have names starting with `lisp-'. The variables | ||
| 3240 | with names starting with `scheme-' which used to do this no longer | ||
| 3241 | have any effect. | ||
| 3242 | |||
| 3243 | If you want to use different indentation for Scheme and Lisp, this is | ||
| 3244 | still possible, but now you must do it by adding a hook to | ||
| 3245 | scheme-mode-hook, which could work by setting the `lisp-' indentation | ||
| 3246 | variables as buffer-local variables. | ||
| 3247 | |||
| 3248 | *** DSSSL mode is a variant of Scheme mode, for editing DSSSL scripts. | ||
| 3249 | Use M-x dsssl-mode. | ||
| 3250 | |||
| 3251 | ** Changes to the emacsclient program | ||
| 3252 | |||
| 3253 | *** If a socket can't be found, and environment variables LOGNAME or | ||
| 3254 | USER are set, emacsclient now looks for a socket based on the UID | ||
| 3255 | associated with the name. That is an emacsclient running as root | ||
| 3256 | can connect to an Emacs server started by a non-root user. | ||
| 3257 | |||
| 3258 | *** The emacsclient program now accepts an option --no-wait which tells | ||
| 3259 | it to return immediately without waiting for you to "finish" the | ||
| 3260 | buffer in Emacs. | ||
| 3261 | |||
| 3262 | *** The new option --alternate-editor allows to specify an editor to | ||
| 3263 | use if Emacs is not running. The environment variable | ||
| 3264 | ALTERNATE_EDITOR can be used for the same effect; the command line | ||
| 3265 | option takes precedence. | ||
| 3266 | |||
| 3267 | ** M-x eldoc-mode enables a minor mode in which the echo area | ||
| 3268 | constantly shows the parameter list for function being called at point | ||
| 3269 | (in Emacs Lisp and Lisp Interaction modes only). | ||
| 3270 | |||
| 3271 | ** C-x n d now runs the new command narrow-to-defun, | ||
| 3272 | which narrows the accessible parts of the buffer to just | ||
| 3273 | the current defun. | ||
| 3274 | |||
| 3275 | ** Emacs now handles the `--' argument in the standard way; all | ||
| 3276 | following arguments are treated as ordinary file names. | ||
| 3277 | |||
| 3278 | ** On MSDOS and Windows, the bookmark file is now called _emacs.bmk, | ||
| 3279 | and the saved desktop file is now called _emacs.desktop (truncated if | ||
| 3280 | necessary). | ||
| 3281 | |||
| 3282 | ** When you kill a buffer that visits a file, | ||
| 3283 | if there are any registers that save positions in the file, | ||
| 3284 | these register values no longer become completely useless. | ||
| 3285 | If you try to go to such a register with C-x j, then you are | ||
| 3286 | asked whether to visit the file again. If you say yes, | ||
| 3287 | it visits the file and then goes to the same position. | ||
| 3288 | |||
| 3289 | ** When you visit a file that changes frequently outside Emacs--for | ||
| 3290 | example, a log of output from a process that continues to run--it may | ||
| 3291 | be useful for Emacs to revert the file without querying you whenever | ||
| 3292 | you visit the file afresh with C-x C-f. | ||
| 3293 | |||
| 3294 | You can request this behavior for certain files by setting the | ||
| 3295 | variable revert-without-query to a list of regular expressions. If a | ||
| 3296 | file's name matches any of these regular expressions, find-file and | ||
| 3297 | revert-buffer revert the buffer without asking for permission--but | ||
| 3298 | only if you have not edited the buffer text yourself. | ||
| 3299 | |||
| 3300 | ** set-default-font has been renamed to set-frame-font | ||
| 3301 | since it applies only to the current frame. | ||
| 3302 | |||
| 3303 | ** In TeX mode, you can use the variable tex-main-file to specify the | ||
| 3304 | file for tex-file to run TeX on. (By default, tex-main-file is nil, | ||
| 3305 | and tex-file runs TeX on the current visited file.) | ||
| 3306 | |||
| 3307 | This is useful when you are editing a document that consists of | ||
| 3308 | multiple files. In each of the included files, you can set up a local | ||
| 3309 | variable list which specifies the top-level file of your document for | ||
| 3310 | tex-main-file. Then tex-file will run TeX on the whole document | ||
| 3311 | instead of just the file you are editing. | ||
| 3312 | |||
| 3313 | ** RefTeX mode | ||
| 3314 | |||
| 3315 | RefTeX mode is a new minor mode with special support for \label, \ref | ||
| 3316 | and \cite macros in LaTeX documents. RefTeX distinguishes labels of | ||
| 3317 | different environments (equation, figure, ...) and has full support for | ||
| 3318 | multifile documents. To use it, select a buffer with a LaTeX document and | ||
| 3319 | turn the mode on with M-x reftex-mode. Here are the main user commands: | ||
| 3320 | |||
| 3321 | C-c ( reftex-label | ||
| 3322 | Creates a label semi-automatically. RefTeX is context sensitive and | ||
| 3323 | knows which kind of label is needed. | ||
| 3324 | |||
| 3325 | C-c ) reftex-reference | ||
| 3326 | Offers in a menu all labels in the document, along with context of the | ||
| 3327 | label definition. The selected label is referenced as \ref{LABEL}. | ||
| 3328 | |||
| 3329 | C-c [ reftex-citation | ||
| 3330 | Prompts for a regular expression and displays a list of matching BibTeX | ||
| 3331 | database entries. The selected entry is cited with a \cite{KEY} macro. | ||
| 3332 | |||
| 3333 | C-c & reftex-view-crossref | ||
| 3334 | Views the cross reference of a \ref or \cite command near point. | ||
| 3335 | |||
| 3336 | C-c = reftex-toc | ||
| 3337 | Shows a table of contents of the (multifile) document. From there you | ||
| 3338 | can quickly jump to every section. | ||
| 3339 | |||
| 3340 | Under X, RefTeX installs a "Ref" menu in the menu bar, with additional | ||
| 3341 | commands. Press `?' to get help when a prompt mentions this feature. | ||
| 3342 | Full documentation and customization examples are in the file | ||
| 3343 | reftex.el. You can use the finder to view the file documentation: | ||
| 3344 | C-h p --> tex --> reftex.el | ||
| 3345 | |||
| 3346 | ** Changes in BibTeX mode. | ||
| 3347 | |||
| 3348 | *** Info documentation is now available. | ||
| 3349 | |||
| 3350 | *** Don't allow parentheses in string constants anymore. This confused | ||
| 3351 | both the BibTeX program and Emacs BibTeX mode. | ||
| 3352 | |||
| 3353 | *** Renamed variable bibtex-mode-user-optional-fields to | ||
| 3354 | bibtex-user-optional-fields. | ||
| 3355 | |||
| 3356 | *** Removed variable bibtex-include-OPTannote | ||
| 3357 | (use bibtex-user-optional-fields instead). | ||
| 3358 | |||
| 3359 | *** New interactive functions to copy and kill fields and complete | ||
| 3360 | entries to the BibTeX kill ring, from where they can be yanked back by | ||
| 3361 | appropriate functions. | ||
| 3362 | |||
| 3363 | *** New interactive functions for repositioning and marking of | ||
| 3364 | entries. They are bound by default to C-M-l and C-M-h. | ||
| 3365 | |||
| 3366 | *** New hook bibtex-clean-entry-hook. It is called after entry has | ||
| 3367 | been cleaned. | ||
| 3368 | |||
| 3369 | *** New variable bibtex-field-delimiters, which replaces variables | ||
| 3370 | bibtex-field-{left|right}-delimiter. | ||
| 3371 | |||
| 3372 | *** New variable bibtex-entry-delimiters to determine how entries | ||
| 3373 | shall be delimited. | ||
| 3374 | |||
| 3375 | *** Allow preinitialization of fields. See documentation of | ||
| 3376 | bibtex-user-optional-fields, bibtex-entry-field-alist, and | ||
| 3377 | bibtex-include-OPTkey for details. | ||
| 3378 | |||
| 3379 | *** Book and InBook entries require either an author or an editor | ||
| 3380 | field. This is now supported by bibtex.el. Alternative fields are | ||
| 3381 | prefixed with `ALT'. | ||
| 3382 | |||
| 3383 | *** New variable bibtex-entry-format, which replaces variable | ||
| 3384 | bibtex-clean-entry-zap-empty-opts and allows specification of many | ||
| 3385 | formatting options performed on cleaning an entry (see variable | ||
| 3386 | documentation). | ||
| 3387 | |||
| 3388 | *** Even more control on how automatic keys are generated. See | ||
| 3389 | documentation of bibtex-generate-autokey for details. Transcriptions | ||
| 3390 | for foreign languages other than German are now handled, too. | ||
| 3391 | |||
| 3392 | *** New boolean user option bibtex-comma-after-last-field to decide if | ||
| 3393 | comma should be inserted at end of last field. | ||
| 3394 | |||
| 3395 | *** New boolean user option bibtex-align-at-equal-sign to determine if | ||
| 3396 | alignment should be made at left side of field contents or at equal | ||
| 3397 | signs. New user options to control entry layout (e.g. indentation). | ||
| 3398 | |||
| 3399 | *** New function bibtex-fill-entry to realign entries. | ||
| 3400 | |||
| 3401 | *** New function bibtex-reformat to reformat region or buffer. | ||
| 3402 | |||
| 3403 | *** New function bibtex-convert-alien to convert a BibTeX database | ||
| 3404 | from alien sources. | ||
| 3405 | |||
| 3406 | *** New function bibtex-complete-key (similar to bibtex-complete-string) | ||
| 3407 | to complete prefix to a key defined in buffer. Mainly useful in | ||
| 3408 | crossref entries. | ||
| 3409 | |||
| 3410 | *** New function bibtex-count-entries to count entries in buffer or | ||
| 3411 | region. | ||
| 3412 | |||
| 3413 | *** Added support for imenu. | ||
| 3414 | |||
| 3415 | *** The function `bibtex-validate' now checks current region instead | ||
| 3416 | of buffer if mark is active. Now it shows all errors of buffer in a | ||
| 3417 | `compilation mode' buffer. You can use the normal commands (e.g. | ||
| 3418 | `next-error') for compilation modes to jump to errors. | ||
| 3419 | |||
| 3420 | *** New variable `bibtex-string-file-path' to determine where the files | ||
| 3421 | from `bibtex-string-files' are searched. | ||
| 3422 | |||
| 3423 | ** Iso Accents mode now supports Latin-3 as an alternative. | ||
| 3424 | |||
| 3425 | ** The command next-error now opens blocks hidden by hideshow. | ||
| 3426 | |||
| 3427 | ** The function using-unix-filesystems has been replaced by the | ||
| 3428 | functions add-untranslated-filesystem and remove-untranslated-filesystem. | ||
| 3429 | Each of these functions takes the name of a drive letter or directory | ||
| 3430 | as an argument. | ||
| 3431 | |||
| 3432 | When a filesystem is added as untranslated, all files on it are read | ||
| 3433 | and written in binary mode (no cr/lf translation is performed). | ||
| 3434 | |||
| 3435 | ** browse-url changes | ||
| 3436 | |||
| 3437 | *** New methods for: Grail (browse-url-generic), MMM (browse-url-mmm), | ||
| 3438 | Lynx in a separate xterm (browse-url-lynx-xterm) or in an Emacs window | ||
| 3439 | (browse-url-lynx-emacs), remote W3 (browse-url-w3-gnudoit), generic | ||
| 3440 | non-remote-controlled browsers (browse-url-generic) and associated | ||
| 3441 | customization variables. | ||
| 3442 | |||
| 3443 | *** New commands `browse-url-of-region' and `browse-url'. | ||
| 3444 | |||
| 3445 | *** URLs marked up with <URL:...> (RFC1738) work if broken across | ||
| 3446 | lines. Browsing methods can be associated with URL regexps | ||
| 3447 | (e.g. mailto: URLs) via `browse-url-browser-function'. | ||
| 3448 | |||
| 3449 | ** Changes in Ediff | ||
| 3450 | |||
| 3451 | *** Clicking Mouse-2 on a brief command description in Ediff control panel | ||
| 3452 | pops up the Info file for this command. | ||
| 3453 | |||
| 3454 | *** There is now a variable, ediff-autostore-merges, which controls whether | ||
| 3455 | the result of a merge is saved in a file. By default, this is done only when | ||
| 3456 | merge is done from a session group (eg, when merging files in two different | ||
| 3457 | directories). | ||
| 3458 | |||
| 3459 | *** Since Emacs 19.31 (this hasn't been announced before), Ediff can compare | ||
| 3460 | and merge groups of files residing in different directories, or revisions of | ||
| 3461 | files in the same directory. | ||
| 3462 | |||
| 3463 | *** Since Emacs 19.31, Ediff can apply multi-file patches interactively. | ||
| 3464 | The patches must be in the context format or GNU unified format. (The bug | ||
| 3465 | related to the GNU format has now been fixed.) | ||
| 3466 | |||
| 3467 | ** Changes in Viper | ||
| 3468 | |||
| 3469 | *** The startup file is now .viper instead of .vip | ||
| 3470 | *** All variable/function names have been changed to start with viper- | ||
| 3471 | instead of vip-. | ||
| 3472 | *** C-\ now simulates the meta-key in all Viper states. | ||
| 3473 | *** C-z in Insert state now escapes to Vi for the duration of the next | ||
| 3474 | Viper command. In Vi and Insert states, C-z behaves as before. | ||
| 3475 | *** C-c \ escapes to Vi for one command if Viper is in Insert or Emacs states. | ||
| 3476 | *** _ is no longer the meta-key in Vi state. | ||
| 3477 | *** The variable viper-insert-state-cursor-color can be used to change cursor | ||
| 3478 | color when Viper is in insert state. | ||
| 3479 | *** If search lands the cursor near the top or the bottom of the window, | ||
| 3480 | Viper pulls the window up or down to expose more context. The variable | ||
| 3481 | viper-adjust-window-after-search controls this behavior. | ||
| 3482 | |||
| 3483 | ** Etags changes. | ||
| 3484 | |||
| 3485 | *** In C, C++, Objective C and Java, Etags tags global variables by | ||
| 3486 | default. The resulting tags files are inflated by 30% on average. | ||
| 3487 | Use --no-globals to turn this feature off. Etags can also tag | ||
| 3488 | variables which are members of structure-like constructs, but it does | ||
| 3489 | not by default. Use --members to turn this feature on. | ||
| 3490 | |||
| 3491 | *** C++ member functions are now recognized as tags. | ||
| 3492 | |||
| 3493 | *** Java is tagged like C++. In addition, "extends" and "implements" | ||
| 3494 | constructs are tagged. Files are recognized by the extension .java. | ||
| 3495 | |||
| 3496 | *** Etags can now handle programs written in Postscript. Files are | ||
| 3497 | recognized by the extensions .ps and .pdb (Postscript with C syntax). | ||
| 3498 | In Postscript, tags are lines that start with a slash. | ||
| 3499 | |||
| 3500 | *** Etags now handles Objective C and Objective C++ code. The usual C and | ||
| 3501 | C++ tags are recognized in these languages; in addition, etags | ||
| 3502 | recognizes special Objective C syntax for classes, class categories, | ||
| 3503 | methods and protocols. | ||
| 3504 | |||
| 3505 | *** Etags also handles Cobol. Files are recognized by the extension | ||
| 3506 | .cobol. The tagged lines are those containing a word that begins in | ||
| 3507 | column 8 and ends in a full stop, i.e. anything that could be a | ||
| 3508 | paragraph name. | ||
| 3509 | |||
| 3510 | *** Regexps in Etags now support intervals, as in ed or grep. The syntax of | ||
| 3511 | an interval is \{M,N\}, and it means to match the preceding expression | ||
| 3512 | at least M times and as many as N times. | ||
| 3513 | |||
| 3514 | ** The format for specifying a custom format for time-stamp to insert | ||
| 3515 | in files has changed slightly. | ||
| 3516 | |||
| 3517 | With the new enhancements to the functionality of format-time-string, | ||
| 3518 | time-stamp-format will change to be eventually compatible with it. | ||
| 3519 | This conversion is being done in two steps to maintain compatibility | ||
| 3520 | with old time-stamp-format values. | ||
| 3521 | |||
| 3522 | In the new scheme, alternate case is signified by the number-sign | ||
| 3523 | (`#') modifier, rather than changing the case of the format character. | ||
| 3524 | This feature is as yet incompletely implemented for compatibility | ||
| 3525 | reasons. | ||
| 3526 | |||
| 3527 | In the old time-stamp-format, all numeric fields defaulted to their | ||
| 3528 | natural width. (With format-time-string, each format has a | ||
| 3529 | fixed-width default.) In this version, you can specify the colon | ||
| 3530 | (`:') modifier to a numeric conversion to mean "give me the historical | ||
| 3531 | time-stamp-format width default." Do not use colon if you are | ||
| 3532 | specifying an explicit width, as in "%02d". | ||
| 3533 | |||
| 3534 | Numbers are no longer truncated to the requested width, except in the | ||
| 3535 | case of "%02y", which continues to give a two-digit year. Digit | ||
| 3536 | truncation probably wasn't being used for anything else anyway. | ||
| 3537 | |||
| 3538 | The new formats will work with old versions of Emacs. New formats are | ||
| 3539 | being recommended now to allow time-stamp-format to change in the | ||
| 3540 | future to be compatible with format-time-string. The new forms being | ||
| 3541 | recommended now will continue to work then. | ||
| 3542 | |||
| 3543 | See the documentation string for the variable time-stamp-format for | ||
| 3544 | details. | ||
| 3545 | |||
| 3546 | ** There are some additional major modes: | ||
| 3547 | |||
| 3548 | dcl-mode, for editing VMS DCL files. | ||
| 3549 | m4-mode, for editing files of m4 input. | ||
| 3550 | meta-mode, for editing MetaFont and MetaPost source files. | ||
| 3551 | |||
| 3552 | ** In Shell mode, the command shell-copy-environment-variable lets you | ||
| 3553 | copy the value of a specified environment variable from the subshell | ||
| 3554 | into Emacs. | ||
| 3555 | |||
| 3556 | ** New Lisp packages include: | ||
| 3557 | |||
| 3558 | *** battery.el displays battery status for laptops. | ||
| 3559 | |||
| 3560 | *** M-x bruce (named after Lenny Bruce) is a program that might | ||
| 3561 | be used for adding some indecent words to your email. | ||
| 3562 | |||
| 3563 | *** M-x crisp-mode enables an emulation for the CRiSP editor. | ||
| 3564 | |||
| 3565 | *** M-x dirtrack arranges for better tracking of directory changes | ||
| 3566 | in shell buffers. | ||
| 3567 | |||
| 3568 | *** The new library elint.el provides for linting of Emacs Lisp code. | ||
| 3569 | See the documentation for `elint-initialize', `elint-current-buffer' | ||
| 3570 | and `elint-defun'. | ||
| 3571 | |||
| 3572 | *** M-x expand-add-abbrevs defines a special kind of abbrev which is | ||
| 3573 | meant for programming constructs. These abbrevs expand like ordinary | ||
| 3574 | ones, when you type SPC, but only at the end of a line and not within | ||
| 3575 | strings or comments. | ||
| 3576 | |||
| 3577 | These abbrevs can act as templates: you can define places within an | ||
| 3578 | abbrev for insertion of additional text. Once you expand the abbrev, | ||
| 3579 | you can then use C-x a p and C-x a n to move back and forth to these | ||
| 3580 | insertion points. Thus you can conveniently insert additional text | ||
| 3581 | at these points. | ||
| 3582 | |||
| 3583 | *** filecache.el remembers the location of files so that you | ||
| 3584 | can visit them by short forms of their names. | ||
| 3585 | |||
| 3586 | *** find-func.el lets you find the definition of the user-loaded | ||
| 3587 | Emacs Lisp function at point. | ||
| 3588 | |||
| 3589 | *** M-x handwrite converts text to a "handwritten" picture. | ||
| 3590 | |||
| 3591 | *** M-x iswitchb-buffer is a command for switching to a buffer, much like | ||
| 3592 | switch-buffer, but it reads the argument in a more helpful way. | ||
| 3593 | |||
| 3594 | *** M-x landmark implements a neural network for landmark learning. | ||
| 3595 | |||
| 3596 | *** M-x locate provides a convenient interface to the `locate' program. | ||
| 3597 | |||
| 3598 | *** M4 mode is a new mode for editing files of m4 input. | ||
| 3599 | |||
| 3600 | *** mantemp.el creates C++ manual template instantiations | ||
| 3601 | from the GCC error messages which indicate which instantiations are needed. | ||
| 3602 | |||
| 3603 | *** mouse-copy.el provides a one-click copy and move feature. | ||
| 3604 | You can drag a region with M-mouse-1, and it is automatically | ||
| 3605 | inserted at point. M-Shift-mouse-1 deletes the text from its | ||
| 3606 | original place after inserting the copy. | ||
| 3607 | |||
| 3608 | *** mouse-drag.el lets you do scrolling by dragging Mouse-2 | ||
| 3609 | on the buffer. | ||
| 3610 | |||
| 3611 | You click the mouse and move; that distance either translates into the | ||
| 3612 | velocity to scroll (with mouse-drag-throw) or the distance to scroll | ||
| 3613 | (with mouse-drag-drag). Horizontal scrolling is enabled when needed. | ||
| 3614 | |||
| 3615 | Enable mouse-drag with: | ||
| 3616 | (global-set-key [down-mouse-2] 'mouse-drag-throw) | ||
| 3617 | -or- | ||
| 3618 | (global-set-key [down-mouse-2] 'mouse-drag-drag) | ||
| 3619 | |||
| 3620 | *** mspools.el is useful for determining which mail folders have | ||
| 3621 | mail waiting to be read in them. It works with procmail. | ||
| 3622 | |||
| 3623 | *** Octave mode is a major mode for editing files of input for Octave. | ||
| 3624 | It comes with a facility for communicating with an Octave subprocess. | ||
| 3625 | |||
| 3626 | *** ogonek | ||
| 3627 | |||
| 3628 | The ogonek package provides functions for changing the coding of | ||
| 3629 | Polish diacritic characters in buffers. Codings known from various | ||
| 3630 | platforms are supported such as ISO8859-2, Mazovia, IBM Latin2, and | ||
| 3631 | TeX. For example, you can change the coding from Mazovia to | ||
| 3632 | ISO8859-2. Another example is a change of coding from ISO8859-2 to | ||
| 3633 | prefix notation (in which `/a' stands for the aogonek character, for | ||
| 3634 | instance) and vice versa. | ||
| 3635 | |||
| 3636 | To use this package load it using | ||
| 3637 | M-x load-library [enter] ogonek | ||
| 3638 | Then, you may get an explanation by calling one of | ||
| 3639 | M-x ogonek-jak -- in Polish | ||
| 3640 | M-x ogonek-how -- in English | ||
| 3641 | The info specifies the commands and variables provided as well as the | ||
| 3642 | ways of customization in `.emacs'. | ||
| 3643 | |||
| 3644 | *** Interface to ph. | ||
| 3645 | |||
| 3646 | Emacs provides a client interface to CCSO Nameservers (ph/qi) | ||
| 3647 | |||
| 3648 | The CCSO nameserver is used in many universities to provide directory | ||
| 3649 | services about people. ph.el provides a convenient Emacs interface to | ||
| 3650 | these servers. | ||
| 3651 | |||
| 3652 | *** uce.el is useful for replying to unsolicited commercial email. | ||
| 3653 | |||
| 3654 | *** vcursor.el implements a "virtual cursor" feature. | ||
| 3655 | You can move the virtual cursor with special commands | ||
| 3656 | while the real cursor does not move. | ||
| 3657 | |||
| 3658 | *** webjump.el is a "hot list" package which you can set up | ||
| 3659 | for visiting your favorite web sites. | ||
| 3660 | |||
| 3661 | *** M-x winner-mode is a minor mode which saves window configurations, | ||
| 3662 | so you can move back to other configurations that you have recently used. | ||
| 3663 | |||
| 3664 | ** movemail change | ||
| 3665 | |||
| 3666 | Movemail no longer needs to be installed setuid root in order for POP | ||
| 3667 | mail retrieval to function properly. This is because it no longer | ||
| 3668 | supports the RPOP (reserved-port POP) protocol; instead, it uses the | ||
| 3669 | user's POP password to authenticate to the mail server. | ||
| 3670 | |||
| 3671 | This change was made earlier, but not reported in NEWS before. | ||
| 3672 | |||
| 3673 | |||
| 3674 | * Emacs 20.1 changes for MS-DOS and MS-Windows. | ||
| 3675 | |||
| 3676 | ** Changes in handling MS-DOS/MS-Windows text files. | ||
| 3677 | |||
| 3678 | Emacs handles three different conventions for representing | ||
| 3679 | end-of-line: CRLF for MSDOS, LF for Unix and GNU, and CR (used on the | ||
| 3680 | Macintosh). Emacs determines which convention is used in a specific | ||
| 3681 | file based on the contents of that file (except for certain special | ||
| 3682 | file names), and when it saves the file, it uses the same convention. | ||
| 3683 | |||
| 3684 | To save the file and change the end-of-line convention, you can use | ||
| 3685 | C-x RET f (set-buffer-file-coding-system) to specify a different | ||
| 3686 | coding system for the buffer. Then, when you save the file, the newly | ||
| 3687 | specified coding system will take effect. For example, to save with | ||
| 3688 | LF, specify undecided-unix (or some other ...-unix coding system); to | ||
| 3689 | save with CRLF, specify undecided-dos. | ||
| 3690 | |||
| 3691 | |||
| 3692 | * Lisp Changes in Emacs 20.1 | ||
| 3693 | |||
| 3694 | ** Byte-compiled files made with Emacs 20 will, in general, work in | ||
| 3695 | Emacs 19 as well, as long as the source code runs in Emacs 19. And | ||
| 3696 | vice versa: byte-compiled files made with Emacs 19 should also run in | ||
| 3697 | Emacs 20, as long as the program itself works in Emacs 20. | ||
| 3698 | |||
| 3699 | ** Windows-specific functions and variables have been renamed | ||
| 3700 | to start with w32- instead of win32-. | ||
| 3701 | |||
| 3702 | In hacker language, calling something a "win" is a form of praise. We | ||
| 3703 | don't want to praise a non-free Microsoft system, so we don't call it | ||
| 3704 | "win". | ||
| 3705 | |||
| 3706 | ** Basic Lisp changes | ||
| 3707 | |||
| 3708 | *** A symbol whose name starts with a colon now automatically | ||
| 3709 | evaluates to itself. Therefore such a symbol can be used as a constant. | ||
| 3710 | |||
| 3711 | *** The defined purpose of `defconst' has been changed. It should now | ||
| 3712 | be used only for values that should not be changed whether by a program | ||
| 3713 | or by the user. | ||
| 3714 | |||
| 3715 | The actual behavior of defconst has not been changed. | ||
| 3716 | |||
| 3717 | *** There are new macros `when' and `unless' | ||
| 3718 | |||
| 3719 | (when CONDITION BODY...) is short for (if CONDITION (progn BODY...)) | ||
| 3720 | (unless CONDITION BODY...) is short for (if CONDITION nil BODY...) | ||
| 3721 | |||
| 3722 | *** Emacs now defines functions caar, cadr, cdar and cddr with their | ||
| 3723 | usual Lisp meanings. For example, caar returns the car of the car of | ||
| 3724 | its argument. | ||
| 3725 | |||
| 3726 | *** equal, when comparing strings, now ignores their text properties. | ||
| 3727 | |||
| 3728 | *** The new function `functionp' tests whether an object is a function. | ||
| 3729 | |||
| 3730 | *** arrayp now returns t for char-tables and bool-vectors. | ||
| 3731 | |||
| 3732 | *** Certain primitives which use characters (as integers) now get an | ||
| 3733 | error if the integer is not a valid character code. These primitives | ||
| 3734 | include insert-char, char-to-string, and the %c construct in the | ||
| 3735 | `format' function. | ||
| 3736 | |||
| 3737 | *** The `require' function now insists on adding a suffix, either .el | ||
| 3738 | or .elc, to the file name. Thus, (require 'foo) will not use a file | ||
| 3739 | whose name is just foo. It insists on foo.el or foo.elc. | ||
| 3740 | |||
| 3741 | *** The `autoload' function, when the file name does not contain | ||
| 3742 | either a directory name or the suffix .el or .elc, insists on | ||
| 3743 | adding one of these suffixes. | ||
| 3744 | |||
| 3745 | *** string-to-number now takes an optional second argument BASE | ||
| 3746 | which specifies the base to use when converting an integer. | ||
| 3747 | If BASE is omitted, base 10 is used. | ||
| 3748 | |||
| 3749 | We have not implemented other radices for floating point numbers, | ||
| 3750 | because that would be much more work and does not seem useful. | ||
| 3751 | |||
| 3752 | *** substring now handles vectors as well as strings. | ||
| 3753 | |||
| 3754 | *** The Common Lisp function eql is no longer defined normally. | ||
| 3755 | You must load the `cl' library to define it. | ||
| 3756 | |||
| 3757 | *** The new macro `with-current-buffer' lets you evaluate an expression | ||
| 3758 | conveniently with a different current buffer. It looks like this: | ||
| 3759 | |||
| 3760 | (with-current-buffer BUFFER BODY-FORMS...) | ||
| 3761 | |||
| 3762 | BUFFER is the expression that says which buffer to use. | ||
| 3763 | BODY-FORMS say what to do in that buffer. | ||
| 3764 | |||
| 3765 | *** The new primitive `save-current-buffer' saves and restores the | ||
| 3766 | choice of current buffer, like `save-excursion', but without saving or | ||
| 3767 | restoring the value of point or the mark. `with-current-buffer' | ||
| 3768 | works using `save-current-buffer'. | ||
| 3769 | |||
| 3770 | *** The new macro `with-temp-file' lets you do some work in a new buffer and | ||
| 3771 | write the output to a specified file. Like `progn', it returns the value | ||
| 3772 | of the last form. | ||
| 3773 | |||
| 3774 | *** The new macro `with-temp-buffer' lets you do some work in a new buffer, | ||
| 3775 | which is discarded after use. Like `progn', it returns the value of the | ||
| 3776 | last form. If you wish to return the buffer contents, use (buffer-string) | ||
| 3777 | as the last form. | ||
| 3778 | |||
| 3779 | *** The new function split-string takes a string, splits it at certain | ||
| 3780 | characters, and returns a list of the substrings in between the | ||
| 3781 | matches. | ||
| 3782 | |||
| 3783 | For example, (split-string "foo bar lose" " +") returns ("foo" "bar" "lose"). | ||
| 3784 | |||
| 3785 | *** The new macro with-output-to-string executes some Lisp expressions | ||
| 3786 | with standard-output set up so that all output feeds into a string. | ||
| 3787 | Then it returns that string. | ||
| 3788 | |||
| 3789 | For example, if the current buffer name is `foo', | ||
| 3790 | |||
| 3791 | (with-output-to-string | ||
| 3792 | (princ "The buffer is ") | ||
| 3793 | (princ (buffer-name))) | ||
| 3794 | |||
| 3795 | returns "The buffer is foo". | ||
| 3796 | |||
| 3797 | ** Non-ASCII characters are now supported, if enable-multibyte-characters | ||
| 3798 | is non-nil. | ||
| 3799 | |||
| 3800 | These characters have character codes above 256. When inserted in the | ||
| 3801 | buffer or stored in a string, they are represented as multibyte | ||
| 3802 | characters that occupy several buffer positions each. | ||
| 3803 | |||
| 3804 | *** When enable-multibyte-characters is non-nil, a single character in | ||
| 3805 | a buffer or string can be two or more bytes (as many as four). | ||
| 3806 | |||
| 3807 | Buffers and strings are still made up of unibyte elements; | ||
| 3808 | character positions and string indices are always measured in bytes. | ||
| 3809 | Therefore, moving forward one character can increase the buffer | ||
| 3810 | position by 2, 3 or 4. The function forward-char moves by whole | ||
| 3811 | characters, and therefore is no longer equivalent to | ||
| 3812 | (lambda (n) (goto-char (+ (point) n))). | ||
| 3813 | |||
| 3814 | ASCII characters (codes 0 through 127) are still single bytes, always. | ||
| 3815 | Sequences of byte values 128 through 255 are used to represent | ||
| 3816 | non-ASCII characters. These sequences are called "multibyte | ||
| 3817 | characters". | ||
| 3818 | |||
| 3819 | The first byte of a multibyte character is always in the range 128 | ||
| 3820 | through 159 (octal 0200 through 0237). These values are called | ||
| 3821 | "leading codes". The second and subsequent bytes are always in the | ||
| 3822 | range 160 through 255 (octal 0240 through 0377). The first byte, the | ||
| 3823 | leading code, determines how many bytes long the sequence is. | ||
| 3824 | |||
| 3825 | *** The function forward-char moves over characters, and therefore | ||
| 3826 | (forward-char 1) may increase point by more than 1 if it moves over a | ||
| 3827 | multibyte character. Likewise, delete-char always deletes a | ||
| 3828 | character, which may be more than one buffer position. | ||
| 3829 | |||
| 3830 | This means that some Lisp programs, which assume that a character is | ||
| 3831 | always one buffer position, need to be changed. | ||
| 3832 | |||
| 3833 | However, all ASCII characters are always one buffer position. | ||
| 3834 | |||
| 3835 | *** The regexp [\200-\377] no longer matches all non-ASCII characters, | ||
| 3836 | because when enable-multibyte-characters is non-nil, these characters | ||
| 3837 | have codes that are not in the range octal 200 to octal 377. However, | ||
| 3838 | the regexp [^\000-\177] does match all non-ASCII characters, | ||
| 3839 | guaranteed. | ||
| 3840 | |||
| 3841 | *** The function char-boundary-p returns non-nil if position POS is | ||
| 3842 | between two characters in the buffer (not in the middle of a | ||
| 3843 | character). | ||
| 3844 | |||
| 3845 | When the value is non-nil, it says what kind of character follows POS: | ||
| 3846 | |||
| 3847 | 0 if POS is at an ASCII character or at the end of range, | ||
| 3848 | 1 if POS is before a 2-byte length multi-byte form, | ||
| 3849 | 2 if POS is at a head of 3-byte length multi-byte form, | ||
| 3850 | 3 if POS is at a head of 4-byte length multi-byte form, | ||
| 3851 | 4 if POS is at a head of multi-byte form of a composite character. | ||
| 3852 | |||
| 3853 | *** The function char-bytes returns how many bytes the character CHAR uses. | ||
| 3854 | |||
| 3855 | *** Strings can contain multibyte characters. The function | ||
| 3856 | `length' returns the string length counting bytes, which may be | ||
| 3857 | more than the number of characters. | ||
| 3858 | |||
| 3859 | You can include a multibyte character in a string constant by writing | ||
| 3860 | it literally. You can also represent it with a hex escape, | ||
| 3861 | \xNNNNNNN..., using as many digits as necessary. Any character which | ||
| 3862 | is not a valid hex digit terminates this construct. If you want to | ||
| 3863 | follow it with a character that is a hex digit, write backslash and | ||
| 3864 | newline in between; that will terminate the hex escape. | ||
| 3865 | |||
| 3866 | *** The function concat-chars takes arguments which are characters | ||
| 3867 | and returns a string containing those characters. | ||
| 3868 | |||
| 3869 | *** The function sref access a multibyte character in a string. | ||
| 3870 | (sref STRING INDX) returns the character in STRING at INDEX. INDEX | ||
| 3871 | counts from zero. If INDEX is at a position in the middle of a | ||
| 3872 | character, sref signals an error. | ||
| 3873 | |||
| 3874 | *** The function chars-in-string returns the number of characters | ||
| 3875 | in a string. This is less than the length of the string, if the | ||
| 3876 | string contains multibyte characters (the length counts bytes). | ||
| 3877 | |||
| 3878 | *** The function chars-in-region returns the number of characters | ||
| 3879 | in a region from BEG to END. This is less than (- END BEG) if the | ||
| 3880 | region contains multibyte characters (the length counts bytes). | ||
| 3881 | |||
| 3882 | *** The function string-to-list converts a string to a list of | ||
| 3883 | the characters in it. string-to-vector converts a string | ||
| 3884 | to a vector of the characters in it. | ||
| 3885 | |||
| 3886 | *** The function store-substring alters part of the contents | ||
| 3887 | of a string. You call it as follows: | ||
| 3888 | |||
| 3889 | (store-substring STRING IDX OBJ) | ||
| 3890 | |||
| 3891 | This says to alter STRING, by storing OBJ starting at index IDX in | ||
| 3892 | STRING. OBJ may be either a character or a (smaller) string. | ||
| 3893 | This function really does alter the contents of STRING. | ||
| 3894 | Since it is impossible to change the length of an existing string, | ||
| 3895 | it is an error if OBJ doesn't fit within STRING's actual length. | ||
| 3896 | |||
| 3897 | *** char-width returns the width (in columns) of the character CHAR, | ||
| 3898 | if it were displayed in the current buffer and the selected window. | ||
| 3899 | |||
| 3900 | *** string-width returns the width (in columns) of the text in STRING, | ||
| 3901 | if it were displayed in the current buffer and the selected window. | ||
| 3902 | |||
| 3903 | *** truncate-string-to-width shortens a string, if necessary, | ||
| 3904 | to fit within a certain number of columns. (Of course, it does | ||
| 3905 | not alter the string that you give it; it returns a new string | ||
| 3906 | which contains all or just part of the existing string.) | ||
| 3907 | |||
| 3908 | (truncate-string-to-width STR END-COLUMN &optional START-COLUMN PADDING) | ||
| 3909 | |||
| 3910 | This returns the part of STR up to column END-COLUMN. | ||
| 3911 | |||
| 3912 | The optional argument START-COLUMN specifies the starting column. | ||
| 3913 | If this is non-nil, then the first START-COLUMN columns of the string | ||
| 3914 | are not included in the resulting value. | ||
| 3915 | |||
| 3916 | The optional argument PADDING, if non-nil, is a padding character to be added | ||
| 3917 | at the beginning and end the resulting string, to extend it to exactly | ||
| 3918 | WIDTH columns. If PADDING is nil, that means do not pad; then, if STRING | ||
| 3919 | is narrower than WIDTH, the value is equal to STRING. | ||
| 3920 | |||
| 3921 | If PADDING and START-COLUMN are both non-nil, and if there is no clean | ||
| 3922 | place in STRING that corresponds to START-COLUMN (because one | ||
| 3923 | character extends across that column), then the padding character | ||
| 3924 | PADDING is added one or more times at the beginning of the result | ||
| 3925 | string, so that its columns line up as if it really did start at | ||
| 3926 | column START-COLUMN. | ||
| 3927 | |||
| 3928 | *** When the functions in the list after-change-functions are called, | ||
| 3929 | the third argument is the number of bytes in the pre-change text, not | ||
| 3930 | necessarily the number of characters. It is, in effect, the | ||
| 3931 | difference in buffer position between the beginning and the end of the | ||
| 3932 | changed text, before the change. | ||
| 3933 | |||
| 3934 | *** The characters Emacs uses are classified in various character | ||
| 3935 | sets, each of which has a name which is a symbol. In general there is | ||
| 3936 | one character set for each script, not for each language. | ||
| 3937 | |||
| 3938 | **** The function charsetp tests whether an object is a character set name. | ||
| 3939 | |||
| 3940 | **** The variable charset-list holds a list of character set names. | ||
| 3941 | |||
| 3942 | **** char-charset, given a character code, returns the name of the character | ||
| 3943 | set that the character belongs to. (The value is a symbol.) | ||
| 3944 | |||
| 3945 | **** split-char, given a character code, returns a list containing the | ||
| 3946 | name of the character set, followed by one or two byte-values | ||
| 3947 | which identify the character within that character set. | ||
| 3948 | |||
| 3949 | **** make-char, given a character set name and one or two subsequent | ||
| 3950 | byte-values, constructs a character code. This is roughly the | ||
| 3951 | opposite of split-char. | ||
| 3952 | |||
| 3953 | **** find-charset-region returns a list of the character sets | ||
| 3954 | of all the characters between BEG and END. | ||
| 3955 | |||
| 3956 | **** find-charset-string returns a list of the character sets | ||
| 3957 | of all the characters in a string. | ||
| 3958 | |||
| 3959 | *** Here are the Lisp facilities for working with coding systems | ||
| 3960 | and specifying coding systems. | ||
| 3961 | |||
| 3962 | **** The function coding-system-list returns a list of all coding | ||
| 3963 | system names (symbols). With optional argument t, it returns a list | ||
| 3964 | of all distinct base coding systems, not including variants. | ||
| 3965 | (Variant coding systems are those like latin-1-dos, latin-1-unix | ||
| 3966 | and latin-1-mac which specify the end-of-line conversion as well | ||
| 3967 | as what to do about code conversion.) | ||
| 3968 | |||
| 3969 | **** coding-system-p tests a symbol to see if it is a coding system | ||
| 3970 | name. It returns t if so, nil if not. | ||
| 3971 | |||
| 3972 | **** file-coding-system-alist specifies which coding systems to use | ||
| 3973 | for certain file names. It works like network-coding-system-alist, | ||
| 3974 | except that the PATTERN is matched against the file name. | ||
| 3975 | |||
| 3976 | Each element has the format (PATTERN . VAL), where PATTERN determines | ||
| 3977 | which file names the element applies to. PATTERN should be a regexp | ||
| 3978 | to match against a file name. | ||
| 3979 | |||
| 3980 | VAL is a coding system, a cons cell containing two coding systems, or | ||
| 3981 | a function symbol. If VAL is a coding system, it is used for both | ||
| 3982 | decoding what received from the network stream and encoding what sent | ||
| 3983 | to the network stream. If VAL is a cons cell containing two coding | ||
| 3984 | systems, the car specifies the coding system for decoding, and the cdr | ||
| 3985 | specifies the coding system for encoding. | ||
| 3986 | |||
| 3987 | If VAL is a function symbol, the function must return a coding system | ||
| 3988 | or a cons cell containing two coding systems, which is used as above. | ||
| 3989 | |||
| 3990 | **** The variable network-coding-system-alist specifies | ||
| 3991 | the coding system to use for network sockets. | ||
| 3992 | |||
| 3993 | Each element has the format (PATTERN . VAL), where PATTERN determines | ||
| 3994 | which network sockets the element applies to. PATTERN should be | ||
| 3995 | either a port number or a regular expression matching some network | ||
| 3996 | service names. | ||
| 3997 | |||
| 3998 | VAL is a coding system, a cons cell containing two coding systems, or | ||
| 3999 | a function symbol. If VAL is a coding system, it is used for both | ||
| 4000 | decoding what received from the network stream and encoding what sent | ||
| 4001 | to the network stream. If VAL is a cons cell containing two coding | ||
| 4002 | systems, the car specifies the coding system for decoding, and the cdr | ||
| 4003 | specifies the coding system for encoding. | ||
| 4004 | |||
| 4005 | If VAL is a function symbol, the function must return a coding system | ||
| 4006 | or a cons cell containing two coding systems, which is used as above. | ||
| 4007 | |||
| 4008 | **** process-coding-system-alist specifies which coding systems to use | ||
| 4009 | for certain subprocess. It works like network-coding-system-alist, | ||
| 4010 | except that the PATTERN is matched against the program name used to | ||
| 4011 | start the subprocess. | ||
| 4012 | |||
| 4013 | **** The variable default-process-coding-system specifies the coding | ||
| 4014 | systems to use for subprocess (and net connection) input and output, | ||
| 4015 | when nothing else specifies what to do. The value is a cons cell | ||
| 4016 | (OUTPUT-CODING . INPUT-CODING). OUTPUT-CODING applies to output | ||
| 4017 | to the subprocess, and INPUT-CODING applies to input from it. | ||
| 4018 | |||
| 4019 | **** The variable coding-system-for-write, if non-nil, specifies the | ||
| 4020 | coding system to use for writing a file, or for output to a synchronous | ||
| 4021 | subprocess. | ||
| 4022 | |||
| 4023 | It also applies to any asynchronous subprocess or network connection, | ||
| 4024 | but in a different way: the value of coding-system-for-write when you | ||
| 4025 | start the subprocess or connection affects that subprocess or | ||
| 4026 | connection permanently or until overridden. | ||
| 4027 | |||
| 4028 | The variable coding-system-for-write takes precedence over | ||
| 4029 | file-coding-system-alist, process-coding-system-alist and | ||
| 4030 | network-coding-system-alist, and all other methods of specifying a | ||
| 4031 | coding system for output. But most of the time this variable is nil. | ||
| 4032 | It exists so that Lisp programs can bind it to a specific coding | ||
| 4033 | system for one operation at a time. | ||
| 4034 | |||
| 4035 | **** coding-system-for-read applies similarly to input from | ||
| 4036 | files, subprocesses or network connections. | ||
| 4037 | |||
| 4038 | **** The function process-coding-system tells you what | ||
| 4039 | coding systems(s) an existing subprocess is using. | ||
| 4040 | The value is a cons cell, | ||
| 4041 | (DECODING-CODING-SYSTEM . ENCODING-CODING-SYSTEM) | ||
| 4042 | where DECODING-CODING-SYSTEM is used for decoding output from | ||
| 4043 | the subprocess, and ENCODING-CODING-SYSTEM is used for encoding | ||
| 4044 | input to the subprocess. | ||
| 4045 | |||
| 4046 | **** The function set-process-coding-system can be used to | ||
| 4047 | change the coding systems in use for an existing subprocess. | ||
| 4048 | |||
| 4049 | ** Emacs has a new facility to help users manage the many | ||
| 4050 | customization options. To make a Lisp program work with this facility, | ||
| 4051 | you need to use the new macros defgroup and defcustom. | ||
| 4052 | |||
| 4053 | You use defcustom instead of defvar, for defining a user option | ||
| 4054 | variable. The difference is that you specify two additional pieces of | ||
| 4055 | information (usually): the "type" which says what values are | ||
| 4056 | legitimate, and the "group" which specifies the hierarchy for | ||
| 4057 | customization. | ||
| 4058 | |||
| 4059 | Thus, instead of writing | ||
| 4060 | |||
| 4061 | (defvar foo-blurgoze nil | ||
| 4062 | "*Non-nil means that foo will act very blurgozely.") | ||
| 4063 | |||
| 4064 | you would now write this: | ||
| 4065 | |||
| 4066 | (defcustom foo-blurgoze nil | ||
| 4067 | "*Non-nil means that foo will act very blurgozely." | ||
| 4068 | :type 'boolean | ||
| 4069 | :group foo) | ||
| 4070 | |||
| 4071 | The type `boolean' means that this variable has only | ||
| 4072 | two meaningful states: nil and non-nil. Other type values | ||
| 4073 | describe other possibilities; see the manual for Custom | ||
| 4074 | for a description of them. | ||
| 4075 | |||
| 4076 | The "group" argument is used to specify a group which the option | ||
| 4077 | should belong to. You define a new group like this: | ||
| 4078 | |||
| 4079 | (defgroup ispell nil | ||
| 4080 | "Spell checking using Ispell." | ||
| 4081 | :group 'processes) | ||
| 4082 | |||
| 4083 | The "group" argument in defgroup specifies the parent group. The root | ||
| 4084 | group is called `emacs'; it should not contain any variables itself, | ||
| 4085 | but only other groups. The immediate subgroups of `emacs' correspond | ||
| 4086 | to the keywords used by C-h p. Under these subgroups come | ||
| 4087 | second-level subgroups that belong to individual packages. | ||
| 4088 | |||
| 4089 | Each Emacs package should have its own set of groups. A simple | ||
| 4090 | package should have just one group; a more complex package should | ||
| 4091 | have a hierarchy of its own groups. The sole or root group of a | ||
| 4092 | package should be a subgroup of one or more of the "keyword" | ||
| 4093 | first-level subgroups. | ||
| 4094 | |||
| 4095 | ** New `widget' library for inserting UI components in buffers. | ||
| 4096 | |||
| 4097 | This library, used by the new custom library, is documented in a | ||
| 4098 | separate manual that accompanies Emacs. | ||
| 4099 | |||
| 4100 | ** easy-mmode | ||
| 4101 | |||
| 4102 | The easy-mmode package provides macros and functions that make | ||
| 4103 | developing minor modes easier. Roughly, the programmer has to code | ||
| 4104 | only the functionality of the minor mode. All the rest--toggles, | ||
| 4105 | predicate, and documentation--can be done in one call to the macro | ||
| 4106 | `easy-mmode-define-minor-mode' (see the documentation). See also | ||
| 4107 | `easy-mmode-define-keymap'. | ||
| 4108 | |||
| 4109 | ** Text property changes | ||
| 4110 | |||
| 4111 | *** The `intangible' property now works on overlays as well as on a | ||
| 4112 | text property. | ||
| 4113 | |||
| 4114 | *** The new functions next-char-property-change and | ||
| 4115 | previous-char-property-change scan through the buffer looking for a | ||
| 4116 | place where either a text property or an overlay might change. The | ||
| 4117 | functions take two arguments, POSITION and LIMIT. POSITION is the | ||
| 4118 | starting position for the scan. LIMIT says where to stop the scan. | ||
| 4119 | |||
| 4120 | If no property change is found before LIMIT, the value is LIMIT. If | ||
| 4121 | LIMIT is nil, scan goes to the beginning or end of the accessible part | ||
| 4122 | of the buffer. If no property change is found, the value is the | ||
| 4123 | position of the beginning or end of the buffer. | ||
| 4124 | |||
| 4125 | *** In the `local-map' text property or overlay property, the property | ||
| 4126 | value can now be a symbol whose function definition is a keymap. This | ||
| 4127 | is an alternative to using the keymap itself. | ||
| 4128 | |||
| 4129 | ** Changes in invisibility features | ||
| 4130 | |||
| 4131 | *** Isearch can now temporarily show parts of the buffer which are | ||
| 4132 | hidden by an overlay with a invisible property, when the search match | ||
| 4133 | is inside that portion of the buffer. To enable this the overlay | ||
| 4134 | should have a isearch-open-invisible property which is a function that | ||
| 4135 | would be called having the overlay as an argument, the function should | ||
| 4136 | make the overlay visible. | ||
| 4137 | |||
| 4138 | During incremental search the overlays are shown by modifying the | ||
| 4139 | invisible and intangible properties, if beside this more actions are | ||
| 4140 | needed the overlay should have a isearch-open-invisible-temporary | ||
| 4141 | which is a function. The function is called with 2 arguments: one is | ||
| 4142 | the overlay and the second is nil when it should show the overlay and | ||
| 4143 | t when it should hide it. | ||
| 4144 | |||
| 4145 | *** add-to-invisibility-spec, remove-from-invisibility-spec | ||
| 4146 | |||
| 4147 | Modes that use overlays to hide portions of a buffer should set the | ||
| 4148 | invisible property of the overlay to the mode's name (or another symbol) | ||
| 4149 | and modify the `buffer-invisibility-spec' to include that symbol. | ||
| 4150 | Use `add-to-invisibility-spec' and `remove-from-invisibility-spec' to | ||
| 4151 | manipulate the `buffer-invisibility-spec'. | ||
| 4152 | Here is an example of how to do this: | ||
| 4153 | |||
| 4154 | ;; If we want to display an ellipsis: | ||
| 4155 | (add-to-invisibility-spec '(my-symbol . t)) | ||
| 4156 | ;; If you don't want ellipsis: | ||
| 4157 | (add-to-invisibility-spec 'my-symbol) | ||
| 4158 | |||
| 4159 | ... | ||
| 4160 | (overlay-put (make-overlay beginning end) 'invisible 'my-symbol) | ||
| 4161 | |||
| 4162 | ... | ||
| 4163 | ;; When done with the overlays: | ||
| 4164 | (remove-from-invisibility-spec '(my-symbol . t)) | ||
| 4165 | ;; Or respectively: | ||
| 4166 | (remove-from-invisibility-spec 'my-symbol) | ||
| 4167 | |||
| 4168 | ** Changes in syntax parsing. | ||
| 4169 | |||
| 4170 | *** The syntax-directed buffer-scan functions (such as | ||
| 4171 | `parse-partial-sexp', `forward-word' and similar functions) can now | ||
| 4172 | obey syntax information specified by text properties, if the variable | ||
| 4173 | `parse-sexp-lookup-properties' is non-nil. | ||
| 4174 | |||
| 4175 | If the value of `parse-sexp-lookup-properties' is nil, the behavior | ||
| 4176 | is as before: the syntax-table of the current buffer is always | ||
| 4177 | used to determine the syntax of the character at the position. | ||
| 4178 | |||
| 4179 | When `parse-sexp-lookup-properties' is non-nil, the syntax of a | ||
| 4180 | character in the buffer is calculated thus: | ||
| 4181 | |||
| 4182 | a) if the `syntax-table' text-property of that character | ||
| 4183 | is a cons, this cons becomes the syntax-type; | ||
| 4184 | |||
| 4185 | Valid values of `syntax-table' text-property are: nil, a valid | ||
| 4186 | syntax-table, and a valid syntax-table element, i.e., | ||
| 4187 | a cons cell of the form (SYNTAX-CODE . MATCHING-CHAR). | ||
| 4188 | |||
| 4189 | b) if the character's `syntax-table' text-property | ||
| 4190 | is a syntax table, this syntax table is used | ||
| 4191 | (instead of the syntax-table of the current buffer) to | ||
| 4192 | determine the syntax type of the character. | ||
| 4193 | |||
| 4194 | c) otherwise the syntax-type is determined by the syntax-table | ||
| 4195 | of the current buffer. | ||
| 4196 | |||
| 4197 | *** The meaning of \s in regular expressions is also affected by the | ||
| 4198 | value of `parse-sexp-lookup-properties'. The details are the same as | ||
| 4199 | for the syntax-directed buffer-scan functions. | ||
| 4200 | |||
| 4201 | *** There are two new syntax-codes, `!' and `|' (numeric values 14 | ||
| 4202 | and 15). A character with a code `!' starts a comment which is ended | ||
| 4203 | only by another character with the same code (unless quoted). A | ||
| 4204 | character with a code `|' starts a string which is ended only by | ||
| 4205 | another character with the same code (unless quoted). | ||
| 4206 | |||
| 4207 | These codes are mainly meant for use as values of the `syntax-table' | ||
| 4208 | text property. | ||
| 4209 | |||
| 4210 | *** The function `parse-partial-sexp' has new semantics for the sixth | ||
| 4211 | arg COMMENTSTOP. If it is `syntax-table', parse stops after the start | ||
| 4212 | of a comment or a string, or after end of a comment or a string. | ||
| 4213 | |||
| 4214 | *** The state-list which the return value from `parse-partial-sexp' | ||
| 4215 | (and can also be used as an argument) now has an optional ninth | ||
| 4216 | element: the character address of the start of last comment or string; | ||
| 4217 | nil if none. The fourth and eighth elements have special values if the | ||
| 4218 | string/comment is started by a "!" or "|" syntax-code. | ||
| 4219 | |||
| 4220 | *** Since new features of `parse-partial-sexp' allow a complete | ||
| 4221 | syntactic parsing, `font-lock' no longer supports | ||
| 4222 | `font-lock-comment-start-regexp'. | ||
| 4223 | |||
| 4224 | ** Changes in face features | ||
| 4225 | |||
| 4226 | *** The face functions are now unconditionally defined in Emacs, even | ||
| 4227 | if it does not support displaying on a device that supports faces. | ||
| 4228 | |||
| 4229 | *** The function face-documentation returns the documentation string | ||
| 4230 | of a face (or nil if it doesn't have one). | ||
| 4231 | |||
| 4232 | *** The function face-bold-p returns t if a face should be bold. | ||
| 4233 | set-face-bold-p sets that flag. | ||
| 4234 | |||
| 4235 | *** The function face-italic-p returns t if a face should be italic. | ||
| 4236 | set-face-italic-p sets that flag. | ||
| 4237 | |||
| 4238 | *** You can now specify foreground and background colors for text | ||
| 4239 | by adding elements of the form (foreground-color . COLOR-NAME) | ||
| 4240 | and (background-color . COLOR-NAME) to the list of faces in | ||
| 4241 | the `face' property (either the character's text property or an | ||
| 4242 | overlay property). | ||
| 4243 | |||
| 4244 | This means that you no longer need to create named faces to use | ||
| 4245 | arbitrary colors in a Lisp package. | ||
| 4246 | |||
| 4247 | ** Changes in file-handling functions | ||
| 4248 | |||
| 4249 | *** File-access primitive functions no longer discard an extra redundant | ||
| 4250 | directory name from the beginning of the file name. In other words, | ||
| 4251 | they no longer do anything special with // or /~. That conversion | ||
| 4252 | is now done only in substitute-in-file-name. | ||
| 4253 | |||
| 4254 | This makes it possible for a Lisp program to open a file whose name | ||
| 4255 | begins with ~. | ||
| 4256 | |||
| 4257 | *** If copy-file is unable to set the date of the output file, | ||
| 4258 | it now signals an error with the condition file-date-error. | ||
| 4259 | |||
| 4260 | *** The inode number returned by file-attributes may be an integer (if | ||
| 4261 | the number fits in a Lisp integer) or a list of integers. | ||
| 4262 | |||
| 4263 | *** insert-file-contents can now read from a special file, | ||
| 4264 | as long as the arguments VISIT and REPLACE are nil. | ||
| 4265 | |||
| 4266 | *** The RAWFILE arg to find-file-noselect, if non-nil, now suppresses | ||
| 4267 | character code conversion as well as other things. | ||
| 4268 | |||
| 4269 | Meanwhile, this feature does work with remote file names | ||
| 4270 | (formerly it did not). | ||
| 4271 | |||
| 4272 | *** Lisp packages which create temporary files should use the TMPDIR | ||
| 4273 | environment variable to decide which directory to put them in. | ||
| 4274 | |||
| 4275 | *** interpreter-mode-alist elements now specify regexps | ||
| 4276 | instead of constant strings. | ||
| 4277 | |||
| 4278 | *** expand-file-name no longer treats `//' or `/~' specially. It used | ||
| 4279 | to delete all the text of a file name up through the first slash of | ||
| 4280 | any `//' or `/~' sequence. Now it passes them straight through. | ||
| 4281 | |||
| 4282 | substitute-in-file-name continues to treat those sequences specially, | ||
| 4283 | in the same way as before. | ||
| 4284 | |||
| 4285 | *** The variable `format-alist' is more general now. | ||
| 4286 | The FROM-FN and TO-FN in a format definition can now be strings | ||
| 4287 | which specify shell commands to use as filters to perform conversion. | ||
| 4288 | |||
| 4289 | *** The new function access-file tries to open a file, and signals an | ||
| 4290 | error if that fails. If the open succeeds, access-file does nothing | ||
| 4291 | else, and returns nil. | ||
| 4292 | |||
| 4293 | *** The function insert-directory now signals an error if the specified | ||
| 4294 | directory cannot be listed. | ||
| 4295 | |||
| 4296 | ** Changes in minibuffer input | ||
| 4297 | |||
| 4298 | *** The functions read-buffer, read-variable, read-command, read-string | ||
| 4299 | read-file-name, read-from-minibuffer and completing-read now take an | ||
| 4300 | additional argument which specifies the default value. If this | ||
| 4301 | argument is non-nil, it should be a string; that string is used in two | ||
| 4302 | ways: | ||
| 4303 | |||
| 4304 | It is returned if the user enters empty input. | ||
| 4305 | It is available through the history command M-n. | ||
| 4306 | |||
| 4307 | *** The functions read-string, read-from-minibuffer, | ||
| 4308 | read-no-blanks-input and completing-read now take an additional | ||
| 4309 | argument INHERIT-INPUT-METHOD. If this is non-nil, then the | ||
| 4310 | minibuffer inherits the current input method and the setting of | ||
| 4311 | enable-multibyte-characters from the previously current buffer. | ||
| 4312 | |||
| 4313 | In an interactive spec, you can use M instead of s to read an | ||
| 4314 | argument in this way. | ||
| 4315 | |||
| 4316 | *** All minibuffer input functions discard text properties | ||
| 4317 | from the text you enter in the minibuffer, unless the variable | ||
| 4318 | minibuffer-allow-text-properties is non-nil. | ||
| 4319 | |||
| 4320 | ** Echo area features | ||
| 4321 | |||
| 4322 | *** Clearing the echo area now runs the normal hook | ||
| 4323 | echo-area-clear-hook. Note that the echo area can be used while the | ||
| 4324 | minibuffer is active; in that case, the minibuffer is still active | ||
| 4325 | after the echo area is cleared. | ||
| 4326 | |||
| 4327 | *** The function current-message returns the message currently displayed | ||
| 4328 | in the echo area, or nil if there is none. | ||
| 4329 | |||
| 4330 | ** Keyboard input features | ||
| 4331 | |||
| 4332 | *** tty-erase-char is a new variable that reports which character was | ||
| 4333 | set up as the terminal's erase character when time Emacs was started. | ||
| 4334 | |||
| 4335 | *** num-nonmacro-input-events is the total number of input events | ||
| 4336 | received so far from the terminal. It does not count those generated | ||
| 4337 | by keyboard macros. | ||
| 4338 | |||
| 4339 | ** Frame-related changes | ||
| 4340 | |||
| 4341 | *** make-frame runs the normal hook before-make-frame-hook just before | ||
| 4342 | creating a frame, and just after creating a frame it runs the abnormal | ||
| 4343 | hook after-make-frame-functions with the new frame as arg. | ||
| 4344 | |||
| 4345 | *** The new hook window-configuration-change-hook is now run every time | ||
| 4346 | the window configuration has changed. The frame whose configuration | ||
| 4347 | has changed is the selected frame when the hook is run. | ||
| 4348 | |||
| 4349 | *** Each frame now independently records the order for recently | ||
| 4350 | selected buffers, in its buffer-list frame parameter, so that the | ||
| 4351 | value of other-buffer is now based on the buffers recently displayed | ||
| 4352 | in the selected frame. | ||
| 4353 | |||
| 4354 | *** The value of the frame parameter vertical-scroll-bars | ||
| 4355 | is now `left', `right' or nil. A non-nil value specifies | ||
| 4356 | which side of the window to put the scroll bars on. | ||
| 4357 | |||
| 4358 | ** X Windows features | ||
| 4359 | |||
| 4360 | *** You can examine X resources for other applications by binding | ||
| 4361 | x-resource-class around a call to x-get-resource. The usual value of | ||
| 4362 | x-resource-class is "Emacs", which is the correct value for Emacs. | ||
| 4363 | |||
| 4364 | *** In menus, checkboxes and radio buttons now actually work. | ||
| 4365 | The menu displays the current status of the box or button. | ||
| 4366 | |||
| 4367 | *** The function x-list-fonts now takes an optional fourth argument | ||
| 4368 | MAXIMUM which sets a limit on how many matching fonts to return. | ||
| 4369 | A smaller value of MAXIMUM makes the function faster. | ||
| 4370 | |||
| 4371 | If the only question is whether *any* font matches the pattern, | ||
| 4372 | it is good to supply 1 for this argument. | ||
| 4373 | |||
| 4374 | ** Subprocess features | ||
| 4375 | |||
| 4376 | *** A reminder: it is no longer necessary for subprocess filter | ||
| 4377 | functions and sentinels to do save-match-data, because Emacs does this | ||
| 4378 | automatically. | ||
| 4379 | |||
| 4380 | *** The new function shell-command-to-string executes a shell command | ||
| 4381 | and returns the output from the command as a string. | ||
| 4382 | |||
| 4383 | *** The new function process-contact returns t for a child process, | ||
| 4384 | and (HOSTNAME SERVICE) for a net connection. | ||
| 4385 | |||
| 4386 | ** An error in running pre-command-hook or post-command-hook | ||
| 4387 | does clear the variable to nil. The documentation was wrong before. | ||
| 4388 | |||
| 4389 | ** In define-key-after, if AFTER is t, the new binding now always goes | ||
| 4390 | at the end of the keymap. If the keymap is a menu, this means it | ||
| 4391 | goes after the other menu items. | ||
| 4392 | |||
| 4393 | ** If you have a program that makes several changes in the same area | ||
| 4394 | of the buffer, you can use the macro combine-after-change-calls | ||
| 4395 | around that Lisp code to make it faster when after-change hooks | ||
| 4396 | are in use. | ||
| 4397 | |||
| 4398 | The macro arranges to call the after-change functions just once for a | ||
| 4399 | series of several changes--if that seems safe. | ||
| 4400 | |||
| 4401 | Don't alter the variables after-change-functions and | ||
| 4402 | after-change-function within the body of a combine-after-change-calls | ||
| 4403 | form. | ||
| 4404 | |||
| 4405 | ** If you define an abbrev (with define-abbrev) whose EXPANSION | ||
| 4406 | is not a string, then the abbrev does not expand in the usual sense, | ||
| 4407 | but its hook is still run. | ||
| 4408 | |||
| 4409 | ** Normally, the Lisp debugger is not used (even if you have enabled it) | ||
| 4410 | for errors that are handled by condition-case. | ||
| 4411 | |||
| 4412 | If you set debug-on-signal to a non-nil value, then the debugger is called | ||
| 4413 | regardless of whether there is a handler for the condition. This is | ||
| 4414 | useful for debugging problems that happen inside of a condition-case. | ||
| 4415 | |||
| 4416 | This mode of operation seems to be unreliable in other ways. Errors that | ||
| 4417 | are normal and ought to be handled, perhaps in timers or process | ||
| 4418 | filters, will instead invoke the debugger. So don't say you weren't | ||
| 4419 | warned. | ||
| 4420 | |||
| 4421 | ** The new variable ring-bell-function lets you specify your own | ||
| 4422 | way for Emacs to "ring the bell". | ||
| 4423 | |||
| 4424 | ** If run-at-time's TIME argument is t, the action is repeated at | ||
| 4425 | integral multiples of REPEAT from the epoch; this is useful for | ||
| 4426 | functions like display-time. | ||
| 4427 | |||
| 4428 | ** You can use the function locate-library to find the precise file | ||
| 4429 | name of a Lisp library. This isn't new, but wasn't documented before. | ||
| 4430 | |||
| 4431 | ** Commands for entering view mode have new optional arguments that | ||
| 4432 | can be used from Lisp. Low-level entrance to and exit from view mode | ||
| 4433 | is done by functions view-mode-enter and view-mode-exit. | ||
| 4434 | |||
| 4435 | ** batch-byte-compile-file now makes Emacs return a nonzero status code | ||
| 4436 | if there is an error in compilation. | ||
| 4437 | |||
| 4438 | ** pop-to-buffer, switch-to-buffer-other-window and | ||
| 4439 | switch-to-buffer-other-frame now accept an additional optional | ||
| 4440 | argument NORECORD, much like switch-to-buffer. If it is non-nil, | ||
| 4441 | they don't put the buffer at the front of the buffer list. | ||
| 4442 | |||
| 4443 | ** If your .emacs file leaves the *scratch* buffer non-empty, | ||
| 4444 | Emacs does not display the startup message, so as to avoid changing | ||
| 4445 | the *scratch* buffer. | ||
| 4446 | |||
| 4447 | ** The new function regexp-opt returns an efficient regexp to match a string. | ||
| 4448 | The arguments are STRINGS and (optionally) PAREN. This function can be used | ||
| 4449 | where regexp matching or searching is intensively used and speed is important, | ||
| 4450 | e.g., in Font Lock mode. | ||
| 4451 | |||
| 4452 | ** The variable buffer-display-count is local to each buffer, | ||
| 4453 | and is incremented each time the buffer is displayed in a window. | ||
| 4454 | It starts at 0 when the buffer is created. | ||
| 4455 | |||
| 4456 | ** The new function compose-mail starts composing a mail message | ||
| 4457 | using the user's chosen mail composition agent (specified with the | ||
| 4458 | variable mail-user-agent). It has variants compose-mail-other-window | ||
| 4459 | and compose-mail-other-frame. | ||
| 4460 | |||
| 4461 | ** The `user-full-name' function now takes an optional parameter which | ||
| 4462 | can either be a number (the UID) or a string (the login name). The | ||
| 4463 | full name of the specified user will be returned. | ||
| 4464 | |||
| 4465 | ** Lisp packages that load files of customizations, or any other sort | ||
| 4466 | of user profile, should obey the variable init-file-user in deciding | ||
| 4467 | where to find it. They should load the profile of the user name found | ||
| 4468 | in that variable. If init-file-user is nil, meaning that the -q | ||
| 4469 | option was used, then Lisp packages should not load the customization | ||
| 4470 | files at all. | ||
| 4471 | |||
| 4472 | ** format-time-string now allows you to specify the field width | ||
| 4473 | and type of padding. This works as in printf: you write the field | ||
| 4474 | width as digits in the middle of a %-construct. If you start | ||
| 4475 | the field width with 0, it means to pad with zeros. | ||
| 4476 | |||
| 4477 | For example, %S normally specifies the number of seconds since the | ||
| 4478 | minute; %03S means to pad this with zeros to 3 positions, %_3S to pad | ||
| 4479 | with spaces to 3 positions. Plain %3S pads with zeros, because that | ||
| 4480 | is how %S normally pads to two positions. | ||
| 4481 | |||
| 4482 | ** thing-at-point now supports a new kind of "thing": url. | ||
| 4483 | |||
| 4484 | ** imenu.el changes. | ||
| 4485 | |||
| 4486 | You can now specify a function to be run when selecting an | ||
| 4487 | item from menu created by imenu. | ||
| 4488 | |||
| 4489 | An example of using this feature: if we define imenu items for the | ||
| 4490 | #include directives in a C file, we can open the included file when we | ||
| 4491 | select one of those items. | ||
| 4492 | |||
| 4493 | |||
| 4494 | ---------------------------------------------------------------------- | ||
| 4495 | Copyright information: | ||
| 4496 | |||
| 4497 | Copyright (C) 1999, 2000, 2006 | ||
| 4498 | Free Software Foundation, Inc. | ||
| 4499 | |||
| 4500 | Permission is granted to anyone to make or distribute verbatim copies | ||
| 4501 | of this document as received, in any medium, provided that the | ||
| 4502 | copyright notice and this permission notice are preserved, | ||
| 4503 | thus giving the recipient permission to redistribute in turn. | ||
| 4504 | |||
| 4505 | Permission is granted to distribute modified versions | ||
| 4506 | of this document, or of portions of it, | ||
| 4507 | under the above conditions, provided also that they | ||
| 4508 | carry prominent notices stating who last changed them. | ||
| 4509 | |||
| 4510 | Local variables: | ||
| 4511 | mode: outline | ||
| 4512 | paragraph-separate: "[ ]*$" | ||
| 4513 | end: | ||
diff --git a/etc/NEWS.21 b/etc/NEWS.21 new file mode 100644 index 00000000000..44462b3f827 --- /dev/null +++ b/etc/NEWS.21 | |||
| @@ -0,0 +1,4900 @@ | |||
| 1 | GNU Emacs NEWS -- history of user-visible changes. 2006-05-31 | ||
| 2 | Copyright (C) 2000, 2001, 2002, 2003, 2006 | ||
| 3 | Free Software Foundation, Inc. | ||
| 4 | See the end for copying conditions. | ||
| 5 | |||
| 6 | This file is about changes in emacs version 21. | ||
| 7 | |||
| 8 | |||
| 9 | |||
| 10 | * Emacs 21.4 is a bug-fix release with no user-visible changes. | ||
| 11 | |||
| 12 | |||
| 13 | |||
| 14 | * Installation changes in Emacs 21.3 | ||
| 15 | |||
| 16 | ** Support for GNU/Linux on little-endian MIPS and on IBM S390 has | ||
| 17 | been added. | ||
| 18 | |||
| 19 | |||
| 20 | * Changes in Emacs 21.3 | ||
| 21 | |||
| 22 | ** The obsolete C mode (c-mode.el) has been removed to avoid problems | ||
| 23 | with Custom. | ||
| 24 | |||
| 25 | ** UTF-16 coding systems are available, encoding the same characters | ||
| 26 | as mule-utf-8. | ||
| 27 | |||
| 28 | ** There is a new language environment for UTF-8 (set up automatically | ||
| 29 | in UTF-8 locales). | ||
| 30 | |||
| 31 | ** Translation tables are available between equivalent characters in | ||
| 32 | different Emacs charsets -- for instance `e with acute' coming from the | ||
| 33 | Latin-1 and Latin-2 charsets. User options `unify-8859-on-encoding-mode' | ||
| 34 | and `unify-8859-on-decoding-mode' respectively turn on translation | ||
| 35 | between ISO 8859 character sets (`unification') on encoding | ||
| 36 | (e.g. writing a file) and decoding (e.g. reading a file). Note that | ||
| 37 | `unify-8859-on-encoding-mode' is useful and safe, but | ||
| 38 | `unify-8859-on-decoding-mode' can cause text to change when you read | ||
| 39 | it and write it out again without edits, so it is not generally advisable. | ||
| 40 | By default `unify-8859-on-encoding-mode' is turned on. | ||
| 41 | |||
| 42 | ** In Emacs running on the X window system, the default value of | ||
| 43 | `selection-coding-system' is now `compound-text-with-extensions'. | ||
| 44 | |||
| 45 | If you want the old behavior, set selection-coding-system to | ||
| 46 | compound-text, which may be significantly more efficient. Using | ||
| 47 | compound-text-with-extensions seems to be necessary only for decoding | ||
| 48 | text from applications under XFree86 4.2, whose behavior is actually | ||
| 49 | contrary to the compound text specification. | ||
| 50 | |||
| 51 | |||
| 52 | |||
| 53 | * Installation changes in Emacs 21.2 | ||
| 54 | |||
| 55 | ** Support for BSD/OS 5.0 has been added. | ||
| 56 | |||
| 57 | ** Support for AIX 5.1 was added. | ||
| 58 | |||
| 59 | |||
| 60 | * Changes in Emacs 21.2 | ||
| 61 | |||
| 62 | ** Emacs now supports compound-text extended segments in X selections. | ||
| 63 | |||
| 64 | X applications can use `extended segments' to encode characters in | ||
| 65 | compound text that belong to character sets which are not part of the | ||
| 66 | list of approved standard encodings for X, e.g. Big5. To paste | ||
| 67 | selections with such characters into Emacs, use the new coding system | ||
| 68 | compound-text-with-extensions as the value of selection-coding-system. | ||
| 69 | |||
| 70 | ** The default values of `tooltip-delay' and `tooltip-hide-delay' | ||
| 71 | were changed. | ||
| 72 | |||
| 73 | ** On terminals whose erase-char is ^H (Backspace), Emacs | ||
| 74 | now uses normal-erase-is-backspace-mode. | ||
| 75 | |||
| 76 | ** When the *scratch* buffer is recreated, its mode is set from | ||
| 77 | initial-major-mode, which normally is lisp-interaction-mode, | ||
| 78 | instead of using default-major-mode. | ||
| 79 | |||
| 80 | ** The new option `Info-scroll-prefer-subnodes' causes Info to behave | ||
| 81 | like the stand-alone Info reader (from the GNU Texinfo package) as far | ||
| 82 | as motion between nodes and their subnodes is concerned. If it is t | ||
| 83 | (the default), Emacs behaves as before when you type SPC in a menu: it | ||
| 84 | visits the subnode pointed to by the first menu entry. If this option | ||
| 85 | is nil, SPC scrolls to the end of the current node, and only then goes | ||
| 86 | to the first menu item, like the stand-alone reader does. | ||
| 87 | |||
| 88 | This change was already in Emacs 21.1, but wasn't advertised in the | ||
| 89 | NEWS. | ||
| 90 | |||
| 91 | |||
| 92 | * Lisp Changes in Emacs 21.2 | ||
| 93 | |||
| 94 | ** The meanings of scroll-up-aggressively and scroll-down-aggressively | ||
| 95 | have been interchanged, so that the former now controls scrolling up, | ||
| 96 | and the latter now controls scrolling down. | ||
| 97 | |||
| 98 | ** The variable `compilation-parse-errors-filename-function' can | ||
| 99 | be used to transform filenames found in compilation output. | ||
| 100 | |||
| 101 | |||
| 102 | |||
| 103 | * Installation Changes in Emacs 21.1 | ||
| 104 | |||
| 105 | See the INSTALL file for information on installing extra libraries and | ||
| 106 | fonts to take advantage of the new graphical features and extra | ||
| 107 | charsets in this release. | ||
| 108 | |||
| 109 | ** Support for GNU/Linux on IA64 machines has been added. | ||
| 110 | |||
| 111 | ** Support for LynxOS has been added. | ||
| 112 | |||
| 113 | ** There are new configure options associated with the support for | ||
| 114 | images and toolkit scrollbars. Use the --help option in `configure' | ||
| 115 | to list them. | ||
| 116 | |||
| 117 | ** You can build a 64-bit Emacs for SPARC/Solaris systems which | ||
| 118 | support 64-bit executables and also on Irix 6.5. This increases the | ||
| 119 | maximum buffer size. See etc/MACHINES for instructions. Changes to | ||
| 120 | build on other 64-bit systems should be straightforward modulo any | ||
| 121 | necessary changes to unexec. | ||
| 122 | |||
| 123 | ** There is a new configure option `--disable-largefile' to omit | ||
| 124 | Unix-98-style support for large files if that is available. | ||
| 125 | |||
| 126 | ** There is a new configure option `--without-xim' that instructs | ||
| 127 | Emacs to not use X Input Methods (XIM), if these are available. | ||
| 128 | |||
| 129 | ** `movemail' defaults to supporting POP. You can turn this off using | ||
| 130 | the --without-pop configure option, should that be necessary. | ||
| 131 | |||
| 132 | ** This version can be built for the Macintosh, but does not implement | ||
| 133 | all of the new display features described below. The port currently | ||
| 134 | lacks unexec, asynchronous processes, and networking support. See the | ||
| 135 | "Emacs and the Mac OS" appendix in the Emacs manual, for the | ||
| 136 | description of aspects specific to the Mac. | ||
| 137 | |||
| 138 | ** Note that the MS-Windows port does not yet implement various of the | ||
| 139 | new display features described below. | ||
| 140 | |||
| 141 | |||
| 142 | * Changes in Emacs 21.1 | ||
| 143 | |||
| 144 | ** Emacs has a new redisplay engine. | ||
| 145 | |||
| 146 | The new redisplay handles characters of variable width and height. | ||
| 147 | Italic text can be used without redisplay problems. Fonts containing | ||
| 148 | oversized characters, i.e. characters larger than the logical height | ||
| 149 | of a font can be used. Images of various formats can be displayed in | ||
| 150 | the text. | ||
| 151 | |||
| 152 | ** Emacs has a new face implementation. | ||
| 153 | |||
| 154 | The new faces no longer fundamentally use X font names to specify the | ||
| 155 | font. Instead, each face has several independent attributes--family, | ||
| 156 | height, width, weight and slant--that it may or may not specify. | ||
| 157 | These attributes can be merged from various faces, and then together | ||
| 158 | specify a font. | ||
| 159 | |||
| 160 | Faces are supported on terminals that can display color or fonts. | ||
| 161 | These terminal capabilities are auto-detected. Details can be found | ||
| 162 | under Lisp changes, below. | ||
| 163 | |||
| 164 | ** Emacs can display faces on TTY frames. | ||
| 165 | |||
| 166 | Emacs automatically detects terminals that are able to display colors. | ||
| 167 | Faces with a weight greater than normal are displayed extra-bright, if | ||
| 168 | the terminal supports it. Faces with a weight less than normal and | ||
| 169 | italic faces are displayed dimmed, if the terminal supports it. | ||
| 170 | Underlined faces are displayed underlined if possible. Other face | ||
| 171 | attributes such as `overline', `strike-through', and `box' are ignored | ||
| 172 | on terminals. | ||
| 173 | |||
| 174 | The command-line options `-fg COLOR', `-bg COLOR', and `-rv' are now | ||
| 175 | supported on character terminals. | ||
| 176 | |||
| 177 | Emacs automatically remaps all X-style color specifications to one of | ||
| 178 | the colors supported by the terminal. This means you could have the | ||
| 179 | same color customizations that work both on a windowed display and on | ||
| 180 | a TTY or when Emacs is invoked with the -nw option. | ||
| 181 | |||
| 182 | ** New default font is Courier 12pt under X. | ||
| 183 | |||
| 184 | ** Sound support | ||
| 185 | |||
| 186 | Emacs supports playing sound files on GNU/Linux and FreeBSD (Voxware | ||
| 187 | driver and native BSD driver, a.k.a. Luigi's driver). Currently | ||
| 188 | supported file formats are RIFF-WAVE (*.wav) and Sun Audio (*.au). | ||
| 189 | You must configure Emacs with the option `--with-sound=yes' to enable | ||
| 190 | sound support. | ||
| 191 | |||
| 192 | ** Emacs now resizes mini-windows if appropriate. | ||
| 193 | |||
| 194 | If a message is longer than one line, or minibuffer contents are | ||
| 195 | longer than one line, Emacs can resize the minibuffer window unless it | ||
| 196 | is on a frame of its own. You can control resizing and the maximum | ||
| 197 | minibuffer window size by setting the following variables: | ||
| 198 | |||
| 199 | - User option: max-mini-window-height | ||
| 200 | |||
| 201 | Maximum height for resizing mini-windows. If a float, it specifies a | ||
| 202 | fraction of the mini-window frame's height. If an integer, it | ||
| 203 | specifies a number of lines. | ||
| 204 | |||
| 205 | Default is 0.25. | ||
| 206 | |||
| 207 | - User option: resize-mini-windows | ||
| 208 | |||
| 209 | How to resize mini-windows. If nil, don't resize. If t, always | ||
| 210 | resize to fit the size of the text. If `grow-only', let mini-windows | ||
| 211 | grow only, until they become empty, at which point they are shrunk | ||
| 212 | again. | ||
| 213 | |||
| 214 | Default is `grow-only'. | ||
| 215 | |||
| 216 | ** LessTif support. | ||
| 217 | |||
| 218 | Emacs now runs with the LessTif toolkit (see | ||
| 219 | <http://www.lesstif.org>). You will need version 0.92.26, or later. | ||
| 220 | |||
| 221 | ** LessTif/Motif file selection dialog. | ||
| 222 | |||
| 223 | When Emacs is configured to use LessTif or Motif, reading a file name | ||
| 224 | from a menu will pop up a file selection dialog if `use-dialog-box' is | ||
| 225 | non-nil. | ||
| 226 | |||
| 227 | ** File selection dialog on MS-Windows is supported. | ||
| 228 | |||
| 229 | When a file is visited by clicking File->Open, the MS-Windows version | ||
| 230 | now pops up a standard file selection dialog where you can select a | ||
| 231 | file to visit. File->Save As also pops up that dialog. | ||
| 232 | |||
| 233 | ** Toolkit scroll bars. | ||
| 234 | |||
| 235 | Emacs now uses toolkit scroll bars if available. When configured for | ||
| 236 | LessTif/Motif, it will use that toolkit's scroll bar. Otherwise, when | ||
| 237 | configured for Lucid and Athena widgets, it will use the Xaw3d scroll | ||
| 238 | bar if Xaw3d is available. You can turn off the use of toolkit scroll | ||
| 239 | bars by specifying `--with-toolkit-scroll-bars=no' when configuring | ||
| 240 | Emacs. | ||
| 241 | |||
| 242 | When you encounter problems with the Xaw3d scroll bar, watch out how | ||
| 243 | Xaw3d is compiled on your system. If the Makefile generated from | ||
| 244 | Xaw3d's Imakefile contains a `-DNARROWPROTO' compiler option, and your | ||
| 245 | Emacs system configuration file `s/your-system.h' does not contain a | ||
| 246 | define for NARROWPROTO, you might consider adding it. Take | ||
| 247 | `s/freebsd.h' as an example. | ||
| 248 | |||
| 249 | Alternatively, if you don't have access to the Xaw3d source code, take | ||
| 250 | a look at your system's imake configuration file, for example in the | ||
| 251 | directory `/usr/X11R6/lib/X11/config' (paths are different on | ||
| 252 | different systems). You will find files `*.cf' there. If your | ||
| 253 | system's cf-file contains a line like `#define NeedWidePrototypes NO', | ||
| 254 | add a `#define NARROWPROTO' to your Emacs system configuration file. | ||
| 255 | |||
| 256 | The reason for this is that one Xaw3d function uses `double' or | ||
| 257 | `float' function parameters depending on the setting of NARROWPROTO. | ||
| 258 | This is not a problem when Imakefiles are used because each system's | ||
| 259 | imake configuration file contains the necessary information. Since | ||
| 260 | Emacs doesn't use imake, this has do be done manually. | ||
| 261 | |||
| 262 | ** Tool bar support. | ||
| 263 | |||
| 264 | Emacs supports a tool bar at the top of a frame under X. For details | ||
| 265 | of how to define a tool bar, see the page describing Lisp-level | ||
| 266 | changes. Tool-bar global minor mode controls whether or not it is | ||
| 267 | displayed and is on by default. The appearance of the bar is improved | ||
| 268 | if Emacs has been built with XPM image support. Otherwise monochrome | ||
| 269 | icons will be used. | ||
| 270 | |||
| 271 | To make the tool bar more useful, we need contributions of extra icons | ||
| 272 | for specific modes (with copyright assignments). | ||
| 273 | |||
| 274 | ** Tooltips. | ||
| 275 | |||
| 276 | Tooltips are small X windows displaying a help string at the current | ||
| 277 | mouse position. The Lisp package `tooltip' implements them. You can | ||
| 278 | turn them off via the user option `tooltip-mode'. | ||
| 279 | |||
| 280 | Tooltips also provides support for GUD debugging. If activated, | ||
| 281 | variable values can be displayed in tooltips by pointing at them with | ||
| 282 | the mouse in source buffers. You can customize various aspects of the | ||
| 283 | tooltip display in the group `tooltip'. | ||
| 284 | |||
| 285 | ** Automatic Hscrolling | ||
| 286 | |||
| 287 | Horizontal scrolling now happens automatically if | ||
| 288 | `automatic-hscrolling' is set (the default). This setting can be | ||
| 289 | customized. | ||
| 290 | |||
| 291 | If a window is scrolled horizontally with set-window-hscroll, or | ||
| 292 | scroll-left/scroll-right (C-x <, C-x >), this serves as a lower bound | ||
| 293 | for automatic horizontal scrolling. Automatic scrolling will scroll | ||
| 294 | the text more to the left if necessary, but won't scroll the text more | ||
| 295 | to the right than the column set with set-window-hscroll etc. | ||
| 296 | |||
| 297 | ** When using a windowing terminal, each Emacs window now has a cursor | ||
| 298 | of its own. By default, when a window is selected, the cursor is | ||
| 299 | solid; otherwise, it is hollow. The user-option | ||
| 300 | `cursor-in-non-selected-windows' controls how to display the | ||
| 301 | cursor in non-selected windows. If nil, no cursor is shown, if | ||
| 302 | non-nil a hollow box cursor is shown. | ||
| 303 | |||
| 304 | ** Fringes to the left and right of windows are used to display | ||
| 305 | truncation marks, continuation marks, overlay arrows and alike. The | ||
| 306 | foreground, background, and stipple of these areas can be changed by | ||
| 307 | customizing face `fringe'. | ||
| 308 | |||
| 309 | ** The mode line under X is now drawn with shadows by default. | ||
| 310 | You can change its appearance by modifying the face `mode-line'. | ||
| 311 | In particular, setting the `:box' attribute to nil turns off the 3D | ||
| 312 | appearance of the mode line. (The 3D appearance makes the mode line | ||
| 313 | occupy more space, and thus might cause the first or the last line of | ||
| 314 | the window to be partially obscured.) | ||
| 315 | |||
| 316 | The variable `mode-line-inverse-video', which was used in older | ||
| 317 | versions of emacs to make the mode-line stand out, is now deprecated. | ||
| 318 | However, setting it to nil will cause the `mode-line' face to be | ||
| 319 | ignored, and mode-lines to be drawn using the default text face. | ||
| 320 | |||
| 321 | ** Mouse-sensitive mode line. | ||
| 322 | |||
| 323 | Different parts of the mode line have been made mouse-sensitive on all | ||
| 324 | systems which support the mouse. Moving the mouse to a | ||
| 325 | mouse-sensitive part in the mode line changes the appearance of the | ||
| 326 | mouse pointer to an arrow, and help about available mouse actions is | ||
| 327 | displayed either in the echo area, or in the tooltip window if you | ||
| 328 | have enabled one. | ||
| 329 | |||
| 330 | Currently, the following actions have been defined: | ||
| 331 | |||
| 332 | - Mouse-1 on the buffer name in the mode line goes to the next buffer. | ||
| 333 | |||
| 334 | - Mouse-3 on the buffer-name goes to the previous buffer. | ||
| 335 | |||
| 336 | - Mouse-2 on the read-only or modified status in the mode line (`%' or | ||
| 337 | `*') toggles the status. | ||
| 338 | |||
| 339 | - Mouse-3 on the major mode name displays a major mode menu. | ||
| 340 | |||
| 341 | - Mouse-3 on the mode name displays a minor-mode menu. | ||
| 342 | |||
| 343 | ** Hourglass pointer | ||
| 344 | |||
| 345 | Emacs can optionally display an hourglass pointer under X. You can | ||
| 346 | turn the display on or off by customizing group `cursor'. | ||
| 347 | |||
| 348 | ** Blinking cursor | ||
| 349 | |||
| 350 | M-x blink-cursor-mode toggles a blinking cursor under X and on | ||
| 351 | terminals having terminal capabilities `vi', `vs', and `ve'. Blinking | ||
| 352 | and related parameters like frequency and delay can be customized in | ||
| 353 | the group `cursor'. | ||
| 354 | |||
| 355 | ** New font-lock support mode `jit-lock-mode'. | ||
| 356 | |||
| 357 | This support mode is roughly equivalent to `lazy-lock' but is | ||
| 358 | generally faster. It supports stealth and deferred fontification. | ||
| 359 | See the documentation of the function `jit-lock-mode' for more | ||
| 360 | details. | ||
| 361 | |||
| 362 | Font-lock uses jit-lock-mode as default support mode, so you don't | ||
| 363 | have to do anything to activate it. | ||
| 364 | |||
| 365 | ** The default binding of the Delete key has changed. | ||
| 366 | |||
| 367 | The new user-option `normal-erase-is-backspace' can be set to | ||
| 368 | determine the effect of the Delete and Backspace function keys. | ||
| 369 | |||
| 370 | On window systems, the default value of this option is chosen | ||
| 371 | according to the keyboard used. If the keyboard has both a Backspace | ||
| 372 | key and a Delete key, and both are mapped to their usual meanings, the | ||
| 373 | option's default value is set to t, so that Backspace can be used to | ||
| 374 | delete backward, and Delete can be used to delete forward. On | ||
| 375 | keyboards which either have only one key (usually labeled DEL), or two | ||
| 376 | keys DEL and BS which produce the same effect, the option's value is | ||
| 377 | set to nil, and these keys delete backward. | ||
| 378 | |||
| 379 | If not running under a window system, setting this option accomplishes | ||
| 380 | a similar effect by mapping C-h, which is usually generated by the | ||
| 381 | Backspace key, to DEL, and by mapping DEL to C-d via | ||
| 382 | `keyboard-translate'. The former functionality of C-h is available on | ||
| 383 | the F1 key. You should probably not use this setting on a text-only | ||
| 384 | terminal if you don't have both Backspace, Delete and F1 keys. | ||
| 385 | |||
| 386 | Programmatically, you can call function normal-erase-is-backspace-mode | ||
| 387 | to toggle the behavior of the Delete and Backspace keys. | ||
| 388 | |||
| 389 | ** The default for user-option `next-line-add-newlines' has been | ||
| 390 | changed to nil, i.e. C-n will no longer add newlines at the end of a | ||
| 391 | buffer by default. | ||
| 392 | |||
| 393 | ** The <home> and <end> keys now move to the beginning or end of the | ||
| 394 | current line, respectively. C-<home> and C-<end> move to the | ||
| 395 | beginning and end of the buffer. | ||
| 396 | |||
| 397 | ** Emacs now checks for recursive loads of Lisp files. If the | ||
| 398 | recursion depth exceeds `recursive-load-depth-limit', an error is | ||
| 399 | signaled. | ||
| 400 | |||
| 401 | ** When an error is signaled during the loading of the user's init | ||
| 402 | file, Emacs now pops up the *Messages* buffer. | ||
| 403 | |||
| 404 | ** Emacs now refuses to load compiled Lisp files which weren't | ||
| 405 | compiled with Emacs. Set `load-dangerous-libraries' to t to change | ||
| 406 | this behavior. | ||
| 407 | |||
| 408 | The reason for this change is an incompatible change in XEmacs's byte | ||
| 409 | compiler. Files compiled with XEmacs can contain byte codes that let | ||
| 410 | Emacs dump core. | ||
| 411 | |||
| 412 | ** Toggle buttons and radio buttons in menus. | ||
| 413 | |||
| 414 | When compiled with LessTif (or Motif) support, Emacs uses toolkit | ||
| 415 | widgets for radio and toggle buttons in menus. When configured for | ||
| 416 | Lucid, Emacs draws radio buttons and toggle buttons similar to Motif. | ||
| 417 | |||
| 418 | ** The menu bar configuration has changed. The new configuration is | ||
| 419 | more CUA-compliant. The most significant change is that Options is | ||
| 420 | now a separate menu-bar item, with Mule and Customize as its submenus. | ||
| 421 | |||
| 422 | ** Item Save Options on the Options menu allows saving options set | ||
| 423 | using that menu. | ||
| 424 | |||
| 425 | ** Highlighting of trailing whitespace. | ||
| 426 | |||
| 427 | When `show-trailing-whitespace' is non-nil, Emacs displays trailing | ||
| 428 | whitespace in the face `trailing-whitespace'. Trailing whitespace is | ||
| 429 | defined as spaces or tabs at the end of a line. To avoid busy | ||
| 430 | highlighting when entering new text, trailing whitespace is not | ||
| 431 | displayed if point is at the end of the line containing the | ||
| 432 | whitespace. | ||
| 433 | |||
| 434 | ** C-x 5 1 runs the new command delete-other-frames which deletes | ||
| 435 | all frames except the selected one. | ||
| 436 | |||
| 437 | ** The new user-option `confirm-kill-emacs' can be customized to | ||
| 438 | let Emacs ask for confirmation before exiting. | ||
| 439 | |||
| 440 | ** The header line in an Info buffer is now displayed as an emacs | ||
| 441 | header-line (which is like a mode-line, but at the top of the window), | ||
| 442 | so that it remains visible even when the buffer has been scrolled. | ||
| 443 | This behavior may be disabled by customizing the option | ||
| 444 | `Info-use-header-line'. | ||
| 445 | |||
| 446 | ** Polish, Czech, German, and French translations of Emacs' reference card | ||
| 447 | have been added. They are named `pl-refcard.tex', `cs-refcard.tex', | ||
| 448 | `de-refcard.tex' and `fr-refcard.tex'. Postscript files are included. | ||
| 449 | |||
| 450 | ** An `Emacs Survival Guide', etc/survival.tex, is available. | ||
| 451 | |||
| 452 | ** A reference card for Dired has been added. Its name is | ||
| 453 | `dired-ref.tex'. A French translation is available in | ||
| 454 | `fr-drdref.tex'. | ||
| 455 | |||
| 456 | ** C-down-mouse-3 is bound differently. Now if the menu bar is not | ||
| 457 | displayed it pops up a menu containing the items which would be on the | ||
| 458 | menu bar. If the menu bar is displayed, it pops up the major mode | ||
| 459 | menu or the Edit menu if there is no major mode menu. | ||
| 460 | |||
| 461 | ** Variable `load-path' is no longer customizable through Customize. | ||
| 462 | |||
| 463 | You can no longer use `M-x customize-variable' to customize `load-path' | ||
| 464 | because it now contains a version-dependent component. You can still | ||
| 465 | use `add-to-list' and `setq' to customize this variable in your | ||
| 466 | `~/.emacs' init file or to modify it from any Lisp program in general. | ||
| 467 | |||
| 468 | ** C-u C-x = provides detailed information about the character at | ||
| 469 | point in a pop-up window. | ||
| 470 | |||
| 471 | ** Emacs can now support 'wheeled' mice (such as the MS IntelliMouse) | ||
| 472 | under XFree86. To enable this, use the `mouse-wheel-mode' command, or | ||
| 473 | customize the variable `mouse-wheel-mode'. | ||
| 474 | |||
| 475 | The variables `mouse-wheel-follow-mouse' and `mouse-wheel-scroll-amount' | ||
| 476 | determine where and by how much buffers are scrolled. | ||
| 477 | |||
| 478 | ** Emacs' auto-save list files are now by default stored in a | ||
| 479 | sub-directory `.emacs.d/auto-save-list/' of the user's home directory. | ||
| 480 | (On MS-DOS, this subdirectory's name is `_emacs.d/auto-save.list/'.) | ||
| 481 | You can customize `auto-save-list-file-prefix' to change this location. | ||
| 482 | |||
| 483 | ** The function `getenv' is now callable interactively. | ||
| 484 | |||
| 485 | ** The new user-option `even-window-heights' can be set to nil | ||
| 486 | to prevent `display-buffer' from evening out window heights. | ||
| 487 | |||
| 488 | ** The new command M-x delete-trailing-whitespace RET will delete the | ||
| 489 | trailing whitespace within the current restriction. You can also add | ||
| 490 | this function to `write-file-hooks' or `local-write-file-hooks'. | ||
| 491 | |||
| 492 | ** When visiting a file with M-x find-file-literally, no newlines will | ||
| 493 | be added to the end of the buffer even if `require-final-newline' is | ||
| 494 | non-nil. | ||
| 495 | |||
| 496 | ** The new user-option `find-file-suppress-same-file-warnings' can be | ||
| 497 | set to suppress warnings ``X and Y are the same file'' when visiting a | ||
| 498 | file that is already visited under a different name. | ||
| 499 | |||
| 500 | ** The new user-option `electric-help-shrink-window' can be set to | ||
| 501 | nil to prevent adjusting the help window size to the buffer size. | ||
| 502 | |||
| 503 | ** New command M-x describe-character-set reads a character set name | ||
| 504 | and displays information about that. | ||
| 505 | |||
| 506 | ** The new variable `auto-mode-interpreter-regexp' contains a regular | ||
| 507 | expression matching interpreters, for file mode determination. | ||
| 508 | |||
| 509 | This regular expression is matched against the first line of a file to | ||
| 510 | determine the file's mode in `set-auto-mode' when Emacs can't deduce a | ||
| 511 | mode from the file's name. If it matches, the file is assumed to be | ||
| 512 | interpreted by the interpreter matched by the second group of the | ||
| 513 | regular expression. The mode is then determined as the mode | ||
| 514 | associated with that interpreter in `interpreter-mode-alist'. | ||
| 515 | |||
| 516 | ** New function executable-make-buffer-file-executable-if-script-p is | ||
| 517 | suitable as an after-save-hook as an alternative to `executable-chmod'. | ||
| 518 | |||
| 519 | ** The most preferred coding-system is now used to save a buffer if | ||
| 520 | buffer-file-coding-system is `undecided' and it is safe for the buffer | ||
| 521 | contents. (The most preferred is set by set-language-environment or | ||
| 522 | by M-x prefer-coding-system.) Thus if you visit an ASCII file and | ||
| 523 | insert a non-ASCII character from your current language environment, | ||
| 524 | the file will be saved silently with the appropriate coding. | ||
| 525 | Previously you would be prompted for a safe coding system. | ||
| 526 | |||
| 527 | ** The many obsolete language `setup-...-environment' commands have | ||
| 528 | been removed -- use `set-language-environment'. | ||
| 529 | |||
| 530 | ** The new Custom option `keyboard-coding-system' specifies a coding | ||
| 531 | system for keyboard input. | ||
| 532 | |||
| 533 | ** New variable `inhibit-iso-escape-detection' determines if Emacs' | ||
| 534 | coding system detection algorithm should pay attention to ISO2022's | ||
| 535 | escape sequences. If this variable is non-nil, the algorithm ignores | ||
| 536 | such escape sequences. The default value is nil, and it is | ||
| 537 | recommended not to change it except for the special case that you | ||
| 538 | always want to read any escape code verbatim. If you just want to | ||
| 539 | read a specific file without decoding escape codes, use C-x RET c | ||
| 540 | (`universal-coding-system-argument'). For instance, C-x RET c latin-1 | ||
| 541 | RET C-x C-f filename RET. | ||
| 542 | |||
| 543 | ** Variable `default-korean-keyboard' is initialized properly from the | ||
| 544 | environment variable `HANGUL_KEYBOARD_TYPE'. | ||
| 545 | |||
| 546 | ** New command M-x list-charset-chars reads a character set name and | ||
| 547 | displays all characters in that character set. | ||
| 548 | |||
| 549 | ** M-x set-terminal-coding-system (C-x RET t) now allows CCL-based | ||
| 550 | coding systems such as cpXXX and cyrillic-koi8. | ||
| 551 | |||
| 552 | ** Emacs now attempts to determine the initial language environment | ||
| 553 | and preferred and locale coding systems systematically from the | ||
| 554 | LC_ALL, LC_CTYPE, and LANG environment variables during startup. | ||
| 555 | |||
| 556 | ** New language environments `Polish', `Latin-8' and `Latin-9'. | ||
| 557 | Latin-8 and Latin-9 correspond respectively to the ISO character sets | ||
| 558 | 8859-14 (Celtic) and 8859-15 (updated Latin-1, with the Euro sign). | ||
| 559 | GNU Intlfonts doesn't support these yet but recent X releases have | ||
| 560 | 8859-15. See etc/INSTALL for information on obtaining extra fonts. | ||
| 561 | There are new Leim input methods for Latin-8 and Latin-9 prefix (only) | ||
| 562 | and Polish `slash'. | ||
| 563 | |||
| 564 | ** New language environments `Dutch' and `Spanish'. | ||
| 565 | These new environments mainly select appropriate translations | ||
| 566 | of the tutorial. | ||
| 567 | |||
| 568 | ** In Ethiopic language environment, special key bindings for | ||
| 569 | function keys are changed as follows. This is to conform to "Emacs | ||
| 570 | Lisp Coding Convention". | ||
| 571 | |||
| 572 | new command old-binding | ||
| 573 | --- ------- ----------- | ||
| 574 | f3 ethio-fidel-to-sera-buffer f5 | ||
| 575 | S-f3 ethio-fidel-to-sera-region f5 | ||
| 576 | C-f3 ethio-fidel-to-sera-mail-or-marker f5 | ||
| 577 | |||
| 578 | f4 ethio-sera-to-fidel-buffer unchanged | ||
| 579 | S-f4 ethio-sera-to-fidel-region unchanged | ||
| 580 | C-f4 ethio-sera-to-fidel-mail-or-marker unchanged | ||
| 581 | |||
| 582 | S-f5 ethio-toggle-punctuation f3 | ||
| 583 | S-f6 ethio-modify-vowel f6 | ||
| 584 | S-f7 ethio-replace-space f7 | ||
| 585 | S-f8 ethio-input-special-character f8 | ||
| 586 | S-f9 ethio-replace-space unchanged | ||
| 587 | C-f9 ethio-toggle-space f2 | ||
| 588 | |||
| 589 | ** There are new Leim input methods. | ||
| 590 | New input methods "turkish-postfix", "turkish-alt-postfix", | ||
| 591 | "greek-mizuochi", "TeX", and "greek-babel" are now part of the Leim | ||
| 592 | package. | ||
| 593 | |||
| 594 | ** The rule of input method "slovak" is slightly changed. Now the | ||
| 595 | rules for translating "q" and "Q" to "`" (backquote) are deleted, thus | ||
| 596 | typing them inserts "q" and "Q" respectively. Rules for translating | ||
| 597 | "=q", "+q", "=Q", and "+Q" to "`" are also deleted. Now, to input | ||
| 598 | "`", you must type "=q". | ||
| 599 | |||
| 600 | ** When your terminal can't display characters from some of the ISO | ||
| 601 | 8859 character sets but can display Latin-1, you can display | ||
| 602 | more-or-less mnemonic sequences of ASCII/Latin-1 characters instead of | ||
| 603 | empty boxes (under a window system) or question marks (not under a | ||
| 604 | window system). Customize the option `latin1-display' to turn this | ||
| 605 | on. | ||
| 606 | |||
| 607 | ** M-; now calls comment-dwim which tries to do something clever based | ||
| 608 | on the context. M-x kill-comment is now an alias to comment-kill, | ||
| 609 | defined in newcomment.el. You can choose different styles of region | ||
| 610 | commenting with the variable `comment-style'. | ||
| 611 | |||
| 612 | ** New user options `display-time-mail-face' and | ||
| 613 | `display-time-use-mail-icon' control the appearance of mode-line mail | ||
| 614 | indicator used by the display-time package. On a suitable display the | ||
| 615 | indicator can be an icon and is mouse-sensitive. | ||
| 616 | |||
| 617 | ** On window-systems, additional space can be put between text lines | ||
| 618 | on the display using several methods | ||
| 619 | |||
| 620 | - By setting frame parameter `line-spacing' to PIXELS. PIXELS must be | ||
| 621 | a positive integer, and specifies that PIXELS number of pixels should | ||
| 622 | be put below text lines on the affected frame or frames. | ||
| 623 | |||
| 624 | - By setting X resource `lineSpacing', class `LineSpacing'. This is | ||
| 625 | equivalent to specifying the frame parameter. | ||
| 626 | |||
| 627 | - By specifying `--line-spacing=N' or `-lsp N' on the command line. | ||
| 628 | |||
| 629 | - By setting buffer-local variable `line-spacing'. The meaning is | ||
| 630 | the same, but applies to the a particular buffer only. | ||
| 631 | |||
| 632 | ** The new command `clone-indirect-buffer' can be used to create | ||
| 633 | an indirect buffer that is a twin copy of the current buffer. The | ||
| 634 | command `clone-indirect-buffer-other-window', bound to C-x 4 c, | ||
| 635 | does the same but displays the indirect buffer in another window. | ||
| 636 | |||
| 637 | ** New user options `backup-directory-alist' and | ||
| 638 | `make-backup-file-name-function' control the placement of backups, | ||
| 639 | typically in a single directory or in an invisible sub-directory. | ||
| 640 | |||
| 641 | ** New commands iso-iso2sgml and iso-sgml2iso convert between Latin-1 | ||
| 642 | characters and the corresponding SGML (HTML) entities. | ||
| 643 | |||
| 644 | ** New X resources recognized | ||
| 645 | |||
| 646 | *** The X resource `synchronous', class `Synchronous', specifies | ||
| 647 | whether Emacs should run in synchronous mode. Synchronous mode | ||
| 648 | is useful for debugging X problems. | ||
| 649 | |||
| 650 | Example: | ||
| 651 | |||
| 652 | emacs.synchronous: true | ||
| 653 | |||
| 654 | *** The X resource `visualClass, class `VisualClass', specifies the | ||
| 655 | visual Emacs should use. The resource's value should be a string of | ||
| 656 | the form `CLASS-DEPTH', where CLASS is the name of the visual class, | ||
| 657 | and DEPTH is the requested color depth as a decimal number. Valid | ||
| 658 | visual class names are | ||
| 659 | |||
| 660 | TrueColor | ||
| 661 | PseudoColor | ||
| 662 | DirectColor | ||
| 663 | StaticColor | ||
| 664 | GrayScale | ||
| 665 | StaticGray | ||
| 666 | |||
| 667 | Visual class names specified as X resource are case-insensitive, i.e. | ||
| 668 | `pseudocolor', `Pseudocolor' and `PseudoColor' all have the same | ||
| 669 | meaning. | ||
| 670 | |||
| 671 | The program `xdpyinfo' can be used to list the visual classes | ||
| 672 | supported on your display, and which depths they have. If | ||
| 673 | `visualClass' is not specified, Emacs uses the display's default | ||
| 674 | visual. | ||
| 675 | |||
| 676 | Example: | ||
| 677 | |||
| 678 | emacs.visualClass: TrueColor-8 | ||
| 679 | |||
| 680 | *** The X resource `privateColormap', class `PrivateColormap', | ||
| 681 | specifies that Emacs should use a private colormap if it is using the | ||
| 682 | default visual, and that visual is of class PseudoColor. Recognized | ||
| 683 | resource values are `true' or `on'. | ||
| 684 | |||
| 685 | Example: | ||
| 686 | |||
| 687 | emacs.privateColormap: true | ||
| 688 | |||
| 689 | ** Faces and frame parameters. | ||
| 690 | |||
| 691 | There are four new faces `scroll-bar', `border', `cursor' and `mouse'. | ||
| 692 | Setting the frame parameters `scroll-bar-foreground' and | ||
| 693 | `scroll-bar-background' sets foreground and background color of face | ||
| 694 | `scroll-bar' and vice versa. Setting frame parameter `border-color' | ||
| 695 | sets the background color of face `border' and vice versa. Likewise | ||
| 696 | for frame parameters `cursor-color' and face `cursor', and frame | ||
| 697 | parameter `mouse-color' and face `mouse'. | ||
| 698 | |||
| 699 | Changing frame parameter `font' sets font-related attributes of the | ||
| 700 | `default' face and vice versa. Setting frame parameters | ||
| 701 | `foreground-color' or `background-color' sets the colors of the | ||
| 702 | `default' face and vice versa. | ||
| 703 | |||
| 704 | ** New face `menu'. | ||
| 705 | |||
| 706 | The face `menu' can be used to change colors and font of Emacs' menus. | ||
| 707 | |||
| 708 | ** New frame parameter `screen-gamma' for gamma correction. | ||
| 709 | |||
| 710 | The new frame parameter `screen-gamma' specifies gamma-correction for | ||
| 711 | colors. Its value may be nil, the default, in which case no gamma | ||
| 712 | correction occurs, or a number > 0, usually a float, that specifies | ||
| 713 | the screen gamma of a frame's display. | ||
| 714 | |||
| 715 | PC monitors usually have a screen gamma of 2.2. smaller values result | ||
| 716 | in darker colors. You might want to try a screen gamma of 1.5 for LCD | ||
| 717 | color displays. The viewing gamma Emacs uses is 0.4545. (1/2.2). | ||
| 718 | |||
| 719 | The X resource name of this parameter is `screenGamma', class | ||
| 720 | `ScreenGamma'. | ||
| 721 | |||
| 722 | ** Tabs and variable-width text. | ||
| 723 | |||
| 724 | Tabs are now displayed with stretch properties; the width of a tab is | ||
| 725 | defined as a multiple of the normal character width of a frame, and is | ||
| 726 | independent of the fonts used in the text where the tab appears. | ||
| 727 | Thus, tabs can be used to line up text in different fonts. | ||
| 728 | |||
| 729 | ** Enhancements of the Lucid menu bar | ||
| 730 | |||
| 731 | *** The Lucid menu bar now supports the resource "margin". | ||
| 732 | |||
| 733 | emacs.pane.menubar.margin: 5 | ||
| 734 | |||
| 735 | The default margin is 4 which makes the menu bar appear like the | ||
| 736 | LessTif/Motif one. | ||
| 737 | |||
| 738 | *** Arrows that indicate sub-menus are now drawn with shadows, as in | ||
| 739 | LessTif and Motif. | ||
| 740 | |||
| 741 | ** A block cursor can be drawn as wide as the glyph under it under X. | ||
| 742 | |||
| 743 | As an example: if a block cursor is over a tab character, it will be | ||
| 744 | drawn as wide as that tab on the display. To do this, set | ||
| 745 | `x-stretch-cursor' to a non-nil value. | ||
| 746 | |||
| 747 | ** Empty display lines at the end of a buffer may be marked with a | ||
| 748 | bitmap (this is similar to the tilde displayed by vi and Less). | ||
| 749 | |||
| 750 | This behavior is activated by setting the buffer-local variable | ||
| 751 | `indicate-empty-lines' to a non-nil value. The default value of this | ||
| 752 | variable is found in `default-indicate-empty-lines'. | ||
| 753 | |||
| 754 | ** There is a new "aggressive" scrolling method. | ||
| 755 | |||
| 756 | When scrolling up because point is above the window start, if the | ||
| 757 | value of the buffer-local variable `scroll-up-aggressively' is a | ||
| 758 | number, Emacs chooses a new window start so that point ends up that | ||
| 759 | fraction of the window's height from the top of the window. | ||
| 760 | |||
| 761 | When scrolling down because point is below the window end, if the | ||
| 762 | value of the buffer-local variable `scroll-down-aggressively' is a | ||
| 763 | number, Emacs chooses a new window start so that point ends up that | ||
| 764 | fraction of the window's height from the bottom of the window. | ||
| 765 | |||
| 766 | ** You can now easily create new *Info* buffers using either | ||
| 767 | M-x clone-buffer, C-u m <entry> RET or C-u g <entry> RET. | ||
| 768 | M-x clone-buffer can also be used on *Help* and several other special | ||
| 769 | buffers. | ||
| 770 | |||
| 771 | ** The command `Info-search' now uses a search history. | ||
| 772 | |||
| 773 | ** Listing buffers with M-x list-buffers (C-x C-b) now shows | ||
| 774 | abbreviated file names. Abbreviations can be customized by changing | ||
| 775 | `directory-abbrev-alist'. | ||
| 776 | |||
| 777 | ** A new variable, backup-by-copying-when-privileged-mismatch, gives | ||
| 778 | the highest file uid for which backup-by-copying-when-mismatch will be | ||
| 779 | forced on. The assumption is that uids less than or equal to this | ||
| 780 | value are special uids (root, bin, daemon, etc.--not real system | ||
| 781 | users) and that files owned by these users should not change ownership, | ||
| 782 | even if your system policy allows users other than root to edit them. | ||
| 783 | |||
| 784 | The default is 200; set the variable to nil to disable the feature. | ||
| 785 | |||
| 786 | ** The rectangle commands now avoid inserting undesirable spaces, | ||
| 787 | notably at the end of lines. | ||
| 788 | |||
| 789 | All these functions have been rewritten to avoid inserting unwanted | ||
| 790 | spaces, and an optional prefix now allows them to behave the old way. | ||
| 791 | |||
| 792 | ** The function `replace-rectangle' is an alias for `string-rectangle'. | ||
| 793 | |||
| 794 | ** The new command M-x string-insert-rectangle is like `string-rectangle', | ||
| 795 | but inserts text instead of replacing it. | ||
| 796 | |||
| 797 | ** The new command M-x query-replace-regexp-eval acts like | ||
| 798 | query-replace-regexp, but takes a Lisp expression which is evaluated | ||
| 799 | after each match to get the replacement text. | ||
| 800 | |||
| 801 | ** M-x query-replace recognizes a new command `e' (or `E') that lets | ||
| 802 | you edit the replacement string. | ||
| 803 | |||
| 804 | ** The new command mail-abbrev-complete-alias, bound to `M-TAB' | ||
| 805 | (if you load the library `mailabbrev'), lets you complete mail aliases | ||
| 806 | in the text, analogous to lisp-complete-symbol. | ||
| 807 | |||
| 808 | ** The variable `echo-keystrokes' may now have a floating point value. | ||
| 809 | |||
| 810 | ** If your init file is compiled (.emacs.elc), `user-init-file' is set | ||
| 811 | to the source name (.emacs.el), if that exists, after loading it. | ||
| 812 | |||
| 813 | ** The help string specified for a menu-item whose definition contains | ||
| 814 | the property `:help HELP' is now displayed under X, on MS-Windows, and | ||
| 815 | MS-DOS, either in the echo area or with tooltips. Many standard menus | ||
| 816 | displayed by Emacs now have help strings. | ||
| 817 | |||
| 818 | -- | ||
| 819 | ** New user option `read-mail-command' specifies a command to use to | ||
| 820 | read mail from the menu etc. | ||
| 821 | |||
| 822 | ** The environment variable `EMACSLOCKDIR' is no longer used on MS-Windows. | ||
| 823 | This environment variable was used when creating lock files. Emacs on | ||
| 824 | MS-Windows does not use this variable anymore. This change was made | ||
| 825 | before Emacs 21.1, but wasn't documented until now. | ||
| 826 | |||
| 827 | ** Highlighting of mouse-sensitive regions is now supported in the | ||
| 828 | MS-DOS version of Emacs. | ||
| 829 | |||
| 830 | ** The new command `msdos-set-mouse-buttons' forces the MS-DOS version | ||
| 831 | of Emacs to behave as if the mouse had a specified number of buttons. | ||
| 832 | This comes handy with mice that don't report their number of buttons | ||
| 833 | correctly. One example is the wheeled mice, which report 3 buttons, | ||
| 834 | but clicks on the middle button are not passed to the MS-DOS version | ||
| 835 | of Emacs. | ||
| 836 | |||
| 837 | ** Customize changes | ||
| 838 | |||
| 839 | *** Customize now supports comments about customized items. Use the | ||
| 840 | `State' menu to add comments, or give a prefix argument to | ||
| 841 | M-x customize-set-variable or M-x customize-set-value. Note that | ||
| 842 | customization comments will cause the customizations to fail in | ||
| 843 | earlier versions of Emacs. | ||
| 844 | |||
| 845 | *** The new option `custom-buffer-done-function' says whether to kill | ||
| 846 | Custom buffers when you've done with them or just bury them (the | ||
| 847 | default). | ||
| 848 | |||
| 849 | *** If Emacs was invoked with the `-q' or `--no-init-file' options, it | ||
| 850 | does not allow you to save customizations in your `~/.emacs' init | ||
| 851 | file. This is because saving customizations from such a session would | ||
| 852 | wipe out all the other customizationss you might have on your init | ||
| 853 | file. | ||
| 854 | |||
| 855 | ** If Emacs was invoked with the `-q' or `--no-init-file' options, it | ||
| 856 | does not save disabled and enabled commands for future sessions, to | ||
| 857 | avoid overwriting existing customizations of this kind that are | ||
| 858 | already in your init file. | ||
| 859 | |||
| 860 | ** New features in evaluation commands | ||
| 861 | |||
| 862 | *** The commands to evaluate Lisp expressions, such as C-M-x in Lisp | ||
| 863 | modes, C-j in Lisp Interaction mode, and M-:, now bind the variables | ||
| 864 | print-level, print-length, and debug-on-error based on the new | ||
| 865 | customizable variables eval-expression-print-level, | ||
| 866 | eval-expression-print-length, and eval-expression-debug-on-error. | ||
| 867 | |||
| 868 | The default values for the first two of these variables are 12 and 4 | ||
| 869 | respectively, which means that `eval-expression' now prints at most | ||
| 870 | the first 12 members of a list and at most 4 nesting levels deep (if | ||
| 871 | the list is longer or deeper than that, an ellipsis `...' is | ||
| 872 | printed). | ||
| 873 | |||
| 874 | <RET> or <mouse-2> on the printed text toggles between an abbreviated | ||
| 875 | printed representation and an unabbreviated one. | ||
| 876 | |||
| 877 | The default value of eval-expression-debug-on-error is t, so any error | ||
| 878 | during evaluation produces a backtrace. | ||
| 879 | |||
| 880 | *** The function `eval-defun' (C-M-x) now loads Edebug and instruments | ||
| 881 | code when called with a prefix argument. | ||
| 882 | |||
| 883 | ** CC mode changes. | ||
| 884 | |||
| 885 | Note: This release contains changes that might not be compatible with | ||
| 886 | current user setups (although it's believed that these | ||
| 887 | incompatibilities will only show in very uncommon circumstances). | ||
| 888 | However, since the impact is uncertain, these changes may be rolled | ||
| 889 | back depending on user feedback. Therefore there's no forward | ||
| 890 | compatibility guarantee wrt the new features introduced in this | ||
| 891 | release. | ||
| 892 | |||
| 893 | *** The hardcoded switch to "java" style in Java mode is gone. | ||
| 894 | CC Mode used to automatically set the style to "java" when Java mode | ||
| 895 | is entered. This has now been removed since it caused too much | ||
| 896 | confusion. | ||
| 897 | |||
| 898 | However, to keep backward compatibility to a certain extent, the | ||
| 899 | default value for c-default-style now specifies the "java" style for | ||
| 900 | java-mode, but "gnu" for all other modes (as before). So you won't | ||
| 901 | notice the change if you haven't touched that variable. | ||
| 902 | |||
| 903 | *** New cleanups, space-before-funcall and compact-empty-funcall. | ||
| 904 | Two new cleanups have been added to c-cleanup-list: | ||
| 905 | |||
| 906 | space-before-funcall causes a space to be inserted before the opening | ||
| 907 | parenthesis of a function call, which gives the style "foo (bar)". | ||
| 908 | |||
| 909 | compact-empty-funcall causes any space before a function call opening | ||
| 910 | parenthesis to be removed if there are no arguments to the function. | ||
| 911 | It's typically useful together with space-before-funcall to get the | ||
| 912 | style "foo (bar)" and "foo()". | ||
| 913 | |||
| 914 | *** Some keywords now automatically trigger reindentation. | ||
| 915 | Keywords like "else", "while", "catch" and "finally" have been made | ||
| 916 | "electric" to make them reindent automatically when they continue an | ||
| 917 | earlier statement. An example: | ||
| 918 | |||
| 919 | for (i = 0; i < 17; i++) | ||
| 920 | if (a[i]) | ||
| 921 | res += a[i]->offset; | ||
| 922 | else | ||
| 923 | |||
| 924 | Here, the "else" should be indented like the preceding "if", since it | ||
| 925 | continues that statement. CC Mode will automatically reindent it after | ||
| 926 | the "else" has been typed in full, since it's not until then it's | ||
| 927 | possible to decide whether it's a new statement or a continuation of | ||
| 928 | the preceding "if". | ||
| 929 | |||
| 930 | CC Mode uses Abbrev mode to achieve this, which is therefore turned on | ||
| 931 | by default. | ||
| 932 | |||
| 933 | *** M-a and M-e now moves by sentence in multiline strings. | ||
| 934 | Previously these two keys only moved by sentence in comments, which | ||
| 935 | meant that sentence movement didn't work in strings containing | ||
| 936 | documentation or other natural language text. | ||
| 937 | |||
| 938 | The reason it's only activated in multiline strings (i.e. strings that | ||
| 939 | contain a newline, even when escaped by a '\') is to avoid stopping in | ||
| 940 | the short strings that often reside inside statements. Multiline | ||
| 941 | strings almost always contain text in a natural language, as opposed | ||
| 942 | to other strings that typically contain format specifications, | ||
| 943 | commands, etc. Also, it's not that bothersome that M-a and M-e misses | ||
| 944 | sentences in single line strings, since they're short anyway. | ||
| 945 | |||
| 946 | *** Support for autodoc comments in Pike mode. | ||
| 947 | Autodoc comments for Pike are used to extract documentation from the | ||
| 948 | source, like Javadoc in Java. Pike mode now recognize this markup in | ||
| 949 | comment prefixes and paragraph starts. | ||
| 950 | |||
| 951 | *** The comment prefix regexps on c-comment-prefix may be mode specific. | ||
| 952 | When c-comment-prefix is an association list, it specifies the comment | ||
| 953 | line prefix on a per-mode basis, like c-default-style does. This | ||
| 954 | change came about to support the special autodoc comment prefix in | ||
| 955 | Pike mode only. | ||
| 956 | |||
| 957 | *** Better handling of syntactic errors. | ||
| 958 | The recovery after unbalanced parens earlier in the buffer has been | ||
| 959 | improved; CC Mode now reports them by dinging and giving a message | ||
| 960 | stating the offending line, but still recovers and indent the | ||
| 961 | following lines in a sane way (most of the time). An "else" with no | ||
| 962 | matching "if" is handled similarly. If an error is discovered while | ||
| 963 | indenting a region, the whole region is still indented and the error | ||
| 964 | is reported afterwards. | ||
| 965 | |||
| 966 | *** Lineup functions may now return absolute columns. | ||
| 967 | A lineup function can give an absolute column to indent the line to by | ||
| 968 | returning a vector with the desired column as the first element. | ||
| 969 | |||
| 970 | *** More robust and warning-free byte compilation. | ||
| 971 | Although this is strictly not a user visible change (well, depending | ||
| 972 | on the view of a user), it's still worth mentioning that CC Mode now | ||
| 973 | can be compiled in the standard ways without causing trouble. Some | ||
| 974 | code have also been moved between the subpackages to enhance the | ||
| 975 | modularity somewhat. Thanks to Martin Buchholz for doing the | ||
| 976 | groundwork. | ||
| 977 | |||
| 978 | *** c-style-variables-are-local-p now defaults to t. | ||
| 979 | This is an incompatible change that has been made to make the behavior | ||
| 980 | of the style system wrt global variable settings less confusing for | ||
| 981 | non-advanced users. If you know what this variable does you might | ||
| 982 | want to set it to nil in your .emacs, otherwise you probably don't | ||
| 983 | have to bother. | ||
| 984 | |||
| 985 | Defaulting c-style-variables-are-local-p to t avoids the confusing | ||
| 986 | situation that occurs when a user sets some style variables globally | ||
| 987 | and edits both a Java and a non-Java file in the same Emacs session. | ||
| 988 | If the style variables aren't buffer local in this case, loading of | ||
| 989 | the second file will cause the default style (either "gnu" or "java" | ||
| 990 | by default) to override the global settings made by the user. | ||
| 991 | |||
| 992 | *** New initialization procedure for the style system. | ||
| 993 | When the initial style for a buffer is determined by CC Mode (from the | ||
| 994 | variable c-default-style), the global values of style variables now | ||
| 995 | take precedence over the values specified by the chosen style. This | ||
| 996 | is different than the old behavior: previously, the style-specific | ||
| 997 | settings would override the global settings. This change makes it | ||
| 998 | possible to do simple configuration in the intuitive way with | ||
| 999 | Customize or with setq lines in one's .emacs file. | ||
| 1000 | |||
| 1001 | By default, the global value of every style variable is the new | ||
| 1002 | special symbol set-from-style, which causes the value to be taken from | ||
| 1003 | the style system. This means that in effect, only an explicit setting | ||
| 1004 | of a style variable will cause the "overriding" behavior described | ||
| 1005 | above. | ||
| 1006 | |||
| 1007 | Also note that global settings override style-specific settings *only* | ||
| 1008 | when the initial style of a buffer is chosen by a CC Mode major mode | ||
| 1009 | function. When a style is chosen in other ways --- for example, by a | ||
| 1010 | call like (c-set-style "gnu") in a hook, or via M-x c-set-style --- | ||
| 1011 | then the style-specific values take precedence over any global style | ||
| 1012 | values. In Lisp terms, global values override style-specific values | ||
| 1013 | only when the new second argument to c-set-style is non-nil; see the | ||
| 1014 | function documentation for more info. | ||
| 1015 | |||
| 1016 | The purpose of these changes is to make it easier for users, | ||
| 1017 | especially novice users, to do simple customizations with Customize or | ||
| 1018 | with setq in their .emacs files. On the other hand, the new system is | ||
| 1019 | intended to be compatible with advanced users' customizations as well, | ||
| 1020 | such as those that choose styles in hooks or whatnot. This new system | ||
| 1021 | is believed to be almost entirely compatible with current | ||
| 1022 | configurations, in spite of the changed precedence between style and | ||
| 1023 | global variable settings when a buffer's default style is set. | ||
| 1024 | |||
| 1025 | (Thanks to Eric Eide for clarifying this explanation a bit.) | ||
| 1026 | |||
| 1027 | **** c-offsets-alist is now a customizable variable. | ||
| 1028 | This became possible as a result of the new initialization behavior. | ||
| 1029 | |||
| 1030 | This variable is treated slightly differently from the other style | ||
| 1031 | variables; instead of using the symbol set-from-style, it will be | ||
| 1032 | completed with the syntactic symbols it doesn't already contain when | ||
| 1033 | the style is first initialized. This means it now defaults to the | ||
| 1034 | empty list to make all syntactic elements get their values from the | ||
| 1035 | style system. | ||
| 1036 | |||
| 1037 | **** Compatibility variable to restore the old behavior. | ||
| 1038 | In case your configuration doesn't work with this change, you can set | ||
| 1039 | c-old-style-variable-behavior to non-nil to get the old behavior back | ||
| 1040 | as far as possible. | ||
| 1041 | |||
| 1042 | *** Improvements to line breaking and text filling. | ||
| 1043 | CC Mode now handles this more intelligently and seamlessly wrt the | ||
| 1044 | surrounding code, especially inside comments. For details see the new | ||
| 1045 | chapter about this in the manual. | ||
| 1046 | |||
| 1047 | **** New variable to recognize comment line prefix decorations. | ||
| 1048 | The variable c-comment-prefix-regexp has been added to properly | ||
| 1049 | recognize the line prefix in both block and line comments. It's | ||
| 1050 | primarily used to initialize the various paragraph recognition and | ||
| 1051 | adaptive filling variables that the text handling functions uses. | ||
| 1052 | |||
| 1053 | **** New variable c-block-comment-prefix. | ||
| 1054 | This is a generalization of the now obsolete variable | ||
| 1055 | c-comment-continuation-stars to handle arbitrary strings. | ||
| 1056 | |||
| 1057 | **** CC Mode now uses adaptive fill mode. | ||
| 1058 | This to make it adapt better to the paragraph style inside comments. | ||
| 1059 | |||
| 1060 | It's also possible to use other adaptive filling packages inside CC | ||
| 1061 | Mode, notably Kyle E. Jones' Filladapt mode (http://wonderworks.com/). | ||
| 1062 | A new convenience function c-setup-filladapt sets up Filladapt for use | ||
| 1063 | inside CC Mode. | ||
| 1064 | |||
| 1065 | Note though that the 2.12 version of Filladapt lacks a feature that | ||
| 1066 | causes it to work suboptimally when c-comment-prefix-regexp can match | ||
| 1067 | the empty string (which it commonly does). A patch for that is | ||
| 1068 | available from the CC Mode web site (http://www.python.org/emacs/ | ||
| 1069 | cc-mode/). | ||
| 1070 | |||
| 1071 | **** The variables `c-hanging-comment-starter-p' and | ||
| 1072 | `c-hanging-comment-ender-p', which controlled how comment starters and | ||
| 1073 | enders were filled, are not used anymore. The new version of the | ||
| 1074 | function `c-fill-paragraph' keeps the comment starters and enders as | ||
| 1075 | they were before the filling. | ||
| 1076 | |||
| 1077 | **** It's now possible to selectively turn off auto filling. | ||
| 1078 | The variable c-ignore-auto-fill is used to ignore auto fill mode in | ||
| 1079 | specific contexts, e.g. in preprocessor directives and in string | ||
| 1080 | literals. | ||
| 1081 | |||
| 1082 | **** New context sensitive line break function c-context-line-break. | ||
| 1083 | It works like newline-and-indent in normal code, and adapts the line | ||
| 1084 | prefix according to the comment style when used inside comments. If | ||
| 1085 | you're normally using newline-and-indent, you might want to switch to | ||
| 1086 | this function. | ||
| 1087 | |||
| 1088 | *** Fixes to IDL mode. | ||
| 1089 | It now does a better job in recognizing only the constructs relevant | ||
| 1090 | to IDL. E.g. it no longer matches "class" as the beginning of a | ||
| 1091 | struct block, but it does match the CORBA 2.3 "valuetype" keyword. | ||
| 1092 | Thanks to Eric Eide. | ||
| 1093 | |||
| 1094 | *** Improvements to the Whitesmith style. | ||
| 1095 | It now keeps the style consistently on all levels and both when | ||
| 1096 | opening braces hangs and when they don't. | ||
| 1097 | |||
| 1098 | **** New lineup function c-lineup-whitesmith-in-block. | ||
| 1099 | |||
| 1100 | *** New lineup functions c-lineup-template-args and c-indent-multi-line-block. | ||
| 1101 | See their docstrings for details. c-lineup-template-args does a | ||
| 1102 | better job of tracking the brackets used as parens in C++ templates, | ||
| 1103 | and is used by default to line up continued template arguments. | ||
| 1104 | |||
| 1105 | *** c-lineup-comment now preserves alignment with a comment on the | ||
| 1106 | previous line. It used to instead preserve comments that started in | ||
| 1107 | the column specified by comment-column. | ||
| 1108 | |||
| 1109 | *** c-lineup-C-comments handles "free form" text comments. | ||
| 1110 | In comments with a long delimiter line at the start, the indentation | ||
| 1111 | is kept unchanged for lines that start with an empty comment line | ||
| 1112 | prefix. This is intended for the type of large block comments that | ||
| 1113 | contain documentation with its own formatting. In these you normally | ||
| 1114 | don't want CC Mode to change the indentation. | ||
| 1115 | |||
| 1116 | *** The `c' syntactic symbol is now relative to the comment start | ||
| 1117 | instead of the previous line, to make integers usable as lineup | ||
| 1118 | arguments. | ||
| 1119 | |||
| 1120 | *** All lineup functions have gotten docstrings. | ||
| 1121 | |||
| 1122 | *** More preprocessor directive movement functions. | ||
| 1123 | c-down-conditional does the reverse of c-up-conditional. | ||
| 1124 | c-up-conditional-with-else and c-down-conditional-with-else are | ||
| 1125 | variants of these that also stops at "#else" lines (suggested by Don | ||
| 1126 | Provan). | ||
| 1127 | |||
| 1128 | *** Minor improvements to many movement functions in tricky situations. | ||
| 1129 | |||
| 1130 | ** Dired changes | ||
| 1131 | |||
| 1132 | *** New variable `dired-recursive-deletes' determines if the delete | ||
| 1133 | command will delete non-empty directories recursively. The default | ||
| 1134 | is, delete only empty directories. | ||
| 1135 | |||
| 1136 | *** New variable `dired-recursive-copies' determines if the copy | ||
| 1137 | command will copy directories recursively. The default is, do not | ||
| 1138 | copy directories recursively. | ||
| 1139 | |||
| 1140 | *** In command `dired-do-shell-command' (usually bound to `!') a `?' | ||
| 1141 | in the shell command has a special meaning similar to `*', but with | ||
| 1142 | the difference that the command will be run on each file individually. | ||
| 1143 | |||
| 1144 | *** The new command `dired-find-alternate-file' (usually bound to `a') | ||
| 1145 | replaces the Dired buffer with the buffer for an alternate file or | ||
| 1146 | directory. | ||
| 1147 | |||
| 1148 | *** The new command `dired-show-file-type' (usually bound to `y') shows | ||
| 1149 | a message in the echo area describing what type of file the point is on. | ||
| 1150 | This command invokes the external program `file' do its work, and so | ||
| 1151 | will only work on systems with that program, and will be only as | ||
| 1152 | accurate or inaccurate as it is. | ||
| 1153 | |||
| 1154 | *** Dired now properly handles undo changes of adding/removing `-R' | ||
| 1155 | from ls switches. | ||
| 1156 | |||
| 1157 | *** Dired commands that prompt for a destination file now allow the use | ||
| 1158 | of the `M-n' command in the minibuffer to insert the source filename, | ||
| 1159 | which the user can then edit. This only works if there is a single | ||
| 1160 | source file, not when operating on multiple marked files. | ||
| 1161 | |||
| 1162 | ** Gnus changes. | ||
| 1163 | |||
| 1164 | The Gnus NEWS entries are short, but they reflect sweeping changes in | ||
| 1165 | four areas: Article display treatment, MIME treatment, | ||
| 1166 | internationalization and mail-fetching. | ||
| 1167 | |||
| 1168 | *** The mail-fetching functions have changed. See the manual for the | ||
| 1169 | many details. In particular, all procmail fetching variables are gone. | ||
| 1170 | |||
| 1171 | If you used procmail like in | ||
| 1172 | |||
| 1173 | (setq nnmail-use-procmail t) | ||
| 1174 | (setq nnmail-spool-file 'procmail) | ||
| 1175 | (setq nnmail-procmail-directory "~/mail/incoming/") | ||
| 1176 | (setq nnmail-procmail-suffix "\\.in") | ||
| 1177 | |||
| 1178 | this now has changed to | ||
| 1179 | |||
| 1180 | (setq mail-sources | ||
| 1181 | '((directory :path "~/mail/incoming/" | ||
| 1182 | :suffix ".in"))) | ||
| 1183 | |||
| 1184 | More information is available in the info doc at Select Methods -> | ||
| 1185 | Getting Mail -> Mail Sources | ||
| 1186 | |||
| 1187 | *** Gnus is now a MIME-capable reader. This affects many parts of | ||
| 1188 | Gnus, and adds a slew of new commands. See the manual for details. | ||
| 1189 | Separate MIME packages like RMIME, mime-compose etc., will probably no | ||
| 1190 | longer work; remove them and use the native facilities. | ||
| 1191 | |||
| 1192 | The FLIM/SEMI package still works with Emacs 21, but if you want to | ||
| 1193 | use the native facilities, you must remove any mailcap.el[c] that was | ||
| 1194 | installed by FLIM/SEMI version 1.13 or earlier. | ||
| 1195 | |||
| 1196 | *** Gnus has also been multilingualized. This also affects too many | ||
| 1197 | parts of Gnus to summarize here, and adds many new variables. There | ||
| 1198 | are built-in facilities equivalent to those of gnus-mule.el, which is | ||
| 1199 | now just a compatibility layer. | ||
| 1200 | |||
| 1201 | *** gnus-mule.el is now just a compatibility layer over the built-in | ||
| 1202 | Gnus facilities. | ||
| 1203 | |||
| 1204 | *** gnus-auto-select-first can now be a function to be | ||
| 1205 | called to position point. | ||
| 1206 | |||
| 1207 | *** The user can now decide which extra headers should be included in | ||
| 1208 | summary buffers and NOV files. | ||
| 1209 | |||
| 1210 | *** `gnus-article-display-hook' has been removed. Instead, a number | ||
| 1211 | of variables starting with `gnus-treat-' have been added. | ||
| 1212 | |||
| 1213 | *** The Gnus posting styles have been redone again and now work in a | ||
| 1214 | subtly different manner. | ||
| 1215 | |||
| 1216 | *** New web-based backends have been added: nnslashdot, nnwarchive | ||
| 1217 | and nnultimate. nnweb has been revamped, again, to keep up with | ||
| 1218 | ever-changing layouts. | ||
| 1219 | |||
| 1220 | *** Gnus can now read IMAP mail via nnimap. | ||
| 1221 | |||
| 1222 | *** There is image support of various kinds and some sound support. | ||
| 1223 | |||
| 1224 | ** Changes in Texinfo mode. | ||
| 1225 | |||
| 1226 | *** A couple of new key bindings have been added for inserting Texinfo | ||
| 1227 | macros | ||
| 1228 | |||
| 1229 | Key binding Macro | ||
| 1230 | ------------------------- | ||
| 1231 | C-c C-c C-s @strong | ||
| 1232 | C-c C-c C-e @emph | ||
| 1233 | C-c C-c u @uref | ||
| 1234 | C-c C-c q @quotation | ||
| 1235 | C-c C-c m @email | ||
| 1236 | C-c C-o @<block> ... @end <block> | ||
| 1237 | M-RET @item | ||
| 1238 | |||
| 1239 | *** The " key now inserts either " or `` or '' depending on context. | ||
| 1240 | |||
| 1241 | ** Changes in Outline mode. | ||
| 1242 | |||
| 1243 | There is now support for Imenu to index headings. A new command | ||
| 1244 | `outline-headers-as-kill' copies the visible headings in the region to | ||
| 1245 | the kill ring, e.g. to produce a table of contents. | ||
| 1246 | |||
| 1247 | ** Changes to Emacs Server | ||
| 1248 | |||
| 1249 | *** The new option `server-kill-new-buffers' specifies what to do | ||
| 1250 | with buffers when done with them. If non-nil, the default, buffers | ||
| 1251 | are killed, unless they were already present before visiting them with | ||
| 1252 | Emacs Server. If nil, `server-temp-file-regexp' specifies which | ||
| 1253 | buffers to kill, as before. | ||
| 1254 | |||
| 1255 | Please note that only buffers are killed that still have a client, | ||
| 1256 | i.e. buffers visited with `emacsclient --no-wait' are never killed in | ||
| 1257 | this way. | ||
| 1258 | |||
| 1259 | ** Both emacsclient and Emacs itself now accept command line options | ||
| 1260 | of the form +LINE:COLUMN in addition to +LINE. | ||
| 1261 | |||
| 1262 | ** Changes to Show Paren mode. | ||
| 1263 | |||
| 1264 | *** Overlays used by Show Paren mode now use a priority property. | ||
| 1265 | The new user option show-paren-priority specifies the priority to | ||
| 1266 | use. Default is 1000. | ||
| 1267 | |||
| 1268 | ** New command M-x check-parens can be used to find unbalanced paren | ||
| 1269 | groups and strings in buffers in Lisp mode (or other modes). | ||
| 1270 | |||
| 1271 | ** Changes to hideshow.el | ||
| 1272 | |||
| 1273 | *** Generalized block selection and traversal | ||
| 1274 | |||
| 1275 | A block is now recognized by its start and end regexps (both strings), | ||
| 1276 | and an integer specifying which sub-expression in the start regexp | ||
| 1277 | serves as the place where a `forward-sexp'-like function can operate. | ||
| 1278 | See the documentation of variable `hs-special-modes-alist'. | ||
| 1279 | |||
| 1280 | *** During incremental search, if Hideshow minor mode is active, | ||
| 1281 | hidden blocks are temporarily shown. The variable `hs-headline' can | ||
| 1282 | be used in the mode line format to show the line at the beginning of | ||
| 1283 | the open block. | ||
| 1284 | |||
| 1285 | *** User option `hs-hide-all-non-comment-function' specifies a | ||
| 1286 | function to be called at each top-level block beginning, instead of | ||
| 1287 | the normal block-hiding function. | ||
| 1288 | |||
| 1289 | *** The command `hs-show-region' has been removed. | ||
| 1290 | |||
| 1291 | *** The key bindings have changed to fit the Emacs conventions, | ||
| 1292 | roughly imitating those of Outline minor mode. Notably, the prefix | ||
| 1293 | for all bindings is now `C-c @'. For details, see the documentation | ||
| 1294 | for `hs-minor-mode'. | ||
| 1295 | |||
| 1296 | *** The variable `hs-show-hidden-short-form' has been removed, and | ||
| 1297 | hideshow.el now always behaves as if this variable were set to t. | ||
| 1298 | |||
| 1299 | ** Changes to Change Log mode and Add-Log functions | ||
| 1300 | |||
| 1301 | *** If you invoke `add-change-log-entry' from a backup file, it makes | ||
| 1302 | an entry appropriate for the file's parent. This is useful for making | ||
| 1303 | log entries by comparing a version with deleted functions. | ||
| 1304 | |||
| 1305 | **** New command M-x change-log-merge merges another log into the | ||
| 1306 | current buffer. | ||
| 1307 | |||
| 1308 | *** New command M-x change-log-redate fixes any old-style date entries | ||
| 1309 | in a log file. | ||
| 1310 | |||
| 1311 | *** Change Log mode now adds a file's version number to change log | ||
| 1312 | entries if user-option `change-log-version-info-enabled' is non-nil. | ||
| 1313 | Unless the file is under version control the search for a file's | ||
| 1314 | version number is performed based on regular expressions from | ||
| 1315 | `change-log-version-number-regexp-list' which can be customized. | ||
| 1316 | Version numbers are only found in the first 10 percent of a file. | ||
| 1317 | |||
| 1318 | *** Change Log mode now defines its own faces for font-lock highlighting. | ||
| 1319 | |||
| 1320 | ** Changes to cmuscheme | ||
| 1321 | |||
| 1322 | *** The user-option `scheme-program-name' has been renamed | ||
| 1323 | `cmuscheme-program-name' due to conflicts with xscheme.el. | ||
| 1324 | |||
| 1325 | ** Changes in Font Lock | ||
| 1326 | |||
| 1327 | *** The new function `font-lock-remove-keywords' can be used to remove | ||
| 1328 | font-lock keywords from the current buffer or from a specific major mode. | ||
| 1329 | |||
| 1330 | *** Multi-line patterns are now supported. Modes using this, should | ||
| 1331 | set font-lock-multiline to t in their font-lock-defaults. | ||
| 1332 | |||
| 1333 | *** `font-lock-syntactic-face-function' allows major-modes to choose | ||
| 1334 | the face used for each string/comment. | ||
| 1335 | |||
| 1336 | *** A new standard face `font-lock-doc-face'. | ||
| 1337 | Meant for Lisp docstrings, Javadoc comments and other "documentation in code". | ||
| 1338 | |||
| 1339 | ** Changes to Shell mode | ||
| 1340 | |||
| 1341 | *** The `shell' command now accepts an optional argument to specify the buffer | ||
| 1342 | to use, which defaults to "*shell*". When used interactively, a | ||
| 1343 | non-default buffer may be specified by giving the `shell' command a | ||
| 1344 | prefix argument (causing it to prompt for the buffer name). | ||
| 1345 | |||
| 1346 | ** Comint (subshell) changes | ||
| 1347 | |||
| 1348 | These changes generally affect all modes derived from comint mode, which | ||
| 1349 | include shell-mode, gdb-mode, scheme-interaction-mode, etc. | ||
| 1350 | |||
| 1351 | *** Comint now by default interprets some carriage-control characters. | ||
| 1352 | Comint now removes CRs from CR LF sequences, and treats single CRs and | ||
| 1353 | BSs in the output in a way similar to a terminal (by deleting to the | ||
| 1354 | beginning of the line, or deleting the previous character, | ||
| 1355 | respectively). This is achieved by adding `comint-carriage-motion' to | ||
| 1356 | the `comint-output-filter-functions' hook by default. | ||
| 1357 | |||
| 1358 | *** By default, comint no longer uses the variable `comint-prompt-regexp' | ||
| 1359 | to distinguish prompts from user-input. Instead, it notices which | ||
| 1360 | parts of the text were output by the process, and which entered by the | ||
| 1361 | user, and attaches `field' properties to allow emacs commands to use | ||
| 1362 | this information. Common movement commands, notably beginning-of-line, | ||
| 1363 | respect field boundaries in a fairly natural manner. To disable this | ||
| 1364 | feature, and use the old behavior, customize the user option | ||
| 1365 | `comint-use-prompt-regexp-instead-of-fields'. | ||
| 1366 | |||
| 1367 | *** Comint now includes new features to send commands to running processes | ||
| 1368 | and redirect the output to a designated buffer or buffers. | ||
| 1369 | |||
| 1370 | *** The command M-x comint-redirect-send-command reads a command and | ||
| 1371 | buffer name from the mini-buffer. The command is sent to the current | ||
| 1372 | buffer's process, and its output is inserted into the specified buffer. | ||
| 1373 | |||
| 1374 | The command M-x comint-redirect-send-command-to-process acts like | ||
| 1375 | M-x comint-redirect-send-command but additionally reads the name of | ||
| 1376 | the buffer whose process should be used from the mini-buffer. | ||
| 1377 | |||
| 1378 | *** Packages based on comint now highlight user input and program prompts, | ||
| 1379 | and support choosing previous input with mouse-2. To control these features, | ||
| 1380 | see the user-options `comint-highlight-input' and `comint-highlight-prompt'. | ||
| 1381 | |||
| 1382 | *** The new command `comint-write-output' (usually bound to `C-c C-s') | ||
| 1383 | saves the output from the most recent command to a file. With a prefix | ||
| 1384 | argument, it appends to the file. | ||
| 1385 | |||
| 1386 | *** The command `comint-kill-output' has been renamed `comint-delete-output' | ||
| 1387 | (usually bound to `C-c C-o'); the old name is aliased to it for | ||
| 1388 | compatibility. | ||
| 1389 | |||
| 1390 | *** The new function `comint-add-to-input-history' adds commands to the input | ||
| 1391 | ring (history). | ||
| 1392 | |||
| 1393 | *** The new variable `comint-input-history-ignore' is a regexp for | ||
| 1394 | identifying history lines that should be ignored, like tcsh time-stamp | ||
| 1395 | strings, starting with a `#'. The default value of this variable is "^#". | ||
| 1396 | |||
| 1397 | ** Changes to Rmail mode | ||
| 1398 | |||
| 1399 | *** The new user-option rmail-user-mail-address-regexp can be | ||
| 1400 | set to fine tune the identification of the correspondent when | ||
| 1401 | receiving new mail. If it matches the address of the sender, the | ||
| 1402 | recipient is taken as correspondent of a mail. If nil, the default, | ||
| 1403 | `user-login-name' and `user-mail-address' are used to exclude yourself | ||
| 1404 | as correspondent. | ||
| 1405 | |||
| 1406 | Usually you don't have to set this variable, except if you collect | ||
| 1407 | mails sent by you under different user names. Then it should be a | ||
| 1408 | regexp matching your mail addresses. | ||
| 1409 | |||
| 1410 | *** The new user-option rmail-confirm-expunge controls whether and how | ||
| 1411 | to ask for confirmation before expunging deleted messages from an | ||
| 1412 | Rmail file. You can choose between no confirmation, confirmation | ||
| 1413 | with y-or-n-p, or confirmation with yes-or-no-p. Default is to ask | ||
| 1414 | for confirmation with yes-or-no-p. | ||
| 1415 | |||
| 1416 | *** RET is now bound in the Rmail summary to rmail-summary-goto-msg, | ||
| 1417 | like `j'. | ||
| 1418 | |||
| 1419 | *** There is a new user option `rmail-digest-end-regexps' that | ||
| 1420 | specifies the regular expressions to detect the line that ends a | ||
| 1421 | digest message. | ||
| 1422 | |||
| 1423 | *** The new user option `rmail-automatic-folder-directives' specifies | ||
| 1424 | in which folder to put messages automatically. | ||
| 1425 | |||
| 1426 | *** The new function `rmail-redecode-body' allows to fix a message | ||
| 1427 | with non-ASCII characters if Emacs happens to decode it incorrectly | ||
| 1428 | due to missing or malformed "charset=" header. | ||
| 1429 | |||
| 1430 | ** The new user-option `mail-envelope-from' can be used to specify | ||
| 1431 | an envelope-from address different from user-mail-address. | ||
| 1432 | |||
| 1433 | ** The variable mail-specify-envelope-from controls whether to | ||
| 1434 | use the -f option when sending mail. | ||
| 1435 | |||
| 1436 | ** The Rmail command `o' (`rmail-output-to-rmail-file') now writes the | ||
| 1437 | current message in the internal `emacs-mule' encoding, rather than in | ||
| 1438 | the encoding taken from the variable `buffer-file-coding-system'. | ||
| 1439 | This allows to save messages whose characters cannot be safely encoded | ||
| 1440 | by the buffer's coding system, and makes sure the message will be | ||
| 1441 | displayed correctly when you later visit the target Rmail file. | ||
| 1442 | |||
| 1443 | If you want your Rmail files be encoded in a specific coding system | ||
| 1444 | other than `emacs-mule', you can customize the variable | ||
| 1445 | `rmail-file-coding-system' to set its value to that coding system. | ||
| 1446 | |||
| 1447 | ** Changes to TeX mode | ||
| 1448 | |||
| 1449 | *** The default mode has been changed from `plain-tex-mode' to | ||
| 1450 | `latex-mode'. | ||
| 1451 | |||
| 1452 | *** latex-mode now has a simple indentation algorithm. | ||
| 1453 | |||
| 1454 | *** M-f and M-p jump around \begin...\end pairs. | ||
| 1455 | |||
| 1456 | *** Added support for outline-minor-mode. | ||
| 1457 | |||
| 1458 | ** Changes to RefTeX mode | ||
| 1459 | |||
| 1460 | *** RefTeX has new support for index generation. Index entries can be | ||
| 1461 | created with `C-c <', with completion available on index keys. | ||
| 1462 | Pressing `C-c /' indexes the word at the cursor with a default | ||
| 1463 | macro. `C-c >' compiles all index entries into an alphabetically | ||
| 1464 | sorted *Index* buffer which looks like the final index. Entries | ||
| 1465 | can be edited from that buffer. | ||
| 1466 | |||
| 1467 | *** Label and citation key selection now allow to select several | ||
| 1468 | items and reference them together (use `m' to mark items, `a' or | ||
| 1469 | `A' to use all marked entries). | ||
| 1470 | |||
| 1471 | *** reftex.el has been split into a number of smaller files to reduce | ||
| 1472 | memory use when only a part of RefTeX is being used. | ||
| 1473 | |||
| 1474 | *** a new command `reftex-view-crossref-from-bibtex' (bound to `C-c &' | ||
| 1475 | in BibTeX-mode) can be called in a BibTeX database buffer in order | ||
| 1476 | to show locations in LaTeX documents where a particular entry has | ||
| 1477 | been cited. | ||
| 1478 | |||
| 1479 | ** Emacs Lisp mode now allows multiple levels of outline headings. | ||
| 1480 | The level of a heading is determined from the number of leading | ||
| 1481 | semicolons in a heading line. Toplevel forms starting with a `(' | ||
| 1482 | in column 1 are always made leaves. | ||
| 1483 | |||
| 1484 | ** The M-x time-stamp command (most commonly used on write-file-hooks) | ||
| 1485 | has the following new features: | ||
| 1486 | |||
| 1487 | *** The patterns for finding the time stamp and for updating a pattern | ||
| 1488 | may match text spanning multiple lines. For example, some people like | ||
| 1489 | to have the filename and date on separate lines. The new variable | ||
| 1490 | time-stamp-inserts-lines controls the matching for multi-line patterns. | ||
| 1491 | |||
| 1492 | *** More than one time stamp can be updated in the same file. This | ||
| 1493 | feature is useful if you need separate time stamps in a program source | ||
| 1494 | file to both include in formatted documentation and insert in the | ||
| 1495 | compiled binary. The same time-stamp will be written at each matching | ||
| 1496 | pattern. The variable time-stamp-count enables this new feature; it | ||
| 1497 | defaults to 1. | ||
| 1498 | |||
| 1499 | ** Partial Completion mode now completes environment variables in | ||
| 1500 | file names. | ||
| 1501 | |||
| 1502 | ** Ispell changes | ||
| 1503 | |||
| 1504 | *** The command `ispell' now spell-checks a region if | ||
| 1505 | transient-mark-mode is on, and the mark is active. Otherwise it | ||
| 1506 | spell-checks the current buffer. | ||
| 1507 | |||
| 1508 | *** Support for synchronous subprocesses - DOS/Windoze - has been | ||
| 1509 | added. | ||
| 1510 | |||
| 1511 | *** An "alignment error" bug was fixed when a manual spelling | ||
| 1512 | correction is made and re-checked. | ||
| 1513 | |||
| 1514 | *** Italian, Portuguese, and Slovak dictionary definitions have been added. | ||
| 1515 | |||
| 1516 | *** Region skipping performance has been vastly improved in some | ||
| 1517 | cases. | ||
| 1518 | |||
| 1519 | *** Spell checking HTML buffers has been improved and isn't so strict | ||
| 1520 | on syntax errors. | ||
| 1521 | |||
| 1522 | *** The buffer-local words are now always placed on a new line at the | ||
| 1523 | end of the buffer. | ||
| 1524 | |||
| 1525 | *** Spell checking now works in the MS-DOS version of Emacs. | ||
| 1526 | |||
| 1527 | *** The variable `ispell-format-word' has been renamed to | ||
| 1528 | `ispell-format-word-function'. The old name is still available as | ||
| 1529 | alias. | ||
| 1530 | |||
| 1531 | ** Makefile mode changes | ||
| 1532 | |||
| 1533 | *** The mode now uses the abbrev table `makefile-mode-abbrev-table'. | ||
| 1534 | |||
| 1535 | *** Conditionals and include statements are now highlighted when | ||
| 1536 | Fontlock mode is active. | ||
| 1537 | |||
| 1538 | ** Isearch changes | ||
| 1539 | |||
| 1540 | *** Isearch now puts a call to `isearch-resume' in the command history, | ||
| 1541 | so that searches can be resumed. | ||
| 1542 | |||
| 1543 | *** In Isearch mode, C-M-s and C-M-r are now bound like C-s and C-r, | ||
| 1544 | respectively, i.e. you can repeat a regexp isearch with the same keys | ||
| 1545 | that started the search. | ||
| 1546 | |||
| 1547 | *** In Isearch mode, mouse-2 in the echo area now yanks the current | ||
| 1548 | selection into the search string rather than giving an error. | ||
| 1549 | |||
| 1550 | *** There is a new lazy highlighting feature in incremental search. | ||
| 1551 | |||
| 1552 | Lazy highlighting is switched on/off by customizing variable | ||
| 1553 | `isearch-lazy-highlight'. When active, all matches for the current | ||
| 1554 | search string are highlighted. The current match is highlighted as | ||
| 1555 | before using face `isearch' or `region'. All other matches are | ||
| 1556 | highlighted using face `isearch-lazy-highlight-face' which defaults to | ||
| 1557 | `secondary-selection'. | ||
| 1558 | |||
| 1559 | The extra highlighting makes it easier to anticipate where the cursor | ||
| 1560 | will end up each time you press C-s or C-r to repeat a pending search. | ||
| 1561 | Highlighting of these additional matches happens in a deferred fashion | ||
| 1562 | using "idle timers," so the cycles needed do not rob isearch of its | ||
| 1563 | usual snappy response. | ||
| 1564 | |||
| 1565 | If `isearch-lazy-highlight-cleanup' is set to t, highlights for | ||
| 1566 | matches are automatically cleared when you end the search. If it is | ||
| 1567 | set to nil, you can remove the highlights manually with `M-x | ||
| 1568 | isearch-lazy-highlight-cleanup'. | ||
| 1569 | |||
| 1570 | ** VC Changes | ||
| 1571 | |||
| 1572 | VC has been overhauled internally. It is now modular, making it | ||
| 1573 | easier to plug-in arbitrary version control backends. (See Lisp | ||
| 1574 | Changes for details on the new structure.) As a result, the mechanism | ||
| 1575 | to enable and disable support for particular version systems has | ||
| 1576 | changed: everything is now controlled by the new variable | ||
| 1577 | `vc-handled-backends'. Its value is a list of symbols that identify | ||
| 1578 | version systems; the default is '(RCS CVS SCCS). When finding a file, | ||
| 1579 | each of the backends in that list is tried in order to see whether the | ||
| 1580 | file is registered in that backend. | ||
| 1581 | |||
| 1582 | When registering a new file, VC first tries each of the listed | ||
| 1583 | backends to see if any of them considers itself "responsible" for the | ||
| 1584 | directory of the file (e.g. because a corresponding subdirectory for | ||
| 1585 | master files exists). If none of the backends is responsible, then | ||
| 1586 | the first backend in the list that could register the file is chosen. | ||
| 1587 | As a consequence, the variable `vc-default-back-end' is now obsolete. | ||
| 1588 | |||
| 1589 | The old variable `vc-master-templates' is also obsolete, although VC | ||
| 1590 | still supports it for backward compatibility. To define templates for | ||
| 1591 | RCS or SCCS, you should rather use the new variables | ||
| 1592 | vc-{rcs,sccs}-master-templates. (There is no such feature under CVS | ||
| 1593 | where it doesn't make sense.) | ||
| 1594 | |||
| 1595 | The variables `vc-ignore-vc-files' and `vc-handle-cvs' are also | ||
| 1596 | obsolete now, you must set `vc-handled-backends' to nil or exclude | ||
| 1597 | `CVS' from the list, respectively, to achieve their effect now. | ||
| 1598 | |||
| 1599 | *** General Changes | ||
| 1600 | |||
| 1601 | The variable `vc-checkout-carefully' is obsolete: the corresponding | ||
| 1602 | checks are always done now. | ||
| 1603 | |||
| 1604 | VC Dired buffers are now kept up-to-date during all version control | ||
| 1605 | operations. | ||
| 1606 | |||
| 1607 | `vc-diff' output is now displayed in `diff-mode'. | ||
| 1608 | `vc-print-log' uses `log-view-mode'. | ||
| 1609 | `vc-log-mode' (used for *VC-Log*) has been replaced by `log-edit-mode'. | ||
| 1610 | |||
| 1611 | The command C-x v m (vc-merge) now accepts an empty argument as the | ||
| 1612 | first revision number. This means that any recent changes on the | ||
| 1613 | current branch should be picked up from the repository and merged into | ||
| 1614 | the working file (``merge news''). | ||
| 1615 | |||
| 1616 | The commands C-x v s (vc-create-snapshot) and C-x v r | ||
| 1617 | (vc-retrieve-snapshot) now ask for a directory name from which to work | ||
| 1618 | downwards. | ||
| 1619 | |||
| 1620 | *** Multiple Backends | ||
| 1621 | |||
| 1622 | VC now lets you register files in more than one backend. This is | ||
| 1623 | useful, for example, if you are working with a slow remote CVS | ||
| 1624 | repository. You can then use RCS for local editing, and occasionally | ||
| 1625 | commit your changes back to CVS, or pick up changes from CVS into your | ||
| 1626 | local RCS archives. | ||
| 1627 | |||
| 1628 | To make this work, the ``more local'' backend (RCS in our example) | ||
| 1629 | should come first in `vc-handled-backends', and the ``more remote'' | ||
| 1630 | backend (CVS) should come later. (The default value of | ||
| 1631 | `vc-handled-backends' already has it that way.) | ||
| 1632 | |||
| 1633 | You can then commit changes to another backend (say, RCS), by typing | ||
| 1634 | C-u C-x v v RCS RET (i.e. vc-next-action now accepts a backend name as | ||
| 1635 | a revision number). VC registers the file in the more local backend | ||
| 1636 | if that hasn't already happened, and commits to a branch based on the | ||
| 1637 | current revision number from the more remote backend. | ||
| 1638 | |||
| 1639 | If a file is registered in multiple backends, you can switch to | ||
| 1640 | another one using C-x v b (vc-switch-backend). This does not change | ||
| 1641 | any files, it only changes VC's perspective on the file. Use this to | ||
| 1642 | pick up changes from CVS while working under RCS locally. | ||
| 1643 | |||
| 1644 | After you are done with your local RCS editing, you can commit your | ||
| 1645 | changes back to CVS using C-u C-x v v CVS RET. In this case, the | ||
| 1646 | local RCS archive is removed after the commit, and the log entry | ||
| 1647 | buffer is initialized to contain the entire RCS change log of the file. | ||
| 1648 | |||
| 1649 | *** Changes for CVS | ||
| 1650 | |||
| 1651 | There is a new user option, `vc-cvs-stay-local'. If it is `t' (the | ||
| 1652 | default), then VC avoids network queries for files registered in | ||
| 1653 | remote repositories. The state of such files is then only determined | ||
| 1654 | by heuristics and past information. `vc-cvs-stay-local' can also be a | ||
| 1655 | regexp to match against repository hostnames; only files from hosts | ||
| 1656 | that match it are treated locally. If the variable is nil, then VC | ||
| 1657 | queries the repository just as often as it does for local files. | ||
| 1658 | |||
| 1659 | If `vc-cvs-stay-local' is on, then VC also makes local backups of | ||
| 1660 | repository versions. This means that ordinary diffs (C-x v =) and | ||
| 1661 | revert operations (C-x v u) can be done completely locally, without | ||
| 1662 | any repository interactions at all. The name of a local version | ||
| 1663 | backup of FILE is FILE.~REV.~, where REV is the repository version | ||
| 1664 | number. This format is similar to that used by C-x v ~ | ||
| 1665 | (vc-version-other-window), except for the trailing dot. As a matter | ||
| 1666 | of fact, the two features can each use the files created by the other, | ||
| 1667 | the only difference being that files with a trailing `.' are deleted | ||
| 1668 | automatically after commit. (This feature doesn't work on MS-DOS, | ||
| 1669 | since DOS disallows more than a single dot in the trunk of a file | ||
| 1670 | name.) | ||
| 1671 | |||
| 1672 | If `vc-cvs-stay-local' is on, and there have been changes in the | ||
| 1673 | repository, VC notifies you about it when you actually try to commit. | ||
| 1674 | If you want to check for updates from the repository without trying to | ||
| 1675 | commit, you can either use C-x v m RET to perform an update on the | ||
| 1676 | current file, or you can use C-x v r RET to get an update for an | ||
| 1677 | entire directory tree. | ||
| 1678 | |||
| 1679 | The new user option `vc-cvs-use-edit' indicates whether VC should call | ||
| 1680 | "cvs edit" to make files writeable; it defaults to `t'. (This option | ||
| 1681 | is only meaningful if the CVSREAD variable is set, or if files are | ||
| 1682 | "watched" by other developers.) | ||
| 1683 | |||
| 1684 | The commands C-x v s (vc-create-snapshot) and C-x v r | ||
| 1685 | (vc-retrieve-snapshot) are now also implemented for CVS. If you give | ||
| 1686 | an empty snapshot name to the latter, that performs a `cvs update', | ||
| 1687 | starting at the given directory. | ||
| 1688 | |||
| 1689 | *** Lisp Changes in VC | ||
| 1690 | |||
| 1691 | VC has been restructured internally to make it modular. You can now | ||
| 1692 | add support for arbitrary version control backends by writing a | ||
| 1693 | library that provides a certain set of backend-specific functions, and | ||
| 1694 | then telling VC to use that library. For example, to add support for | ||
| 1695 | a version system named SYS, you write a library named vc-sys.el, which | ||
| 1696 | provides a number of functions vc-sys-... (see commentary at the top | ||
| 1697 | of vc.el for a detailed list of them). To make VC use that library, | ||
| 1698 | you need to put it somewhere into Emacs' load path and add the symbol | ||
| 1699 | `SYS' to the list `vc-handled-backends'. | ||
| 1700 | |||
| 1701 | ** The customizable EDT emulation package now supports the EDT | ||
| 1702 | SUBS command and EDT scroll margins. It also works with more | ||
| 1703 | terminal/keyboard configurations and it now works under XEmacs. | ||
| 1704 | See etc/edt-user.doc for more information. | ||
| 1705 | |||
| 1706 | ** New modes and packages | ||
| 1707 | |||
| 1708 | *** The new global minor mode `minibuffer-electric-default-mode' | ||
| 1709 | automatically hides the `(default ...)' part of minibuffer prompts when | ||
| 1710 | the default is not applicable. | ||
| 1711 | |||
| 1712 | *** Artist is an Emacs lisp package that allows you to draw lines, | ||
| 1713 | rectangles and ellipses by using your mouse and/or keyboard. The | ||
| 1714 | shapes are made up with the ascii characters |, -, / and \. | ||
| 1715 | |||
| 1716 | Features are: | ||
| 1717 | |||
| 1718 | - Intersecting: When a `|' intersects with a `-', a `+' is | ||
| 1719 | drawn, like this: | \ / | ||
| 1720 | --+-- X | ||
| 1721 | | / \ | ||
| 1722 | |||
| 1723 | - Rubber-banding: When drawing lines you can interactively see the | ||
| 1724 | result while holding the mouse button down and moving the mouse. If | ||
| 1725 | your machine is not fast enough (a 386 is a bit too slow, but a | ||
| 1726 | pentium is well enough), you can turn this feature off. You will | ||
| 1727 | then see 1's and 2's which mark the 1st and 2nd endpoint of the line | ||
| 1728 | you are drawing. | ||
| 1729 | |||
| 1730 | - Arrows: After having drawn a (straight) line or a (straight) | ||
| 1731 | poly-line, you can set arrows on the line-ends by typing < or >. | ||
| 1732 | |||
| 1733 | - Flood-filling: You can fill any area with a certain character by | ||
| 1734 | flood-filling. | ||
| 1735 | |||
| 1736 | - Cut copy and paste: You can cut, copy and paste rectangular | ||
| 1737 | regions. Artist also interfaces with the rect package (this can be | ||
| 1738 | turned off if it causes you any trouble) so anything you cut in | ||
| 1739 | artist can be yanked with C-x r y and vice versa. | ||
| 1740 | |||
| 1741 | - Drawing with keys: Everything you can do with the mouse, you can | ||
| 1742 | also do without the mouse. | ||
| 1743 | |||
| 1744 | - Aspect-ratio: You can set the variable artist-aspect-ratio to | ||
| 1745 | reflect the height-width ratio for the font you are using. Squares | ||
| 1746 | and circles are then drawn square/round. Note, that once your | ||
| 1747 | ascii-file is shown with font with a different height-width ratio, | ||
| 1748 | the squares won't be square and the circles won't be round. | ||
| 1749 | |||
| 1750 | - Drawing operations: The following drawing operations are implemented: | ||
| 1751 | |||
| 1752 | lines straight-lines | ||
| 1753 | rectangles squares | ||
| 1754 | poly-lines straight poly-lines | ||
| 1755 | ellipses circles | ||
| 1756 | text (see-thru) text (overwrite) | ||
| 1757 | spray-can setting size for spraying | ||
| 1758 | vaporize line vaporize lines | ||
| 1759 | erase characters erase rectangles | ||
| 1760 | |||
| 1761 | Straight lines are lines that go horizontally, vertically or | ||
| 1762 | diagonally. Plain lines go in any direction. The operations in | ||
| 1763 | the right column are accessed by holding down the shift key while | ||
| 1764 | drawing. | ||
| 1765 | |||
| 1766 | It is possible to vaporize (erase) entire lines and connected lines | ||
| 1767 | (rectangles for example) as long as the lines being vaporized are | ||
| 1768 | straight and connected at their endpoints. Vaporizing is inspired | ||
| 1769 | by the drawrect package by Jari Aalto <jari.aalto@poboxes.com>. | ||
| 1770 | |||
| 1771 | - Picture mode compatibility: Artist is picture mode compatible (this | ||
| 1772 | can be turned off). | ||
| 1773 | |||
| 1774 | *** The new package Eshell is an operating system command shell | ||
| 1775 | implemented entirely in Emacs Lisp. Use `M-x eshell' to invoke it. | ||
| 1776 | It functions similarly to bash and zsh, and allows running of Lisp | ||
| 1777 | functions and external commands using the same syntax. It supports | ||
| 1778 | history lists, aliases, extended globbing, smart scrolling, etc. It | ||
| 1779 | will work on any platform Emacs has been ported to. And since most of | ||
| 1780 | the basic commands -- ls, rm, mv, cp, ln, du, cat, etc. -- have been | ||
| 1781 | rewritten in Lisp, it offers an operating-system independent shell, | ||
| 1782 | all within the scope of your Emacs process. | ||
| 1783 | |||
| 1784 | *** The new package timeclock.el is a mode is for keeping track of time | ||
| 1785 | intervals. You can use it for whatever purpose you like, but the | ||
| 1786 | typical scenario is to keep track of how much time you spend working | ||
| 1787 | on certain projects. | ||
| 1788 | |||
| 1789 | *** The new package hi-lock.el provides commands to highlight matches | ||
| 1790 | of interactively entered regexps. For example, | ||
| 1791 | |||
| 1792 | M-x highlight-regexp RET clearly RET RET | ||
| 1793 | |||
| 1794 | will highlight all occurrences of `clearly' using a yellow background | ||
| 1795 | face. New occurrences of `clearly' will be highlighted as they are | ||
| 1796 | typed. `M-x unhighlight-regexp RET' will remove the highlighting. | ||
| 1797 | Any existing face can be used for highlighting and a set of | ||
| 1798 | appropriate faces is provided. The regexps can be written into the | ||
| 1799 | current buffer in a form that will be recognized the next time the | ||
| 1800 | corresponding file is read. There are commands to highlight matches | ||
| 1801 | to phrases and to highlight entire lines containing a match. | ||
| 1802 | |||
| 1803 | *** The new package zone.el plays games with Emacs' display when | ||
| 1804 | Emacs is idle. | ||
| 1805 | |||
| 1806 | *** The new package tildify.el allows to add hard spaces or other text | ||
| 1807 | fragments in accordance with the current major mode. | ||
| 1808 | |||
| 1809 | *** The new package xml.el provides a simple but generic XML | ||
| 1810 | parser. It doesn't parse the DTDs however. | ||
| 1811 | |||
| 1812 | *** The comment operations are now provided by the newcomment.el | ||
| 1813 | package which allows different styles of comment-region and should | ||
| 1814 | be more robust while offering the same functionality. | ||
| 1815 | `comment-region' now doesn't always comment a-line-at-a-time, but only | ||
| 1816 | comments the region, breaking the line at point if necessary. | ||
| 1817 | |||
| 1818 | *** The Ebrowse package implements a C++ class browser and tags | ||
| 1819 | facilities tailored for use with C++. It is documented in a | ||
| 1820 | separate Texinfo file. | ||
| 1821 | |||
| 1822 | *** The PCL-CVS package available by either running M-x cvs-examine or | ||
| 1823 | by visiting a CVS administrative directory (with a prefix argument) | ||
| 1824 | provides an alternative interface to VC-dired for CVS. It comes with | ||
| 1825 | `log-view-mode' to view RCS and SCCS logs and `log-edit-mode' used to | ||
| 1826 | enter check-in log messages. | ||
| 1827 | |||
| 1828 | *** The new package called `woman' allows to browse Unix man pages | ||
| 1829 | without invoking external programs. | ||
| 1830 | |||
| 1831 | The command `M-x woman' formats manual pages entirely in Emacs Lisp | ||
| 1832 | and then displays them, like `M-x manual-entry' does. Unlike | ||
| 1833 | `manual-entry', `woman' does not invoke any external programs, so it | ||
| 1834 | is useful on systems such as MS-DOS/MS-Windows where the `man' and | ||
| 1835 | Groff or `troff' commands are not readily available. | ||
| 1836 | |||
| 1837 | The command `M-x woman-find-file' asks for the file name of a man | ||
| 1838 | page, then formats and displays it like `M-x woman' does. | ||
| 1839 | |||
| 1840 | *** The new command M-x re-builder offers a convenient interface for | ||
| 1841 | authoring regular expressions with immediate visual feedback. | ||
| 1842 | |||
| 1843 | The buffer from which the command was called becomes the target for | ||
| 1844 | the regexp editor popping up in a separate window. Matching text in | ||
| 1845 | the target buffer is immediately color marked during the editing. | ||
| 1846 | Each sub-expression of the regexp will show up in a different face so | ||
| 1847 | even complex regexps can be edited and verified on target data in a | ||
| 1848 | single step. | ||
| 1849 | |||
| 1850 | On displays not supporting faces the matches instead blink like | ||
| 1851 | matching parens to make them stand out. On such a setup you will | ||
| 1852 | probably also want to use the sub-expression mode when the regexp | ||
| 1853 | contains such to get feedback about their respective limits. | ||
| 1854 | |||
| 1855 | *** glasses-mode is a minor mode that makes | ||
| 1856 | unreadableIdentifiersLikeThis readable. It works as glasses, without | ||
| 1857 | actually modifying content of a buffer. | ||
| 1858 | |||
| 1859 | *** The package ebnf2ps translates an EBNF to a syntactic chart in | ||
| 1860 | PostScript. | ||
| 1861 | |||
| 1862 | Currently accepts ad-hoc EBNF, ISO EBNF and Bison/Yacc. | ||
| 1863 | |||
| 1864 | The ad-hoc default EBNF syntax has the following elements: | ||
| 1865 | |||
| 1866 | ; comment (until end of line) | ||
| 1867 | A non-terminal | ||
| 1868 | "C" terminal | ||
| 1869 | ?C? special | ||
| 1870 | $A default non-terminal | ||
| 1871 | $"C" default terminal | ||
| 1872 | $?C? default special | ||
| 1873 | A = B. production (A is the header and B the body) | ||
| 1874 | C D sequence (C occurs before D) | ||
| 1875 | C | D alternative (C or D occurs) | ||
| 1876 | A - B exception (A excluding B, B without any non-terminal) | ||
| 1877 | n * A repetition (A repeats n (integer) times) | ||
| 1878 | (C) group (expression C is grouped together) | ||
| 1879 | [C] optional (C may or not occurs) | ||
| 1880 | C+ one or more occurrences of C | ||
| 1881 | {C}+ one or more occurrences of C | ||
| 1882 | {C}* zero or more occurrences of C | ||
| 1883 | {C} zero or more occurrences of C | ||
| 1884 | C / D equivalent to: C {D C}* | ||
| 1885 | {C || D}+ equivalent to: C {D C}* | ||
| 1886 | {C || D}* equivalent to: [C {D C}*] | ||
| 1887 | {C || D} equivalent to: [C {D C}*] | ||
| 1888 | |||
| 1889 | Please, see ebnf2ps documentation for EBNF syntax and how to use it. | ||
| 1890 | |||
| 1891 | *** The package align.el will align columns within a region, using M-x | ||
| 1892 | align. Its mode-specific rules, based on regular expressions, | ||
| 1893 | determine where the columns should be split. In C and C++, for | ||
| 1894 | example, it will align variable names in declaration lists, or the | ||
| 1895 | equal signs of assignments. | ||
| 1896 | |||
| 1897 | *** `paragraph-indent-minor-mode' is a new minor mode supporting | ||
| 1898 | paragraphs in the same style as `paragraph-indent-text-mode'. | ||
| 1899 | |||
| 1900 | *** bs.el is a new package for buffer selection similar to | ||
| 1901 | list-buffers or electric-buffer-list. Use M-x bs-show to display a | ||
| 1902 | buffer menu with this package. See the Custom group `bs'. | ||
| 1903 | |||
| 1904 | *** find-lisp.el is a package emulating the Unix find command in Lisp. | ||
| 1905 | |||
| 1906 | *** calculator.el is a small calculator package that is intended to | ||
| 1907 | replace desktop calculators such as xcalc and calc.exe. Actually, it | ||
| 1908 | is not too small - it has more features than most desktop calculators, | ||
| 1909 | and can be customized easily to get many more functions. It should | ||
| 1910 | not be confused with "calc" which is a much bigger mathematical tool | ||
| 1911 | which answers different needs. | ||
| 1912 | |||
| 1913 | *** The minor modes cwarn-mode and global-cwarn-mode highlights | ||
| 1914 | suspicious C and C++ constructions. Currently, assignments inside | ||
| 1915 | expressions, semicolon following `if', `for' and `while' (except, of | ||
| 1916 | course, after a `do .. while' statement), and C++ functions with | ||
| 1917 | reference parameters are recognized. The modes require font-lock mode | ||
| 1918 | to be enabled. | ||
| 1919 | |||
| 1920 | *** smerge-mode.el provides `smerge-mode', a simple minor-mode for files | ||
| 1921 | containing diff3-style conflict markers, such as generated by RCS. | ||
| 1922 | |||
| 1923 | *** 5x5.el is a simple puzzle game. | ||
| 1924 | |||
| 1925 | *** hl-line.el provides `hl-line-mode', a minor mode to highlight the | ||
| 1926 | current line in the current buffer. It also provides | ||
| 1927 | `global-hl-line-mode' to provide the same behavior in all buffers. | ||
| 1928 | |||
| 1929 | *** ansi-color.el translates ANSI terminal escapes into text-properties. | ||
| 1930 | |||
| 1931 | Please note: if `ansi-color-for-comint-mode' and | ||
| 1932 | `global-font-lock-mode' are non-nil, loading ansi-color.el will | ||
| 1933 | disable font-lock and add `ansi-color-apply' to | ||
| 1934 | `comint-preoutput-filter-functions' for all shell-mode buffers. This | ||
| 1935 | displays the output of "ls --color=yes" using the correct foreground | ||
| 1936 | and background colors. | ||
| 1937 | |||
| 1938 | *** delphi.el provides a major mode for editing the Delphi (Object | ||
| 1939 | Pascal) language. | ||
| 1940 | |||
| 1941 | *** quickurl.el provides a simple method of inserting a URL based on | ||
| 1942 | the text at point. | ||
| 1943 | |||
| 1944 | *** sql.el provides an interface to SQL data bases. | ||
| 1945 | |||
| 1946 | *** fortune.el uses the fortune program to create mail/news signatures. | ||
| 1947 | |||
| 1948 | *** whitespace.el is a package for warning about and cleaning bogus | ||
| 1949 | whitespace in a file. | ||
| 1950 | |||
| 1951 | *** PostScript mode (ps-mode) is a new major mode for editing PostScript | ||
| 1952 | files. It offers: interaction with a PostScript interpreter, including | ||
| 1953 | (very basic) error handling; fontification, easily customizable for | ||
| 1954 | interpreter messages; auto-indentation; insertion of EPSF templates and | ||
| 1955 | often used code snippets; viewing of BoundingBox; commenting out / | ||
| 1956 | uncommenting regions; conversion of 8bit characters to PostScript octal | ||
| 1957 | codes. All functionality is accessible through a menu. | ||
| 1958 | |||
| 1959 | *** delim-col helps to prettify columns in a text region or rectangle. | ||
| 1960 | |||
| 1961 | Here is an example of columns: | ||
| 1962 | |||
| 1963 | horse apple bus | ||
| 1964 | dog pineapple car EXTRA | ||
| 1965 | porcupine strawberry airplane | ||
| 1966 | |||
| 1967 | Doing the following settings: | ||
| 1968 | |||
| 1969 | (setq delimit-columns-str-before "[ ") | ||
| 1970 | (setq delimit-columns-str-after " ]") | ||
| 1971 | (setq delimit-columns-str-separator ", ") | ||
| 1972 | (setq delimit-columns-separator "\t") | ||
| 1973 | |||
| 1974 | |||
| 1975 | Selecting the lines above and typing: | ||
| 1976 | |||
| 1977 | M-x delimit-columns-region | ||
| 1978 | |||
| 1979 | It results: | ||
| 1980 | |||
| 1981 | [ horse , apple , bus , ] | ||
| 1982 | [ dog , pineapple , car , EXTRA ] | ||
| 1983 | [ porcupine, strawberry, airplane, ] | ||
| 1984 | |||
| 1985 | delim-col has the following options: | ||
| 1986 | |||
| 1987 | delimit-columns-str-before Specify a string to be inserted | ||
| 1988 | before all columns. | ||
| 1989 | |||
| 1990 | delimit-columns-str-separator Specify a string to be inserted | ||
| 1991 | between each column. | ||
| 1992 | |||
| 1993 | delimit-columns-str-after Specify a string to be inserted | ||
| 1994 | after all columns. | ||
| 1995 | |||
| 1996 | delimit-columns-separator Specify a regexp which separates | ||
| 1997 | each column. | ||
| 1998 | |||
| 1999 | delim-col has the following commands: | ||
| 2000 | |||
| 2001 | delimit-columns-region Prettify all columns in a text region. | ||
| 2002 | delimit-columns-rectangle Prettify all columns in a text rectangle. | ||
| 2003 | |||
| 2004 | *** Recentf mode maintains a menu for visiting files that were | ||
| 2005 | operated on recently. User option recentf-menu-filter specifies a | ||
| 2006 | menu filter function to change the menu appearance. For example, the | ||
| 2007 | recent file list can be displayed: | ||
| 2008 | |||
| 2009 | - organized by major modes, directories or user defined rules. | ||
| 2010 | - sorted by file paths, file names, ascending or descending. | ||
| 2011 | - showing paths relative to the current default-directory | ||
| 2012 | |||
| 2013 | The `recentf-filter-changer' menu filter function allows to | ||
| 2014 | dynamically change the menu appearance. | ||
| 2015 | |||
| 2016 | *** elide-head.el provides a mechanism for eliding boilerplate header | ||
| 2017 | text. | ||
| 2018 | |||
| 2019 | *** footnote.el provides `footnote-mode', a minor mode supporting use | ||
| 2020 | of footnotes. It is intended for use with Message mode, but isn't | ||
| 2021 | specific to Message mode. | ||
| 2022 | |||
| 2023 | *** diff-mode.el provides `diff-mode', a major mode for | ||
| 2024 | viewing/editing context diffs (patches). It is selected for files | ||
| 2025 | with extension `.diff', `.diffs', `.patch' and `.rej'. | ||
| 2026 | |||
| 2027 | *** EUDC, the Emacs Unified Directory Client, provides a common user | ||
| 2028 | interface to access directory servers using different directory | ||
| 2029 | protocols. It has a separate manual. | ||
| 2030 | |||
| 2031 | *** autoconf.el provides a major mode for editing configure.in files | ||
| 2032 | for Autoconf, selected automatically. | ||
| 2033 | |||
| 2034 | *** windmove.el provides moving between windows. | ||
| 2035 | |||
| 2036 | *** crm.el provides a facility to read multiple strings from the | ||
| 2037 | minibuffer with completion. | ||
| 2038 | |||
| 2039 | *** todo-mode.el provides management of TODO lists and integration | ||
| 2040 | with the diary features. | ||
| 2041 | |||
| 2042 | *** autoarg.el provides a feature reported from Twenex Emacs whereby | ||
| 2043 | numeric keys supply prefix args rather than self inserting. | ||
| 2044 | |||
| 2045 | *** The function `turn-off-auto-fill' unconditionally turns off Auto | ||
| 2046 | Fill mode. | ||
| 2047 | |||
| 2048 | *** pcomplete.el is a library that provides programmable completion | ||
| 2049 | facilities for Emacs, similar to what zsh and tcsh offer. The main | ||
| 2050 | difference is that completion functions are written in Lisp, meaning | ||
| 2051 | they can be profiled, debugged, etc. | ||
| 2052 | |||
| 2053 | *** antlr-mode is a new major mode for editing ANTLR grammar files. | ||
| 2054 | It is automatically turned on for files whose names have the extension | ||
| 2055 | `.g'. | ||
| 2056 | |||
| 2057 | ** Changes in sort.el | ||
| 2058 | |||
| 2059 | The function sort-numeric-fields interprets numbers starting with `0' | ||
| 2060 | as octal and numbers starting with `0x' or `0X' as hexadecimal. The | ||
| 2061 | new user-option sort-numeric-base can be used to specify a default | ||
| 2062 | numeric base. | ||
| 2063 | |||
| 2064 | ** Changes to Ange-ftp | ||
| 2065 | |||
| 2066 | *** Ange-ftp allows you to specify of a port number in remote file | ||
| 2067 | names cleanly. It is appended to the host name, separated by a hash | ||
| 2068 | sign, e.g. `/foo@bar.org#666:mumble'. (This syntax comes from EFS.) | ||
| 2069 | |||
| 2070 | *** If the new user-option `ange-ftp-try-passive-mode' is set, passive | ||
| 2071 | ftp mode will be used if the ftp client supports that. | ||
| 2072 | |||
| 2073 | *** Ange-ftp handles the output of the w32-style clients which | ||
| 2074 | output ^M at the end of lines. | ||
| 2075 | |||
| 2076 | ** The recommended way of using Iswitchb is via the new global minor | ||
| 2077 | mode `iswitchb-mode'. | ||
| 2078 | |||
| 2079 | ** Just loading the msb package doesn't switch on Msb mode anymore. | ||
| 2080 | If you have `(require 'msb)' in your .emacs, please replace it with | ||
| 2081 | `(msb-mode 1)'. | ||
| 2082 | |||
| 2083 | ** Changes in Flyspell mode | ||
| 2084 | |||
| 2085 | *** Flyspell mode has various new options. See the `flyspell' Custom | ||
| 2086 | group. | ||
| 2087 | |||
| 2088 | *** The variable `flyspell-generic-check-word-p' has been renamed | ||
| 2089 | to `flyspell-generic-check-word-predicate'. The old name is still | ||
| 2090 | available as alias. | ||
| 2091 | |||
| 2092 | ** The user option `backward-delete-char-untabify-method' controls the | ||
| 2093 | behavior of `backward-delete-char-untabify'. The following values | ||
| 2094 | are recognized: | ||
| 2095 | |||
| 2096 | `untabify' -- turn a tab to many spaces, then delete one space; | ||
| 2097 | `hungry' -- delete all whitespace, both tabs and spaces; | ||
| 2098 | `all' -- delete all whitespace, including tabs, spaces and newlines; | ||
| 2099 | nil -- just delete one character. | ||
| 2100 | |||
| 2101 | Default value is `untabify'. | ||
| 2102 | |||
| 2103 | [This change was made in Emacs 20.3 but not mentioned then.] | ||
| 2104 | |||
| 2105 | ** In Cperl mode `cperl-invalid-face' should now be a normal face | ||
| 2106 | symbol, not double-quoted. | ||
| 2107 | |||
| 2108 | ** Some packages are declared obsolete, to be removed in a future | ||
| 2109 | version. They are: auto-show, c-mode, hilit19, hscroll, ooutline, | ||
| 2110 | profile, rnews, rnewspost, and sc. Their implementations have been | ||
| 2111 | moved to lisp/obsolete. | ||
| 2112 | |||
| 2113 | ** auto-compression mode is no longer enabled just by loading jka-compr.el. | ||
| 2114 | To control it, set `auto-compression-mode' via Custom or use the | ||
| 2115 | `auto-compression-mode' command. | ||
| 2116 | |||
| 2117 | ** `browse-url-gnome-moz' is a new option for | ||
| 2118 | `browse-url-browser-function', invoking Mozilla in GNOME, and | ||
| 2119 | `browse-url-kde' can be chosen for invoking the KDE browser. | ||
| 2120 | |||
| 2121 | ** The user-option `browse-url-new-window-p' has been renamed to | ||
| 2122 | `browse-url-new-window-flag'. | ||
| 2123 | |||
| 2124 | ** The functions `keep-lines', `flush-lines' and `how-many' now | ||
| 2125 | operate on the active region in Transient Mark mode. | ||
| 2126 | |||
| 2127 | ** `gnus-user-agent' is a new possibility for `mail-user-agent'. It | ||
| 2128 | is like `message-user-agent', but with all the Gnus paraphernalia. | ||
| 2129 | |||
| 2130 | ** The Strokes package has been updated. If your Emacs has XPM | ||
| 2131 | support, you can use it for pictographic editing. In Strokes mode, | ||
| 2132 | use C-mouse-2 to compose a complex stoke and insert it into the | ||
| 2133 | buffer. You can encode or decode a strokes buffer with new commands | ||
| 2134 | M-x strokes-encode-buffer and M-x strokes-decode-buffer. There is a | ||
| 2135 | new command M-x strokes-list-strokes. | ||
| 2136 | |||
| 2137 | ** Hexl contains a new command `hexl-insert-hex-string' which inserts | ||
| 2138 | a string of hexadecimal numbers read from the mini-buffer. | ||
| 2139 | |||
| 2140 | ** Hexl mode allows to insert non-ASCII characters. | ||
| 2141 | |||
| 2142 | The non-ASCII characters are encoded using the same encoding as the | ||
| 2143 | file you are visiting in Hexl mode. | ||
| 2144 | |||
| 2145 | ** Shell script mode changes. | ||
| 2146 | |||
| 2147 | Shell script mode (sh-script) can now indent scripts for shells | ||
| 2148 | derived from sh and rc. The indentation style is customizable, and | ||
| 2149 | sh-script can attempt to "learn" the current buffer's style. | ||
| 2150 | |||
| 2151 | ** Etags changes. | ||
| 2152 | |||
| 2153 | *** In DOS, etags looks for file.cgz if it cannot find file.c. | ||
| 2154 | |||
| 2155 | *** New option --ignore-case-regex is an alternative to --regex. It is now | ||
| 2156 | possible to bind a regexp to a language, by prepending the regexp with | ||
| 2157 | {lang}, where lang is one of the languages that `etags --help' prints out. | ||
| 2158 | This feature is useful especially for regex files, where each line contains | ||
| 2159 | a regular expression. The manual contains details. | ||
| 2160 | |||
| 2161 | *** In C and derived languages, etags creates tags for function | ||
| 2162 | declarations when given the --declarations option. | ||
| 2163 | |||
| 2164 | *** In C++, tags are created for "operator". The tags have the form | ||
| 2165 | "operator+", without spaces between the keyword and the operator. | ||
| 2166 | |||
| 2167 | *** You shouldn't generally need any more the -C or -c++ option: etags | ||
| 2168 | automatically switches to C++ parsing when it meets the `class' or | ||
| 2169 | `template' keywords. | ||
| 2170 | |||
| 2171 | *** Etags now is able to delve at arbitrary deeps into nested structures in | ||
| 2172 | C-like languages. Previously, it was limited to one or two brace levels. | ||
| 2173 | |||
| 2174 | *** New language Ada: tags are functions, procedures, packages, tasks, and | ||
| 2175 | types. | ||
| 2176 | |||
| 2177 | *** In Fortran, `procedure' is not tagged. | ||
| 2178 | |||
| 2179 | *** In Java, tags are created for "interface". | ||
| 2180 | |||
| 2181 | *** In Lisp, "(defstruct (foo", "(defun (operator" and similar constructs | ||
| 2182 | are now tagged. | ||
| 2183 | |||
| 2184 | *** In makefiles, tags the targets. | ||
| 2185 | |||
| 2186 | *** In Perl, the --globals option tags global variables. my and local | ||
| 2187 | variables are tagged. | ||
| 2188 | |||
| 2189 | *** New language Python: def and class at the beginning of a line are tags. | ||
| 2190 | |||
| 2191 | *** .ss files are Scheme files, .pdb is Postscript with C syntax, .psw is | ||
| 2192 | for PSWrap. | ||
| 2193 | |||
| 2194 | ** Changes in etags.el | ||
| 2195 | |||
| 2196 | *** The new user-option tags-case-fold-search can be used to make | ||
| 2197 | tags operations case-sensitive or case-insensitive. The default | ||
| 2198 | is to use the same setting as case-fold-search. | ||
| 2199 | |||
| 2200 | *** You can display additional output with M-x tags-apropos by setting | ||
| 2201 | the new variable tags-apropos-additional-actions. | ||
| 2202 | |||
| 2203 | If non-nil, the variable's value should be a list of triples (TITLE | ||
| 2204 | FUNCTION TO-SEARCH). For each triple, M-x tags-apropos processes | ||
| 2205 | TO-SEARCH and lists tags from it. TO-SEARCH should be an alist, | ||
| 2206 | obarray, or symbol. If it is a symbol, the symbol's value is used. | ||
| 2207 | |||
| 2208 | TITLE is a string to use to label the list of tags from TO-SEARCH. | ||
| 2209 | |||
| 2210 | FUNCTION is a function to call when an entry is selected in the Tags | ||
| 2211 | List buffer. It is called with one argument, the selected symbol. | ||
| 2212 | |||
| 2213 | A useful example value for this variable might be something like: | ||
| 2214 | |||
| 2215 | '(("Emacs Lisp" Info-goto-emacs-command-node obarray) | ||
| 2216 | ("Common Lisp" common-lisp-hyperspec common-lisp-hyperspec-obarray) | ||
| 2217 | ("SCWM" scwm-documentation scwm-obarray)) | ||
| 2218 | |||
| 2219 | *** The face tags-tag-face can be used to customize the appearance | ||
| 2220 | of tags in the output of M-x tags-apropos. | ||
| 2221 | |||
| 2222 | *** Setting tags-apropos-verbose to a non-nil value displays the | ||
| 2223 | names of tags files in the *Tags List* buffer. | ||
| 2224 | |||
| 2225 | *** You can now search for tags that are part of the filename itself. | ||
| 2226 | If you have tagged the files topfile.c subdir/subfile.c | ||
| 2227 | /tmp/tempfile.c, you can now search for tags "topfile.c", "subfile.c", | ||
| 2228 | "dir/sub", "tempfile", "tempfile.c". If the tag matches the file name, | ||
| 2229 | point will go to the beginning of the file. | ||
| 2230 | |||
| 2231 | *** Compressed files are now transparently supported if | ||
| 2232 | auto-compression-mode is active. You can tag (with Etags) and search | ||
| 2233 | (with find-tag) both compressed and uncompressed files. | ||
| 2234 | |||
| 2235 | *** Tags commands like M-x tags-search no longer change point | ||
| 2236 | in buffers where no match is found. In buffers where a match is | ||
| 2237 | found, the original value of point is pushed on the marker ring. | ||
| 2238 | |||
| 2239 | ** Fortran mode has a new command `fortran-strip-sequence-nos' to | ||
| 2240 | remove text past column 72. The syntax class of `\' in Fortran is now | ||
| 2241 | appropriate for C-style escape sequences in strings. | ||
| 2242 | |||
| 2243 | ** SGML mode's default `sgml-validate-command' is now `nsgmls'. | ||
| 2244 | |||
| 2245 | ** A new command `view-emacs-problems' (C-h P) displays the PROBLEMS file. | ||
| 2246 | |||
| 2247 | ** The Dabbrev package has a new user-option `dabbrev-ignored-regexps' | ||
| 2248 | containing a list of regular expressions. Buffers matching a regular | ||
| 2249 | expression from that list, are not checked. | ||
| 2250 | |||
| 2251 | ** Emacs can now figure out modification times of remote files. | ||
| 2252 | When you do C-x C-f /user@host:/path/file RET and edit the file, | ||
| 2253 | and someone else modifies the file, you will be prompted to revert | ||
| 2254 | the buffer, just like for the local files. | ||
| 2255 | |||
| 2256 | ** The buffer menu (C-x C-b) no longer lists the *Buffer List* buffer. | ||
| 2257 | |||
| 2258 | ** When invoked with a prefix argument, the command `list-abbrevs' now | ||
| 2259 | displays local abbrevs, only. | ||
| 2260 | |||
| 2261 | ** Refill minor mode provides preliminary support for keeping | ||
| 2262 | paragraphs filled as you modify them. | ||
| 2263 | |||
| 2264 | ** The variable `double-click-fuzz' specifies how much the mouse | ||
| 2265 | may be moved between clicks that are recognized as a pair. Its value | ||
| 2266 | is measured in pixels. | ||
| 2267 | |||
| 2268 | ** The new global minor mode `auto-image-file-mode' allows image files | ||
| 2269 | to be visited as images. | ||
| 2270 | |||
| 2271 | ** Two new user-options `grep-command' and `grep-find-command' | ||
| 2272 | were added to compile.el. | ||
| 2273 | |||
| 2274 | ** Withdrawn packages | ||
| 2275 | |||
| 2276 | *** mldrag.el has been removed. mouse.el provides the same | ||
| 2277 | functionality with aliases for the mldrag functions. | ||
| 2278 | |||
| 2279 | *** eval-reg.el has been obsoleted by changes to edebug.el and removed. | ||
| 2280 | |||
| 2281 | *** ph.el has been obsoleted by EUDC and removed. | ||
| 2282 | |||
| 2283 | |||
| 2284 | * Incompatible Lisp changes in 21.1 | ||
| 2285 | |||
| 2286 | There are a few Lisp changes which are not backwards-compatible and | ||
| 2287 | may require changes to existing code. Here is a list for reference. | ||
| 2288 | See the sections below for details. | ||
| 2289 | |||
| 2290 | ** Since `format' preserves text properties, the idiom | ||
| 2291 | `(format "%s" foo)' no longer works to copy and remove properties. | ||
| 2292 | Use `copy-sequence' to copy the string, then use `set-text-properties' | ||
| 2293 | to remove the properties of the copy. | ||
| 2294 | |||
| 2295 | ** Since the `keymap' text property now has significance, some code | ||
| 2296 | which uses both `local-map' and `keymap' properties (for portability) | ||
| 2297 | may, for instance, give rise to duplicate menus when the keymaps from | ||
| 2298 | these properties are active. | ||
| 2299 | |||
| 2300 | ** The change in the treatment of non-ASCII characters in search | ||
| 2301 | ranges may affect some code. | ||
| 2302 | |||
| 2303 | ** A non-nil value for the LOCAL arg of add-hook makes the hook | ||
| 2304 | buffer-local even if `make-local-hook' hasn't been called, which might | ||
| 2305 | make a difference to some code. | ||
| 2306 | |||
| 2307 | ** The new treatment of the minibuffer prompt might affect code which | ||
| 2308 | operates on the minibuffer. | ||
| 2309 | |||
| 2310 | ** The new character sets `eight-bit-control' and `eight-bit-graphic' | ||
| 2311 | cause `no-conversion' and `emacs-mule-unix' coding systems to produce | ||
| 2312 | different results when reading files with non-ASCII characters | ||
| 2313 | (previously, both coding systems would produce the same results). | ||
| 2314 | Specifically, `no-conversion' interprets each 8-bit byte as a separate | ||
| 2315 | character. This makes `no-conversion' inappropriate for reading | ||
| 2316 | multibyte text, e.g. buffers written to disk in their internal MULE | ||
| 2317 | encoding (auto-saving does that, for example). If a Lisp program | ||
| 2318 | reads such files with `no-conversion', each byte of the multibyte | ||
| 2319 | sequence, including the MULE leading codes such as \201, is treated as | ||
| 2320 | a separate character, which prevents them from being interpreted in | ||
| 2321 | the buffer as multibyte characters. | ||
| 2322 | |||
| 2323 | Therefore, Lisp programs that read files which contain the internal | ||
| 2324 | MULE encoding should use `emacs-mule-unix'. `no-conversion' is only | ||
| 2325 | appropriate for reading truly binary files. | ||
| 2326 | |||
| 2327 | ** Code that relies on the obsolete `before-change-function' and | ||
| 2328 | `after-change-function' to detect buffer changes will now fail. Use | ||
| 2329 | `before-change-functions' and `after-change-functions' instead. | ||
| 2330 | |||
| 2331 | ** Code that uses `concat' with integer args now gets an error, as | ||
| 2332 | long promised. So does any code that uses derivatives of `concat', | ||
| 2333 | such as `mapconcat'. | ||
| 2334 | |||
| 2335 | ** The function base64-decode-string now always returns a unibyte | ||
| 2336 | string. | ||
| 2337 | |||
| 2338 | ** Not a Lisp incompatibility as such but, with the introduction of | ||
| 2339 | extra private charsets, there is now only one slot free for a new | ||
| 2340 | dimension-2 private charset. User code which tries to add more than | ||
| 2341 | one extra will fail unless you rebuild Emacs with some standard | ||
| 2342 | charset(s) removed; that is probably inadvisable because it changes | ||
| 2343 | the emacs-mule encoding. Also, files stored in the emacs-mule | ||
| 2344 | encoding using Emacs 20 with additional private charsets defined will | ||
| 2345 | probably not be read correctly by Emacs 21. | ||
| 2346 | |||
| 2347 | ** The variable `directory-sep-char' is slated for removal. | ||
| 2348 | Not really a change (yet), but a projected one that you should be | ||
| 2349 | aware of: The variable `directory-sep-char' is deprecated, and should | ||
| 2350 | not be used. It was always ignored on GNU/Linux and Unix systems and | ||
| 2351 | on MS-DOS, but the MS-Windows port tried to support it by adapting the | ||
| 2352 | behavior of certain primitives to the value of this variable. It | ||
| 2353 | turned out that such support cannot be reliable, so it was decided to | ||
| 2354 | remove this variable in the near future. Lisp programs are well | ||
| 2355 | advised not to set it to anything but '/', because any different value | ||
| 2356 | will not have any effect when support for this variable is removed. | ||
| 2357 | |||
| 2358 | |||
| 2359 | * Lisp changes made after edition 2.6 of the Emacs Lisp Manual, | ||
| 2360 | (Display-related features are described in a page of their own below.) | ||
| 2361 | |||
| 2362 | ** Function assq-delete-all replaces function assoc-delete-all. | ||
| 2363 | |||
| 2364 | ** The new function animate-string, from lisp/play/animate.el | ||
| 2365 | allows the animated display of strings. | ||
| 2366 | |||
| 2367 | ** The new function `interactive-form' can be used to obtain the | ||
| 2368 | interactive form of a function. | ||
| 2369 | |||
| 2370 | ** The keyword :set-after in defcustom allows to specify dependencies | ||
| 2371 | between custom options. Example: | ||
| 2372 | |||
| 2373 | (defcustom default-input-method nil | ||
| 2374 | "*Default input method for multilingual text (a string). | ||
| 2375 | This is the input method activated automatically by the command | ||
| 2376 | `toggle-input-method' (\\[toggle-input-method])." | ||
| 2377 | :group 'mule | ||
| 2378 | :type '(choice (const nil) string) | ||
| 2379 | :set-after '(current-language-environment)) | ||
| 2380 | |||
| 2381 | This specifies that default-input-method should be set after | ||
| 2382 | current-language-environment even if default-input-method appears | ||
| 2383 | first in a custom-set-variables statement. | ||
| 2384 | |||
| 2385 | ** The new hook `kbd-macro-termination-hook' is run at the end of | ||
| 2386 | function execute-kbd-macro. Functions on this hook are called with no | ||
| 2387 | args. The hook is run independent of how the macro was terminated | ||
| 2388 | (signal or normal termination). | ||
| 2389 | |||
| 2390 | ** Functions `butlast' and `nbutlast' for removing trailing elements | ||
| 2391 | from a list are now available without requiring the CL package. | ||
| 2392 | |||
| 2393 | ** The new user-option `even-window-heights' can be set to nil | ||
| 2394 | to prevent `display-buffer' from evening out window heights. | ||
| 2395 | |||
| 2396 | ** The user-option `face-font-registry-alternatives' specifies | ||
| 2397 | alternative font registry names to try when looking for a font. | ||
| 2398 | |||
| 2399 | ** Function `md5' calculates the MD5 "message digest"/"checksum". | ||
| 2400 | |||
| 2401 | ** Function `delete-frame' runs `delete-frame-hook' before actually | ||
| 2402 | deleting the frame. The hook is called with one arg, the frame | ||
| 2403 | being deleted. | ||
| 2404 | |||
| 2405 | ** `add-hook' now makes the hook local if called with a non-nil LOCAL arg. | ||
| 2406 | |||
| 2407 | ** The treatment of non-ASCII characters in search ranges has changed. | ||
| 2408 | If a range in a regular expression or the arg of | ||
| 2409 | skip-chars-forward/backward starts with a unibyte character C and ends | ||
| 2410 | with a multibyte character C2, the range is divided into two: one is | ||
| 2411 | C..?\377, the other is C1..C2, where C1 is the first character of C2's | ||
| 2412 | charset. | ||
| 2413 | |||
| 2414 | ** The new function `display-message-or-buffer' displays a message in | ||
| 2415 | the echo area or pops up a buffer, depending on the length of the | ||
| 2416 | message. | ||
| 2417 | |||
| 2418 | ** The new macro `with-auto-compression-mode' allows evaluating an | ||
| 2419 | expression with auto-compression-mode enabled. | ||
| 2420 | |||
| 2421 | ** In image specifications, `:heuristic-mask' has been replaced | ||
| 2422 | with the more general `:mask' property. | ||
| 2423 | |||
| 2424 | ** Image specifications accept more `:conversion's. | ||
| 2425 | |||
| 2426 | ** A `?' can be used in a symbol name without escaping it with a | ||
| 2427 | backslash. | ||
| 2428 | |||
| 2429 | ** Reading from the mini-buffer now reads from standard input if Emacs | ||
| 2430 | is running in batch mode. For example, | ||
| 2431 | |||
| 2432 | (message "%s" (read t)) | ||
| 2433 | |||
| 2434 | will read a Lisp expression from standard input and print the result | ||
| 2435 | to standard output. | ||
| 2436 | |||
| 2437 | ** The argument of `down-list', `backward-up-list', `up-list', | ||
| 2438 | `kill-sexp', `backward-kill-sexp' and `mark-sexp' is now optional. | ||
| 2439 | |||
| 2440 | ** If `display-buffer-reuse-frames' is set, function `display-buffer' | ||
| 2441 | will raise frames displaying a buffer, instead of creating a new | ||
| 2442 | frame or window. | ||
| 2443 | |||
| 2444 | ** Two new functions for removing elements from lists/sequences | ||
| 2445 | were added | ||
| 2446 | |||
| 2447 | - Function: remove ELT SEQ | ||
| 2448 | |||
| 2449 | Return a copy of SEQ with all occurrences of ELT removed. SEQ must be | ||
| 2450 | a list, vector, or string. The comparison is done with `equal'. | ||
| 2451 | |||
| 2452 | - Function: remq ELT LIST | ||
| 2453 | |||
| 2454 | Return a copy of LIST with all occurrences of ELT removed. The | ||
| 2455 | comparison is done with `eq'. | ||
| 2456 | |||
| 2457 | ** The function `delete' now also works with vectors and strings. | ||
| 2458 | |||
| 2459 | ** The meaning of the `:weakness WEAK' argument of make-hash-table | ||
| 2460 | has been changed: WEAK can now have new values `key-or-value' and | ||
| 2461 | `key-and-value', in addition to `nil', `key', `value', and `t'. | ||
| 2462 | |||
| 2463 | ** Function `aset' stores any multibyte character in any string | ||
| 2464 | without signaling "Attempt to change char length of a string". It may | ||
| 2465 | convert a unibyte string to multibyte if necessary. | ||
| 2466 | |||
| 2467 | ** The value of the `help-echo' text property is called as a function | ||
| 2468 | or evaluated, if it is not a string already, to obtain a help string. | ||
| 2469 | |||
| 2470 | ** Function `make-obsolete' now has an optional arg to say when the | ||
| 2471 | function was declared obsolete. | ||
| 2472 | |||
| 2473 | ** Function `plist-member' is renamed from `widget-plist-member' (which is | ||
| 2474 | retained as an alias). | ||
| 2475 | |||
| 2476 | ** Easy-menu's :filter now takes the unconverted form of the menu and | ||
| 2477 | the result is automatically converted to Emacs' form. | ||
| 2478 | |||
| 2479 | ** The new function `window-list' has been defined | ||
| 2480 | |||
| 2481 | - Function: window-list &optional FRAME WINDOW MINIBUF | ||
| 2482 | |||
| 2483 | Return a list of windows on FRAME, starting with WINDOW. FRAME nil or | ||
| 2484 | omitted means use the selected frame. WINDOW nil or omitted means use | ||
| 2485 | the selected window. MINIBUF t means include the minibuffer window, | ||
| 2486 | even if it isn't active. MINIBUF nil or omitted means include the | ||
| 2487 | minibuffer window only if it's active. MINIBUF neither nil nor t | ||
| 2488 | means never include the minibuffer window. | ||
| 2489 | |||
| 2490 | ** There's a new function `get-window-with-predicate' defined as follows | ||
| 2491 | |||
| 2492 | - Function: get-window-with-predicate PREDICATE &optional MINIBUF ALL-FRAMES DEFAULT | ||
| 2493 | |||
| 2494 | Return a window satisfying PREDICATE. | ||
| 2495 | |||
| 2496 | This function cycles through all visible windows using `walk-windows', | ||
| 2497 | calling PREDICATE on each one. PREDICATE is called with a window as | ||
| 2498 | argument. The first window for which PREDICATE returns a non-nil | ||
| 2499 | value is returned. If no window satisfies PREDICATE, DEFAULT is | ||
| 2500 | returned. | ||
| 2501 | |||
| 2502 | Optional second arg MINIBUF t means count the minibuffer window even | ||
| 2503 | if not active. MINIBUF nil or omitted means count the minibuffer iff | ||
| 2504 | it is active. MINIBUF neither t nor nil means not to count the | ||
| 2505 | minibuffer even if it is active. | ||
| 2506 | |||
| 2507 | Several frames may share a single minibuffer; if the minibuffer | ||
| 2508 | counts, all windows on all frames that share that minibuffer count | ||
| 2509 | too. Therefore, if you are using a separate minibuffer frame | ||
| 2510 | and the minibuffer is active and MINIBUF says it counts, | ||
| 2511 | `walk-windows' includes the windows in the frame from which you | ||
| 2512 | entered the minibuffer, as well as the minibuffer window. | ||
| 2513 | |||
| 2514 | ALL-FRAMES is the optional third argument. | ||
| 2515 | ALL-FRAMES nil or omitted means cycle within the frames as specified above. | ||
| 2516 | ALL-FRAMES = `visible' means include windows on all visible frames. | ||
| 2517 | ALL-FRAMES = 0 means include windows on all visible and iconified frames. | ||
| 2518 | ALL-FRAMES = t means include windows on all frames including invisible frames. | ||
| 2519 | If ALL-FRAMES is a frame, it means include windows on that frame. | ||
| 2520 | Anything else means restrict to the selected frame. | ||
| 2521 | |||
| 2522 | ** The function `single-key-description' now encloses function key and | ||
| 2523 | event names in angle brackets. When called with a second optional | ||
| 2524 | argument non-nil, angle brackets won't be printed. | ||
| 2525 | |||
| 2526 | ** If the variable `message-truncate-lines' is bound to t around a | ||
| 2527 | call to `message', the echo area will not be resized to display that | ||
| 2528 | message; it will be truncated instead, as it was done in 20.x. | ||
| 2529 | Default value is nil. | ||
| 2530 | |||
| 2531 | ** The user option `line-number-display-limit' can now be set to nil, | ||
| 2532 | meaning no limit. | ||
| 2533 | |||
| 2534 | ** The new user option `line-number-display-limit-width' controls | ||
| 2535 | the maximum width of lines in a buffer for which Emacs displays line | ||
| 2536 | numbers in the mode line. The default is 200. | ||
| 2537 | |||
| 2538 | ** `select-safe-coding-system' now also checks the most preferred | ||
| 2539 | coding-system if buffer-file-coding-system is `undecided' and | ||
| 2540 | DEFAULT-CODING-SYSTEM is not specified, | ||
| 2541 | |||
| 2542 | ** The function `subr-arity' provides information about the argument | ||
| 2543 | list of a primitive. | ||
| 2544 | |||
| 2545 | ** `where-is-internal' now also accepts a list of keymaps. | ||
| 2546 | |||
| 2547 | ** The text property `keymap' specifies a key map which overrides the | ||
| 2548 | buffer's local map and the map specified by the `local-map' property. | ||
| 2549 | This is probably what most current uses of `local-map' want, rather | ||
| 2550 | than replacing the local map. | ||
| 2551 | |||
| 2552 | ** The obsolete variables `before-change-function' and | ||
| 2553 | `after-change-function' are no longer acted upon and have been | ||
| 2554 | removed. Use `before-change-functions' and `after-change-functions' | ||
| 2555 | instead. | ||
| 2556 | |||
| 2557 | ** The function `apropos-mode' runs the hook `apropos-mode-hook'. | ||
| 2558 | |||
| 2559 | ** `concat' no longer accepts individual integer arguments, | ||
| 2560 | as promised long ago. | ||
| 2561 | |||
| 2562 | ** The new function `float-time' returns the current time as a float. | ||
| 2563 | |||
| 2564 | ** The new variable auto-coding-regexp-alist specifies coding systems | ||
| 2565 | for reading specific files, analogous to auto-coding-alist, but | ||
| 2566 | patterns are checked against file contents instead of file names. | ||
| 2567 | |||
| 2568 | |||
| 2569 | * Lisp changes in Emacs 21.1 (see following page for display-related features) | ||
| 2570 | |||
| 2571 | ** The new package rx.el provides an alternative sexp notation for | ||
| 2572 | regular expressions. | ||
| 2573 | |||
| 2574 | - Function: rx-to-string SEXP | ||
| 2575 | |||
| 2576 | Translate SEXP into a regular expression in string notation. | ||
| 2577 | |||
| 2578 | - Macro: rx SEXP | ||
| 2579 | |||
| 2580 | Translate SEXP into a regular expression in string notation. | ||
| 2581 | |||
| 2582 | The following are valid subforms of regular expressions in sexp | ||
| 2583 | notation. | ||
| 2584 | |||
| 2585 | STRING | ||
| 2586 | matches string STRING literally. | ||
| 2587 | |||
| 2588 | CHAR | ||
| 2589 | matches character CHAR literally. | ||
| 2590 | |||
| 2591 | `not-newline' | ||
| 2592 | matches any character except a newline. | ||
| 2593 | . | ||
| 2594 | `anything' | ||
| 2595 | matches any character | ||
| 2596 | |||
| 2597 | `(any SET)' | ||
| 2598 | matches any character in SET. SET may be a character or string. | ||
| 2599 | Ranges of characters can be specified as `A-Z' in strings. | ||
| 2600 | |||
| 2601 | '(in SET)' | ||
| 2602 | like `any'. | ||
| 2603 | |||
| 2604 | `(not (any SET))' | ||
| 2605 | matches any character not in SET | ||
| 2606 | |||
| 2607 | `line-start' | ||
| 2608 | matches the empty string, but only at the beginning of a line | ||
| 2609 | in the text being matched | ||
| 2610 | |||
| 2611 | `line-end' | ||
| 2612 | is similar to `line-start' but matches only at the end of a line | ||
| 2613 | |||
| 2614 | `string-start' | ||
| 2615 | matches the empty string, but only at the beginning of the | ||
| 2616 | string being matched against. | ||
| 2617 | |||
| 2618 | `string-end' | ||
| 2619 | matches the empty string, but only at the end of the | ||
| 2620 | string being matched against. | ||
| 2621 | |||
| 2622 | `buffer-start' | ||
| 2623 | matches the empty string, but only at the beginning of the | ||
| 2624 | buffer being matched against. | ||
| 2625 | |||
| 2626 | `buffer-end' | ||
| 2627 | matches the empty string, but only at the end of the | ||
| 2628 | buffer being matched against. | ||
| 2629 | |||
| 2630 | `point' | ||
| 2631 | matches the empty string, but only at point. | ||
| 2632 | |||
| 2633 | `word-start' | ||
| 2634 | matches the empty string, but only at the beginning or end of a | ||
| 2635 | word. | ||
| 2636 | |||
| 2637 | `word-end' | ||
| 2638 | matches the empty string, but only at the end of a word. | ||
| 2639 | |||
| 2640 | `word-boundary' | ||
| 2641 | matches the empty string, but only at the beginning or end of a | ||
| 2642 | word. | ||
| 2643 | |||
| 2644 | `(not word-boundary)' | ||
| 2645 | matches the empty string, but not at the beginning or end of a | ||
| 2646 | word. | ||
| 2647 | |||
| 2648 | `digit' | ||
| 2649 | matches 0 through 9. | ||
| 2650 | |||
| 2651 | `control' | ||
| 2652 | matches ASCII control characters. | ||
| 2653 | |||
| 2654 | `hex-digit' | ||
| 2655 | matches 0 through 9, a through f and A through F. | ||
| 2656 | |||
| 2657 | `blank' | ||
| 2658 | matches space and tab only. | ||
| 2659 | |||
| 2660 | `graphic' | ||
| 2661 | matches graphic characters--everything except ASCII control chars, | ||
| 2662 | space, and DEL. | ||
| 2663 | |||
| 2664 | `printing' | ||
| 2665 | matches printing characters--everything except ASCII control chars | ||
| 2666 | and DEL. | ||
| 2667 | |||
| 2668 | `alphanumeric' | ||
| 2669 | matches letters and digits. (But at present, for multibyte characters, | ||
| 2670 | it matches anything that has word syntax.) | ||
| 2671 | |||
| 2672 | `letter' | ||
| 2673 | matches letters. (But at present, for multibyte characters, | ||
| 2674 | it matches anything that has word syntax.) | ||
| 2675 | |||
| 2676 | `ascii' | ||
| 2677 | matches ASCII (unibyte) characters. | ||
| 2678 | |||
| 2679 | `nonascii' | ||
| 2680 | matches non-ASCII (multibyte) characters. | ||
| 2681 | |||
| 2682 | `lower' | ||
| 2683 | matches anything lower-case. | ||
| 2684 | |||
| 2685 | `upper' | ||
| 2686 | matches anything upper-case. | ||
| 2687 | |||
| 2688 | `punctuation' | ||
| 2689 | matches punctuation. (But at present, for multibyte characters, | ||
| 2690 | it matches anything that has non-word syntax.) | ||
| 2691 | |||
| 2692 | `space' | ||
| 2693 | matches anything that has whitespace syntax. | ||
| 2694 | |||
| 2695 | `word' | ||
| 2696 | matches anything that has word syntax. | ||
| 2697 | |||
| 2698 | `(syntax SYNTAX)' | ||
| 2699 | matches a character with syntax SYNTAX. SYNTAX must be one | ||
| 2700 | of the following symbols. | ||
| 2701 | |||
| 2702 | `whitespace' (\\s- in string notation) | ||
| 2703 | `punctuation' (\\s.) | ||
| 2704 | `word' (\\sw) | ||
| 2705 | `symbol' (\\s_) | ||
| 2706 | `open-parenthesis' (\\s() | ||
| 2707 | `close-parenthesis' (\\s)) | ||
| 2708 | `expression-prefix' (\\s') | ||
| 2709 | `string-quote' (\\s\") | ||
| 2710 | `paired-delimiter' (\\s$) | ||
| 2711 | `escape' (\\s\\) | ||
| 2712 | `character-quote' (\\s/) | ||
| 2713 | `comment-start' (\\s<) | ||
| 2714 | `comment-end' (\\s>) | ||
| 2715 | |||
| 2716 | `(not (syntax SYNTAX))' | ||
| 2717 | matches a character that has not syntax SYNTAX. | ||
| 2718 | |||
| 2719 | `(category CATEGORY)' | ||
| 2720 | matches a character with category CATEGORY. CATEGORY must be | ||
| 2721 | either a character to use for C, or one of the following symbols. | ||
| 2722 | |||
| 2723 | `consonant' (\\c0 in string notation) | ||
| 2724 | `base-vowel' (\\c1) | ||
| 2725 | `upper-diacritical-mark' (\\c2) | ||
| 2726 | `lower-diacritical-mark' (\\c3) | ||
| 2727 | `tone-mark' (\\c4) | ||
| 2728 | `symbol' (\\c5) | ||
| 2729 | `digit' (\\c6) | ||
| 2730 | `vowel-modifying-diacritical-mark' (\\c7) | ||
| 2731 | `vowel-sign' (\\c8) | ||
| 2732 | `semivowel-lower' (\\c9) | ||
| 2733 | `not-at-end-of-line' (\\c<) | ||
| 2734 | `not-at-beginning-of-line' (\\c>) | ||
| 2735 | `alpha-numeric-two-byte' (\\cA) | ||
| 2736 | `chinse-two-byte' (\\cC) | ||
| 2737 | `greek-two-byte' (\\cG) | ||
| 2738 | `japanese-hiragana-two-byte' (\\cH) | ||
| 2739 | `indian-two-byte' (\\cI) | ||
| 2740 | `japanese-katakana-two-byte' (\\cK) | ||
| 2741 | `korean-hangul-two-byte' (\\cN) | ||
| 2742 | `cyrillic-two-byte' (\\cY) | ||
| 2743 | `ascii' (\\ca) | ||
| 2744 | `arabic' (\\cb) | ||
| 2745 | `chinese' (\\cc) | ||
| 2746 | `ethiopic' (\\ce) | ||
| 2747 | `greek' (\\cg) | ||
| 2748 | `korean' (\\ch) | ||
| 2749 | `indian' (\\ci) | ||
| 2750 | `japanese' (\\cj) | ||
| 2751 | `japanese-katakana' (\\ck) | ||
| 2752 | `latin' (\\cl) | ||
| 2753 | `lao' (\\co) | ||
| 2754 | `tibetan' (\\cq) | ||
| 2755 | `japanese-roman' (\\cr) | ||
| 2756 | `thai' (\\ct) | ||
| 2757 | `vietnamese' (\\cv) | ||
| 2758 | `hebrew' (\\cw) | ||
| 2759 | `cyrillic' (\\cy) | ||
| 2760 | `can-break' (\\c|) | ||
| 2761 | |||
| 2762 | `(not (category CATEGORY))' | ||
| 2763 | matches a character that has not category CATEGORY. | ||
| 2764 | |||
| 2765 | `(and SEXP1 SEXP2 ...)' | ||
| 2766 | matches what SEXP1 matches, followed by what SEXP2 matches, etc. | ||
| 2767 | |||
| 2768 | `(submatch SEXP1 SEXP2 ...)' | ||
| 2769 | like `and', but makes the match accessible with `match-end', | ||
| 2770 | `match-beginning', and `match-string'. | ||
| 2771 | |||
| 2772 | `(group SEXP1 SEXP2 ...)' | ||
| 2773 | another name for `submatch'. | ||
| 2774 | |||
| 2775 | `(or SEXP1 SEXP2 ...)' | ||
| 2776 | matches anything that matches SEXP1 or SEXP2, etc. If all | ||
| 2777 | args are strings, use `regexp-opt' to optimize the resulting | ||
| 2778 | regular expression. | ||
| 2779 | |||
| 2780 | `(minimal-match SEXP)' | ||
| 2781 | produce a non-greedy regexp for SEXP. Normally, regexps matching | ||
| 2782 | zero or more occurrences of something are \"greedy\" in that they | ||
| 2783 | match as much as they can, as long as the overall regexp can | ||
| 2784 | still match. A non-greedy regexp matches as little as possible. | ||
| 2785 | |||
| 2786 | `(maximal-match SEXP)' | ||
| 2787 | produce a greedy regexp for SEXP. This is the default. | ||
| 2788 | |||
| 2789 | `(zero-or-more SEXP)' | ||
| 2790 | matches zero or more occurrences of what SEXP matches. | ||
| 2791 | |||
| 2792 | `(0+ SEXP)' | ||
| 2793 | like `zero-or-more'. | ||
| 2794 | |||
| 2795 | `(* SEXP)' | ||
| 2796 | like `zero-or-more', but always produces a greedy regexp. | ||
| 2797 | |||
| 2798 | `(*? SEXP)' | ||
| 2799 | like `zero-or-more', but always produces a non-greedy regexp. | ||
| 2800 | |||
| 2801 | `(one-or-more SEXP)' | ||
| 2802 | matches one or more occurrences of A. | ||
| 2803 | |||
| 2804 | `(1+ SEXP)' | ||
| 2805 | like `one-or-more'. | ||
| 2806 | |||
| 2807 | `(+ SEXP)' | ||
| 2808 | like `one-or-more', but always produces a greedy regexp. | ||
| 2809 | |||
| 2810 | `(+? SEXP)' | ||
| 2811 | like `one-or-more', but always produces a non-greedy regexp. | ||
| 2812 | |||
| 2813 | `(zero-or-one SEXP)' | ||
| 2814 | matches zero or one occurrences of A. | ||
| 2815 | |||
| 2816 | `(optional SEXP)' | ||
| 2817 | like `zero-or-one'. | ||
| 2818 | |||
| 2819 | `(? SEXP)' | ||
| 2820 | like `zero-or-one', but always produces a greedy regexp. | ||
| 2821 | |||
| 2822 | `(?? SEXP)' | ||
| 2823 | like `zero-or-one', but always produces a non-greedy regexp. | ||
| 2824 | |||
| 2825 | `(repeat N SEXP)' | ||
| 2826 | matches N occurrences of what SEXP matches. | ||
| 2827 | |||
| 2828 | `(repeat N M SEXP)' | ||
| 2829 | matches N to M occurrences of what SEXP matches. | ||
| 2830 | |||
| 2831 | `(eval FORM)' | ||
| 2832 | evaluate FORM and insert result. If result is a string, | ||
| 2833 | `regexp-quote' it. | ||
| 2834 | |||
| 2835 | `(regexp REGEXP)' | ||
| 2836 | include REGEXP in string notation in the result. | ||
| 2837 | |||
| 2838 | *** The features `md5' and `overlay' are now provided by default. | ||
| 2839 | |||
| 2840 | *** The special form `save-restriction' now works correctly even if the | ||
| 2841 | buffer is widened inside the save-restriction and changes made outside | ||
| 2842 | the original restriction. Previously, doing this would cause the saved | ||
| 2843 | restriction to be restored incorrectly. | ||
| 2844 | |||
| 2845 | *** The functions `find-charset-region' and `find-charset-string' include | ||
| 2846 | `eight-bit-control' and/or `eight-bit-graphic' in the returned list | ||
| 2847 | when they find 8-bit characters. Previously, they included `ascii' in a | ||
| 2848 | multibyte buffer and `unknown' in a unibyte buffer. | ||
| 2849 | |||
| 2850 | *** The functions `set-buffer-multibyte', `string-as-multibyte' and | ||
| 2851 | `string-as-unibyte' change the byte sequence of a buffer or a string | ||
| 2852 | if it contains a character from the `eight-bit-control' character set. | ||
| 2853 | |||
| 2854 | *** The handling of multibyte sequences in a multibyte buffer is | ||
| 2855 | changed. Previously, a byte sequence matching the pattern | ||
| 2856 | [\200-\237][\240-\377]+ was interpreted as a single character | ||
| 2857 | regardless of the length of the trailing bytes [\240-\377]+. Thus, if | ||
| 2858 | the sequence was longer than what the leading byte indicated, the | ||
| 2859 | extra trailing bytes were ignored by Lisp functions. Now such extra | ||
| 2860 | bytes are independent 8-bit characters belonging to the charset | ||
| 2861 | eight-bit-graphic. | ||
| 2862 | |||
| 2863 | ** Fontsets are now implemented using char-tables. | ||
| 2864 | |||
| 2865 | A fontset can now be specified for each independent character, for | ||
| 2866 | a group of characters or for a character set rather than just for a | ||
| 2867 | character set as previously. | ||
| 2868 | |||
| 2869 | *** The arguments of the function `set-fontset-font' are changed. | ||
| 2870 | They are NAME, CHARACTER, FONTNAME, and optional FRAME. The function | ||
| 2871 | modifies fontset NAME to use FONTNAME for CHARACTER. | ||
| 2872 | |||
| 2873 | CHARACTER may be a cons (FROM . TO), where FROM and TO are non-generic | ||
| 2874 | characters. In that case FONTNAME is used for all characters in the | ||
| 2875 | range FROM and TO (inclusive). CHARACTER may be a charset. In that | ||
| 2876 | case FONTNAME is used for all character in the charset. | ||
| 2877 | |||
| 2878 | FONTNAME may be a cons (FAMILY . REGISTRY), where FAMILY is the family | ||
| 2879 | name of a font and REGISTRY is a registry name of a font. | ||
| 2880 | |||
| 2881 | *** Variable x-charset-registry has been deleted. The default charset | ||
| 2882 | registries of character sets are set in the default fontset | ||
| 2883 | "fontset-default". | ||
| 2884 | |||
| 2885 | *** The function `create-fontset-from-fontset-spec' ignores the second | ||
| 2886 | argument STYLE-VARIANT. It never creates style-variant fontsets. | ||
| 2887 | |||
| 2888 | ** The method of composing characters is changed. Now character | ||
| 2889 | composition is done by a special text property `composition' in | ||
| 2890 | buffers and strings. | ||
| 2891 | |||
| 2892 | *** Charset composition is deleted. Emacs never creates a `composite | ||
| 2893 | character' which is an independent character with a unique character | ||
| 2894 | code. Thus the following functions handling `composite characters' | ||
| 2895 | have been deleted: composite-char-component, | ||
| 2896 | composite-char-component-count, composite-char-composition-rule, | ||
| 2897 | composite-char-composition-rule and decompose-composite-char delete. | ||
| 2898 | The variables leading-code-composition and min-composite-char have | ||
| 2899 | also been deleted. | ||
| 2900 | |||
| 2901 | *** Three more glyph reference points are added. They can be used to | ||
| 2902 | specify a composition rule. See the documentation of the variable | ||
| 2903 | `reference-point-alist' for more detail. | ||
| 2904 | |||
| 2905 | *** The function `compose-region' takes new arguments COMPONENTS and | ||
| 2906 | MODIFICATION-FUNC. With COMPONENTS, you can specify not only a | ||
| 2907 | composition rule but also characters to be composed. Such characters | ||
| 2908 | may differ between buffer and string text. | ||
| 2909 | |||
| 2910 | *** The function `compose-string' takes new arguments START, END, | ||
| 2911 | COMPONENTS, and MODIFICATION-FUNC. | ||
| 2912 | |||
| 2913 | *** The function `compose-string' puts text property `composition' | ||
| 2914 | directly on the argument STRING instead of returning a new string. | ||
| 2915 | Likewise, the function `decompose-string' just removes text property | ||
| 2916 | `composition' from STRING. | ||
| 2917 | |||
| 2918 | *** The new function `find-composition' returns information about | ||
| 2919 | a composition at a specified position in a buffer or a string. | ||
| 2920 | |||
| 2921 | *** The function `decompose-composite-char' is now labeled as | ||
| 2922 | obsolete. | ||
| 2923 | |||
| 2924 | ** The new coding system `mac-roman' is primarily intended for use on | ||
| 2925 | the Macintosh but may be used generally for Macintosh-encoded text. | ||
| 2926 | |||
| 2927 | ** The new character sets `mule-unicode-0100-24ff', | ||
| 2928 | `mule-unicode-2500-33ff', and `mule-unicode-e000-ffff' have been | ||
| 2929 | introduced for Unicode characters in the range U+0100..U+24FF, | ||
| 2930 | U+2500..U+33FF, U+E000..U+FFFF respectively. | ||
| 2931 | |||
| 2932 | Note that the character sets are not yet unified in Emacs, so | ||
| 2933 | characters which belong to charsets such as Latin-2, Greek, Hebrew, | ||
| 2934 | etc. and the same characters in the `mule-unicode-*' charsets are | ||
| 2935 | different characters, as far as Emacs is concerned. For example, text | ||
| 2936 | which includes Unicode characters from the Latin-2 locale cannot be | ||
| 2937 | encoded by Emacs with ISO 8859-2 coding system. | ||
| 2938 | |||
| 2939 | ** The new coding system `mule-utf-8' has been added. | ||
| 2940 | It provides limited support for decoding/encoding UTF-8 text. For | ||
| 2941 | details, please see the documentation string of this coding system. | ||
| 2942 | |||
| 2943 | ** The new character sets `japanese-jisx0213-1' and | ||
| 2944 | `japanese-jisx0213-2' have been introduced for the new Japanese | ||
| 2945 | standard JIS X 0213 Plane 1 and Plane 2. | ||
| 2946 | |||
| 2947 | ** The new character sets `latin-iso8859-14' and `latin-iso8859-15' | ||
| 2948 | have been introduced. | ||
| 2949 | |||
| 2950 | ** The new character sets `eight-bit-control' and `eight-bit-graphic' | ||
| 2951 | have been introduced for 8-bit characters in the ranges 0x80..0x9F and | ||
| 2952 | 0xA0..0xFF respectively. Note that the multibyte representation of | ||
| 2953 | eight-bit-control is never exposed; this leads to an exception in the | ||
| 2954 | emacs-mule coding system, which encodes everything else to the | ||
| 2955 | buffer/string internal representation. Note that to search for | ||
| 2956 | eight-bit-graphic characters in a multibyte buffer, the search string | ||
| 2957 | must be multibyte, otherwise such characters will be converted to | ||
| 2958 | their multibyte equivalent. | ||
| 2959 | |||
| 2960 | ** If the APPEND argument of `write-region' is an integer, it seeks to | ||
| 2961 | that offset in the file before writing. | ||
| 2962 | |||
| 2963 | ** The function `add-minor-mode' has been added for convenience and | ||
| 2964 | compatibility with XEmacs (and is used internally by define-minor-mode). | ||
| 2965 | |||
| 2966 | ** The function `shell-command' now sets the default directory of the | ||
| 2967 | `*Shell Command Output*' buffer to the default directory of the buffer | ||
| 2968 | from which the command was issued. | ||
| 2969 | |||
| 2970 | ** The functions `query-replace', `query-replace-regexp', | ||
| 2971 | `query-replace-regexp-eval' `map-query-replace-regexp', | ||
| 2972 | `replace-string', `replace-regexp', and `perform-replace' take two | ||
| 2973 | additional optional arguments START and END that specify the region to | ||
| 2974 | operate on. | ||
| 2975 | |||
| 2976 | ** The new function `count-screen-lines' is a more flexible alternative | ||
| 2977 | to `window-buffer-height'. | ||
| 2978 | |||
| 2979 | - Function: count-screen-lines &optional BEG END COUNT-FINAL-NEWLINE WINDOW | ||
| 2980 | |||
| 2981 | Return the number of screen lines in the region between BEG and END. | ||
| 2982 | The number of screen lines may be different from the number of actual | ||
| 2983 | lines, due to line breaking, display table, etc. | ||
| 2984 | |||
| 2985 | Optional arguments BEG and END default to `point-min' and `point-max' | ||
| 2986 | respectively. | ||
| 2987 | |||
| 2988 | If region ends with a newline, ignore it unless optional third argument | ||
| 2989 | COUNT-FINAL-NEWLINE is non-nil. | ||
| 2990 | |||
| 2991 | The optional fourth argument WINDOW specifies the window used for | ||
| 2992 | obtaining parameters such as width, horizontal scrolling, and so | ||
| 2993 | on. The default is to use the selected window's parameters. | ||
| 2994 | |||
| 2995 | Like `vertical-motion', `count-screen-lines' always uses the current | ||
| 2996 | buffer, regardless of which buffer is displayed in WINDOW. This makes | ||
| 2997 | possible to use `count-screen-lines' in any buffer, whether or not it | ||
| 2998 | is currently displayed in some window. | ||
| 2999 | |||
| 3000 | ** The new function `mapc' is like `mapcar' but doesn't collect the | ||
| 3001 | argument function's results. | ||
| 3002 | |||
| 3003 | ** The functions base64-decode-region and base64-decode-string now | ||
| 3004 | signal an error instead of returning nil if decoding fails. Also, | ||
| 3005 | `base64-decode-string' now always returns a unibyte string (in Emacs | ||
| 3006 | 20, it returned a multibyte string when the result was a valid multibyte | ||
| 3007 | sequence). | ||
| 3008 | |||
| 3009 | ** The function sendmail-user-agent-compose now recognizes a `body' | ||
| 3010 | header in the list of headers passed to it. | ||
| 3011 | |||
| 3012 | ** The new function member-ignore-case works like `member', but | ||
| 3013 | ignores differences in case and text representation. | ||
| 3014 | |||
| 3015 | ** The buffer-local variable cursor-type can be used to specify the | ||
| 3016 | cursor to use in windows displaying a buffer. Values are interpreted | ||
| 3017 | as follows: | ||
| 3018 | |||
| 3019 | t use the cursor specified for the frame (default) | ||
| 3020 | nil don't display a cursor | ||
| 3021 | `bar' display a bar cursor with default width | ||
| 3022 | (bar . WIDTH) display a bar cursor with width WIDTH | ||
| 3023 | others display a box cursor. | ||
| 3024 | |||
| 3025 | ** The variable open-paren-in-column-0-is-defun-start controls whether | ||
| 3026 | an open parenthesis in column 0 is considered to be the start of a | ||
| 3027 | defun. If set, the default, it is considered a defun start. If not | ||
| 3028 | set, an open parenthesis in column 0 has no special meaning. | ||
| 3029 | |||
| 3030 | ** The new function `string-to-syntax' can be used to translate syntax | ||
| 3031 | specifications in string form as accepted by `modify-syntax-entry' to | ||
| 3032 | the cons-cell form that is used for the values of the `syntax-table' | ||
| 3033 | text property, and in `font-lock-syntactic-keywords'. | ||
| 3034 | |||
| 3035 | Example: | ||
| 3036 | |||
| 3037 | (string-to-syntax "()") | ||
| 3038 | => (4 . 41) | ||
| 3039 | |||
| 3040 | ** Emacs' reader supports CL read syntax for integers in bases | ||
| 3041 | other than 10. | ||
| 3042 | |||
| 3043 | *** `#BINTEGER' or `#bINTEGER' reads INTEGER in binary (radix 2). | ||
| 3044 | INTEGER optionally contains a sign. | ||
| 3045 | |||
| 3046 | #b1111 | ||
| 3047 | => 15 | ||
| 3048 | #b-1111 | ||
| 3049 | => -15 | ||
| 3050 | |||
| 3051 | *** `#OINTEGER' or `#oINTEGER' reads INTEGER in octal (radix 8). | ||
| 3052 | |||
| 3053 | #o666 | ||
| 3054 | => 438 | ||
| 3055 | |||
| 3056 | *** `#XINTEGER' or `#xINTEGER' reads INTEGER in hexadecimal (radix 16). | ||
| 3057 | |||
| 3058 | #xbeef | ||
| 3059 | => 48815 | ||
| 3060 | |||
| 3061 | *** `#RADIXrINTEGER' reads INTEGER in radix RADIX, 2 <= RADIX <= 36. | ||
| 3062 | |||
| 3063 | #2R-111 | ||
| 3064 | => -7 | ||
| 3065 | #25rah | ||
| 3066 | => 267 | ||
| 3067 | |||
| 3068 | ** The function `documentation-property' now evaluates the value of | ||
| 3069 | the given property to obtain a string if it doesn't refer to etc/DOC | ||
| 3070 | and isn't a string. | ||
| 3071 | |||
| 3072 | ** If called for a symbol, the function `documentation' now looks for | ||
| 3073 | a `function-documentation' property of that symbol. If it has a non-nil | ||
| 3074 | value, the documentation is taken from that value. If the value is | ||
| 3075 | not a string, it is evaluated to obtain a string. | ||
| 3076 | |||
| 3077 | ** The last argument of `define-key-after' defaults to t for convenience. | ||
| 3078 | |||
| 3079 | ** The new function `replace-regexp-in-string' replaces all matches | ||
| 3080 | for a regexp in a string. | ||
| 3081 | |||
| 3082 | ** `mouse-position' now runs the abnormal hook | ||
| 3083 | `mouse-position-function'. | ||
| 3084 | |||
| 3085 | ** The function string-to-number now returns a float for numbers | ||
| 3086 | that don't fit into a Lisp integer. | ||
| 3087 | |||
| 3088 | ** The variable keyword-symbols-constants-flag has been removed. | ||
| 3089 | Keywords are now always considered constants. | ||
| 3090 | |||
| 3091 | ** The new function `delete-and-extract-region' deletes text and | ||
| 3092 | returns it. | ||
| 3093 | |||
| 3094 | ** The function `clear-this-command-keys' now also clears the vector | ||
| 3095 | returned by function `recent-keys'. | ||
| 3096 | |||
| 3097 | ** Variables `beginning-of-defun-function' and `end-of-defun-function' | ||
| 3098 | can be used to define handlers for the functions that find defuns. | ||
| 3099 | Major modes can define these locally instead of rebinding C-M-a | ||
| 3100 | etc. if the normal conventions for defuns are not appropriate for the | ||
| 3101 | mode. | ||
| 3102 | |||
| 3103 | ** easy-mmode-define-minor-mode now takes an additional BODY argument | ||
| 3104 | and is renamed `define-minor-mode'. | ||
| 3105 | |||
| 3106 | ** If an abbrev has a hook function which is a symbol, and that symbol | ||
| 3107 | has a non-nil `no-self-insert' property, the return value of the hook | ||
| 3108 | function specifies whether an expansion has been done or not. If it | ||
| 3109 | returns nil, abbrev-expand also returns nil, meaning "no expansion has | ||
| 3110 | been performed." | ||
| 3111 | |||
| 3112 | When abbrev expansion is done by typing a self-inserting character, | ||
| 3113 | and the abbrev has a hook with the `no-self-insert' property, and the | ||
| 3114 | hook function returns non-nil meaning expansion has been done, | ||
| 3115 | then the self-inserting character is not inserted. | ||
| 3116 | |||
| 3117 | ** The function `intern-soft' now accepts a symbol as first argument. | ||
| 3118 | In this case, that exact symbol is looked up in the specified obarray, | ||
| 3119 | and the function's value is nil if it is not found. | ||
| 3120 | |||
| 3121 | ** The new macro `with-syntax-table' can be used to evaluate forms | ||
| 3122 | with the syntax table of the current buffer temporarily set to a | ||
| 3123 | specified table. | ||
| 3124 | |||
| 3125 | (with-syntax-table TABLE &rest BODY) | ||
| 3126 | |||
| 3127 | Evaluate BODY with syntax table of current buffer set to a copy of | ||
| 3128 | TABLE. The current syntax table is saved, BODY is evaluated, and the | ||
| 3129 | saved table is restored, even in case of an abnormal exit. Value is | ||
| 3130 | what BODY returns. | ||
| 3131 | |||
| 3132 | ** Regular expressions now support intervals \{n,m\} as well as | ||
| 3133 | Perl's shy-groups \(?:...\) and non-greedy *? +? and ?? operators. | ||
| 3134 | Also back-references like \2 are now considered as an error if the | ||
| 3135 | corresponding subgroup does not exist (or is not closed yet). | ||
| 3136 | Previously it would have been silently turned into `2' (ignoring the `\'). | ||
| 3137 | |||
| 3138 | ** The optional argument BUFFER of function file-local-copy has been | ||
| 3139 | removed since it wasn't used by anything. | ||
| 3140 | |||
| 3141 | ** The file name argument of function `file-locked-p' is now required | ||
| 3142 | instead of being optional. | ||
| 3143 | |||
| 3144 | ** The new built-in error `text-read-only' is signaled when trying to | ||
| 3145 | modify read-only text. | ||
| 3146 | |||
| 3147 | ** New functions and variables for locales. | ||
| 3148 | |||
| 3149 | The new variable `locale-coding-system' specifies how to encode and | ||
| 3150 | decode strings passed to low-level message functions like strerror and | ||
| 3151 | time functions like strftime. The new variables | ||
| 3152 | `system-messages-locale' and `system-time-locale' give the system | ||
| 3153 | locales to be used when invoking these two types of functions. | ||
| 3154 | |||
| 3155 | The new function `set-locale-environment' sets the language | ||
| 3156 | environment, preferred coding system, and locale coding system from | ||
| 3157 | the system locale as specified by the LC_ALL, LC_CTYPE, and LANG | ||
| 3158 | environment variables. Normally, it is invoked during startup and need | ||
| 3159 | not be invoked thereafter. It uses the new variables | ||
| 3160 | `locale-language-names', `locale-charset-language-names', and | ||
| 3161 | `locale-preferred-coding-systems' to make its decisions. | ||
| 3162 | |||
| 3163 | ** syntax tables now understand nested comments. | ||
| 3164 | To declare a comment syntax as allowing nesting, just add an `n' | ||
| 3165 | modifier to either of the characters of the comment end and the comment | ||
| 3166 | start sequences. | ||
| 3167 | |||
| 3168 | ** The function `pixmap-spec-p' has been renamed `bitmap-spec-p' | ||
| 3169 | because `bitmap' is more in line with the usual X terminology. | ||
| 3170 | |||
| 3171 | ** New function `propertize' | ||
| 3172 | |||
| 3173 | The new function `propertize' can be used to conveniently construct | ||
| 3174 | strings with text properties. | ||
| 3175 | |||
| 3176 | - Function: propertize STRING &rest PROPERTIES | ||
| 3177 | |||
| 3178 | Value is a copy of STRING with text properties assigned as specified | ||
| 3179 | by PROPERTIES. PROPERTIES is a sequence of pairs PROPERTY VALUE, with | ||
| 3180 | PROPERTY being the name of a text property and VALUE being the | ||
| 3181 | specified value of that property. Example: | ||
| 3182 | |||
| 3183 | (propertize "foo" 'face 'bold 'read-only t) | ||
| 3184 | |||
| 3185 | ** push and pop macros. | ||
| 3186 | |||
| 3187 | Simple versions of the push and pop macros of Common Lisp | ||
| 3188 | are now defined in Emacs Lisp. These macros allow only symbols | ||
| 3189 | as the place that holds the list to be changed. | ||
| 3190 | |||
| 3191 | (push NEWELT LISTNAME) add NEWELT to the front of LISTNAME's value. | ||
| 3192 | (pop LISTNAME) return first elt of LISTNAME, and remove it | ||
| 3193 | (thus altering the value of LISTNAME). | ||
| 3194 | |||
| 3195 | ** New dolist and dotimes macros. | ||
| 3196 | |||
| 3197 | Simple versions of the dolist and dotimes macros of Common Lisp | ||
| 3198 | are now defined in Emacs Lisp. | ||
| 3199 | |||
| 3200 | (dolist (VAR LIST [RESULT]) BODY...) | ||
| 3201 | Execute body once for each element of LIST, | ||
| 3202 | using the variable VAR to hold the current element. | ||
| 3203 | Then return the value of RESULT, or nil if RESULT is omitted. | ||
| 3204 | |||
| 3205 | (dotimes (VAR COUNT [RESULT]) BODY...) | ||
| 3206 | Execute BODY with VAR bound to successive integers running from 0, | ||
| 3207 | inclusive, to COUNT, exclusive. | ||
| 3208 | Then return the value of RESULT, or nil if RESULT is omitted. | ||
| 3209 | |||
| 3210 | ** Regular expressions now support Posix character classes such as | ||
| 3211 | [:alpha:], [:space:] and so on. These must be used within a character | ||
| 3212 | class--for instance, [-[:digit:].+] matches digits or a period | ||
| 3213 | or a sign. | ||
| 3214 | |||
| 3215 | [:digit:] matches 0 through 9 | ||
| 3216 | [:cntrl:] matches ASCII control characters | ||
| 3217 | [:xdigit:] matches 0 through 9, a through f and A through F. | ||
| 3218 | [:blank:] matches space and tab only | ||
| 3219 | [:graph:] matches graphic characters--everything except ASCII control chars, | ||
| 3220 | space, and DEL. | ||
| 3221 | [:print:] matches printing characters--everything except ASCII control chars | ||
| 3222 | and DEL. | ||
| 3223 | [:alnum:] matches letters and digits. | ||
| 3224 | (But at present, for multibyte characters, | ||
| 3225 | it matches anything that has word syntax.) | ||
| 3226 | [:alpha:] matches letters. | ||
| 3227 | (But at present, for multibyte characters, | ||
| 3228 | it matches anything that has word syntax.) | ||
| 3229 | [:ascii:] matches ASCII (unibyte) characters. | ||
| 3230 | [:nonascii:] matches non-ASCII (multibyte) characters. | ||
| 3231 | [:lower:] matches anything lower-case. | ||
| 3232 | [:punct:] matches punctuation. | ||
| 3233 | (But at present, for multibyte characters, | ||
| 3234 | it matches anything that has non-word syntax.) | ||
| 3235 | [:space:] matches anything that has whitespace syntax. | ||
| 3236 | [:upper:] matches anything upper-case. | ||
| 3237 | [:word:] matches anything that has word syntax. | ||
| 3238 | |||
| 3239 | ** Emacs now has built-in hash tables. | ||
| 3240 | |||
| 3241 | The following functions are defined for hash tables: | ||
| 3242 | |||
| 3243 | - Function: make-hash-table ARGS | ||
| 3244 | |||
| 3245 | The argument list ARGS consists of keyword/argument pairs. All arguments | ||
| 3246 | are optional. The following arguments are defined: | ||
| 3247 | |||
| 3248 | :test TEST | ||
| 3249 | |||
| 3250 | TEST must be a symbol specifying how to compare keys. Default is `eql'. | ||
| 3251 | Predefined are `eq', `eql' and `equal'. If TEST is not predefined, | ||
| 3252 | it must have been defined with `define-hash-table-test'. | ||
| 3253 | |||
| 3254 | :size SIZE | ||
| 3255 | |||
| 3256 | SIZE must be an integer > 0 giving a hint to the implementation how | ||
| 3257 | many elements will be put in the hash table. Default size is 65. | ||
| 3258 | |||
| 3259 | :rehash-size REHASH-SIZE | ||
| 3260 | |||
| 3261 | REHASH-SIZE specifies by how much to grow a hash table once it becomes | ||
| 3262 | full. If REHASH-SIZE is an integer, add that to the hash table's old | ||
| 3263 | size to get the new size. Otherwise, REHASH-SIZE must be a float > | ||
| 3264 | 1.0, and the new size is computed by multiplying REHASH-SIZE with the | ||
| 3265 | old size. Default rehash size is 1.5. | ||
| 3266 | |||
| 3267 | :rehash-threshold THRESHOLD | ||
| 3268 | |||
| 3269 | THRESHOLD must be a float > 0 and <= 1.0 specifying when to resize the | ||
| 3270 | hash table. It is resized when the ratio of (number of entries) / | ||
| 3271 | (size of hash table) is >= THRESHOLD. Default threshold is 0.8. | ||
| 3272 | |||
| 3273 | :weakness WEAK | ||
| 3274 | |||
| 3275 | WEAK must be either nil, one of the symbols `key, `value', | ||
| 3276 | `key-or-value', `key-and-value', or t, meaning the same as | ||
| 3277 | `key-and-value'. Entries are removed from weak tables during garbage | ||
| 3278 | collection if their key and/or value are not referenced elsewhere | ||
| 3279 | outside of the hash table. Default are non-weak hash tables. | ||
| 3280 | |||
| 3281 | - Function: makehash &optional TEST | ||
| 3282 | |||
| 3283 | Similar to make-hash-table, but only TEST can be specified. | ||
| 3284 | |||
| 3285 | - Function: hash-table-p TABLE | ||
| 3286 | |||
| 3287 | Returns non-nil if TABLE is a hash table object. | ||
| 3288 | |||
| 3289 | - Function: copy-hash-table TABLE | ||
| 3290 | |||
| 3291 | Returns a copy of TABLE. Only the table itself is copied, keys and | ||
| 3292 | values are shared. | ||
| 3293 | |||
| 3294 | - Function: hash-table-count TABLE | ||
| 3295 | |||
| 3296 | Returns the number of entries in TABLE. | ||
| 3297 | |||
| 3298 | - Function: hash-table-rehash-size TABLE | ||
| 3299 | |||
| 3300 | Returns the rehash size of TABLE. | ||
| 3301 | |||
| 3302 | - Function: hash-table-rehash-threshold TABLE | ||
| 3303 | |||
| 3304 | Returns the rehash threshold of TABLE. | ||
| 3305 | |||
| 3306 | - Function: hash-table-rehash-size TABLE | ||
| 3307 | |||
| 3308 | Returns the size of TABLE. | ||
| 3309 | |||
| 3310 | - Function: hash-table-test TABLE | ||
| 3311 | |||
| 3312 | Returns the test TABLE uses to compare keys. | ||
| 3313 | |||
| 3314 | - Function: hash-table-weakness TABLE | ||
| 3315 | |||
| 3316 | Returns the weakness specified for TABLE. | ||
| 3317 | |||
| 3318 | - Function: clrhash TABLE | ||
| 3319 | |||
| 3320 | Clear TABLE. | ||
| 3321 | |||
| 3322 | - Function: gethash KEY TABLE &optional DEFAULT | ||
| 3323 | |||
| 3324 | Look up KEY in TABLE and return its associated VALUE or DEFAULT if | ||
| 3325 | not found. | ||
| 3326 | |||
| 3327 | - Function: puthash KEY VALUE TABLE | ||
| 3328 | |||
| 3329 | Associate KEY with VALUE in TABLE. If KEY is already associated with | ||
| 3330 | another value, replace the old value with VALUE. | ||
| 3331 | |||
| 3332 | - Function: remhash KEY TABLE | ||
| 3333 | |||
| 3334 | Remove KEY from TABLE if it is there. | ||
| 3335 | |||
| 3336 | - Function: maphash FUNCTION TABLE | ||
| 3337 | |||
| 3338 | Call FUNCTION for all elements in TABLE. FUNCTION must take two | ||
| 3339 | arguments KEY and VALUE. | ||
| 3340 | |||
| 3341 | - Function: sxhash OBJ | ||
| 3342 | |||
| 3343 | Return a hash code for Lisp object OBJ. | ||
| 3344 | |||
| 3345 | - Function: define-hash-table-test NAME TEST-FN HASH-FN | ||
| 3346 | |||
| 3347 | Define a new hash table test named NAME. If NAME is specified as | ||
| 3348 | a test in `make-hash-table', the table created will use TEST-FN for | ||
| 3349 | comparing keys, and HASH-FN to compute hash codes for keys. Test | ||
| 3350 | and hash function are stored as symbol property `hash-table-test' | ||
| 3351 | of NAME with a value of (TEST-FN HASH-FN). | ||
| 3352 | |||
| 3353 | TEST-FN must take two arguments and return non-nil if they are the same. | ||
| 3354 | |||
| 3355 | HASH-FN must take one argument and return an integer that is the hash | ||
| 3356 | code of the argument. The function should use the whole range of | ||
| 3357 | integer values for hash code computation, including negative integers. | ||
| 3358 | |||
| 3359 | Example: The following creates a hash table whose keys are supposed to | ||
| 3360 | be strings that are compared case-insensitively. | ||
| 3361 | |||
| 3362 | (defun case-fold-string= (a b) | ||
| 3363 | (compare-strings a nil nil b nil nil t)) | ||
| 3364 | |||
| 3365 | (defun case-fold-string-hash (a) | ||
| 3366 | (sxhash (upcase a))) | ||
| 3367 | |||
| 3368 | (define-hash-table-test 'case-fold 'case-fold-string= | ||
| 3369 | 'case-fold-string-hash)) | ||
| 3370 | |||
| 3371 | (make-hash-table :test 'case-fold) | ||
| 3372 | |||
| 3373 | ** The Lisp reader handles circular structure. | ||
| 3374 | |||
| 3375 | It now works to use the #N= and #N# constructs to represent | ||
| 3376 | circular structures. For example, #1=(a . #1#) represents | ||
| 3377 | a cons cell which is its own cdr. | ||
| 3378 | |||
| 3379 | ** The Lisp printer handles circular structure. | ||
| 3380 | |||
| 3381 | If you bind print-circle to a non-nil value, the Lisp printer outputs | ||
| 3382 | #N= and #N# constructs to represent circular and shared structure. | ||
| 3383 | |||
| 3384 | ** If the second argument to `move-to-column' is anything but nil or | ||
| 3385 | t, that means replace a tab with spaces if necessary to reach the | ||
| 3386 | specified column, but do not add spaces at the end of the line if it | ||
| 3387 | is too short to reach that column. | ||
| 3388 | |||
| 3389 | ** perform-replace has a new feature: the REPLACEMENTS argument may | ||
| 3390 | now be a cons cell (FUNCTION . DATA). This means to call FUNCTION | ||
| 3391 | after each match to get the replacement text. FUNCTION is called with | ||
| 3392 | two arguments: DATA, and the number of replacements already made. | ||
| 3393 | |||
| 3394 | If the FROM-STRING contains any upper-case letters, | ||
| 3395 | perform-replace also turns off `case-fold-search' temporarily | ||
| 3396 | and inserts the replacement text without altering case in it. | ||
| 3397 | |||
| 3398 | ** The function buffer-size now accepts an optional argument | ||
| 3399 | to specify which buffer to return the size of. | ||
| 3400 | |||
| 3401 | ** The calendar motion commands now run the normal hook | ||
| 3402 | calendar-move-hook after moving point. | ||
| 3403 | |||
| 3404 | ** The new variable small-temporary-file-directory specifies a | ||
| 3405 | directory to use for creating temporary files that are likely to be | ||
| 3406 | small. (Certain Emacs features use this directory.) If | ||
| 3407 | small-temporary-file-directory is nil, they use | ||
| 3408 | temporary-file-directory instead. | ||
| 3409 | |||
| 3410 | ** The variable `inhibit-modification-hooks', if non-nil, inhibits all | ||
| 3411 | the hooks that track changes in the buffer. This affects | ||
| 3412 | `before-change-functions' and `after-change-functions', as well as | ||
| 3413 | hooks attached to text properties and overlay properties. | ||
| 3414 | |||
| 3415 | ** assq-delete-all is a new function that deletes all the | ||
| 3416 | elements of an alist which have a car `eq' to a particular value. | ||
| 3417 | |||
| 3418 | ** make-temp-file provides a more reliable way to create a temporary file. | ||
| 3419 | |||
| 3420 | make-temp-file is used like make-temp-name, except that it actually | ||
| 3421 | creates the file before it returns. This prevents a timing error, | ||
| 3422 | ensuring that no other job can use the same name for a temporary file. | ||
| 3423 | |||
| 3424 | ** New exclusive-open feature in `write-region' | ||
| 3425 | |||
| 3426 | The optional seventh arg is now called MUSTBENEW. If non-nil, it insists | ||
| 3427 | on a check for an existing file with the same name. If MUSTBENEW | ||
| 3428 | is `excl', that means to get an error if the file already exists; | ||
| 3429 | never overwrite. If MUSTBENEW is neither nil nor `excl', that means | ||
| 3430 | ask for confirmation before overwriting, but do go ahead and | ||
| 3431 | overwrite the file if the user gives confirmation. | ||
| 3432 | |||
| 3433 | If the MUSTBENEW argument in `write-region' is `excl', | ||
| 3434 | that means to use a special feature in the `open' system call | ||
| 3435 | to get an error if the file exists at that time. | ||
| 3436 | The error reported is `file-already-exists'. | ||
| 3437 | |||
| 3438 | ** Function `format' now handles text properties. | ||
| 3439 | |||
| 3440 | Text properties of the format string are applied to the result string. | ||
| 3441 | If the result string is longer than the format string, text properties | ||
| 3442 | ending at the end of the format string are extended to the end of the | ||
| 3443 | result string. | ||
| 3444 | |||
| 3445 | Text properties from string arguments are applied to the result | ||
| 3446 | string where arguments appear in the result string. | ||
| 3447 | |||
| 3448 | Example: | ||
| 3449 | |||
| 3450 | (let ((s1 "hello, %s") | ||
| 3451 | (s2 "world")) | ||
| 3452 | (put-text-property 0 (length s1) 'face 'bold s1) | ||
| 3453 | (put-text-property 0 (length s2) 'face 'italic s2) | ||
| 3454 | (format s1 s2)) | ||
| 3455 | |||
| 3456 | results in a bold-face string with an italic `world' at the end. | ||
| 3457 | |||
| 3458 | ** Messages can now be displayed with text properties. | ||
| 3459 | |||
| 3460 | Text properties are handled as described above for function `format'. | ||
| 3461 | The following example displays a bold-face message with an italic | ||
| 3462 | argument in it. | ||
| 3463 | |||
| 3464 | (let ((msg "hello, %s!") | ||
| 3465 | (arg "world")) | ||
| 3466 | (put-text-property 0 (length msg) 'face 'bold msg) | ||
| 3467 | (put-text-property 0 (length arg) 'face 'italic arg) | ||
| 3468 | (message msg arg)) | ||
| 3469 | |||
| 3470 | ** Sound support | ||
| 3471 | |||
| 3472 | Emacs supports playing sound files on GNU/Linux and the free BSDs | ||
| 3473 | (Voxware driver and native BSD driver, aka as Luigi's driver). | ||
| 3474 | |||
| 3475 | Currently supported file formats are RIFF-WAVE (*.wav) and Sun Audio | ||
| 3476 | (*.au). You must configure Emacs with the option `--with-sound=yes' | ||
| 3477 | to enable sound support. | ||
| 3478 | |||
| 3479 | Sound files can be played by calling (play-sound SOUND). SOUND is a | ||
| 3480 | list of the form `(sound PROPERTY...)'. The function is only defined | ||
| 3481 | when sound support is present for the system on which Emacs runs. The | ||
| 3482 | functions runs `play-sound-functions' with one argument which is the | ||
| 3483 | sound to play, before playing the sound. | ||
| 3484 | |||
| 3485 | The following sound properties are supported: | ||
| 3486 | |||
| 3487 | - `:file FILE' | ||
| 3488 | |||
| 3489 | FILE is a file name. If FILE isn't an absolute name, it will be | ||
| 3490 | searched relative to `data-directory'. | ||
| 3491 | |||
| 3492 | - `:data DATA' | ||
| 3493 | |||
| 3494 | DATA is a string containing sound data. Either :file or :data | ||
| 3495 | may be present, but not both. | ||
| 3496 | |||
| 3497 | - `:volume VOLUME' | ||
| 3498 | |||
| 3499 | VOLUME must be an integer in the range 0..100 or a float in the range | ||
| 3500 | 0..1. This property is optional. | ||
| 3501 | |||
| 3502 | - `:device DEVICE' | ||
| 3503 | |||
| 3504 | DEVICE is a string specifying the system device on which to play the | ||
| 3505 | sound. The default device is system-dependent. | ||
| 3506 | |||
| 3507 | Other properties are ignored. | ||
| 3508 | |||
| 3509 | An alternative interface is called as | ||
| 3510 | (play-sound-file FILE &optional VOLUME DEVICE). | ||
| 3511 | |||
| 3512 | ** `multimedia' is a new Finder keyword and Custom group. | ||
| 3513 | |||
| 3514 | ** keywordp is a new predicate to test efficiently for an object being | ||
| 3515 | a keyword symbol. | ||
| 3516 | |||
| 3517 | ** Changes to garbage collection | ||
| 3518 | |||
| 3519 | *** The function garbage-collect now additionally returns the number | ||
| 3520 | of live and free strings. | ||
| 3521 | |||
| 3522 | *** There is a new variable `strings-consed' holding the number of | ||
| 3523 | strings that have been consed so far. | ||
| 3524 | |||
| 3525 | |||
| 3526 | * Lisp-level Display features added after release 2.6 of the Emacs | ||
| 3527 | Lisp Manual | ||
| 3528 | |||
| 3529 | ** The user-option `resize-mini-windows' controls how Emacs resizes | ||
| 3530 | mini-windows. | ||
| 3531 | |||
| 3532 | ** The function `pos-visible-in-window-p' now has a third optional | ||
| 3533 | argument, PARTIALLY. If a character is only partially visible, nil is | ||
| 3534 | returned, unless PARTIALLY is non-nil. | ||
| 3535 | |||
| 3536 | ** On window systems, `glyph-table' is no longer used. | ||
| 3537 | |||
| 3538 | ** Help strings in menu items are now used to provide `help-echo' text. | ||
| 3539 | |||
| 3540 | ** The function `image-size' can be used to determine the size of an | ||
| 3541 | image. | ||
| 3542 | |||
| 3543 | - Function: image-size SPEC &optional PIXELS FRAME | ||
| 3544 | |||
| 3545 | Return the size of an image as a pair (WIDTH . HEIGHT). | ||
| 3546 | |||
| 3547 | SPEC is an image specification. PIXELS non-nil means return sizes | ||
| 3548 | measured in pixels, otherwise return sizes measured in canonical | ||
| 3549 | character units (fractions of the width/height of the frame's default | ||
| 3550 | font). FRAME is the frame on which the image will be displayed. | ||
| 3551 | FRAME nil or omitted means use the selected frame. | ||
| 3552 | |||
| 3553 | ** The function `image-mask-p' can be used to determine if an image | ||
| 3554 | has a mask bitmap. | ||
| 3555 | |||
| 3556 | - Function: image-mask-p SPEC &optional FRAME | ||
| 3557 | |||
| 3558 | Return t if image SPEC has a mask bitmap. | ||
| 3559 | FRAME is the frame on which the image will be displayed. FRAME nil | ||
| 3560 | or omitted means use the selected frame. | ||
| 3561 | |||
| 3562 | ** The function `find-image' can be used to find a usable image | ||
| 3563 | satisfying one of a list of specifications. | ||
| 3564 | |||
| 3565 | ** The STRING argument of `put-image' and `insert-image' is now | ||
| 3566 | optional. | ||
| 3567 | |||
| 3568 | ** Image specifications may contain the property `:ascent center' (see | ||
| 3569 | below). | ||
| 3570 | |||
| 3571 | |||
| 3572 | * New Lisp-level Display features in Emacs 21.1 | ||
| 3573 | |||
| 3574 | ** The function tty-suppress-bold-inverse-default-colors can be used | ||
| 3575 | to make Emacs avoid displaying text with bold black foreground on TTYs. | ||
| 3576 | |||
| 3577 | Some terminals, notably PC consoles, emulate bold text by displaying | ||
| 3578 | text in brighter colors. On such a console, a bold black foreground | ||
| 3579 | is displayed in a gray color. If this turns out to be hard to read on | ||
| 3580 | your monitor---the problem occurred with the mode line on | ||
| 3581 | laptops---you can instruct Emacs to ignore the text's boldness, and to | ||
| 3582 | just display it black instead. | ||
| 3583 | |||
| 3584 | This situation can't be detected automatically. You will have to put | ||
| 3585 | a line like | ||
| 3586 | |||
| 3587 | (tty-suppress-bold-inverse-default-colors t) | ||
| 3588 | |||
| 3589 | in your `.emacs'. | ||
| 3590 | |||
| 3591 | ** New face implementation. | ||
| 3592 | |||
| 3593 | Emacs faces have been reimplemented from scratch. They don't use XLFD | ||
| 3594 | font names anymore and face merging now works as expected. | ||
| 3595 | |||
| 3596 | *** New faces. | ||
| 3597 | |||
| 3598 | Each face can specify the following display attributes: | ||
| 3599 | |||
| 3600 | 1. Font family or fontset alias name. | ||
| 3601 | |||
| 3602 | 2. Relative proportionate width, aka character set width or set | ||
| 3603 | width (swidth), e.g. `semi-compressed'. | ||
| 3604 | |||
| 3605 | 3. Font height in 1/10pt | ||
| 3606 | |||
| 3607 | 4. Font weight, e.g. `bold'. | ||
| 3608 | |||
| 3609 | 5. Font slant, e.g. `italic'. | ||
| 3610 | |||
| 3611 | 6. Foreground color. | ||
| 3612 | |||
| 3613 | 7. Background color. | ||
| 3614 | |||
| 3615 | 8. Whether or not characters should be underlined, and in what color. | ||
| 3616 | |||
| 3617 | 9. Whether or not characters should be displayed in inverse video. | ||
| 3618 | |||
| 3619 | 10. A background stipple, a bitmap. | ||
| 3620 | |||
| 3621 | 11. Whether or not characters should be overlined, and in what color. | ||
| 3622 | |||
| 3623 | 12. Whether or not characters should be strike-through, and in what | ||
| 3624 | color. | ||
| 3625 | |||
| 3626 | 13. Whether or not a box should be drawn around characters, its | ||
| 3627 | color, the width of the box lines, and 3D appearance. | ||
| 3628 | |||
| 3629 | Faces are frame-local by nature because Emacs allows to define the | ||
| 3630 | same named face (face names are symbols) differently for different | ||
| 3631 | frames. Each frame has an alist of face definitions for all named | ||
| 3632 | faces. The value of a named face in such an alist is a Lisp vector | ||
| 3633 | with the symbol `face' in slot 0, and a slot for each of the face | ||
| 3634 | attributes mentioned above. | ||
| 3635 | |||
| 3636 | There is also a global face alist `face-new-frame-defaults'. Face | ||
| 3637 | definitions from this list are used to initialize faces of newly | ||
| 3638 | created frames. | ||
| 3639 | |||
| 3640 | A face doesn't have to specify all attributes. Those not specified | ||
| 3641 | have a nil value. Faces specifying all attributes are called | ||
| 3642 | `fully-specified'. | ||
| 3643 | |||
| 3644 | *** Face merging. | ||
| 3645 | |||
| 3646 | The display style of a given character in the text is determined by | ||
| 3647 | combining several faces. This process is called `face merging'. Any | ||
| 3648 | aspect of the display style that isn't specified by overlays or text | ||
| 3649 | properties is taken from the `default' face. Since it is made sure | ||
| 3650 | that the default face is always fully-specified, face merging always | ||
| 3651 | results in a fully-specified face. | ||
| 3652 | |||
| 3653 | *** Face realization. | ||
| 3654 | |||
| 3655 | After all face attributes for a character have been determined by | ||
| 3656 | merging faces of that character, that face is `realized'. The | ||
| 3657 | realization process maps face attributes to what is physically | ||
| 3658 | available on the system where Emacs runs. The result is a `realized | ||
| 3659 | face' in form of an internal structure which is stored in the face | ||
| 3660 | cache of the frame on which it was realized. | ||
| 3661 | |||
| 3662 | Face realization is done in the context of the charset of the | ||
| 3663 | character to display because different fonts and encodings are used | ||
| 3664 | for different charsets. In other words, for characters of different | ||
| 3665 | charsets, different realized faces are needed to display them. | ||
| 3666 | |||
| 3667 | Except for composite characters, faces are always realized for a | ||
| 3668 | specific character set and contain a specific font, even if the face | ||
| 3669 | being realized specifies a fontset. The reason is that the result of | ||
| 3670 | the new font selection stage is better than what can be done with | ||
| 3671 | statically defined font name patterns in fontsets. | ||
| 3672 | |||
| 3673 | In unibyte text, Emacs' charsets aren't applicable; function | ||
| 3674 | `char-charset' reports ASCII for all characters, including those > | ||
| 3675 | 0x7f. The X registry and encoding of fonts to use is determined from | ||
| 3676 | the variable `face-default-registry' in this case. The variable is | ||
| 3677 | initialized at Emacs startup time from the font the user specified for | ||
| 3678 | Emacs. | ||
| 3679 | |||
| 3680 | Currently all unibyte text, i.e. all buffers with | ||
| 3681 | `enable-multibyte-characters' nil are displayed with fonts of the same | ||
| 3682 | registry and encoding `face-default-registry'. This is consistent | ||
| 3683 | with the fact that languages can also be set globally, only. | ||
| 3684 | |||
| 3685 | **** Clearing face caches. | ||
| 3686 | |||
| 3687 | The Lisp function `clear-face-cache' can be called to clear face caches | ||
| 3688 | on all frames. If called with a non-nil argument, it will also unload | ||
| 3689 | unused fonts. | ||
| 3690 | |||
| 3691 | *** Font selection. | ||
| 3692 | |||
| 3693 | Font selection tries to find the best available matching font for a | ||
| 3694 | given (charset, face) combination. This is done slightly differently | ||
| 3695 | for faces specifying a fontset, or a font family name. | ||
| 3696 | |||
| 3697 | If the face specifies a fontset name, that fontset determines a | ||
| 3698 | pattern for fonts of the given charset. If the face specifies a font | ||
| 3699 | family, a font pattern is constructed. Charset symbols have a | ||
| 3700 | property `x-charset-registry' for that purpose that maps a charset to | ||
| 3701 | an XLFD registry and encoding in the font pattern constructed. | ||
| 3702 | |||
| 3703 | Available fonts on the system on which Emacs runs are then matched | ||
| 3704 | against the font pattern. The result of font selection is the best | ||
| 3705 | match for the given face attributes in this font list. | ||
| 3706 | |||
| 3707 | Font selection can be influenced by the user. | ||
| 3708 | |||
| 3709 | The user can specify the relative importance he gives the face | ||
| 3710 | attributes width, height, weight, and slant by setting | ||
| 3711 | face-font-selection-order (faces.el) to a list of face attribute | ||
| 3712 | names. The default is (:width :height :weight :slant), and means | ||
| 3713 | that font selection first tries to find a good match for the font | ||
| 3714 | width specified by a face, then---within fonts with that width---tries | ||
| 3715 | to find a best match for the specified font height, etc. | ||
| 3716 | |||
| 3717 | Setting `face-font-family-alternatives' allows the user to specify | ||
| 3718 | alternative font families to try if a family specified by a face | ||
| 3719 | doesn't exist. | ||
| 3720 | |||
| 3721 | Setting `face-font-registry-alternatives' allows the user to specify | ||
| 3722 | all alternative font registry names to try for a face specifying a | ||
| 3723 | registry. | ||
| 3724 | |||
| 3725 | Please note that the interpretations of the above two variables are | ||
| 3726 | slightly different. | ||
| 3727 | |||
| 3728 | Setting face-ignored-fonts allows the user to ignore specific fonts. | ||
| 3729 | |||
| 3730 | |||
| 3731 | **** Scalable fonts | ||
| 3732 | |||
| 3733 | Emacs can make use of scalable fonts but doesn't do so by default, | ||
| 3734 | since the use of too many or too big scalable fonts may crash XFree86 | ||
| 3735 | servers. | ||
| 3736 | |||
| 3737 | To enable scalable font use, set the variable | ||
| 3738 | `scalable-fonts-allowed'. A value of nil, the default, means never use | ||
| 3739 | scalable fonts. A value of t means any scalable font may be used. | ||
| 3740 | Otherwise, the value must be a list of regular expressions. A | ||
| 3741 | scalable font may then be used if it matches a regular expression from | ||
| 3742 | that list. Example: | ||
| 3743 | |||
| 3744 | (setq scalable-fonts-allowed '("muleindian-2$")) | ||
| 3745 | |||
| 3746 | allows the use of scalable fonts with registry `muleindian-2'. | ||
| 3747 | |||
| 3748 | *** Functions and variables related to font selection. | ||
| 3749 | |||
| 3750 | - Function: x-family-fonts &optional FAMILY FRAME | ||
| 3751 | |||
| 3752 | Return a list of available fonts of family FAMILY on FRAME. If FAMILY | ||
| 3753 | is omitted or nil, list all families. Otherwise, FAMILY must be a | ||
| 3754 | string, possibly containing wildcards `?' and `*'. | ||
| 3755 | |||
| 3756 | If FRAME is omitted or nil, use the selected frame. Each element of | ||
| 3757 | the result is a vector [FAMILY WIDTH POINT-SIZE WEIGHT SLANT FIXED-P | ||
| 3758 | FULL REGISTRY-AND-ENCODING]. FAMILY is the font family name. | ||
| 3759 | POINT-SIZE is the size of the font in 1/10 pt. WIDTH, WEIGHT, and | ||
| 3760 | SLANT are symbols describing the width, weight and slant of the font. | ||
| 3761 | These symbols are the same as for face attributes. FIXED-P is non-nil | ||
| 3762 | if the font is fixed-pitch. FULL is the full name of the font, and | ||
| 3763 | REGISTRY-AND-ENCODING is a string giving the registry and encoding of | ||
| 3764 | the font. The result list is sorted according to the current setting | ||
| 3765 | of the face font sort order. | ||
| 3766 | |||
| 3767 | - Function: x-font-family-list | ||
| 3768 | |||
| 3769 | Return a list of available font families on FRAME. If FRAME is | ||
| 3770 | omitted or nil, use the selected frame. Value is a list of conses | ||
| 3771 | (FAMILY . FIXED-P) where FAMILY is a font family, and FIXED-P is | ||
| 3772 | non-nil if fonts of that family are fixed-pitch. | ||
| 3773 | |||
| 3774 | - Variable: font-list-limit | ||
| 3775 | |||
| 3776 | Limit for font matching. If an integer > 0, font matching functions | ||
| 3777 | won't load more than that number of fonts when searching for a | ||
| 3778 | matching font. The default is currently 100. | ||
| 3779 | |||
| 3780 | *** Setting face attributes. | ||
| 3781 | |||
| 3782 | For the most part, the new face implementation is interface-compatible | ||
| 3783 | with the old one. Old face attribute related functions are now | ||
| 3784 | implemented in terms of the new functions `set-face-attribute' and | ||
| 3785 | `face-attribute'. | ||
| 3786 | |||
| 3787 | Face attributes are identified by their names which are keyword | ||
| 3788 | symbols. All attributes can be set to `unspecified'. | ||
| 3789 | |||
| 3790 | The following attributes are recognized: | ||
| 3791 | |||
| 3792 | `:family' | ||
| 3793 | |||
| 3794 | VALUE must be a string specifying the font family, e.g. ``courier'', | ||
| 3795 | or a fontset alias name. If a font family is specified, wild-cards `*' | ||
| 3796 | and `?' are allowed. | ||
| 3797 | |||
| 3798 | `:width' | ||
| 3799 | |||
| 3800 | VALUE specifies the relative proportionate width of the font to use. | ||
| 3801 | It must be one of the symbols `ultra-condensed', `extra-condensed', | ||
| 3802 | `condensed', `semi-condensed', `normal', `semi-expanded', `expanded', | ||
| 3803 | `extra-expanded', or `ultra-expanded'. | ||
| 3804 | |||
| 3805 | `:height' | ||
| 3806 | |||
| 3807 | VALUE must be either an integer specifying the height of the font to use | ||
| 3808 | in 1/10 pt, a floating point number specifying the amount by which to | ||
| 3809 | scale any underlying face, or a function, which is called with the old | ||
| 3810 | height (from the underlying face), and should return the new height. | ||
| 3811 | |||
| 3812 | `:weight' | ||
| 3813 | |||
| 3814 | VALUE specifies the weight of the font to use. It must be one of the | ||
| 3815 | symbols `ultra-bold', `extra-bold', `bold', `semi-bold', `normal', | ||
| 3816 | `semi-light', `light', `extra-light', `ultra-light'. | ||
| 3817 | |||
| 3818 | `:slant' | ||
| 3819 | |||
| 3820 | VALUE specifies the slant of the font to use. It must be one of the | ||
| 3821 | symbols `italic', `oblique', `normal', `reverse-italic', or | ||
| 3822 | `reverse-oblique'. | ||
| 3823 | |||
| 3824 | `:foreground', `:background' | ||
| 3825 | |||
| 3826 | VALUE must be a color name, a string. | ||
| 3827 | |||
| 3828 | `:underline' | ||
| 3829 | |||
| 3830 | VALUE specifies whether characters in FACE should be underlined. If | ||
| 3831 | VALUE is t, underline with foreground color of the face. If VALUE is | ||
| 3832 | a string, underline with that color. If VALUE is nil, explicitly | ||
| 3833 | don't underline. | ||
| 3834 | |||
| 3835 | `:overline' | ||
| 3836 | |||
| 3837 | VALUE specifies whether characters in FACE should be overlined. If | ||
| 3838 | VALUE is t, overline with foreground color of the face. If VALUE is a | ||
| 3839 | string, overline with that color. If VALUE is nil, explicitly don't | ||
| 3840 | overline. | ||
| 3841 | |||
| 3842 | `:strike-through' | ||
| 3843 | |||
| 3844 | VALUE specifies whether characters in FACE should be drawn with a line | ||
| 3845 | striking through them. If VALUE is t, use the foreground color of the | ||
| 3846 | face. If VALUE is a string, strike-through with that color. If VALUE | ||
| 3847 | is nil, explicitly don't strike through. | ||
| 3848 | |||
| 3849 | `:box' | ||
| 3850 | |||
| 3851 | VALUE specifies whether characters in FACE should have a box drawn | ||
| 3852 | around them. If VALUE is nil, explicitly don't draw boxes. If | ||
| 3853 | VALUE is t, draw a box with lines of width 1 in the foreground color | ||
| 3854 | of the face. If VALUE is a string, the string must be a color name, | ||
| 3855 | and the box is drawn in that color with a line width of 1. Otherwise, | ||
| 3856 | VALUE must be a property list of the form `(:line-width WIDTH | ||
| 3857 | :color COLOR :style STYLE)'. If a keyword/value pair is missing from | ||
| 3858 | the property list, a default value will be used for the value, as | ||
| 3859 | specified below. WIDTH specifies the width of the lines to draw; it | ||
| 3860 | defaults to 1. COLOR is the name of the color to draw in, default is | ||
| 3861 | the foreground color of the face for simple boxes, and the background | ||
| 3862 | color of the face for 3D boxes. STYLE specifies whether a 3D box | ||
| 3863 | should be draw. If STYLE is `released-button', draw a box looking | ||
| 3864 | like a released 3D button. If STYLE is `pressed-button' draw a box | ||
| 3865 | that appears like a pressed button. If STYLE is nil, the default if | ||
| 3866 | the property list doesn't contain a style specification, draw a 2D | ||
| 3867 | box. | ||
| 3868 | |||
| 3869 | `:inverse-video' | ||
| 3870 | |||
| 3871 | VALUE specifies whether characters in FACE should be displayed in | ||
| 3872 | inverse video. VALUE must be one of t or nil. | ||
| 3873 | |||
| 3874 | `:stipple' | ||
| 3875 | |||
| 3876 | If VALUE is a string, it must be the name of a file of pixmap data. | ||
| 3877 | The directories listed in the `x-bitmap-file-path' variable are | ||
| 3878 | searched. Alternatively, VALUE may be a list of the form (WIDTH | ||
| 3879 | HEIGHT DATA) where WIDTH and HEIGHT are the size in pixels, and DATA | ||
| 3880 | is a string containing the raw bits of the bitmap. VALUE nil means | ||
| 3881 | explicitly don't use a stipple pattern. | ||
| 3882 | |||
| 3883 | For convenience, attributes `:family', `:width', `:height', `:weight', | ||
| 3884 | and `:slant' may also be set in one step from an X font name: | ||
| 3885 | |||
| 3886 | `:font' | ||
| 3887 | |||
| 3888 | Set font-related face attributes from VALUE. VALUE must be a valid | ||
| 3889 | XLFD font name. If it is a font name pattern, the first matching font | ||
| 3890 | is used--this is for compatibility with the behavior of previous | ||
| 3891 | versions of Emacs. | ||
| 3892 | |||
| 3893 | For compatibility with Emacs 20, keywords `:bold' and `:italic' can | ||
| 3894 | be used to specify that a bold or italic font should be used. VALUE | ||
| 3895 | must be t or nil in that case. A value of `unspecified' is not allowed." | ||
| 3896 | |||
| 3897 | Please see also the documentation of `set-face-attribute' and | ||
| 3898 | `defface'. | ||
| 3899 | |||
| 3900 | `:inherit' | ||
| 3901 | |||
| 3902 | VALUE is the name of a face from which to inherit attributes, or a list | ||
| 3903 | of face names. Attributes from inherited faces are merged into the face | ||
| 3904 | like an underlying face would be, with higher priority than underlying faces. | ||
| 3905 | |||
| 3906 | *** Face attributes and X resources | ||
| 3907 | |||
| 3908 | The following X resource names can be used to set face attributes | ||
| 3909 | from X resources: | ||
| 3910 | |||
| 3911 | Face attribute X resource class | ||
| 3912 | ----------------------------------------------------------------------- | ||
| 3913 | :family attributeFamily . Face.AttributeFamily | ||
| 3914 | :width attributeWidth Face.AttributeWidth | ||
| 3915 | :height attributeHeight Face.AttributeHeight | ||
| 3916 | :weight attributeWeight Face.AttributeWeight | ||
| 3917 | :slant attributeSlant Face.AttributeSlant | ||
| 3918 | foreground attributeForeground Face.AttributeForeground | ||
| 3919 | :background attributeBackground . Face.AttributeBackground | ||
| 3920 | :overline attributeOverline Face.AttributeOverline | ||
| 3921 | :strike-through attributeStrikeThrough Face.AttributeStrikeThrough | ||
| 3922 | :box attributeBox Face.AttributeBox | ||
| 3923 | :underline attributeUnderline Face.AttributeUnderline | ||
| 3924 | :inverse-video attributeInverse Face.AttributeInverse | ||
| 3925 | :stipple attributeStipple Face.AttributeStipple | ||
| 3926 | or attributeBackgroundPixmap | ||
| 3927 | Face.AttributeBackgroundPixmap | ||
| 3928 | :font attributeFont Face.AttributeFont | ||
| 3929 | :bold attributeBold Face.AttributeBold | ||
| 3930 | :italic attributeItalic . Face.AttributeItalic | ||
| 3931 | :font attributeFont Face.AttributeFont | ||
| 3932 | |||
| 3933 | *** Text property `face'. | ||
| 3934 | |||
| 3935 | The value of the `face' text property can now be a single face | ||
| 3936 | specification or a list of such specifications. Each face | ||
| 3937 | specification can be | ||
| 3938 | |||
| 3939 | 1. A symbol or string naming a Lisp face. | ||
| 3940 | |||
| 3941 | 2. A property list of the form (KEYWORD VALUE ...) where each | ||
| 3942 | KEYWORD is a face attribute name, and VALUE is an appropriate value | ||
| 3943 | for that attribute. Please see the doc string of `set-face-attribute' | ||
| 3944 | for face attribute names. | ||
| 3945 | |||
| 3946 | 3. Conses of the form (FOREGROUND-COLOR . COLOR) or | ||
| 3947 | (BACKGROUND-COLOR . COLOR) where COLOR is a color name. This is | ||
| 3948 | for compatibility with previous Emacs versions. | ||
| 3949 | |||
| 3950 | ** Support functions for colors on text-only terminals. | ||
| 3951 | |||
| 3952 | The function `tty-color-define' can be used to define colors for use | ||
| 3953 | on TTY and MSDOS frames. It maps a color name to a color number on | ||
| 3954 | the terminal. Emacs defines a couple of common color mappings by | ||
| 3955 | default. You can get defined colors with a call to | ||
| 3956 | `defined-colors'. The function `tty-color-clear' can be | ||
| 3957 | used to clear the mapping table. | ||
| 3958 | |||
| 3959 | ** Unified support for colors independent of frame type. | ||
| 3960 | |||
| 3961 | The new functions `defined-colors', `color-defined-p', `color-values', | ||
| 3962 | and `display-color-p' work for any type of frame. On frames whose | ||
| 3963 | type is neither x nor w32, these functions transparently map X-style | ||
| 3964 | color specifications to the closest colors supported by the frame | ||
| 3965 | display. Lisp programs should use these new functions instead of the | ||
| 3966 | old `x-defined-colors', `x-color-defined-p', `x-color-values', and | ||
| 3967 | `x-display-color-p'. (The old function names are still available for | ||
| 3968 | compatibility; they are now aliases of the new names.) Lisp programs | ||
| 3969 | should no more look at the value of the variable window-system to | ||
| 3970 | modify their color-related behavior. | ||
| 3971 | |||
| 3972 | The primitives `color-gray-p' and `color-supported-p' also work for | ||
| 3973 | any frame type. | ||
| 3974 | |||
| 3975 | ** Platform-independent functions to describe display capabilities. | ||
| 3976 | |||
| 3977 | The new functions `display-mouse-p', `display-popup-menus-p', | ||
| 3978 | `display-graphic-p', `display-selections-p', `display-screens', | ||
| 3979 | `display-pixel-width', `display-pixel-height', `display-mm-width', | ||
| 3980 | `display-mm-height', `display-backing-store', `display-save-under', | ||
| 3981 | `display-planes', `display-color-cells', `display-visual-class', and | ||
| 3982 | `display-grayscale-p' describe the basic capabilities of a particular | ||
| 3983 | display. Lisp programs should call these functions instead of testing | ||
| 3984 | the value of the variables `window-system' or `system-type', or calling | ||
| 3985 | platform-specific functions such as `x-display-pixel-width'. | ||
| 3986 | |||
| 3987 | The new function `display-images-p' returns non-nil if a particular | ||
| 3988 | display can display image files. | ||
| 3989 | |||
| 3990 | ** The minibuffer prompt is now actually inserted in the minibuffer. | ||
| 3991 | |||
| 3992 | This makes it possible to scroll through the prompt, if you want to. | ||
| 3993 | To disallow this completely (like previous versions of emacs), customize | ||
| 3994 | the variable `minibuffer-prompt-properties', and turn on the | ||
| 3995 | `Inviolable' option. | ||
| 3996 | |||
| 3997 | The function `minibuffer-prompt-end' returns the current position of the | ||
| 3998 | end of the minibuffer prompt, if the minibuffer is current. | ||
| 3999 | Otherwise, it returns `(point-min)'. | ||
| 4000 | |||
| 4001 | ** New `field' abstraction in buffers. | ||
| 4002 | |||
| 4003 | There is now code to support an abstraction called `fields' in emacs | ||
| 4004 | buffers. A field is a contiguous region of text with the same `field' | ||
| 4005 | property (which can be a text property or an overlay). | ||
| 4006 | |||
| 4007 | Many emacs functions, such as forward-word, forward-sentence, | ||
| 4008 | forward-paragraph, beginning-of-line, etc., stop moving when they come | ||
| 4009 | to the boundary between fields; beginning-of-line and end-of-line will | ||
| 4010 | not let the point move past the field boundary, but other movement | ||
| 4011 | commands continue into the next field if repeated. Stopping at field | ||
| 4012 | boundaries can be suppressed programmatically by binding | ||
| 4013 | `inhibit-field-text-motion' to a non-nil value around calls to these | ||
| 4014 | functions. | ||
| 4015 | |||
| 4016 | Now that the minibuffer prompt is inserted into the minibuffer, it is in | ||
| 4017 | a separate field from the user-input part of the buffer, so that common | ||
| 4018 | editing commands treat the user's text separately from the prompt. | ||
| 4019 | |||
| 4020 | The following functions are defined for operating on fields: | ||
| 4021 | |||
| 4022 | - Function: constrain-to-field NEW-POS OLD-POS &optional ESCAPE-FROM-EDGE ONLY-IN-LINE INHIBIT-CAPTURE-PROPERTY | ||
| 4023 | |||
| 4024 | Return the position closest to NEW-POS that is in the same field as OLD-POS. | ||
| 4025 | |||
| 4026 | A field is a region of text with the same `field' property. | ||
| 4027 | If NEW-POS is nil, then the current point is used instead, and set to the | ||
| 4028 | constrained position if that is different. | ||
| 4029 | |||
| 4030 | If OLD-POS is at the boundary of two fields, then the allowable | ||
| 4031 | positions for NEW-POS depends on the value of the optional argument | ||
| 4032 | ESCAPE-FROM-EDGE: If ESCAPE-FROM-EDGE is nil, then NEW-POS is | ||
| 4033 | constrained to the field that has the same `field' char-property | ||
| 4034 | as any new characters inserted at OLD-POS, whereas if ESCAPE-FROM-EDGE | ||
| 4035 | is non-nil, NEW-POS is constrained to the union of the two adjacent | ||
| 4036 | fields. Additionally, if two fields are separated by another field with | ||
| 4037 | the special value `boundary', then any point within this special field is | ||
| 4038 | also considered to be `on the boundary'. | ||
| 4039 | |||
| 4040 | If the optional argument ONLY-IN-LINE is non-nil and constraining | ||
| 4041 | NEW-POS would move it to a different line, NEW-POS is returned | ||
| 4042 | unconstrained. This useful for commands that move by line, like | ||
| 4043 | C-n or C-a, which should generally respect field boundaries | ||
| 4044 | only in the case where they can still move to the right line. | ||
| 4045 | |||
| 4046 | If the optional argument INHIBIT-CAPTURE-PROPERTY is non-nil, and OLD-POS has | ||
| 4047 | a non-nil property of that name, then any field boundaries are ignored. | ||
| 4048 | |||
| 4049 | Field boundaries are not noticed if `inhibit-field-text-motion' is non-nil. | ||
| 4050 | |||
| 4051 | - Function: delete-field &optional POS | ||
| 4052 | |||
| 4053 | Delete the field surrounding POS. | ||
| 4054 | A field is a region of text with the same `field' property. | ||
| 4055 | If POS is nil, the value of point is used for POS. | ||
| 4056 | |||
| 4057 | - Function: field-beginning &optional POS ESCAPE-FROM-EDGE | ||
| 4058 | |||
| 4059 | Return the beginning of the field surrounding POS. | ||
| 4060 | A field is a region of text with the same `field' property. | ||
| 4061 | If POS is nil, the value of point is used for POS. | ||
| 4062 | If ESCAPE-FROM-EDGE is non-nil and POS is at the beginning of its | ||
| 4063 | field, then the beginning of the *previous* field is returned. | ||
| 4064 | |||
| 4065 | - Function: field-end &optional POS ESCAPE-FROM-EDGE | ||
| 4066 | |||
| 4067 | Return the end of the field surrounding POS. | ||
| 4068 | A field is a region of text with the same `field' property. | ||
| 4069 | If POS is nil, the value of point is used for POS. | ||
| 4070 | If ESCAPE-FROM-EDGE is non-nil and POS is at the end of its field, | ||
| 4071 | then the end of the *following* field is returned. | ||
| 4072 | |||
| 4073 | - Function: field-string &optional POS | ||
| 4074 | |||
| 4075 | Return the contents of the field surrounding POS as a string. | ||
| 4076 | A field is a region of text with the same `field' property. | ||
| 4077 | If POS is nil, the value of point is used for POS. | ||
| 4078 | |||
| 4079 | - Function: field-string-no-properties &optional POS | ||
| 4080 | |||
| 4081 | Return the contents of the field around POS, without text-properties. | ||
| 4082 | A field is a region of text with the same `field' property. | ||
| 4083 | If POS is nil, the value of point is used for POS. | ||
| 4084 | |||
| 4085 | ** Image support. | ||
| 4086 | |||
| 4087 | Emacs can now display images. Images are inserted into text by giving | ||
| 4088 | strings or buffer text a `display' text property containing one of | ||
| 4089 | (AREA IMAGE) or IMAGE. The display of the `display' property value | ||
| 4090 | replaces the display of the characters having that property. | ||
| 4091 | |||
| 4092 | If the property value has the form (AREA IMAGE), AREA must be one of | ||
| 4093 | `(margin left-margin)', `(margin right-margin)' or `(margin nil)'. If | ||
| 4094 | AREA is `(margin nil)', IMAGE will be displayed in the text area of a | ||
| 4095 | window, otherwise it will be displayed in the left or right marginal | ||
| 4096 | area. | ||
| 4097 | |||
| 4098 | IMAGE is an image specification. | ||
| 4099 | |||
| 4100 | *** Image specifications | ||
| 4101 | |||
| 4102 | Image specifications are lists of the form `(image PROPS)' where PROPS | ||
| 4103 | is a property list whose keys are keyword symbols. Each | ||
| 4104 | specifications must contain a property `:type TYPE' with TYPE being a | ||
| 4105 | symbol specifying the image type, e.g. `xbm'. Properties not | ||
| 4106 | described below are ignored. | ||
| 4107 | |||
| 4108 | The following is a list of properties all image types share. | ||
| 4109 | |||
| 4110 | `:ascent ASCENT' | ||
| 4111 | |||
| 4112 | ASCENT must be a number in the range 0..100, or the symbol `center'. | ||
| 4113 | If it is a number, it specifies the percentage of the image's height | ||
| 4114 | to use for its ascent. | ||
| 4115 | |||
| 4116 | If not specified, ASCENT defaults to the value 50 which means that the | ||
| 4117 | image will be centered with the base line of the row it appears in. | ||
| 4118 | |||
| 4119 | If ASCENT is `center' the image is vertically centered around a | ||
| 4120 | centerline which is the vertical center of text drawn at the position | ||
| 4121 | of the image, in the manner specified by the text properties and | ||
| 4122 | overlays that apply to the image. | ||
| 4123 | |||
| 4124 | `:margin MARGIN' | ||
| 4125 | |||
| 4126 | MARGIN must be either a number >= 0 specifying how many pixels to put | ||
| 4127 | as margin around the image, or a pair (X . Y) with X specifying the | ||
| 4128 | horizontal margin and Y specifying the vertical margin. Default is 0. | ||
| 4129 | |||
| 4130 | `:relief RELIEF' | ||
| 4131 | |||
| 4132 | RELIEF is analogous to the `:relief' attribute of faces. Puts a relief | ||
| 4133 | around an image. | ||
| 4134 | |||
| 4135 | `:conversion ALGO' | ||
| 4136 | |||
| 4137 | Apply an image algorithm to the image before displaying it. | ||
| 4138 | |||
| 4139 | ALGO `laplace' or `emboss' means apply a Laplace or ``emboss'' | ||
| 4140 | edge-detection algorithm to the image. | ||
| 4141 | |||
| 4142 | ALGO `(edge-detection :matrix MATRIX :color-adjust ADJUST)' means | ||
| 4143 | apply a general edge-detection algorithm. MATRIX must be either a | ||
| 4144 | nine-element list or a nine-element vector of numbers. A pixel at | ||
| 4145 | position x/y in the transformed image is computed from original pixels | ||
| 4146 | around that position. MATRIX specifies, for each pixel in the | ||
| 4147 | neighborhood of x/y, a factor with which that pixel will influence the | ||
| 4148 | transformed pixel; element 0 specifies the factor for the pixel at | ||
| 4149 | x-1/y-1, element 1 the factor for the pixel at x/y-1 etc. as shown | ||
| 4150 | below. | ||
| 4151 | |||
| 4152 | (x-1/y-1 x/y-1 x+1/y-1 | ||
| 4153 | x-1/y x/y x+1/y | ||
| 4154 | x-1/y+1 x/y+1 x+1/y+1) | ||
| 4155 | |||
| 4156 | The resulting pixel is computed from the color intensity of the color | ||
| 4157 | resulting from summing up the RGB values of surrounding pixels, | ||
| 4158 | multiplied by the specified factors, and dividing that sum by the sum | ||
| 4159 | of the factors' absolute values. | ||
| 4160 | |||
| 4161 | Laplace edge-detection currently uses a matrix of | ||
| 4162 | |||
| 4163 | (1 0 0 | ||
| 4164 | 0 0 0 | ||
| 4165 | 9 9 -1) | ||
| 4166 | |||
| 4167 | Emboss edge-detection uses a matrix of | ||
| 4168 | |||
| 4169 | ( 2 -1 0 | ||
| 4170 | -1 0 1 | ||
| 4171 | 0 1 -2) | ||
| 4172 | |||
| 4173 | ALGO `disabled' means transform the image so that it looks | ||
| 4174 | ``disabled''. | ||
| 4175 | |||
| 4176 | `:mask MASK' | ||
| 4177 | |||
| 4178 | If MASK is `heuristic' or `(heuristic BG)', build a clipping mask for | ||
| 4179 | the image, so that the background of a frame is visible behind the | ||
| 4180 | image. If BG is not specified, or if BG is t, determine the | ||
| 4181 | background color of the image by looking at the 4 corners of the | ||
| 4182 | image, assuming the most frequently occurring color from the corners is | ||
| 4183 | the background color of the image. Otherwise, BG must be a list `(RED | ||
| 4184 | GREEN BLUE)' specifying the color to assume for the background of the | ||
| 4185 | image. | ||
| 4186 | |||
| 4187 | If MASK is nil, remove a mask from the image, if it has one. Images | ||
| 4188 | in some formats include a mask which can be removed by specifying | ||
| 4189 | `:mask nil'. | ||
| 4190 | |||
| 4191 | `:file FILE' | ||
| 4192 | |||
| 4193 | Load image from FILE. If FILE is not absolute after expanding it, | ||
| 4194 | search for the image in `data-directory'. Some image types support | ||
| 4195 | building images from data. When this is done, no `:file' property | ||
| 4196 | may be present in the image specification. | ||
| 4197 | |||
| 4198 | `:data DATA' | ||
| 4199 | |||
| 4200 | Get image data from DATA. (As of this writing, this is not yet | ||
| 4201 | supported for image type `postscript'). Either :file or :data may be | ||
| 4202 | present in an image specification, but not both. All image types | ||
| 4203 | support strings as DATA, some types allow additional types of DATA. | ||
| 4204 | |||
| 4205 | *** Supported image types | ||
| 4206 | |||
| 4207 | **** XBM, image type `xbm'. | ||
| 4208 | |||
| 4209 | XBM images don't require an external library. Additional image | ||
| 4210 | properties supported are: | ||
| 4211 | |||
| 4212 | `:foreground FG' | ||
| 4213 | |||
| 4214 | FG must be a string specifying the image foreground color, or nil | ||
| 4215 | meaning to use the default. Default is the frame's foreground color. | ||
| 4216 | |||
| 4217 | `:background BG' | ||
| 4218 | |||
| 4219 | BG must be a string specifying the image background color, or nil | ||
| 4220 | meaning to use the default. Default is the frame's background color. | ||
| 4221 | |||
| 4222 | XBM images can be constructed from data instead of file. In this | ||
| 4223 | case, the image specification must contain the following properties | ||
| 4224 | instead of a `:file' property. | ||
| 4225 | |||
| 4226 | `:width WIDTH' | ||
| 4227 | |||
| 4228 | WIDTH specifies the width of the image in pixels. | ||
| 4229 | |||
| 4230 | `:height HEIGHT' | ||
| 4231 | |||
| 4232 | HEIGHT specifies the height of the image in pixels. | ||
| 4233 | |||
| 4234 | `:data DATA' | ||
| 4235 | |||
| 4236 | DATA must be either | ||
| 4237 | |||
| 4238 | 1. a string large enough to hold the bitmap data, i.e. it must | ||
| 4239 | have a size >= (WIDTH + 7) / 8 * HEIGHT | ||
| 4240 | |||
| 4241 | 2. a bool-vector of size >= WIDTH * HEIGHT | ||
| 4242 | |||
| 4243 | 3. a vector of strings or bool-vectors, one for each line of the | ||
| 4244 | bitmap. | ||
| 4245 | |||
| 4246 | 4. a string that's an in-memory XBM file. Neither width nor | ||
| 4247 | height may be specified in this case because these are defined | ||
| 4248 | in the file. | ||
| 4249 | |||
| 4250 | **** XPM, image type `xpm' | ||
| 4251 | |||
| 4252 | XPM images require the external library `libXpm', package | ||
| 4253 | `xpm-3.4k.tar.gz', version 3.4k or later. Make sure the library is | ||
| 4254 | found when Emacs is configured by supplying appropriate paths via | ||
| 4255 | `--x-includes' and `--x-libraries'. | ||
| 4256 | |||
| 4257 | Additional image properties supported are: | ||
| 4258 | |||
| 4259 | `:color-symbols SYMBOLS' | ||
| 4260 | |||
| 4261 | SYMBOLS must be a list of pairs (NAME . COLOR), with NAME being the | ||
| 4262 | name of color as it appears in an XPM file, and COLOR being an X color | ||
| 4263 | name. | ||
| 4264 | |||
| 4265 | XPM images can be built from memory instead of files. In that case, | ||
| 4266 | add a `:data' property instead of a `:file' property. | ||
| 4267 | |||
| 4268 | The XPM library uses libz in its implementation so that it is able | ||
| 4269 | to display compressed images. | ||
| 4270 | |||
| 4271 | **** PBM, image type `pbm' | ||
| 4272 | |||
| 4273 | PBM images don't require an external library. Color, gray-scale and | ||
| 4274 | mono images are supported. Additional image properties supported for | ||
| 4275 | mono images are: | ||
| 4276 | |||
| 4277 | `:foreground FG' | ||
| 4278 | |||
| 4279 | FG must be a string specifying the image foreground color, or nil | ||
| 4280 | meaning to use the default. Default is the frame's foreground color. | ||
| 4281 | |||
| 4282 | `:background FG' | ||
| 4283 | |||
| 4284 | BG must be a string specifying the image background color, or nil | ||
| 4285 | meaning to use the default. Default is the frame's background color. | ||
| 4286 | |||
| 4287 | **** JPEG, image type `jpeg' | ||
| 4288 | |||
| 4289 | Support for JPEG images requires the external library `libjpeg', | ||
| 4290 | package `jpegsrc.v6a.tar.gz', or later. There are no additional image | ||
| 4291 | properties defined. | ||
| 4292 | |||
| 4293 | **** TIFF, image type `tiff' | ||
| 4294 | |||
| 4295 | Support for TIFF images requires the external library `libtiff', | ||
| 4296 | package `tiff-v3.4-tar.gz', or later. There are no additional image | ||
| 4297 | properties defined. | ||
| 4298 | |||
| 4299 | **** GIF, image type `gif' | ||
| 4300 | |||
| 4301 | Support for GIF images requires the external library `libungif', package | ||
| 4302 | `libungif-4.1.0', or later. | ||
| 4303 | |||
| 4304 | Additional image properties supported are: | ||
| 4305 | |||
| 4306 | `:index INDEX' | ||
| 4307 | |||
| 4308 | INDEX must be an integer >= 0. Load image number INDEX from a | ||
| 4309 | multi-image GIF file. If INDEX is too large, the image displays | ||
| 4310 | as a hollow box. | ||
| 4311 | |||
| 4312 | This could be used to implement limited support for animated GIFs. | ||
| 4313 | For example, the following function displays a multi-image GIF file | ||
| 4314 | at point-min in the current buffer, switching between sub-images | ||
| 4315 | every 0.1 seconds. | ||
| 4316 | |||
| 4317 | (defun show-anim (file max) | ||
| 4318 | "Display multi-image GIF file FILE which contains MAX subimages." | ||
| 4319 | (display-anim (current-buffer) file 0 max t)) | ||
| 4320 | |||
| 4321 | (defun display-anim (buffer file idx max first-time) | ||
| 4322 | (when (= idx max) | ||
| 4323 | (setq idx 0)) | ||
| 4324 | (let ((img (create-image file nil nil :index idx))) | ||
| 4325 | (save-excursion | ||
| 4326 | (set-buffer buffer) | ||
| 4327 | (goto-char (point-min)) | ||
| 4328 | (unless first-time (delete-char 1)) | ||
| 4329 | (insert-image img "x")) | ||
| 4330 | (run-with-timer 0.1 nil 'display-anim buffer file (1+ idx) max nil))) | ||
| 4331 | |||
| 4332 | **** PNG, image type `png' | ||
| 4333 | |||
| 4334 | Support for PNG images requires the external library `libpng', | ||
| 4335 | package `libpng-1.0.2.tar.gz', or later. There are no additional image | ||
| 4336 | properties defined. | ||
| 4337 | |||
| 4338 | **** Ghostscript, image type `postscript'. | ||
| 4339 | |||
| 4340 | Additional image properties supported are: | ||
| 4341 | |||
| 4342 | `:pt-width WIDTH' | ||
| 4343 | |||
| 4344 | WIDTH is width of the image in pt (1/72 inch). WIDTH must be an | ||
| 4345 | integer. This is a required property. | ||
| 4346 | |||
| 4347 | `:pt-height HEIGHT' | ||
| 4348 | |||
| 4349 | HEIGHT specifies the height of the image in pt (1/72 inch). HEIGHT | ||
| 4350 | must be a integer. This is an required property. | ||
| 4351 | |||
| 4352 | `:bounding-box BOX' | ||
| 4353 | |||
| 4354 | BOX must be a list or vector of 4 integers giving the bounding box of | ||
| 4355 | the PS image, analogous to the `BoundingBox' comment found in PS | ||
| 4356 | files. This is an required property. | ||
| 4357 | |||
| 4358 | Part of the Ghostscript interface is implemented in Lisp. See | ||
| 4359 | lisp/gs.el. | ||
| 4360 | |||
| 4361 | *** Lisp interface. | ||
| 4362 | |||
| 4363 | The variable `image-types' contains a list of those image types | ||
| 4364 | which are supported in the current configuration. | ||
| 4365 | |||
| 4366 | Images are stored in an image cache and removed from the cache when | ||
| 4367 | they haven't been displayed for `image-cache-eviction-delay seconds. | ||
| 4368 | The function `clear-image-cache' can be used to clear the image cache | ||
| 4369 | manually. Images in the cache are compared with `equal', i.e. all | ||
| 4370 | images with `equal' specifications share the same image. | ||
| 4371 | |||
| 4372 | *** Simplified image API, image.el | ||
| 4373 | |||
| 4374 | The new Lisp package image.el contains functions that simplify image | ||
| 4375 | creation and putting images into text. The function `create-image' | ||
| 4376 | can be used to create images. The macro `defimage' can be used to | ||
| 4377 | define an image based on available image types. The functions | ||
| 4378 | `put-image' and `insert-image' can be used to insert an image into a | ||
| 4379 | buffer. | ||
| 4380 | |||
| 4381 | ** Display margins. | ||
| 4382 | |||
| 4383 | Windows can now have margins which are used for special text | ||
| 4384 | and images. | ||
| 4385 | |||
| 4386 | To give a window margins, either set the buffer-local variables | ||
| 4387 | `left-margin-width' and `right-margin-width', or call | ||
| 4388 | `set-window-margins'. The function `window-margins' can be used to | ||
| 4389 | obtain the current settings. To make `left-margin-width' and | ||
| 4390 | `right-margin-width' take effect, you must set them before displaying | ||
| 4391 | the buffer in a window, or use `set-window-buffer' to force an update | ||
| 4392 | of the display margins. | ||
| 4393 | |||
| 4394 | You can put text in margins by giving it a `display' text property | ||
| 4395 | containing a pair of the form `(LOCATION . VALUE)', where LOCATION is | ||
| 4396 | one of `left-margin' or `right-margin' or nil. VALUE can be either a | ||
| 4397 | string, an image specification or a stretch specification (see later | ||
| 4398 | in this file). | ||
| 4399 | |||
| 4400 | ** Help display | ||
| 4401 | |||
| 4402 | Emacs displays short help messages in the echo area, when the mouse | ||
| 4403 | moves over a tool-bar item or a piece of text that has a text property | ||
| 4404 | `help-echo'. This feature also applies to strings in the mode line | ||
| 4405 | that have a `help-echo' property. | ||
| 4406 | |||
| 4407 | If the value of the `help-echo' property is a function, that function | ||
| 4408 | is called with three arguments WINDOW, OBJECT and POSITION. WINDOW is | ||
| 4409 | the window in which the help was found. | ||
| 4410 | |||
| 4411 | If OBJECT is a buffer, POS is the position in the buffer where the | ||
| 4412 | `help-echo' text property was found. | ||
| 4413 | |||
| 4414 | If OBJECT is an overlay, that overlay has a `help-echo' property, and | ||
| 4415 | POS is the position in the overlay's buffer under the mouse. | ||
| 4416 | |||
| 4417 | If OBJECT is a string (an overlay string or a string displayed with | ||
| 4418 | the `display' property), POS is the position in that string under the | ||
| 4419 | mouse. | ||
| 4420 | |||
| 4421 | If the value of the `help-echo' property is neither a function nor a | ||
| 4422 | string, it is evaluated to obtain a help string. | ||
| 4423 | |||
| 4424 | For tool-bar and menu-bar items, their key definition is used to | ||
| 4425 | determine the help to display. If their definition contains a | ||
| 4426 | property `:help FORM', FORM is evaluated to determine the help string. | ||
| 4427 | For tool-bar items without a help form, the caption of the item is | ||
| 4428 | used as help string. | ||
| 4429 | |||
| 4430 | The hook `show-help-function' can be set to a function that displays | ||
| 4431 | the help string differently. For example, enabling a tooltip window | ||
| 4432 | causes the help display to appear there instead of in the echo area. | ||
| 4433 | |||
| 4434 | ** Vertical fractional scrolling. | ||
| 4435 | |||
| 4436 | The display of text in windows can be scrolled smoothly in pixels. | ||
| 4437 | This is useful, for example, for making parts of large images visible. | ||
| 4438 | |||
| 4439 | The function `window-vscroll' returns the current value of vertical | ||
| 4440 | scrolling, a non-negative fraction of the canonical character height. | ||
| 4441 | The function `set-window-vscroll' can be used to set the vertical | ||
| 4442 | scrolling value. Here is an example of how these function might be | ||
| 4443 | used. | ||
| 4444 | |||
| 4445 | (global-set-key [A-down] | ||
| 4446 | #'(lambda () | ||
| 4447 | (interactive) | ||
| 4448 | (set-window-vscroll (selected-window) | ||
| 4449 | (+ 0.5 (window-vscroll))))) | ||
| 4450 | (global-set-key [A-up] | ||
| 4451 | #'(lambda () | ||
| 4452 | (interactive) | ||
| 4453 | (set-window-vscroll (selected-window) | ||
| 4454 | (- (window-vscroll) 0.5))))) | ||
| 4455 | |||
| 4456 | ** New hook `fontification-functions'. | ||
| 4457 | |||
| 4458 | Functions from `fontification-functions' are called from redisplay | ||
| 4459 | when it encounters a region of text that is not yet fontified. This | ||
| 4460 | variable automatically becomes buffer-local when set. Each function | ||
| 4461 | is called with one argument, POS. | ||
| 4462 | |||
| 4463 | At least one of the hook functions should fontify one or more | ||
| 4464 | characters starting at POS in the current buffer. It should mark them | ||
| 4465 | as fontified by giving them a non-nil value of the `fontified' text | ||
| 4466 | property. It may be reasonable for these functions to check for the | ||
| 4467 | `fontified' property and not put it back on, but they do not have to. | ||
| 4468 | |||
| 4469 | ** Tool bar support. | ||
| 4470 | |||
| 4471 | Emacs supports a tool bar at the top of a frame under X. The frame | ||
| 4472 | parameter `tool-bar-lines' (X resource "toolBar", class "ToolBar") | ||
| 4473 | controls how may lines to reserve for the tool bar. A zero value | ||
| 4474 | suppresses the tool bar. If the value is non-zero and | ||
| 4475 | `auto-resize-tool-bars' is non-nil the tool bar's size will be changed | ||
| 4476 | automatically so that all tool bar items are visible. | ||
| 4477 | |||
| 4478 | *** Tool bar item definitions | ||
| 4479 | |||
| 4480 | Tool bar items are defined using `define-key' with a prefix-key | ||
| 4481 | `tool-bar'. For example `(define-key global-map [tool-bar item1] ITEM)' | ||
| 4482 | where ITEM is a list `(menu-item CAPTION BINDING PROPS...)'. | ||
| 4483 | |||
| 4484 | CAPTION is the caption of the item, If it's not a string, it is | ||
| 4485 | evaluated to get a string. The caption is currently not displayed in | ||
| 4486 | the tool bar, but it is displayed if the item doesn't have a `:help' | ||
| 4487 | property (see below). | ||
| 4488 | |||
| 4489 | BINDING is the tool bar item's binding. Tool bar items with keymaps as | ||
| 4490 | binding are currently ignored. | ||
| 4491 | |||
| 4492 | The following properties are recognized: | ||
| 4493 | |||
| 4494 | `:enable FORM'. | ||
| 4495 | |||
| 4496 | FORM is evaluated and specifies whether the tool bar item is enabled | ||
| 4497 | or disabled. | ||
| 4498 | |||
| 4499 | `:visible FORM' | ||
| 4500 | |||
| 4501 | FORM is evaluated and specifies whether the tool bar item is displayed. | ||
| 4502 | |||
| 4503 | `:filter FUNCTION' | ||
| 4504 | |||
| 4505 | FUNCTION is called with one parameter, the same list BINDING in which | ||
| 4506 | FUNCTION is specified as the filter. The value FUNCTION returns is | ||
| 4507 | used instead of BINDING to display this item. | ||
| 4508 | |||
| 4509 | `:button (TYPE SELECTED)' | ||
| 4510 | |||
| 4511 | TYPE must be one of `:radio' or `:toggle'. SELECTED is evaluated | ||
| 4512 | and specifies whether the button is selected (pressed) or not. | ||
| 4513 | |||
| 4514 | `:image IMAGES' | ||
| 4515 | |||
| 4516 | IMAGES is either a single image specification or a vector of four | ||
| 4517 | image specifications. If it is a vector, this table lists the | ||
| 4518 | meaning of each of the four elements: | ||
| 4519 | |||
| 4520 | Index Use when item is | ||
| 4521 | ---------------------------------------- | ||
| 4522 | 0 enabled and selected | ||
| 4523 | 1 enabled and deselected | ||
| 4524 | 2 disabled and selected | ||
| 4525 | 3 disabled and deselected | ||
| 4526 | |||
| 4527 | If IMAGE is a single image specification, a Laplace edge-detection | ||
| 4528 | algorithm is used on that image to draw the image in disabled state. | ||
| 4529 | |||
| 4530 | `:help HELP-STRING'. | ||
| 4531 | |||
| 4532 | Gives a help string to display for the tool bar item. This help | ||
| 4533 | is displayed when the mouse is moved over the item. | ||
| 4534 | |||
| 4535 | The function `toolbar-add-item' is a convenience function for adding | ||
| 4536 | toolbar items generally, and `tool-bar-add-item-from-menu' can be used | ||
| 4537 | to define a toolbar item with a binding copied from an item on the | ||
| 4538 | menu bar. | ||
| 4539 | |||
| 4540 | The default bindings use a menu-item :filter to derive the tool-bar | ||
| 4541 | dynamically from variable `tool-bar-map' which may be set | ||
| 4542 | buffer-locally to override the global map. | ||
| 4543 | |||
| 4544 | *** Tool-bar-related variables. | ||
| 4545 | |||
| 4546 | If `auto-resize-tool-bar' is non-nil, the tool bar will automatically | ||
| 4547 | resize to show all defined tool bar items. It will never grow larger | ||
| 4548 | than 1/4 of the frame's size. | ||
| 4549 | |||
| 4550 | If `auto-raise-tool-bar-buttons' is non-nil, tool bar buttons will be | ||
| 4551 | raised when the mouse moves over them. | ||
| 4552 | |||
| 4553 | You can add extra space between tool bar items by setting | ||
| 4554 | `tool-bar-button-margin' to a positive integer specifying a number of | ||
| 4555 | pixels, or a pair of integers (X . Y) specifying horizontal and | ||
| 4556 | vertical margins . Default is 1. | ||
| 4557 | |||
| 4558 | You can change the shadow thickness of tool bar buttons by setting | ||
| 4559 | `tool-bar-button-relief' to an integer. Default is 3. | ||
| 4560 | |||
| 4561 | *** Tool-bar clicks with modifiers. | ||
| 4562 | |||
| 4563 | You can bind commands to clicks with control, shift, meta etc. on | ||
| 4564 | a tool bar item. If | ||
| 4565 | |||
| 4566 | (define-key global-map [tool-bar shell] | ||
| 4567 | '(menu-item "Shell" shell | ||
| 4568 | :image (image :type xpm :file "shell.xpm"))) | ||
| 4569 | |||
| 4570 | is the original tool bar item definition, then | ||
| 4571 | |||
| 4572 | (define-key global-map [tool-bar S-shell] 'some-command) | ||
| 4573 | |||
| 4574 | makes a binding to run `some-command' for a shifted click on the same | ||
| 4575 | item. | ||
| 4576 | |||
| 4577 | ** Mode line changes. | ||
| 4578 | |||
| 4579 | *** Mouse-sensitive mode line. | ||
| 4580 | |||
| 4581 | The mode line can be made mouse-sensitive by displaying strings there | ||
| 4582 | that have a `local-map' text property. There are three ways to display | ||
| 4583 | a string with a `local-map' property in the mode line. | ||
| 4584 | |||
| 4585 | 1. The mode line spec contains a variable whose string value has | ||
| 4586 | a `local-map' text property. | ||
| 4587 | |||
| 4588 | 2. The mode line spec contains a format specifier (e.g. `%12b'), and | ||
| 4589 | that format specifier has a `local-map' property. | ||
| 4590 | |||
| 4591 | 3. The mode line spec contains a list containing `:eval FORM'. FORM | ||
| 4592 | is evaluated. If the result is a string, and that string has a | ||
| 4593 | `local-map' property. | ||
| 4594 | |||
| 4595 | The same mechanism is used to determine the `face' and `help-echo' | ||
| 4596 | properties of strings in the mode line. See `bindings.el' for an | ||
| 4597 | example. | ||
| 4598 | |||
| 4599 | *** If a mode line element has the form `(:eval FORM)', FORM is | ||
| 4600 | evaluated and the result is used as mode line element. | ||
| 4601 | |||
| 4602 | *** You can suppress mode-line display by setting the buffer-local | ||
| 4603 | variable mode-line-format to nil. | ||
| 4604 | |||
| 4605 | *** A headerline can now be displayed at the top of a window. | ||
| 4606 | |||
| 4607 | This mode line's contents are controlled by the new variable | ||
| 4608 | `header-line-format' and `default-header-line-format' which are | ||
| 4609 | completely analogous to `mode-line-format' and | ||
| 4610 | `default-mode-line-format'. A value of nil means don't display a top | ||
| 4611 | line. | ||
| 4612 | |||
| 4613 | The appearance of top mode lines is controlled by the face | ||
| 4614 | `header-line'. | ||
| 4615 | |||
| 4616 | The function `coordinates-in-window-p' returns `header-line' for a | ||
| 4617 | position in the header-line. | ||
| 4618 | |||
| 4619 | ** Text property `display' | ||
| 4620 | |||
| 4621 | The `display' text property is used to insert images into text, | ||
| 4622 | replace text with other text, display text in marginal area, and it is | ||
| 4623 | also used to control other aspects of how text displays. The value of | ||
| 4624 | the `display' property should be a display specification, as described | ||
| 4625 | below, or a list or vector containing display specifications. | ||
| 4626 | |||
| 4627 | *** Replacing text, displaying text in marginal areas | ||
| 4628 | |||
| 4629 | To replace the text having the `display' property with some other | ||
| 4630 | text, use a display specification of the form `(LOCATION STRING)'. | ||
| 4631 | |||
| 4632 | If LOCATION is `(margin left-margin)', STRING is displayed in the left | ||
| 4633 | marginal area, if it is `(margin right-margin)', it is displayed in | ||
| 4634 | the right marginal area, and if LOCATION is `(margin nil)' STRING | ||
| 4635 | is displayed in the text. In the latter case you can also use the | ||
| 4636 | simpler form STRING as property value. | ||
| 4637 | |||
| 4638 | *** Variable width and height spaces | ||
| 4639 | |||
| 4640 | To display a space of fractional width or height, use a display | ||
| 4641 | specification of the form `(LOCATION STRECH)'. If LOCATION is | ||
| 4642 | `(margin left-margin)', the space is displayed in the left marginal | ||
| 4643 | area, if it is `(margin right-margin)', it is displayed in the right | ||
| 4644 | marginal area, and if LOCATION is `(margin nil)' the space is | ||
| 4645 | displayed in the text. In the latter case you can also use the | ||
| 4646 | simpler form STRETCH as property value. | ||
| 4647 | |||
| 4648 | The stretch specification STRETCH itself is a list of the form `(space | ||
| 4649 | PROPS)', where PROPS is a property list which can contain the | ||
| 4650 | properties described below. | ||
| 4651 | |||
| 4652 | The display of the fractional space replaces the display of the | ||
| 4653 | characters having the `display' property. | ||
| 4654 | |||
| 4655 | - :width WIDTH | ||
| 4656 | |||
| 4657 | Specifies that the space width should be WIDTH times the normal | ||
| 4658 | character width. WIDTH can be an integer or floating point number. | ||
| 4659 | |||
| 4660 | - :relative-width FACTOR | ||
| 4661 | |||
| 4662 | Specifies that the width of the stretch should be computed from the | ||
| 4663 | first character in a group of consecutive characters that have the | ||
| 4664 | same `display' property. The computation is done by multiplying the | ||
| 4665 | width of that character by FACTOR. | ||
| 4666 | |||
| 4667 | - :align-to HPOS | ||
| 4668 | |||
| 4669 | Specifies that the space should be wide enough to reach HPOS. The | ||
| 4670 | value HPOS is measured in units of the normal character width. | ||
| 4671 | |||
| 4672 | Exactly one of the above properties should be used. | ||
| 4673 | |||
| 4674 | - :height HEIGHT | ||
| 4675 | |||
| 4676 | Specifies the height of the space, as HEIGHT, measured in terms of the | ||
| 4677 | normal line height. | ||
| 4678 | |||
| 4679 | - :relative-height FACTOR | ||
| 4680 | |||
| 4681 | The height of the space is computed as the product of the height | ||
| 4682 | of the text having the `display' property and FACTOR. | ||
| 4683 | |||
| 4684 | - :ascent ASCENT | ||
| 4685 | |||
| 4686 | Specifies that ASCENT percent of the height of the stretch should be | ||
| 4687 | used for the ascent of the stretch, i.e. for the part above the | ||
| 4688 | baseline. The value of ASCENT must be a non-negative number less or | ||
| 4689 | equal to 100. | ||
| 4690 | |||
| 4691 | You should not use both `:height' and `:relative-height' together. | ||
| 4692 | |||
| 4693 | *** Images | ||
| 4694 | |||
| 4695 | A display specification for an image has the form `(LOCATION | ||
| 4696 | . IMAGE)', where IMAGE is an image specification. The image replaces, | ||
| 4697 | in the display, the characters having this display specification in | ||
| 4698 | their `display' text property. If LOCATION is `(margin left-margin)', | ||
| 4699 | the image will be displayed in the left marginal area, if it is | ||
| 4700 | `(margin right-margin)' it will be displayed in the right marginal | ||
| 4701 | area, and if LOCATION is `(margin nil)' the image will be displayed in | ||
| 4702 | the text. In the latter case you can also use the simpler form IMAGE | ||
| 4703 | as display specification. | ||
| 4704 | |||
| 4705 | *** Other display properties | ||
| 4706 | |||
| 4707 | - (space-width FACTOR) | ||
| 4708 | |||
| 4709 | Specifies that space characters in the text having that property | ||
| 4710 | should be displayed FACTOR times as wide as normal; FACTOR must be an | ||
| 4711 | integer or float. | ||
| 4712 | |||
| 4713 | - (height HEIGHT) | ||
| 4714 | |||
| 4715 | Display text having this property in a font that is smaller or larger. | ||
| 4716 | |||
| 4717 | If HEIGHT is a list of the form `(+ N)', where N is an integer, that | ||
| 4718 | means to use a font that is N steps larger. If HEIGHT is a list of | ||
| 4719 | the form `(- N)', that means to use a font that is N steps smaller. A | ||
| 4720 | ``step'' is defined by the set of available fonts; each size for which | ||
| 4721 | a font is available counts as a step. | ||
| 4722 | |||
| 4723 | If HEIGHT is a number, that means to use a font that is HEIGHT times | ||
| 4724 | as tall as the frame's default font. | ||
| 4725 | |||
| 4726 | If HEIGHT is a symbol, it is called as a function with the current | ||
| 4727 | height as argument. The function should return the new height to use. | ||
| 4728 | |||
| 4729 | Otherwise, HEIGHT is evaluated to get the new height, with the symbol | ||
| 4730 | `height' bound to the current specified font height. | ||
| 4731 | |||
| 4732 | - (raise FACTOR) | ||
| 4733 | |||
| 4734 | FACTOR must be a number, specifying a multiple of the current | ||
| 4735 | font's height. If it is positive, that means to display the characters | ||
| 4736 | raised. If it is negative, that means to display them lower down. The | ||
| 4737 | amount of raising or lowering is computed without taking account of the | ||
| 4738 | `height' subproperty. | ||
| 4739 | |||
| 4740 | *** Conditional display properties | ||
| 4741 | |||
| 4742 | All display specifications can be conditionalized. If a specification | ||
| 4743 | has the form `(when CONDITION . SPEC)', the specification SPEC applies | ||
| 4744 | only when CONDITION yields a non-nil value when evaluated. During the | ||
| 4745 | evaluation, `object' is bound to the string or buffer having the | ||
| 4746 | conditional display property; `position' and `buffer-position' are | ||
| 4747 | bound to the position within `object' and the buffer position where | ||
| 4748 | the display property was found, respectively. Both positions can be | ||
| 4749 | different when object is a string. | ||
| 4750 | |||
| 4751 | The normal specification consisting of SPEC only is equivalent to | ||
| 4752 | `(when t . SPEC)'. | ||
| 4753 | |||
| 4754 | ** New menu separator types. | ||
| 4755 | |||
| 4756 | Emacs now supports more than one menu separator type. Menu items with | ||
| 4757 | item names consisting of dashes only (including zero dashes) are | ||
| 4758 | treated like before. In addition, the following item names are used | ||
| 4759 | to specify other menu separator types. | ||
| 4760 | |||
| 4761 | - `--no-line' or `--space', or `--:space', or `--:noLine' | ||
| 4762 | |||
| 4763 | No separator lines are drawn, but a small space is inserted where the | ||
| 4764 | separator occurs. | ||
| 4765 | |||
| 4766 | - `--single-line' or `--:singleLine' | ||
| 4767 | |||
| 4768 | A single line in the menu's foreground color. | ||
| 4769 | |||
| 4770 | - `--double-line' or `--:doubleLine' | ||
| 4771 | |||
| 4772 | A double line in the menu's foreground color. | ||
| 4773 | |||
| 4774 | - `--single-dashed-line' or `--:singleDashedLine' | ||
| 4775 | |||
| 4776 | A single dashed line in the menu's foreground color. | ||
| 4777 | |||
| 4778 | - `--double-dashed-line' or `--:doubleDashedLine' | ||
| 4779 | |||
| 4780 | A double dashed line in the menu's foreground color. | ||
| 4781 | |||
| 4782 | - `--shadow-etched-in' or `--:shadowEtchedIn' | ||
| 4783 | |||
| 4784 | A single line with 3D sunken appearance. This is the form | ||
| 4785 | displayed for item names consisting of dashes only. | ||
| 4786 | |||
| 4787 | - `--shadow-etched-out' or `--:shadowEtchedOut' | ||
| 4788 | |||
| 4789 | A single line with 3D raised appearance. | ||
| 4790 | |||
| 4791 | - `--shadow-etched-in-dash' or `--:shadowEtchedInDash' | ||
| 4792 | |||
| 4793 | A single dashed line with 3D sunken appearance. | ||
| 4794 | |||
| 4795 | - `--shadow-etched-out-dash' or `--:shadowEtchedOutDash' | ||
| 4796 | |||
| 4797 | A single dashed line with 3D raise appearance. | ||
| 4798 | |||
| 4799 | - `--shadow-double-etched-in' or `--:shadowDoubleEtchedIn' | ||
| 4800 | |||
| 4801 | Two lines with 3D sunken appearance. | ||
| 4802 | |||
| 4803 | - `--shadow-double-etched-out' or `--:shadowDoubleEtchedOut' | ||
| 4804 | |||
| 4805 | Two lines with 3D raised appearance. | ||
| 4806 | |||
| 4807 | - `--shadow-double-etched-in-dash' or `--:shadowDoubleEtchedInDash' | ||
| 4808 | |||
| 4809 | Two dashed lines with 3D sunken appearance. | ||
| 4810 | |||
| 4811 | - `--shadow-double-etched-out-dash' or `--:shadowDoubleEtchedOutDash' | ||
| 4812 | |||
| 4813 | Two dashed lines with 3D raised appearance. | ||
| 4814 | |||
| 4815 | Under LessTif/Motif, the last four separator types are displayed like | ||
| 4816 | the corresponding single-line separators. | ||
| 4817 | |||
| 4818 | ** New frame parameters for scroll bar colors. | ||
| 4819 | |||
| 4820 | The new frame parameters `scroll-bar-foreground' and | ||
| 4821 | `scroll-bar-background' can be used to change scroll bar colors. | ||
| 4822 | Their value must be either a color name, a string, or nil to specify | ||
| 4823 | that scroll bars should use a default color. For toolkit scroll bars, | ||
| 4824 | default colors are toolkit specific. For non-toolkit scroll bars, the | ||
| 4825 | default background is the background color of the frame, and the | ||
| 4826 | default foreground is black. | ||
| 4827 | |||
| 4828 | The X resource name of these parameters are `scrollBarForeground' | ||
| 4829 | (class ScrollBarForeground) and `scrollBarBackground' (class | ||
| 4830 | `ScrollBarBackground'). | ||
| 4831 | |||
| 4832 | Setting these parameters overrides toolkit specific X resource | ||
| 4833 | settings for scroll bar colors. | ||
| 4834 | |||
| 4835 | ** You can set `redisplay-dont-pause' to a non-nil value to prevent | ||
| 4836 | display updates from being interrupted when input is pending. | ||
| 4837 | |||
| 4838 | ** Changing a window's width may now change its window start if it | ||
| 4839 | starts on a continuation line. The new window start is computed based | ||
| 4840 | on the window's new width, starting from the start of the continued | ||
| 4841 | line as the start of the screen line with the minimum distance from | ||
| 4842 | the original window start. | ||
| 4843 | |||
| 4844 | ** The variable `hscroll-step' and the functions | ||
| 4845 | `hscroll-point-visible' and `hscroll-window-column' have been removed | ||
| 4846 | now that proper horizontal scrolling is implemented. | ||
| 4847 | |||
| 4848 | ** Windows can now be made fixed-width and/or fixed-height. | ||
| 4849 | |||
| 4850 | A window is fixed-size if its buffer has a buffer-local variable | ||
| 4851 | `window-size-fixed' whose value is not nil. A value of `height' makes | ||
| 4852 | windows fixed-height, a value of `width' makes them fixed-width, any | ||
| 4853 | other non-nil value makes them both fixed-width and fixed-height. | ||
| 4854 | |||
| 4855 | The following code makes all windows displaying the current buffer | ||
| 4856 | fixed-width and fixed-height. | ||
| 4857 | |||
| 4858 | (set (make-local-variable 'window-size-fixed) t) | ||
| 4859 | |||
| 4860 | A call to enlarge-window on a window gives an error if that window is | ||
| 4861 | fixed-width and it is tried to change the window's width, or if the | ||
| 4862 | window is fixed-height, and it is tried to change its height. To | ||
| 4863 | change the size of a fixed-size window, bind `window-size-fixed' | ||
| 4864 | temporarily to nil, for example | ||
| 4865 | |||
| 4866 | (let ((window-size-fixed nil)) | ||
| 4867 | (enlarge-window 10)) | ||
| 4868 | |||
| 4869 | Likewise, an attempt to split a fixed-height window vertically, | ||
| 4870 | or a fixed-width window horizontally results in a error. | ||
| 4871 | |||
| 4872 | ** The cursor-type frame parameter is now supported on MS-DOS | ||
| 4873 | terminals. When Emacs starts, it by default changes the cursor shape | ||
| 4874 | to a solid box, as it does on Unix. The `cursor-type' frame parameter | ||
| 4875 | overrides this as it does on Unix, except that the bar cursor is | ||
| 4876 | horizontal rather than vertical (since the MS-DOS display doesn't | ||
| 4877 | support a vertical-bar cursor). | ||
| 4878 | |||
| 4879 | |||
| 4880 | |||
| 4881 | ---------------------------------------------------------------------- | ||
| 4882 | Copyright information: | ||
| 4883 | |||
| 4884 | Copyright (C) 2000, 2001, 2002, 2003, 2006 | ||
| 4885 | Free Software Foundation, Inc. | ||
| 4886 | |||
| 4887 | Permission is granted to anyone to make or distribute verbatim copies | ||
| 4888 | of this document as received, in any medium, provided that the | ||
| 4889 | copyright notice and this permission notice are preserved, | ||
| 4890 | thus giving the recipient permission to redistribute in turn. | ||
| 4891 | |||
| 4892 | Permission is granted to distribute modified versions | ||
| 4893 | of this document, or of portions of it, | ||
| 4894 | under the above conditions, provided also that they | ||
| 4895 | carry prominent notices stating who last changed them. | ||
| 4896 | |||
| 4897 | Local variables: | ||
| 4898 | mode: outline | ||
| 4899 | paragraph-separate: "[ ]*$" | ||
| 4900 | end: | ||
diff --git a/etc/ONEWS.1 b/etc/ONEWS.1 deleted file mode 100644 index 4f75a7bc6e0..00000000000 --- a/etc/ONEWS.1 +++ /dev/null | |||
| @@ -1,1167 +0,0 @@ | |||
| 1 | Old GNU Emacs NEWS -- history of user-visible changes thru version 15. | ||
| 2 | Copyright (C) 1985 Richard M. Stallman. | ||
| 3 | See the end for copying conditions. | ||
| 4 | |||
| 5 | Changes in Emacs 15 | ||
| 6 | |||
| 7 | * Emacs now runs on Sun and Megatest 68000 systems; | ||
| 8 | also on at least one 16000 system running 4.2. | ||
| 9 | |||
| 10 | * Emacs now alters the output-start and output-stop characters | ||
| 11 | to prevent C-s and C-q from being considered as flow control | ||
| 12 | by cretinous rlogin software in 4.2. | ||
| 13 | |||
| 14 | * It is now possible convert Mocklisp code (for Gosling Emacs) to Lisp code | ||
| 15 | that can run in GNU Emacs. M-x convert-mocklisp-buffer | ||
| 16 | converts the contents of the current buffer from Mocklisp to | ||
| 17 | GNU Emacs Lisp. You should then save the converted buffer with C-x C-w | ||
| 18 | under a name ending in ".el" | ||
| 19 | |||
| 20 | There are probably some Mocklisp constructs that are not handled. | ||
| 21 | If you encounter one, feel free to report the failure as a bug. | ||
| 22 | The construct will be handled in a future Emacs release, if that is not | ||
| 23 | not too hard to do. | ||
| 24 | |||
| 25 | Note that lisp code converted from Mocklisp code will not necessarily | ||
| 26 | run as fast as code specifically written for GNU Emacs, nor will it use | ||
| 27 | the many features of GNU Emacs which are not present in Gosling's emacs. | ||
| 28 | (In particular, the byte-compiler (m-x byte-compile-file) knows little | ||
| 29 | about compilation of code directly converted from mocklisp.) | ||
| 30 | It is envisaged that old mocklisp code will be incrementally converted | ||
| 31 | to GNU lisp code, with M-x convert-mocklisp-buffer being the first | ||
| 32 | step in this process. | ||
| 33 | |||
| 34 | * Control-x n (narrow-to-region) is now by default a disabled command. | ||
| 35 | |||
| 36 | This means that, if you issue this command, it will ask whether | ||
| 37 | you really mean it. You have the opportunity to enable the | ||
| 38 | command permanently at that time, so you will not be asked again. | ||
| 39 | This will place the form "(put 'narrow-to-region 'disabled nil)" in your | ||
| 40 | .emacs file. | ||
| 41 | |||
| 42 | * Tags now prompts for the tag table file name to use. | ||
| 43 | |||
| 44 | All the tags commands ask for the tag table file name | ||
| 45 | if you have not yet specified one. | ||
| 46 | |||
| 47 | Also, the command M-x visit-tag-table can now be used to | ||
| 48 | specify the tag table file name initially, or to switch | ||
| 49 | to a new tag table. | ||
| 50 | |||
| 51 | * If truncate-partial-width-windows is non-nil (as it intially is), | ||
| 52 | all windows less than the full screen width (that is, | ||
| 53 | made by side-by-side splitting) truncate lines rather than continuing | ||
| 54 | them. | ||
| 55 | |||
| 56 | * Emacs now checks for Lisp stack overflow to avoid fatal errors. | ||
| 57 | The depth in eval, apply and funcall may not exceed max-lisp-eval-depth. | ||
| 58 | The depth in variable bindings and unwind-protects may not exceed | ||
| 59 | max-specpdl-size. If either limit is exceeded, an error occurs. | ||
| 60 | You can set the limits to larger values if you wish, but if you make them | ||
| 61 | too large, you are vulnerable to a fatal error if you invoke | ||
| 62 | Lisp code that does infinite recursion. | ||
| 63 | |||
| 64 | * New hooks find-file-hook and write-file-hook. | ||
| 65 | Both of these variables if non-nil should be functions of no arguments. | ||
| 66 | At the time they are called (current-buffer) will be the buffer being | ||
| 67 | read or written respectively. | ||
| 68 | |||
| 69 | find-file-hook is called whenever a file is read into its own buffer, | ||
| 70 | such as by calling find-file, revert-buffer, etc. It is not called by | ||
| 71 | functions such as insert-file which do not read the file into a buffer of | ||
| 72 | its own. | ||
| 73 | find-file-hook is called after the file has been read in and its | ||
| 74 | local variables (if any) have been processed. | ||
| 75 | |||
| 76 | write-file-hook is called just before writing out a file from a buffer. | ||
| 77 | |||
| 78 | * The initial value of shell-prompt-pattern is now "^[^#$%>]*[#$%>] *" | ||
| 79 | |||
| 80 | * If the .emacs file sets inhibit-startup-message to non-nil, | ||
| 81 | the messages normally printed by Emacs at startup time | ||
| 82 | are inhibited. | ||
| 83 | |||
| 84 | * Facility for run-time conditionalization on the basis of emacs features. | ||
| 85 | |||
| 86 | The new variable features is a list of symbols which represent "features" | ||
| 87 | of the executing emacs, for use in run-time conditionalization. | ||
| 88 | |||
| 89 | The function featurep of one argument may be used to test for the | ||
| 90 | presence of a feature. It is just the same as | ||
| 91 | (not (null (memq FEATURE features))) where FEATURE is its argument. | ||
| 92 | For example, (if (featurep 'magic-window-hack) | ||
| 93 | (transmogrify-window 'vertical) | ||
| 94 | (split-window-vertically)) | ||
| 95 | |||
| 96 | The function provide of one argument "announces" that FEATURE is present. | ||
| 97 | It is much the same as (if (not (featurep FEATURE)) | ||
| 98 | (setq features (cons FEATURE features))) | ||
| 99 | |||
| 100 | The function require with arguments FEATURE and FILE-NAME loads FILE-NAME | ||
| 101 | (which should contain the form (provide FEATURE)) unless FEATURE is present. | ||
| 102 | It is much the same as (if (not (featurep FEATURE)) | ||
| 103 | (progn (load FILE-NAME) | ||
| 104 | (if (not featurep FEATURE) (error ...)))) | ||
| 105 | FILE-NAME is optional and defaults to FEATURE. | ||
| 106 | |||
| 107 | * New function load-average. | ||
| 108 | |||
| 109 | This returns a list of three integers, which are | ||
| 110 | the current 1 minute, 5 minute and 15 minute load averages, | ||
| 111 | each multiplied by a hundred (since normally they are floating | ||
| 112 | point numbers). | ||
| 113 | |||
| 114 | * Per-terminal libraries loaded automatically. | ||
| 115 | |||
| 116 | Emacs when starting up on terminal type T automatically loads | ||
| 117 | a library named term-T. T is the value of the TERM environment variable. | ||
| 118 | Thus, on terminal type vt100, Emacs would do (load "term-vt100" t t). | ||
| 119 | Such libraries are good places to set the character translation table. | ||
| 120 | |||
| 121 | It is a bad idea to redefine lots of commands in a per-terminal library, | ||
| 122 | since this affects all users. Instead, define a command to do the | ||
| 123 | redefinitions and let the user's init file, which is loaded later, | ||
| 124 | call that command or not, as the user prefers. | ||
| 125 | |||
| 126 | * Programmer's note: detecting killed buffers. | ||
| 127 | |||
| 128 | Buffers are eliminated by explicitly killing them, using | ||
| 129 | the function kill-buffer. This does not eliminate or affect | ||
| 130 | the pointers to the buffer which may exist in list structure. | ||
| 131 | If you have a pointer to a buffer and wish to tell whether | ||
| 132 | the buffer has been killed, use the function buffer-name. | ||
| 133 | It returns nil on a killed buffer, and a string on a live buffer. | ||
| 134 | |||
| 135 | * New ways to access the last command input character. | ||
| 136 | |||
| 137 | The function last-key-struck, which used to return the last | ||
| 138 | input character that was read by command input, is eliminated. | ||
| 139 | Instead, you can find this information as the value of the | ||
| 140 | variable last-command-char. (This variable used to be called | ||
| 141 | last-key). | ||
| 142 | |||
| 143 | Another new variable, last-input-char, holds the last character | ||
| 144 | read from the command input stream regardless of what it was | ||
| 145 | read for. last-input-char and last-command-char are different | ||
| 146 | only inside a command that has called read-char to read input. | ||
| 147 | |||
| 148 | * The new switch -kill causes Emacs to exit after processing the | ||
| 149 | preceding command line arguments. Thus, | ||
| 150 | emacs -l lib data -e do-it -kill | ||
| 151 | means to load lib, find file data, call do-it on no arguments, | ||
| 152 | and then exit. | ||
| 153 | |||
| 154 | * The config.h file has been modularized. | ||
| 155 | |||
| 156 | Options that depend on the machine you are running on are defined | ||
| 157 | in a file whose name starts with "m-", such as m-vax.h. | ||
| 158 | Options that depend on the operating system software version you are | ||
| 159 | running on are defined in a file whose name starts with "s-", | ||
| 160 | such as s-bsd4.2.h. | ||
| 161 | |||
| 162 | config.h includes one m- file and one s- file. It also defines a | ||
| 163 | few other options whose values do not follow from the machine type | ||
| 164 | and system type being used. Installers normally will have to | ||
| 165 | select the correct m- and s- files but will never have to change their | ||
| 166 | contents. | ||
| 167 | |||
| 168 | * Termcap AL and DL strings are understood. | ||
| 169 | |||
| 170 | If the termcap entry defines AL and DL strings, for insertion | ||
| 171 | and deletion of multiple lines in one blow, Emacs now uses them. | ||
| 172 | This matters most on certain bit map display terminals for which | ||
| 173 | scrolling is comparatively slow. | ||
| 174 | |||
| 175 | * Bias against scrolling screen far on fast terminals. | ||
| 176 | |||
| 177 | Emacs now prefers to redraw a few lines rather than | ||
| 178 | shift them a long distance on the screen, when the terminal is fast. | ||
| 179 | |||
| 180 | * New major mode, mim-mode. | ||
| 181 | |||
| 182 | This major mode is for editing MDL code. Perhaps a MDL | ||
| 183 | user can explain why it is not called mdl-mode. | ||
| 184 | You must load the library mim-mode explicitly to use this. | ||
| 185 | |||
| 186 | * GNU documentation formatter `texinfo'. | ||
| 187 | |||
| 188 | The `texinfo' library defines a format for documentation | ||
| 189 | files which can be passed through Tex to make a printed manual | ||
| 190 | or passed through texinfo to make an Info file. Texinfo is | ||
| 191 | documented fully by its own Info file; compare this file | ||
| 192 | with its source, texinfo.texinfo, for additional guidance. | ||
| 193 | |||
| 194 | All documentation files for GNU utilities should be written | ||
| 195 | in texinfo input format. | ||
| 196 | |||
| 197 | Tex processing of texinfo files requires the Botex macro package. | ||
| 198 | This is not ready for distribution yet, but will appear at | ||
| 199 | a later time. | ||
| 200 | |||
| 201 | * New function read-from-string (emacs 15.29) | ||
| 202 | |||
| 203 | read-from-string takes three arguments: a string to read from, | ||
| 204 | and optionally start and end indices which delimit a substring | ||
| 205 | from which to read. (They default to 0 and the length of the string, | ||
| 206 | respectively.) | ||
| 207 | |||
| 208 | This function returns a cons cell whose car is the object produced | ||
| 209 | by reading from the string and whose cdr is a number giving the | ||
| 210 | index in the string of the first character not read. That index may | ||
| 211 | be passed as the second argument to a later call to read-from-string | ||
| 212 | to read the next form represented by the string. | ||
| 213 | |||
| 214 | In addition, the function read now accepts a string as its argument. | ||
| 215 | In this case, it calls read-from-string on the whole string, and | ||
| 216 | returns the car of the result. (ie the actual object read.) | ||
| 217 | |||
| 218 | Changes in Emacs 14 | ||
| 219 | |||
| 220 | * Completion now prints various messages such as [Sole Completion] | ||
| 221 | or [Next Character Not Unique] to describe the results obtained. | ||
| 222 | These messages appear after the text in the minibuffer, and remain | ||
| 223 | on the screen until a few seconds go by or you type a key. | ||
| 224 | |||
| 225 | * The buffer-read-only flag is implemented. | ||
| 226 | Setting or binding this per-buffer variable to a non-nil value | ||
| 227 | makes illegal any operation which would modify the textual content of | ||
| 228 | the buffer. (Such operations signal a buffer-read-only error) | ||
| 229 | The read-only state of a buffer may be altered using toggle-read-only | ||
| 230 | (C-x C-q) | ||
| 231 | The buffers used by Rmail, Dired, Rnews, and Info are now read-only | ||
| 232 | by default to prevent accidental damage to the information in those | ||
| 233 | buffers. | ||
| 234 | |||
| 235 | * Functions car-safe and cdr-safe. | ||
| 236 | These functions are like car and cdr when the argument is a cons. | ||
| 237 | Given an argument not a cons, car-safe always returns nil, with | ||
| 238 | no error; the same for cdr-safe. | ||
| 239 | |||
| 240 | * The new function user-real-login-name returns the name corresponding | ||
| 241 | to the real uid of the Emacs process. This is usually the same | ||
| 242 | as what user-login-name returns; however, when Emacs is invoked | ||
| 243 | from su, user-real-login-name returns "root" but user-login-name | ||
| 244 | returns the name of the user who invoked su. | ||
| 245 | |||
| 246 | Changes in Emacs 13 | ||
| 247 | |||
| 248 | * There is a new version numbering scheme. | ||
| 249 | |||
| 250 | What used to be the first version number, which was 1, | ||
| 251 | has been discarded since it does not seem that I need three | ||
| 252 | levels of version number. | ||
| 253 | |||
| 254 | However, a new third version number has been added to represent | ||
| 255 | changes by user sites. This number will always be zero in | ||
| 256 | Emacs when I distribute it; it will be incremented each time | ||
| 257 | Emacs is built at another site. | ||
| 258 | |||
| 259 | * There is now a reader syntax for Meta characters: | ||
| 260 | \M-CHAR means CHAR or'ed with the Meta bit. For example: | ||
| 261 | |||
| 262 | ?\M-x is (+ ?x 128) | ||
| 263 | ?\M-\n is (+ ?\n 128) | ||
| 264 | ?\M-\^f is (+ ?\^f 128) | ||
| 265 | |||
| 266 | This syntax can be used in strings too. Note, however, that | ||
| 267 | Meta characters are not meaningful in key sequences being passed | ||
| 268 | to define-key or lookup-key; you must use ESC characters (\e) | ||
| 269 | in them instead. | ||
| 270 | |||
| 271 | ?\C- can be used likewise for control characters. (13.9) | ||
| 272 | |||
| 273 | * Installation change | ||
| 274 | The string "../lisp" now adds to the front of the load-path | ||
| 275 | used for searching for Lisp files during Emacs initialization. | ||
| 276 | It used to replace the path specified in paths.h entirely. | ||
| 277 | Now the directory ../lisp is searched first and the directoris | ||
| 278 | specified in paths.h are searched afterward. | ||
| 279 | |||
| 280 | Changes in Emacs 1.12 | ||
| 281 | |||
| 282 | * There is a new installation procedure. | ||
| 283 | See the file INSTALL that comes in the top level | ||
| 284 | directory in the tar file or tape. | ||
| 285 | |||
| 286 | * The Meta key is now supported on terminals that have it. | ||
| 287 | This is a shift key which causes the high bit to be turned on | ||
| 288 | in all input characters typed while it is held down. | ||
| 289 | |||
| 290 | read-char now returns a value in the range 128-255 if | ||
| 291 | a Meta character is typed. When interpreted as command | ||
| 292 | input, a Meta character is equivalent to a two character | ||
| 293 | sequence, the meta prefix character followed by the un-metized | ||
| 294 | character (Meta-G unmetized is G). | ||
| 295 | |||
| 296 | The meta prefix character | ||
| 297 | is specified by the value of the variable meta-prefix-char. | ||
| 298 | If this character (normally Escape) has been redefined locally | ||
| 299 | with a non-prefix definition (such as happens in completing | ||
| 300 | minibuffers) then the local redefinition is suppressed when | ||
| 301 | the character is not the last one in a key sequence. | ||
| 302 | So the local redefinition is effective if you type the character | ||
| 303 | explicitly, but not effective if the character comes from | ||
| 304 | the use of the Meta key. | ||
| 305 | |||
| 306 | * `-' is no longer a completion command in the minibuffer. | ||
| 307 | It is an ordinary self-inserting character. | ||
| 308 | |||
| 309 | * The list load-path of directories load to search for Lisp files | ||
| 310 | is now controlled by the EMACSLOADPATH environment variable | ||
| 311 | [[ Note this was originally EMACS-LOAD-PATH and has been changed | ||
| 312 | again; sh does not deal properly with hyphens in env variable names]] | ||
| 313 | rather than the EPATH environment variable. This is to avoid | ||
| 314 | conflicts with other Emacses. | ||
| 315 | |||
| 316 | While Emacs is being built initially, the load-path | ||
| 317 | is now just ("../lisp"), ignoring paths.h. It does not | ||
| 318 | ignore EMACSLOADPATH, however; you should avoid having | ||
| 319 | this variable set while building Emacs. | ||
| 320 | |||
| 321 | * You can now specify a translation table for keyboard | ||
| 322 | input characters, as a way of exchanging or substituting | ||
| 323 | keys on the keyboard. | ||
| 324 | |||
| 325 | If the value of keyboard-translate-table is a string, | ||
| 326 | every character received from the keyboard is used as an | ||
| 327 | index in that string, and the character at that index in | ||
| 328 | the string is used as input instead of what was actually | ||
| 329 | typed. If the actual input character is >= the length of | ||
| 330 | the string, it is used unchanged. | ||
| 331 | |||
| 332 | One way this feature can be used is to fix bad keyboard | ||
| 333 | designes. For example, on some terminals, Delete is | ||
| 334 | Shift-Underscore. Since Delete is a more useful character | ||
| 335 | than Underscore, it is an improvement to make the unshifted | ||
| 336 | character Delete and the shifted one Underscore. This can | ||
| 337 | be done with | ||
| 338 | |||
| 339 | ;; First make a translate table that does the identity translation. | ||
| 340 | (setq keyboard-translate-table (make-string 128 0)) | ||
| 341 | (let ((i 0)) | ||
| 342 | (while (< i 128) | ||
| 343 | (aset keyboard-translate-table i i) | ||
| 344 | (setq i (1+ i)))) | ||
| 345 | |||
| 346 | ;; Now alter translations of some characters. | ||
| 347 | (aset keyboard-translate-table ?\_ ?\^?) | ||
| 348 | (aset keyboard-translate-table ?\^? ?\_) | ||
| 349 | |||
| 350 | If your terminal has a Meta key and can therefore send | ||
| 351 | codes up to 255, Meta characters are translated through | ||
| 352 | elements 128 through 255 of the translate table, and therefore | ||
| 353 | are translated independently of the corresponding non-Meta | ||
| 354 | characters. You must therefore establish translations | ||
| 355 | independently for the Meta characters if you want them too: | ||
| 356 | |||
| 357 | ;; First make a translate table that does the identity translation. | ||
| 358 | (setq keyboard-translate-table (make-string 256 0)) | ||
| 359 | (let ((i 0)) | ||
| 360 | (while (< i 256) | ||
| 361 | (aset keyboard-translate-table i i) | ||
| 362 | (setq i (1+ i)))) | ||
| 363 | |||
| 364 | ;; Now alter translations of some characters. | ||
| 365 | (aset keyboard-translate-table ?\_ ?\^?) | ||
| 366 | (aset keyboard-translate-table ?\^? ?\_) | ||
| 367 | |||
| 368 | ;; Now alter translations of some Meta characters. | ||
| 369 | (aset keyboard-translate-table (+ 128 ?\_) (+ 128 ?\^?)) | ||
| 370 | (aset keyboard-translate-table (+ 128 ?\^?) (+ 128 ?\_)) | ||
| 371 | |||
| 372 | * (process-kill-without-query PROCESS) | ||
| 373 | |||
| 374 | This marks the process so that, when you kill Emacs, | ||
| 375 | you will not on its account be queried about active subprocesses. | ||
| 376 | |||
| 377 | Changes in Emacs 1.11 | ||
| 378 | |||
| 379 | * The commands C-c and C-z have been interchanged, | ||
| 380 | for greater compatibility with normal Unix usage. | ||
| 381 | C-z now runs suspend-emacs and C-c runs exit-recursive-edit. | ||
| 382 | |||
| 383 | * The value returned by file-name-directory now ends | ||
| 384 | with a slash. (file-name-directory "foo/bar") => "foo/". | ||
| 385 | This avoids confusing results when dealing with files | ||
| 386 | in the root directory. | ||
| 387 | |||
| 388 | The value of the per-buffer variable default-directory | ||
| 389 | is also supposed to have a final slash now. | ||
| 390 | |||
| 391 | * There are now variables to control the switches passed to | ||
| 392 | `ls' by the C-x C-d command (list-directory). | ||
| 393 | list-directory-brief-switches is a string, initially "-CF", | ||
| 394 | used for brief listings, and list-directory-verbose-switches | ||
| 395 | is a string, initially "-l", used for verbose ones. | ||
| 396 | |||
| 397 | * For Ann Arbor Ambassador terminals, the termcap "ti" string | ||
| 398 | is now used to initialize the screen geometry on entry to Emacs, | ||
| 399 | and the "te" string is used to set it back on exit. | ||
| 400 | If the termcap entry does not define the "ti" or "te" string, | ||
| 401 | Emacs does what it used to do. | ||
| 402 | |||
| 403 | Changes in Emacs 1.10 | ||
| 404 | |||
| 405 | * GNU Emacs has been made almost 1/3 smaller. | ||
| 406 | It now dumps out as only 530kbytes on Vax 4.2bsd. | ||
| 407 | |||
| 408 | * The term "checkpoint" has been replaced by "auto save" | ||
| 409 | throughout the function names, variable names and documentation | ||
| 410 | of GNU Emacs. | ||
| 411 | |||
| 412 | * The function load now tries appending ".elc" and ".el" | ||
| 413 | to the specified filename BEFORE it tries the filename | ||
| 414 | without change. | ||
| 415 | |||
| 416 | * rmail now makes the mode line display the total number | ||
| 417 | of messages and the current message number. | ||
| 418 | The "f" command now means forward a message to another user. | ||
| 419 | The command to search through all messages for a string is now "F". | ||
| 420 | The "u" command now means to move back to the previous | ||
| 421 | message and undelete it. To undelete the selected message, use Meta-u. | ||
| 422 | |||
| 423 | * The hyphen character is now equivalent to a Space while | ||
| 424 | in completing minibuffers. Both mean to complete an additional word. | ||
| 425 | |||
| 426 | * The Lisp function error now takes args like format | ||
| 427 | which are used to construct the error message. | ||
| 428 | |||
| 429 | * Redisplay will refuse to start its display at the end of the buffer. | ||
| 430 | It will pick a new place to display from, rather than use that. | ||
| 431 | |||
| 432 | * The value returned by garbage-collect has been changed. | ||
| 433 | Its first element is no longer a number but a cons, | ||
| 434 | whose car is the number of cons cells now in use, | ||
| 435 | and whose cdr is the number of cons cells that have been | ||
| 436 | made but are now free. | ||
| 437 | The second element is similar but describes symbols rather than cons cells. | ||
| 438 | The third element is similar but describes markers. | ||
| 439 | |||
| 440 | * The variable buffer-name has been eliminated. | ||
| 441 | The function buffer-name still exists. This is to prevent | ||
| 442 | user programs from changing buffer names without going | ||
| 443 | through the rename-buffer function. | ||
| 444 | |||
| 445 | Changes in Emacs 1.9 | ||
| 446 | |||
| 447 | * When a fill prefix is in effect, paragraphs are started | ||
| 448 | or separated by lines that do not start with the fill prefix. | ||
| 449 | Also, a line which consists of the fill prefix followed by | ||
| 450 | white space separates paragraphs. | ||
| 451 | |||
| 452 | * C-x C-v runs the new function find-alternate-file. | ||
| 453 | It finds the specified file, switches to that buffer, | ||
| 454 | and kills the previous current buffer. (It requires | ||
| 455 | confirmation if that buffer had changes.) This is | ||
| 456 | most useful after you find the wrong file due to a typo. | ||
| 457 | |||
| 458 | * Exiting the minibuffer moves the cursor to column 0, | ||
| 459 | to show you that it has really been exited. | ||
| 460 | |||
| 461 | * Meta-g (fill-region) now fills each paragraph in the | ||
| 462 | region individually. To fill the region as if it were | ||
| 463 | a single paragraph (for when the paragraph-delimiting mechanism | ||
| 464 | does the wrong thing), use fill-region-as-paragraph. | ||
| 465 | |||
| 466 | * Tab in text mode now runs the function tab-to-tab-stop. | ||
| 467 | A new mode called indented-text-mode is like text-mode | ||
| 468 | except that in it Tab runs the function indent-relative, | ||
| 469 | which indents the line under the previous line. | ||
| 470 | If auto fill is enabled while in indented-text-mode, | ||
| 471 | the new lines that it makes are indented. | ||
| 472 | |||
| 473 | * Functions kill-rectangle and yank-rectangle. | ||
| 474 | kill-rectangle deletes the rectangle specified by dot and mark | ||
| 475 | (or by two arguments) and saves it in the variable killed-rectangle. | ||
| 476 | yank-rectangle inserts the rectangle in that variable. | ||
| 477 | |||
| 478 | Tab characters in a rectangle being saved are replaced | ||
| 479 | by spaces in such a way that their appearance will | ||
| 480 | not be changed if the rectangle is later reinserted | ||
| 481 | at a different column position. | ||
| 482 | |||
| 483 | * `+' in a regular expression now means | ||
| 484 | to repeat the previous expression one or more times. | ||
| 485 | `?' means to repeat it zero or one time. | ||
| 486 | They are in all regards like `*' except for the | ||
| 487 | number of repetitions they match. | ||
| 488 | |||
| 489 | \< in a regular expression now matches the null string | ||
| 490 | when it is at the beginning of a word; \> matches | ||
| 491 | the null string at the end of a word. | ||
| 492 | |||
| 493 | * C-x p narrows the buffer so that only the current page | ||
| 494 | is visible. | ||
| 495 | |||
| 496 | * C-x ) with argument repeats the kbd macro just | ||
| 497 | defined that many times, counting the definition | ||
| 498 | as one repetition. | ||
| 499 | |||
| 500 | * C-x ( with argument begins defining a kbd macro | ||
| 501 | starting with the last one defined. It executes that | ||
| 502 | previous kbd macro initially, just as if you began | ||
| 503 | by typing it over again. | ||
| 504 | |||
| 505 | * C-x q command queries the user during kbd macro execution. | ||
| 506 | With prefix argument, enters recursive edit, | ||
| 507 | reading keyboard commands even within a kbd macro. | ||
| 508 | You can give different commands each time the macro executes. | ||
| 509 | Without prefix argument, reads a character. Your options are: | ||
| 510 | Space -- execute the rest of the macro. | ||
| 511 | Delete -- skip the rest of the macro; start next repetition. | ||
| 512 | C-d -- skip rest of the macro and don't repeat it any more. | ||
| 513 | C-r -- enter a recursive edit, then on exit ask again for a character | ||
| 514 | C-l -- redisplay screen and ask again." | ||
| 515 | |||
| 516 | * write-kbd-macro and append-kbd-macro are used to save | ||
| 517 | a kbd macro definition in a file (as Lisp code to | ||
| 518 | redefine the macro when the file is loaded). | ||
| 519 | These commands differ in that write-kbd-macro | ||
| 520 | discards the previous contents of the file. | ||
| 521 | If given a prefix argument, both commands | ||
| 522 | record the keys which invoke the macro as well as the | ||
| 523 | macro's definition. | ||
| 524 | |||
| 525 | * The variable global-minor-modes is used to display | ||
| 526 | strings in the mode line of all buffers. It should be | ||
| 527 | a list of elements thaht are conses whose cdrs are strings | ||
| 528 | to be displayed. This complements the variable | ||
| 529 | minor-modes, which has the same effect but has a separate | ||
| 530 | value in each buffer. | ||
| 531 | |||
| 532 | * C-x = describes horizontal scrolling in effect, if any. | ||
| 533 | |||
| 534 | * Return now auto-fills the line it is ending, in auto fill mode. | ||
| 535 | Space with zero as argument auto-fills the line before it | ||
| 536 | just like Space without an argument. | ||
| 537 | |||
| 538 | Changes in Emacs 1.8 | ||
| 539 | |||
| 540 | This release mostly fixes bugs. There are a few new features: | ||
| 541 | |||
| 542 | * apropos now sorts the symbols before displaying them. | ||
| 543 | Also, it returns a list of the symbols found. | ||
| 544 | |||
| 545 | apropos now accepts a second arg PRED which should be a function | ||
| 546 | of one argument; if PRED is non-nil, each symbol is tested | ||
| 547 | with PRED and only symbols for which PRED returns non-nil | ||
| 548 | appear in the output or the returned list. | ||
| 549 | |||
| 550 | If the third argument to apropos is non-nil, apropos does not | ||
| 551 | display anything; it merely returns the list of symbols found. | ||
| 552 | |||
| 553 | C-h a now runs the new function command-apropos rather than | ||
| 554 | apropos, and shows only symbols with definitions as commands. | ||
| 555 | |||
| 556 | * M-x shell sends the command | ||
| 557 | if (-f ~/.emacs_NAME)source ~/.emacs_NAME | ||
| 558 | invisibly to the shell when it starts. Here NAME | ||
| 559 | is replaced by the name of shell used, | ||
| 560 | as it came from your ESHELL or SHELL environment variable | ||
| 561 | but with directory name, if any, removed. | ||
| 562 | |||
| 563 | * M-, now runs the command tags-loop-continue, which is used | ||
| 564 | to resume a terminated tags-search or tags-query-replace. | ||
| 565 | |||
| 566 | Changes in Emacs 1.7 | ||
| 567 | |||
| 568 | It's Beat CCA Week. | ||
| 569 | |||
| 570 | * The initial buffer is now called "*scratch*" instead of "scratch", | ||
| 571 | so that all buffer names used automatically by Emacs now have *'s. | ||
| 572 | |||
| 573 | * Undo information is now stored separately for each buffer. | ||
| 574 | The Undo command (C-x u) always applies to the current | ||
| 575 | buffer only. | ||
| 576 | |||
| 577 | C-_ is now a synonym for C-x u. | ||
| 578 | |||
| 579 | (buffer-flush-undo BUFFER) causes undo information not to | ||
| 580 | be kept for BUFFER, and frees the space that would have | ||
| 581 | been used to hold it. In any case, no undo information is | ||
| 582 | kept for buffers whose names start with spaces. (These | ||
| 583 | buffers also do not appear in the C-x C-b display.) | ||
| 584 | |||
| 585 | * Rectangle operations are now implemented. | ||
| 586 | C-x r stores the rectangle described by dot and mark | ||
| 587 | into a register; it reads the register name from the keyboard. | ||
| 588 | C-x g, the command to insert the contents of a register, | ||
| 589 | can be used to reinsert the rectangle elsewhere. | ||
| 590 | |||
| 591 | Other rectangle commands include | ||
| 592 | open-rectangle: | ||
| 593 | insert a blank rectangle in the position and size | ||
| 594 | described by dot and mark, at its corners; | ||
| 595 | the existing text is pushed to the right. | ||
| 596 | clear-rectangle: | ||
| 597 | replace the rectangle described by dot ane mark | ||
| 598 | with blanks. The previous text is deleted. | ||
| 599 | delete-rectangle: | ||
| 600 | delete the text of the specified rectangle, | ||
| 601 | moving the text beyond it on each line leftward. | ||
| 602 | |||
| 603 | * Side-by-side windows are allowed. Use C-x 5 to split the | ||
| 604 | current window into two windows side by side. | ||
| 605 | C-x } makes the selected window ARG columns wider at the | ||
| 606 | expense of the windows at its sides. C-x { makes the selected | ||
| 607 | window ARG columns narrower. An argument to C-x 5 specifies | ||
| 608 | how many columns to give to the leftmost of the two windows made. | ||
| 609 | |||
| 610 | C-x 2 now accepts a numeric argument to specify the number of | ||
| 611 | lines to give to the uppermost of the two windows it makes. | ||
| 612 | |||
| 613 | * Horizontal scrolling of the lines in a window is now implemented. | ||
| 614 | C-x < (scroll-left) scrolls all displayed lines left, | ||
| 615 | with the numeric argument (default 1) saying how far to scroll. | ||
| 616 | When the window is scrolled left, some amount of the beginning | ||
| 617 | of each nonempty line is replaced by an "$". | ||
| 618 | C-x > scrolls right. If a window has no text hidden at the left | ||
| 619 | margin, it cannot be scrolled any farther right than that. | ||
| 620 | When nonzero leftwards scrolling is in effect in a window. | ||
| 621 | lines are automatically truncated at the window's right margin | ||
| 622 | regardless of the value of the variable truncate-lines in the | ||
| 623 | buffer being displayed. | ||
| 624 | |||
| 625 | * C-x C-d now uses the default output format of `ls', | ||
| 626 | which gives just file names in multiple columns. | ||
| 627 | C-u C-x C-d passes the -l switch to `ls'. | ||
| 628 | |||
| 629 | * C-t at the end of a line now exchanges the two preceding characters. | ||
| 630 | |||
| 631 | All the transpose commands now interpret zero as an argument | ||
| 632 | to mean to transpose the textual unit after or around dot | ||
| 633 | with the one after or around the mark. | ||
| 634 | |||
| 635 | * M-! executes a shell command in an inferior shell | ||
| 636 | and displays the output from it. With a prefix argument, | ||
| 637 | it inserts the output in the current buffer after dot | ||
| 638 | and sets the mark after the output. The shell command | ||
| 639 | gets /dev/null as its standard input. | ||
| 640 | |||
| 641 | M-| is like M-! but passes the contents of the region | ||
| 642 | as input to the shell command. A prefix argument makes | ||
| 643 | the output from the command replace the contents of the region. | ||
| 644 | |||
| 645 | * The mode line will now say "Def" after the major mode | ||
| 646 | while a keyboard macro is being defined. | ||
| 647 | |||
| 648 | * The variable fill-prefix is now used by Meta-q. | ||
| 649 | Meta-q removes the fill prefix from lines that start with it | ||
| 650 | before filling, and inserts the fill prefix on each line | ||
| 651 | after filling. | ||
| 652 | |||
| 653 | The command C-x . sets the fill prefix equal to the text | ||
| 654 | on the current line before dot. | ||
| 655 | |||
| 656 | * The new command Meta-j (indent-new-comment-line), | ||
| 657 | is like Linefeed (indent-new-line) except when dot is inside a comment; | ||
| 658 | in that case, Meta-j inserts a comment starter on the new line, | ||
| 659 | indented under the comment starter above. It also inserts | ||
| 660 | a comment terminator at the end of the line above, | ||
| 661 | if the language being edited calls for one. | ||
| 662 | |||
| 663 | * Rmail should work correctly now, and has some C-h m documentation. | ||
| 664 | |||
| 665 | Changes in Emacs 1.6 | ||
| 666 | |||
| 667 | * save-buffers-kill-emacs is now on C-x C-c | ||
| 668 | while C-x C-z does suspend-emacs. This is to make | ||
| 669 | C-x C-c like the normal Unix meaning of C-c | ||
| 670 | and C-x C-z linke the normal Unix meaning of C-z. | ||
| 671 | |||
| 672 | * M-ESC (eval-expression) is now a disabled command by default. | ||
| 673 | This prevents users who type ESC ESC accidentally from | ||
| 674 | getting confusing results. Put | ||
| 675 | (put 'eval-expression 'disabled nil) | ||
| 676 | in your ~/.emacs file to enable the command. | ||
| 677 | |||
| 678 | * Self-inserting text is grouped into bunches for undoing. | ||
| 679 | Each C-x u command undoes up to 20 consecutive self-inserting | ||
| 680 | characters. | ||
| 681 | |||
| 682 | * Help f now uses as a default the function being called | ||
| 683 | in the innermost Lisp expression that dot is in. | ||
| 684 | This makes it more convenient to use while writing | ||
| 685 | Lisp code to run in Emacs. | ||
| 686 | (If the text around dot does not appear to be a call | ||
| 687 | to a Lisp function, there is no default.) | ||
| 688 | |||
| 689 | Likewise, Help v uses the symbol around or before dot | ||
| 690 | as a default, if that is a variable name. | ||
| 691 | |||
| 692 | * Commands that read filenames now insert the default | ||
| 693 | directory in the minibuffer, to become part of your input. | ||
| 694 | This allows you to see what the default is. | ||
| 695 | You may type a filename which goes at the end of the | ||
| 696 | default directory, or you may edit the default directory | ||
| 697 | as you like to create the input you want to give. | ||
| 698 | You may also type an absolute pathname (starting with /) | ||
| 699 | or refer to a home directory (input starting with ~) | ||
| 700 | after the default; the presence of // or /~ causes | ||
| 701 | everything up through the slash that precedes your | ||
| 702 | type-in to be ignored. | ||
| 703 | |||
| 704 | Returning the default directory without change, | ||
| 705 | including the terminating slash, requests the use | ||
| 706 | of the default file name (usually the visited file's name). | ||
| 707 | |||
| 708 | Set the variable insert-default-directory to nil | ||
| 709 | to turn off this feature. | ||
| 710 | |||
| 711 | * M-x shell now uses the environment variable ESHELL, | ||
| 712 | if it exists, as the file name of the shell to run. | ||
| 713 | If there is no ESHELL variable, the SHELL variable is used. | ||
| 714 | This is because some shells do not work properly as inferiors | ||
| 715 | of Emacs (or anything like Emacs). | ||
| 716 | |||
| 717 | * A new variable minor-modes now exists, with a separate value | ||
| 718 | in each buffer. Its value should be an alist of elements | ||
| 719 | (MODE-FUNCTION-SYMBOL . PRETTY-NAME-STRING), one for each | ||
| 720 | minor mode that is turned on in the buffer. The pretty | ||
| 721 | name strings are displayed in the mode line after the name of the | ||
| 722 | major mode (with spaces between them). The mode function | ||
| 723 | symbols should be symbols whose function definitions will | ||
| 724 | turn on the minor mode if given 1 as an argument; they are present | ||
| 725 | so that Help m can find their documentation strings. | ||
| 726 | |||
| 727 | * The format of tag table files has been changed. | ||
| 728 | The new format enables Emacs to find tags much faster. | ||
| 729 | |||
| 730 | A new program, etags, exists to make the kind of | ||
| 731 | tag table that Emacs wants. etags is invoked just | ||
| 732 | like ctags; in fact, if you give it any switches, | ||
| 733 | it does exactly what ctags would do. Give it the | ||
| 734 | empty switch ("-") to make it act like ctags with no switches. | ||
| 735 | |||
| 736 | etags names the tag table file "TAGS" rather than "tags", | ||
| 737 | so that these tag tables and the standard Unix ones | ||
| 738 | can coexist. | ||
| 739 | |||
| 740 | The tags library can no longer use standard ctags-style | ||
| 741 | tag tables files. | ||
| 742 | |||
| 743 | * The file of Lisp code Emacs reads on startup is now | ||
| 744 | called ~/.emacs rather than ~/.emacs_pro. | ||
| 745 | |||
| 746 | * copy-file now gives the copied file the same mode bits | ||
| 747 | as the original file. | ||
| 748 | |||
| 749 | * Output from a process inserted into the process's buffer | ||
| 750 | no longer sets the buffer's mark. Instead it sets a | ||
| 751 | marker associated with the process to point to the end | ||
| 752 | of the inserted text. You can access this marker with | ||
| 753 | (process-mark PROCESS) | ||
| 754 | and then either examine its position with marker-position | ||
| 755 | or set its position with set-marker. | ||
| 756 | |||
| 757 | * completing-read takes a new optional fifth argument which, | ||
| 758 | if non-nil, should be a string of text to insert into | ||
| 759 | the minibuffer before reading user commands. | ||
| 760 | |||
| 761 | * The Lisp function elt now exists: | ||
| 762 | (elt ARRAY N) is like (aref ARRAY N), | ||
| 763 | (elt LIST N) is like (nth N LIST). | ||
| 764 | |||
| 765 | * rplaca is now a synonym for setcar, and rplacd for setcdr. | ||
| 766 | eql is now a synonym for eq; it turns out that the Common Lisp | ||
| 767 | distinction between eq and eql is insignificant in Emacs. | ||
| 768 | numberp is a new synonym for integerp. | ||
| 769 | |||
| 770 | * auto-save has been renamed to auto-save-mode. | ||
| 771 | |||
| 772 | * Auto save file names for buffers are now created by the | ||
| 773 | function make-auto-save-file-name. This is so you can | ||
| 774 | redefine that function to change the way auto save file names | ||
| 775 | are chosen. | ||
| 776 | |||
| 777 | * expand-file-name no longer discards a final slash. | ||
| 778 | (expand-file-name "foo" "/lose") => "/lose/foo" | ||
| 779 | (expand-file-name "foo/" "/lose") => "/lose/foo/" | ||
| 780 | |||
| 781 | Also, expand-file-name no longer substitutes $ constructs. | ||
| 782 | A new function substitute-in-file-name does this. Reading | ||
| 783 | a file name with read-file-name or the `f' or`F' option | ||
| 784 | of interactive calling uses substitute-in-file-name | ||
| 785 | on the file name that was read and returns the result. | ||
| 786 | |||
| 787 | All I/O primitives including insert-file-contents and | ||
| 788 | delete-file call expand-file-name on the file name supplied. | ||
| 789 | This change makes them considerably faster in the usual case. | ||
| 790 | |||
| 791 | * Interactive calling spec strings allow the new code letter 'D' | ||
| 792 | which means to read a directory name. It is like 'f' except | ||
| 793 | that the default if the user makes no change in the minibuffer | ||
| 794 | is to return the current default directory rather than the | ||
| 795 | current visited file name. | ||
| 796 | |||
| 797 | Changes in Emacs 1.5 | ||
| 798 | |||
| 799 | * suspend-emacs now accepts an optional argument | ||
| 800 | which is a string to be stuffed as terminal input | ||
| 801 | to be read by Emacs's superior shell after Emacs exits. | ||
| 802 | |||
| 803 | A library called ledit exists which uses this feature | ||
| 804 | to transmit text to a Lisp job running as a sibling of | ||
| 805 | Emacs. | ||
| 806 | |||
| 807 | * If find-file is given the name of a directory, | ||
| 808 | it automatically invokes dired on that directory | ||
| 809 | rather than reading in the binary data that make up | ||
| 810 | the actual contents of the directory according to Unix. | ||
| 811 | |||
| 812 | * Saving an Emacs buffer now preserves the file modes | ||
| 813 | of any previously existing file with the same name. | ||
| 814 | This works using new Lisp functions file-modes and | ||
| 815 | set-file-modes, which can be used to read or set the mode | ||
| 816 | bits of any file. | ||
| 817 | |||
| 818 | * The Lisp function cond now exists, with its traditional meaning. | ||
| 819 | |||
| 820 | * defvar and defconst now permit the documentation string | ||
| 821 | to be omitted. defvar also permits the initial value | ||
| 822 | to be omitted; then it acts only as a comment. | ||
| 823 | |||
| 824 | Changes in Emacs 1.4 | ||
| 825 | |||
| 826 | * Auto-filling now normally indents the new line it creates | ||
| 827 | by calling indent-according-to-mode. This function, meanwhile, | ||
| 828 | has in Fundamental and Text modes the effect of making the line | ||
| 829 | have an indentation of the value of left-margin, a per-buffer variable. | ||
| 830 | |||
| 831 | Tab no longer precisely does indent-according-to-mode; | ||
| 832 | it does that in all modes that supply their own indentation routine, | ||
| 833 | but in Fundamental, Text and allied modes it inserts a tab character. | ||
| 834 | |||
| 835 | * The command M-x grep now invokes grep (on arguments | ||
| 836 | supplied by the user) and reads the output from grep | ||
| 837 | asynchronously into a buffer. The command C-x ` can | ||
| 838 | be used to move to the lines that grep has found. | ||
| 839 | This is an adaptation of the mechanism used for | ||
| 840 | running compilations and finding the loci of error messages. | ||
| 841 | |||
| 842 | You can now use C-x ` even while grep or compilation | ||
| 843 | is proceeding; as more matches or error messages arrive, | ||
| 844 | C-x ` will parse them and be able to find them. | ||
| 845 | |||
| 846 | * M-x mail now provides a command to send the message | ||
| 847 | and "exit"--that is, return to the previously selected | ||
| 848 | buffer. It is C-z C-z. | ||
| 849 | |||
| 850 | * Tab in C mode now tries harder to adapt to all indentation styles. | ||
| 851 | If the line being indented is a statement that is not the first | ||
| 852 | one in the containing compound-statement, it is aligned under | ||
| 853 | the beginning of the first statement. | ||
| 854 | |||
| 855 | * The functions screen-width and screen-height return the | ||
| 856 | total width and height of the screen as it is now being used. | ||
| 857 | set-screen-width and set-screen-height tell Emacs how big | ||
| 858 | to assume the screen is; they each take one argument, | ||
| 859 | an integer. | ||
| 860 | |||
| 861 | * The Lisp function 'function' now exists. function is the | ||
| 862 | same as quote, except that it serves as a signal to the | ||
| 863 | Lisp compiler that the argument should be compiled as | ||
| 864 | a function. Example: | ||
| 865 | (mapcar (function (lambda (x) (+ x 5))) list) | ||
| 866 | |||
| 867 | * The function set-key has been renamed to global-set-key. | ||
| 868 | undefine-key and local-undefine-key has been renamed to | ||
| 869 | global-unset-key and local-unset-key. | ||
| 870 | |||
| 871 | * Emacs now collects input from asynchronous subprocesses | ||
| 872 | while waiting in the functions sleep-for and sit-for. | ||
| 873 | |||
| 874 | * Shell mode's Newline command attempts to distinguish subshell | ||
| 875 | prompts from user input when issued in the middle of the buffer. | ||
| 876 | It no longer reexecutes from dot to the end of the line; | ||
| 877 | it reeexecutes the entire line minus any prompt. | ||
| 878 | The prompt is recognized by searching for the value of | ||
| 879 | shell-prompt-pattern, starting from the beginning of the line. | ||
| 880 | Anything thus skipped is not reexecuted. | ||
| 881 | |||
| 882 | Changes in Emacs 1.3 | ||
| 883 | |||
| 884 | * An undo facility exists now. Type C-x u to undo a batch of | ||
| 885 | changes (usually one command's changes, but some commands | ||
| 886 | such as query-replace divide their changes into multiple | ||
| 887 | batches. You can repeat C-x u to undo further. As long | ||
| 888 | as no commands other than C-x u intervene, each one undoes | ||
| 889 | another batch. A numeric argument to C-x u acts as a repeat | ||
| 890 | count. | ||
| 891 | |||
| 892 | If you keep on undoing, eventually you may be told that | ||
| 893 | you have used up all the recorded undo information. | ||
| 894 | Some actions, such as reading in files, discard all | ||
| 895 | undo information. | ||
| 896 | |||
| 897 | The undo information is not currently stored separately | ||
| 898 | for each buffer, so it is mainly good if you do something | ||
| 899 | totally spastic. [This has since been fixed.] | ||
| 900 | |||
| 901 | * A learn-by-doing tutorial introduction to Emacs now exists. | ||
| 902 | Type C-h t to enter it. | ||
| 903 | |||
| 904 | * An Info documentation browser exists. Do M-x info to enter it. | ||
| 905 | It contains a tutorial introduction so that no more documentation | ||
| 906 | is needed here. As of now, the only documentation in it | ||
| 907 | is that of Info itself. | ||
| 908 | |||
| 909 | * Help k and Help c are now different. Help c prints just the | ||
| 910 | name of the function which the specified key invokes. Help k | ||
| 911 | prints the documentation of the function as well. | ||
| 912 | |||
| 913 | * A document of the differences between GNU Emacs and Twenex Emacs | ||
| 914 | now exists. It is called DIFF, in the same directory as this file. | ||
| 915 | |||
| 916 | * C mode can now indent comments better, including multi-line ones. | ||
| 917 | Meta-Control-q now reindents comment lines within the expression | ||
| 918 | being aligned. | ||
| 919 | |||
| 920 | * Insertion of a close-parenthesis now shows the matching open-parenthesis | ||
| 921 | even if it is off screen, by printing the text following it on its line | ||
| 922 | in the minibuffer. | ||
| 923 | |||
| 924 | * A file can now contain a list of local variable values | ||
| 925 | to be in effect when the file is edited. See the file DIFF | ||
| 926 | in the same directory as this file for full details. | ||
| 927 | |||
| 928 | * A function nth is defined. It means the same thing as in Common Lisp. | ||
| 929 | |||
| 930 | * The function install-command has been renamed to set-key. | ||
| 931 | It now takes the key sequence as the first argument | ||
| 932 | and the definition for it as the second argument. | ||
| 933 | Likewise, local-install-command has been renamed to local-set-key. | ||
| 934 | |||
| 935 | Changes in Emacs 1.2 | ||
| 936 | |||
| 937 | * A Lisp single-stepping and debugging facility exists. | ||
| 938 | To cause the debugger to be entered when an error | ||
| 939 | occurs, set the variable debug-on-error non-nil. | ||
| 940 | |||
| 941 | To cause the debugger to be entered whenever function foo | ||
| 942 | is called, do (debug-on-entry 'foo). To cancel this, | ||
| 943 | do (cancel-debug-on-entry 'foo). debug-on-entry does | ||
| 944 | not work for primitives (written in C), only functions | ||
| 945 | written in Lisp. Most standard Emacs commands are in Lisp. | ||
| 946 | |||
| 947 | When the debugger is entered, the selected window shows | ||
| 948 | a buffer called " *Backtrace" which displays a series | ||
| 949 | of stack frames, most recently entered first. For each | ||
| 950 | frame, the function name called is shown, usually followed | ||
| 951 | by the argument values unless arguments are still being | ||
| 952 | calculated. At the beginning of the buffer is a description | ||
| 953 | of why the debugger was entered: function entry, function exit, | ||
| 954 | error, or simply that the user called the function `debug'. | ||
| 955 | |||
| 956 | To exit the debugger and return to top level, type `q'. | ||
| 957 | |||
| 958 | In the debugger, you can evaluate Lisp expressions by | ||
| 959 | typing `e'. This is equivalent to `M-ESC'. | ||
| 960 | |||
| 961 | When the debugger is entered due to an error, that is | ||
| 962 | all you can do. When it is entered due to function entry | ||
| 963 | (such as, requested by debug-on-entry), you have two | ||
| 964 | options: | ||
| 965 | Continue execution and reenter debugger after the | ||
| 966 | completion of the function being entered. Type `c'. | ||
| 967 | Continue execution but enter the debugger before | ||
| 968 | the next subexpression. Type `d'. | ||
| 969 | |||
| 970 | You will see that some stack frames are marked with *. | ||
| 971 | This means the debugger will be entered when those | ||
| 972 | frames exit. You will see the value being returned | ||
| 973 | in the first line of the backtrace buffer. Your options: | ||
| 974 | Continue execution, and return that value. Type `c'. | ||
| 975 | Continue execution, and return a specified value. Type `r'. | ||
| 976 | |||
| 977 | You can mark a frame to enter the debugger on exit | ||
| 978 | with the `b' command, or clear such a mark with `u'. | ||
| 979 | |||
| 980 | * Lisp macros now exist. | ||
| 981 | For example, you can write | ||
| 982 | (defmacro cadr (arg) (list 'car (list 'cdr arg))) | ||
| 983 | and then the expression | ||
| 984 | (cadr foo) | ||
| 985 | will expand into | ||
| 986 | (car (cdr foo)) | ||
| 987 | |||
| 988 | Changes in Emacs 1.1 | ||
| 989 | |||
| 990 | * The initial buffer is now called "scratch" and is in a | ||
| 991 | new major mode, Lisp Interaction mode. This mode is | ||
| 992 | intended for typing Lisp expressions, evaluating them, | ||
| 993 | and having the values printed into the buffer. | ||
| 994 | |||
| 995 | Type Linefeed after a Lisp expression, to evaluate the | ||
| 996 | expression and have its value printed into the buffer, | ||
| 997 | advancing dot. | ||
| 998 | |||
| 999 | The other commands of Lisp mode are available. | ||
| 1000 | |||
| 1001 | * The C-x C-e command for evaluating the Lisp expression | ||
| 1002 | before dot has been changed to print the value in the | ||
| 1003 | minibuffer line rather than insert it in the buffer. | ||
| 1004 | A numeric argument causes the printed value to appear | ||
| 1005 | in the buffer instead. | ||
| 1006 | |||
| 1007 | * In Lisp mode, the command M-C-x evaluates the defun | ||
| 1008 | containing or following dot. The value is printed in | ||
| 1009 | the minibuffer. | ||
| 1010 | |||
| 1011 | * The value of a Lisp expression evaluated using M-ESC | ||
| 1012 | is now printed in the minibuffer. | ||
| 1013 | |||
| 1014 | * M-q now runs fill-paragraph, independent of major mode. | ||
| 1015 | |||
| 1016 | * C-h m now prints documentation on the current buffer's | ||
| 1017 | major mode. What it prints is the documentation of the | ||
| 1018 | major mode name as a function. All major modes have been | ||
| 1019 | equipped with documentation that describes all commands | ||
| 1020 | peculiar to the major mode, for this purpose. | ||
| 1021 | |||
| 1022 | * You can display a Unix manual entry with | ||
| 1023 | the M-x manual-entry command. | ||
| 1024 | |||
| 1025 | * You can run a shell, displaying its output in a buffer, | ||
| 1026 | with the M-x shell command. The Return key sends input | ||
| 1027 | to the subshell. Output is printed inserted automatically | ||
| 1028 | in the buffer. Commands C-c, C-d, C-u, C-w and C-z are redefined | ||
| 1029 | for controlling the subshell and its subjobs. | ||
| 1030 | "cd", "pushd" and "popd" commands are recognized as you | ||
| 1031 | enter them, so that the default directory of the Emacs buffer | ||
| 1032 | always remains the same as that of the subshell. | ||
| 1033 | |||
| 1034 | * C-x $ (that's a real dollar sign) controls line-hiding based | ||
| 1035 | on indentation. With a numeric arg N > 0, it causes all lines | ||
| 1036 | indented by N or more columns to become invisible. | ||
| 1037 | They are, effectively, tacked onto the preceding line, where | ||
| 1038 | they are represented by " ..." on the screen. | ||
| 1039 | (The end of the preceding visible line corresponds to a | ||
| 1040 | screen cursor position before the "...". Anywhere in the | ||
| 1041 | invisible lines that follow appears on the screen as a cursor | ||
| 1042 | position after the "...".) | ||
| 1043 | Currently, all editing commands treat invisible lines just | ||
| 1044 | like visible ones, except for C-n and C-p, which have special | ||
| 1045 | code to count visible lines only. | ||
| 1046 | C-x $ with no argument turns off this mode, which in any case | ||
| 1047 | is remembered separately for each buffer. | ||
| 1048 | |||
| 1049 | * Outline mode is another form of selective display. | ||
| 1050 | It is a major mode invoked with M-x outline-mode. | ||
| 1051 | It is intended for editing files that are structured as | ||
| 1052 | outlines, with heading lines (lines that begin with one | ||
| 1053 | or more asterisks) and text lines (all other lines). | ||
| 1054 | The number of asterisks in a heading line are its level; | ||
| 1055 | the subheadings of a heading line are all following heading | ||
| 1056 | lines at higher levels, until but not including the next | ||
| 1057 | heading line at the same or a lower level, regardless | ||
| 1058 | of intervening text lines. | ||
| 1059 | |||
| 1060 | In outline mode, you have commands to hide (remove from display) | ||
| 1061 | or show the text or subheadings under each heading line | ||
| 1062 | independently. Hidden text or subheadings are invisibly | ||
| 1063 | attached to the end of the preceding heading line, so that | ||
| 1064 | if you kill the hading line and yank it back elsewhere | ||
| 1065 | all the invisible lines accompany it. | ||
| 1066 | |||
| 1067 | All editing commands treat hidden outline-mode lines | ||
| 1068 | as part of the preceding visible line. | ||
| 1069 | |||
| 1070 | * C-x C-z runs save-buffers-kill-emacs | ||
| 1071 | offers to save each file buffer, then exits. | ||
| 1072 | |||
| 1073 | * C-c's function is now called suspend-emacs. | ||
| 1074 | |||
| 1075 | * The command C-x m runs mail, which switches to a buffer *mail* | ||
| 1076 | and lets you compose a message to send. C-x 4 m runs mail in | ||
| 1077 | another window. Type C-z C-s in the mail buffer to send the | ||
| 1078 | message according to what you have entered in the buffer. | ||
| 1079 | |||
| 1080 | You must separate the headers from the message text with | ||
| 1081 | an empty line. | ||
| 1082 | |||
| 1083 | * You can now dired partial directories (specified with names | ||
| 1084 | containing *'s, etc, all processed by the shell). Also, you | ||
| 1085 | can dired more than one directory; dired names the buffer | ||
| 1086 | according to the filespec or directory name. Reinvoking | ||
| 1087 | dired on a directory already direded just switches back to | ||
| 1088 | the same directory used last time; do M-x revert if you want | ||
| 1089 | to read in the current contents of the directory. | ||
| 1090 | |||
| 1091 | C-x d runs dired, and C-x 4 d runs dired in another window. | ||
| 1092 | |||
| 1093 | C-x C-d (list-directory) also allows partial directories now. | ||
| 1094 | |||
| 1095 | Lisp programming changes | ||
| 1096 | |||
| 1097 | * t as an output stream now means "print to the minibuffer". | ||
| 1098 | If there is already text in the minibuffer printed via t | ||
| 1099 | as an output stream, the new text is appended to the old | ||
| 1100 | (or is truncated and lost at the margin). If the minibuffer | ||
| 1101 | contains text put there for some other reason, it is cleared | ||
| 1102 | first. | ||
| 1103 | |||
| 1104 | t is now the top-level value of standard-output. | ||
| 1105 | |||
| 1106 | t as an input stream now means "read via the minibuffer". | ||
| 1107 | The minibuffer is used to read a line of input, with editing, | ||
| 1108 | and this line is then parsed. Any excess not used by `read' | ||
| 1109 | is ignored; each `read' from t reads fresh input. | ||
| 1110 | t is now the top-level value of standard-input. | ||
| 1111 | |||
| 1112 | * A marker may be used as an input stream or an output stream. | ||
| 1113 | The effect is to grab input from where the marker points, | ||
| 1114 | advancing it over the characters read, or to insert output | ||
| 1115 | at the marker and advance it. | ||
| 1116 | |||
| 1117 | * Output from an asynchronous subprocess is now inserted at | ||
| 1118 | the end of the associated buffer, not at the buffer's dot, | ||
| 1119 | and the buffer's mark is set to the end of the inserted output | ||
| 1120 | each time output is inserted. | ||
| 1121 | |||
| 1122 | * (pos-visible-in-window-p POS WINDOW) | ||
| 1123 | returns t if position POS in WINDOW's buffer is in the range | ||
| 1124 | that is being displayed in WINDOW; nil if it is scrolled | ||
| 1125 | vertically out of visibility. | ||
| 1126 | |||
| 1127 | If display in WINDOW is not currently up to date, this function | ||
| 1128 | calculates carefully whether POS would appear if display were | ||
| 1129 | done immediately based on the current (window-start WINDOW). | ||
| 1130 | |||
| 1131 | POS defaults to (dot), and WINDOW to (selected-window). | ||
| 1132 | |||
| 1133 | * Variable buffer-alist replaced by function (buffer-list). | ||
| 1134 | The actual alist of buffers used internally by Emacs is now | ||
| 1135 | no longer accessible, to prevent the user from crashing Emacs | ||
| 1136 | by modifying it. The function buffer-list returns a list | ||
| 1137 | of all existing buffers. Modifying this list cannot hurt anything | ||
| 1138 | as a new list is constructed by each call to buffer-list. | ||
| 1139 | |||
| 1140 | * load now takes an optional third argument NOMSG which, if non-nil, | ||
| 1141 | prevents load from printing a message when it starts and when | ||
| 1142 | it is done. | ||
| 1143 | |||
| 1144 | * byte-recompile-directory is a new function which finds all | ||
| 1145 | the .elc files in a directory, and regenerates each one which | ||
| 1146 | is older than the corresponding .el (Lisp source) file. | ||
| 1147 | |||
| 1148 | ---------------------------------------------------------------------- | ||
| 1149 | Copyright information: | ||
| 1150 | |||
| 1151 | Copyright (C) 1985 Richard M. Stallman | ||
| 1152 | |||
| 1153 | Permission is granted to anyone to make or distribute verbatim copies | ||
| 1154 | of this document as received, in any medium, provided that the | ||
| 1155 | copyright notice and this permission notice are preserved, | ||
| 1156 | thus giving the recipient permission to redistribute in turn. | ||
| 1157 | |||
| 1158 | Permission is granted to distribute modified versions | ||
| 1159 | of this document, or of portions of it, | ||
| 1160 | under the above conditions, provided also that they | ||
| 1161 | carry prominent notices stating who last changed them. | ||
| 1162 | |||
| 1163 | Local variables: | ||
| 1164 | mode: text | ||
| 1165 | end: | ||
| 1166 | |||
| 1167 | arch-tag: c006f958-d769-44c7-a9f4-e2faf070624d | ||
diff --git a/etc/ONEWS.4 b/etc/ONEWS.4 deleted file mode 100644 index f3da0d6e62b..00000000000 --- a/etc/ONEWS.4 +++ /dev/null | |||
| @@ -1,1693 +0,0 @@ | |||
| 1 | GNU Emacs NEWS -- history of user-visible changes. 1992. | ||
| 2 | Copyright (C) 1992 Free Software Foundation, Inc. | ||
| 3 | See the end for copying conditions. | ||
| 4 | |||
| 5 | For older news, see the file ONEWS.3. | ||
| 6 | |||
| 7 | Changes in version 18.58. | ||
| 8 | |||
| 9 | * RMAIL reply now properly parses nested comments in addesses. | ||
| 10 | |||
| 11 | * The "visual bell" feature when used with X windows | ||
| 12 | now flashes only 1/4 of the window's total area. This is because | ||
| 13 | flashing the whole window is too slow on some systems. | ||
| 14 | |||
| 15 | * `call-process' and `call-process-region' now return an indication | ||
| 16 | of the exit status of the subprocess: either a numeric exit code | ||
| 17 | or a string describing the signal which caused termination. | ||
| 18 | |||
| 19 | * It is possible for regular expression matching to overflow the stack | ||
| 20 | of failure points. In the past, such overflow was treated as simple | ||
| 21 | failure to match. Now it causes an error. | ||
| 22 | |||
| 23 | * You can use C-u to end a numeric argument. Thus, type C-u 1 0 0 C-u 1 | ||
| 24 | to insert 100 1's. | ||
| 25 | |||
| 26 | * Emacs now knows how to get resource values from the X server. | ||
| 27 | |||
| 28 | * Job control commands in shell mode work properly on more systems | ||
| 29 | because they now work by "typing" signal characters such as C-c. | ||
| 30 | |||
| 31 | * copy-keymap no longer recursively copies keymaps reached through | ||
| 32 | symbols' function definitions (i.e., those that have names). It does | ||
| 33 | copy nested keymaps that appear directly in the other copied keymaps. | ||
| 34 | |||
| 35 | Changes in version 18.56. | ||
| 36 | |||
| 37 | * C-g should now work to interrupt a running program | ||
| 38 | on all kinds of systems even when using X windows. | ||
| 39 | |||
| 40 | * Quitting is inhibited while a filter or sentinel is running. | ||
| 41 | Those functions can run asynchronously while Emacs is waiting | ||
| 42 | for keyboard input, and if they allow quitting, they | ||
| 43 | make the behavior of C-g unpredictable. | ||
| 44 | |||
| 45 | * Storing text into the X windows cut buffer | ||
| 46 | now clears out any selection. | ||
| 47 | |||
| 48 | * The undo facility is completely rewritten, and now | ||
| 49 | uses Lisp data structures. It can record much more | ||
| 50 | information. You can use the variables undo-threshold | ||
| 51 | and undo-high-threshold to control how much. | ||
| 52 | |||
| 53 | * There is no longer a maximum screen height or width. | ||
| 54 | |||
| 55 | Changes in version 18.52. | ||
| 56 | |||
| 57 | * X windows version 10 is supported under system V. | ||
| 58 | |||
| 59 | * Pop-up menus are now supported with the same Lisp interface in | ||
| 60 | both version 10 and 11 of X windows. | ||
| 61 | |||
| 62 | * C-x 4 a is a new command to edit a change-log entry in another window. | ||
| 63 | |||
| 64 | * The emacs client program now allows an option +NNN to specify the | ||
| 65 | line number to go to in the file whose name follows. Thus, | ||
| 66 | emacsclient foo.c +45 bar.c | ||
| 67 | will find the files `foo.c' and `bar.c', going to line 45 in `bar.c'. | ||
| 68 | |||
| 69 | * Dired allows empty directories to be deleted like files. | ||
| 70 | |||
| 71 | * When the terminal type is used to find a terminal-specific file to | ||
| 72 | run, Emacs now tries the entire terminal type first. If that doesn't | ||
| 73 | yield a file that exists, the last hyphen and what follows it is | ||
| 74 | stripped. If that doesn't yield a file that exists, the previous | ||
| 75 | hyphen is stripped, and so on until all hyphens are gone. For | ||
| 76 | example, if the terminal type is `aaa-48-foo', Emacs will try first | ||
| 77 | `term/aaa-48-foo.el', then `term/aaa-48.el' and finally `term/aaa.el'. | ||
| 78 | |||
| 79 | Underscores now receive the same treatment as hyphens. | ||
| 80 | |||
| 81 | * Texinfo features: @defun, etc. texinfo-show-structure. | ||
| 82 | New template commands. texinfo-format-region. | ||
| 83 | |||
| 84 | * The special "local variable" `eval' is now ignored if you are running | ||
| 85 | as root. | ||
| 86 | |||
| 87 | * New command `c-macro-expand' shows the result of C macro expansion | ||
| 88 | in the region. It works using the C preprocessor, so its results | ||
| 89 | are completely accurate. | ||
| 90 | |||
| 91 | * Errors in trying to auto save now flash error messages for a few seconds. | ||
| 92 | |||
| 93 | * Killing a buffer now sends SIGHUP to the buffer's process. | ||
| 94 | |||
| 95 | * New hooks. | ||
| 96 | |||
| 97 | ** `spell-region' now allows you to filter the text before spelling-checking. | ||
| 98 | If the value of `spell-filter' is non-nil, it is called, with no arguments, | ||
| 99 | looking at a temporary buffer containing a copy of the text to be checked. | ||
| 100 | It can alter the text freely before the spell program sees it. | ||
| 101 | |||
| 102 | ** The variable `lpr-command' now specifies the command to be used when | ||
| 103 | you use the commands to print text (such as M-x print-buffer). | ||
| 104 | |||
| 105 | ** Posting netnews now calls the value of `news-inews-hook' (if not nil) | ||
| 106 | as a function of no arguments before the actual posting. | ||
| 107 | |||
| 108 | ** Rmail now calls the value of `rmail-show-message-hook' (if not nil) | ||
| 109 | as a function of no arguments, each time a new message is selected. | ||
| 110 | |||
| 111 | ** `kill-emacs' calls the value of `kill-emacs-hook' as a function of no args | ||
| 112 | unless Emacs is running in batch mode. | ||
| 113 | |||
| 114 | * New libraries. | ||
| 115 | See the source code of each library for more information. | ||
| 116 | |||
| 117 | ** icon.el: a major mode for editing programs written in Icon. | ||
| 118 | |||
| 119 | ** life.el: a simulator for the cellular automaton "life". Load the | ||
| 120 | library and run M-x life. | ||
| 121 | |||
| 122 | ** doctex.el: a library for converting the Emacs `etc/DOC' file of | ||
| 123 | documentation strings into TeX input. | ||
| 124 | |||
| 125 | ** saveconf.el: a library which records the arrangement of windows and | ||
| 126 | buffers when you exit Emacs, and automatically recreates the same | ||
| 127 | setup the next time you start Emacs. | ||
| 128 | |||
| 129 | ** uncompress.el: a library that automatically uncompresses files | ||
| 130 | when you visit them. | ||
| 131 | |||
| 132 | ** c-fill.el: a mode for editing filled comments in C. | ||
| 133 | |||
| 134 | ** kermit.el: an extended version of shell-mode designed for running kermit. | ||
| 135 | |||
| 136 | ** spook.el: a library for adding some "distract the NSA" keywords to every | ||
| 137 | message you send. | ||
| 138 | |||
| 139 | ** hideif.el: a library for hiding parts of a C program based on preprocessor | ||
| 140 | conditionals. | ||
| 141 | |||
| 142 | ** autoinsert.el: a library to put in some initial text when you visit | ||
| 143 | a nonexistent file. The text used depends on the major mode, and | ||
| 144 | comes from a directory of files created by you. | ||
| 145 | |||
| 146 | * New programming features. | ||
| 147 | |||
| 148 | ** The variable `window-system-version' now contains the version number | ||
| 149 | of the window system you are using (if appropriate). When using X windows, | ||
| 150 | its value is either 10 or 11. | ||
| 151 | |||
| 152 | ** (interactive "N") uses the prefix argument if any; otherwise, it reads | ||
| 153 | a number using the minibuffer. | ||
| 154 | |||
| 155 | ** VMS: there are two new functions `vms-system-info' and `shrink-to-icon'. | ||
| 156 | The former allows you to get many kinds of system status information. | ||
| 157 | See its self-documentation for full details. | ||
| 158 | The second is used with the window system: it iconifies the Emacs window. | ||
| 159 | |||
| 160 | ** VMS: the new function `define-logical-name' allows you to create | ||
| 161 | job-wide logical names. The old function `define-dcl-symbol' has been | ||
| 162 | removed. | ||
| 163 | |||
| 164 | Changes in version 18.50. | ||
| 165 | |||
| 166 | * X windows version 11 is supported. | ||
| 167 | |||
| 168 | Define X11 in config.h if you want X version 11 instead of version 10. | ||
| 169 | |||
| 170 | * The command M-x gdb runs the GDB debugger as an inferior. | ||
| 171 | It asks for the filename of the executable you want to debug. | ||
| 172 | |||
| 173 | GDB runs as an inferior with I/O through an Emacs buffer. All the | ||
| 174 | facilities of Shell mode are available. In addition, each time your | ||
| 175 | program stops, and each time you select a new stack frame, the source | ||
| 176 | code is displayed in another window with an arrow added to the line | ||
| 177 | where the program is executing. | ||
| 178 | |||
| 179 | Special GDB-mode commands include M-s, M-n, M-i, M-u, M-d, and C-c C-f | ||
| 180 | which send the GDB commands `step', `next', `stepi', `up', `down' | ||
| 181 | and `finish'. | ||
| 182 | |||
| 183 | In any source file, the commands C-x SPC tells GDB to set a breakpoint | ||
| 184 | on the current line. | ||
| 185 | |||
| 186 | * M-x calendar displays a three-month calendar. | ||
| 187 | |||
| 188 | * C-u 0 C-x C-s never makes a backup file. | ||
| 189 | |||
| 190 | This is a way you can explicitly request not to make a backup. | ||
| 191 | |||
| 192 | * `term-setup-hook' is for users only. | ||
| 193 | |||
| 194 | Emacs never uses this variable for internal purposes, so you can freely | ||
| 195 | set it in your `.emacs' file to make Emacs do something special after | ||
| 196 | loading any terminal-specific setup file from `lisp/term'. | ||
| 197 | |||
| 198 | * `copy-keymap' now copies recursive submaps. | ||
| 199 | |||
| 200 | * New overlay-arrow feature. | ||
| 201 | |||
| 202 | If you set the variable `overlay-arrow-string' to a string | ||
| 203 | and `overlay-arrow-position' to a marker, that string is displayed on | ||
| 204 | the screen at the position of that marker, hiding whatever text would | ||
| 205 | have appeared there. If that position isn't on the screen, or if | ||
| 206 | the buffer the marker points into isn't displayed, there is no effect. | ||
| 207 | |||
| 208 | * -batch mode can read from the terminal. | ||
| 209 | |||
| 210 | It now works to use `read-char' to do terminal input in a noninteractive | ||
| 211 | Emacs run. End of file causes Emacs to exit. | ||
| 212 | |||
| 213 | * Variables `data-bytes-used' and `data-bytes-free' removed. | ||
| 214 | |||
| 215 | These variables cannot really work because the 24-bit range of an | ||
| 216 | integer in (most ports of) GNU Emacs is not large enough to hold their | ||
| 217 | values on many systems. | ||
| 218 | |||
| 219 | Changes in version 18.45, since version 18.41. | ||
| 220 | |||
| 221 | * C indentation parameter `c-continued-brace-offset'. | ||
| 222 | |||
| 223 | This parameter's value is added to the indentation of any | ||
| 224 | line that is in a continuation context and starts with an open-brace. | ||
| 225 | For example, it applies to the open brace shown here: | ||
| 226 | |||
| 227 | if (x) | ||
| 228 | { | ||
| 229 | |||
| 230 | The default value is zero. | ||
| 231 | |||
| 232 | * Dabbrev expansion (Meta-/) preserves case. | ||
| 233 | |||
| 234 | When you use Meta-/ to search the buffer for an expansion of an | ||
| 235 | abbreviation, if the expansion found is all lower case except perhaps | ||
| 236 | for its first letter, then the case pattern of the abbreviation | ||
| 237 | is carried over to the expansion that replaces it. | ||
| 238 | |||
| 239 | * TeX-mode syntax. | ||
| 240 | |||
| 241 | \ is no longer given "escape character" syntax in TeX mode. It now | ||
| 242 | has the syntax of an ordinary punctuation character. As a result, | ||
| 243 | \[...\] and such like are considered to balance each other. | ||
| 244 | |||
| 245 | * Mail-mode automatic Reply-to field. | ||
| 246 | |||
| 247 | If the variable `mail-default-reply-to' is non-`nil', then each time | ||
| 248 | you start to compose a message, a Reply-to field is inserted with | ||
| 249 | its contents taken from the value of `mail-default-reply-to'. | ||
| 250 | |||
| 251 | * Where is your .emacs file? | ||
| 252 | |||
| 253 | If you run Emacs under `su', so your real and effective uids are | ||
| 254 | different, Emacs uses the home directory associated with the real uid | ||
| 255 | (the name you actually logged in under) to find the .emacs file. | ||
| 256 | |||
| 257 | Otherwise, Emacs uses the environment variable HOME to find the .emacs | ||
| 258 | file. | ||
| 259 | |||
| 260 | The .emacs file is not loaded at all if -batch is specified. | ||
| 261 | |||
| 262 | * Prolog mode is the default for ".pl" files. | ||
| 263 | |||
| 264 | * File names are not case-sensitive on VMS. | ||
| 265 | |||
| 266 | On VMS systems, all file names that you specify are converted to upper | ||
| 267 | case. You can use either upper or lower case indiscriminately. | ||
| 268 | |||
| 269 | * VMS-only function 'define-dcl-symbol'. | ||
| 270 | |||
| 271 | This is a new name for the function formerly called | ||
| 272 | `define-logical-name'. | ||
| 273 | |||
| 274 | Editing Changes in Emacs 18 | ||
| 275 | |||
| 276 | * Additional systems and machines are supported. | ||
| 277 | |||
| 278 | GNU Emacs now runs on Vax VMS. However, many facilities that are normally | ||
| 279 | implemented by running subprocesses do not work yet. This includes listing | ||
| 280 | a directory and sending mail. There are features for running subprocesses | ||
| 281 | but they are incompatible with those on Unix. I hope that some of | ||
| 282 | the VMS users can reimplement these features for VMS (compatibly for | ||
| 283 | the user, if possible). | ||
| 284 | |||
| 285 | VMS wizards are also asked to work on making the subprocess facilities | ||
| 286 | more upward compatible with those on Unix, and also to rewrite their | ||
| 287 | internals to use the same Lisp objects that are used on Unix to | ||
| 288 | represent processes. | ||
| 289 | |||
| 290 | In addition, the TI Nu machine running Unix system V, the AT&T 3b, and | ||
| 291 | the Wicat, Masscomp, Integrated Solutions, Alliant, Amdahl uts, Mips, | ||
| 292 | Altos 3068 and Gould Unix systems are now supported. The IBM PC-RT is | ||
| 293 | supported under 4.2, but not yet under system V. The GEC 93 is close | ||
| 294 | to working. The port for the Elxsi is partly merged. See the file | ||
| 295 | MACHINES for full status information and machine-specific installation | ||
| 296 | advice. | ||
| 297 | |||
| 298 | * Searching is faster. | ||
| 299 | |||
| 300 | Forward search for a text string, or for a regexp that is equivalent | ||
| 301 | to a text string, is now several times faster. Motion by lines and | ||
| 302 | counting lines is also faster. | ||
| 303 | |||
| 304 | * Memory usage improvements. | ||
| 305 | |||
| 306 | It is no longer possible to run out of memory during garbage | ||
| 307 | collection. As a result, running out of memory is never fatal. This | ||
| 308 | is due to a new garbage collection algorithm which compactifies | ||
| 309 | strings in place rather than copying them. Another consequence of the | ||
| 310 | change is a reduction in total memory usage and a slight increase in | ||
| 311 | garbage collection speed. | ||
| 312 | |||
| 313 | * Display changes. | ||
| 314 | |||
| 315 | ** Editing above top of screen. | ||
| 316 | |||
| 317 | When you delete or kill or alter text that reaches to the top of the | ||
| 318 | screen or above it, so that display would start in the middle of a | ||
| 319 | line, Emacs will usually attempt to scroll the text so that display | ||
| 320 | starts at the beginning of a line again. | ||
| 321 | |||
| 322 | ** Yanking in the minibuffer. | ||
| 323 | |||
| 324 | The message "Mark Set" is no longer printed when the minibuffer is | ||
| 325 | active. This is convenient with many commands, including C-y, that | ||
| 326 | normally print such a message. | ||
| 327 | |||
| 328 | ** Cursor appears in last line during y-or-n questions. | ||
| 329 | |||
| 330 | Questions that want a `y' or `n' answer now move the cursor | ||
| 331 | to the last line, following the question. | ||
| 332 | |||
| 333 | * Library loading changes. | ||
| 334 | |||
| 335 | `load' now considers all possible suffixes (`.elc', `.el' and none) | ||
| 336 | for each directory in `load-path' before going on to the next directory. | ||
| 337 | It now accepts an optional fourth argument which, if non-nil, says to | ||
| 338 | use no suffixes; then the file name must be given in full. The search | ||
| 339 | of the directories in `load-path' goes on as usual in this case, but | ||
| 340 | it too can be prevented by passing an absolute file name. | ||
| 341 | |||
| 342 | The value of `load-path' no longer by default includes nil (meaning to | ||
| 343 | look in the current default directory). The idea is that `load' should | ||
| 344 | be used to search the path only for libraries to be found in the standard | ||
| 345 | places. If you want to override system libraries with your own, place | ||
| 346 | your own libraries in one special directory and add that directory to the | ||
| 347 | front of `load-path'. | ||
| 348 | |||
| 349 | The function `load' is no longer a command; that is to say, `M-x load' | ||
| 350 | is no longer allowed. Instead, there are two commands for loading files. | ||
| 351 | `M-x load-library' is equivalent to the old meaning of `M-x load'. | ||
| 352 | `M-x load-file' reads a file name with completion and defaulting | ||
| 353 | and then loads exactly that file, with no searching and no suffixes. | ||
| 354 | |||
| 355 | * Emulation of other editors. | ||
| 356 | |||
| 357 | ** `edt-emulation-on' starts emulating DEC's EDT editor. | ||
| 358 | |||
| 359 | Do `edt-emulation-off' to return Emacs to normal. | ||
| 360 | |||
| 361 | ** `vi-mode' and `vip-mode' starts emulating vi. | ||
| 362 | |||
| 363 | These are two different vi emulations provided by GNU Emacs users. | ||
| 364 | We are interested in feedback as to which emulation is preferable. | ||
| 365 | |||
| 366 | See the documentation and source code for these functions | ||
| 367 | for more information. | ||
| 368 | |||
| 369 | ** `set-gosmacs-bindings' emulates Gosling Emacs. | ||
| 370 | |||
| 371 | This command changes many global bindings to resemble those of | ||
| 372 | Gosling Emacs. The previous bindings are saved and can be restored using | ||
| 373 | `set-gnu-bindings'. | ||
| 374 | |||
| 375 | * Emulation of a display terminal. | ||
| 376 | |||
| 377 | Within Emacs it is now possible to run programs (such as emacs or | ||
| 378 | supdup) which expect to do output to a visual display terminal. | ||
| 379 | |||
| 380 | See the function `terminal-emulator' for more information. | ||
| 381 | |||
| 382 | * New support for keypads and function keys. | ||
| 383 | |||
| 384 | There is now a first attempt at terminal-independent support for | ||
| 385 | keypad and function keys. | ||
| 386 | |||
| 387 | Emacs now defines a standard set of key-names for function and keypad | ||
| 388 | keys, and provides standard hooks for defining them. Most of the | ||
| 389 | standard key-names have default definitions built into Emacs; you can | ||
| 390 | override these in a terminal-independent manner. The default definitions | ||
| 391 | and the conventions for redefining them are in the file `lisp/keypad.el'. | ||
| 392 | |||
| 393 | These keys on the terminal normally work by sending sequences of | ||
| 394 | characters starting with ESC. The exact sequences used vary from | ||
| 395 | terminal to terminal. Emacs interprets them in two stages: | ||
| 396 | in the first stage, terminal-dependent sequences are mapped into | ||
| 397 | the standard key-names; then second stage maps the standard key-names | ||
| 398 | into their definitions in a terminal-independent fashion. | ||
| 399 | |||
| 400 | The terminal-specific file `term/$TERM.el' now is responsible only for | ||
| 401 | establishing the mapping from the terminal's escape sequences into | ||
| 402 | standard key-names. It no longer knows what Emacs commands are | ||
| 403 | assigned to the standard key-names. | ||
| 404 | |||
| 405 | One other change in terminal-specific files: if the value of the TERM | ||
| 406 | variable contains a hyphen, only the part before the first hyphen is | ||
| 407 | used in forming the name of the terminal-specific file. Thus, for | ||
| 408 | terminal type `aaa-48', the file loaded is now `term/aaa.el' rather | ||
| 409 | than `term/aaa-48.el'. | ||
| 410 | |||
| 411 | * New startup command line options. | ||
| 412 | |||
| 413 | `-i FILE' or `-insert FILE' in the command line to Emacs tells Emacs to | ||
| 414 | insert the contents of FILE into the current buffer at that point in | ||
| 415 | command line processing. This is like using the command M-x insert-file. | ||
| 416 | |||
| 417 | `-funcall', `-load', `-user' and `-no-init-file' are new synonyms for | ||
| 418 | `-f', `-l', `-u' and `-q'. | ||
| 419 | |||
| 420 | `-nw' means don't use a window system. If you are using a terminal | ||
| 421 | emulator on the X window system and you want to run Emacs to work through | ||
| 422 | the terminal emulator instead of working directly with the window system, | ||
| 423 | use this switch. | ||
| 424 | |||
| 425 | * Buffer-sorting commands. | ||
| 426 | |||
| 427 | Various M-x commands whose names start with `sort-' sort parts of | ||
| 428 | the region: | ||
| 429 | |||
| 430 | sort-lines divides the region into lines and sorts them alphabetically. | ||
| 431 | sort-pages divides into pages and sorts them alphabetically. | ||
| 432 | sort-paragraphs divides into paragraphs and sorts them alphabetically. | ||
| 433 | sort-fields divides into lines and sorts them alphabetically | ||
| 434 | according to one field in the line. | ||
| 435 | The numeric argument specifies which field (counting | ||
| 436 | from field 1 at the beginning of the line). Fields in a line | ||
| 437 | are separated by whitespace. | ||
| 438 | sort-numeric-fields | ||
| 439 | is similar but converts the specified fields to numbers | ||
| 440 | and sorts them numerically. | ||
| 441 | sort-columns divides into lines and sorts them according to the contents | ||
| 442 | of a specified range of columns. | ||
| 443 | |||
| 444 | Refer to the self-documentation of these commands for full usage information. | ||
| 445 | |||
| 446 | * Changes in various commands. | ||
| 447 | |||
| 448 | ** `occur' output now serves as a menu. `occur-menu' command deleted. | ||
| 449 | |||
| 450 | `M-x occur' now allows you to move quickly to any of the occurrences | ||
| 451 | listed. Select the `*Occur*' buffer that contains the output of `occur', | ||
| 452 | move point to the occurrence you want, and type C-c C-c. | ||
| 453 | This will move point to the same occurrence in the buffer that the | ||
| 454 | occurrences were found in. | ||
| 455 | |||
| 456 | The command `occur-menu' is thus obsolete, and has been deleted. | ||
| 457 | |||
| 458 | One way to get a list of matching lines without line numbers is to | ||
| 459 | copy the text to another buffer and use the command `keep-lines'. | ||
| 460 | |||
| 461 | ** Incremental search changes. | ||
| 462 | |||
| 463 | Ordinary and regexp incremental searches now have distinct default | ||
| 464 | search strings. Thus, regexp searches recall only previous regexp | ||
| 465 | searches. | ||
| 466 | |||
| 467 | If you exit an incremental search when the search string is empty, | ||
| 468 | the old default search string is kept. The default does not become | ||
| 469 | empty. | ||
| 470 | |||
| 471 | Reversing the direction of an incremental search with C-s or C-r | ||
| 472 | when the search string is empty now does not get the default search | ||
| 473 | string. It leaves the search string empty. A second C-s or C-r | ||
| 474 | will get the default search string. As a result, you can do a reverse | ||
| 475 | incremental regexp search with C-M-s C-r. | ||
| 476 | |||
| 477 | If you add a `*', `?' or `\|' to an incremental search regexp, | ||
| 478 | point will back up if that is appropriate. For example, if | ||
| 479 | you have searched for `ab' and add a `*', point moves to the | ||
| 480 | first match for `ab*', which may be before the match for `ab' | ||
| 481 | that was previously found. | ||
| 482 | |||
| 483 | If an incremental search is failing and you ask to repeat it, | ||
| 484 | it will start again from the beginning of the buffer (or the end, | ||
| 485 | if it is a backward search). | ||
| 486 | |||
| 487 | The search-controlling parameters `isearch-slow-speed' and | ||
| 488 | `isearch-slow-window-lines' have now been renamed to start with | ||
| 489 | `search' instead of `isearch'. Now all the parameters' names start | ||
| 490 | with `search'. | ||
| 491 | |||
| 492 | If `search-slow-window-lines' is negative, the slow search window | ||
| 493 | is put at the top of the screen, and the absolute value or the | ||
| 494 | negative number specifies the height of it. | ||
| 495 | |||
| 496 | ** Undo changes | ||
| 497 | |||
| 498 | The undo command now will mark the buffer as unmodified only when it is | ||
| 499 | identical to the contents of the visited file. | ||
| 500 | |||
| 501 | ** C-M-v in minibuffer. | ||
| 502 | |||
| 503 | If while in the minibuffer you request help in a way that uses a | ||
| 504 | window to display something, then until you exit the minibuffer C-M-v | ||
| 505 | in the minibuffer window scrolls the window of help. | ||
| 506 | |||
| 507 | For example, if you request a list of possible completions, C-M-v can | ||
| 508 | be used reliably to scroll the completion list. | ||
| 509 | |||
| 510 | ** M-TAB command. | ||
| 511 | |||
| 512 | Meta-TAB performs completion on the Emacs Lisp symbol names. The sexp | ||
| 513 | in the buffer before point is compared against all existing nontrivial | ||
| 514 | Lisp symbols and completed as far as is uniquely determined by them. | ||
| 515 | Nontrivial symbols are those with either function definitions, values | ||
| 516 | or properties. | ||
| 517 | |||
| 518 | If there are multiple possibilities for the very next character, a | ||
| 519 | list of possible completions is displayed. | ||
| 520 | |||
| 521 | ** Dynamic abbreviation package. | ||
| 522 | |||
| 523 | The new command Meta-/ expands an abbreviation in the buffer before point | ||
| 524 | by searching the buffer for words that start with the abbreviation. | ||
| 525 | |||
| 526 | ** Changes in saving kbd macros. | ||
| 527 | |||
| 528 | The commands `write-kbd-macro' and `append-kbd-macro' have been | ||
| 529 | deleted. The way to save a keyboard macro is to use the new command | ||
| 530 | `insert-kbd-macro', which inserts Lisp code to define the macro as | ||
| 531 | it is currently defined into the buffer before point. Visit a Lisp | ||
| 532 | file such as your Emacs init file `~/.emacs', insert the macro | ||
| 533 | definition (perhaps deleting an old definition for the same macro) | ||
| 534 | and then save the file. | ||
| 535 | |||
| 536 | ** C-x ' command. | ||
| 537 | |||
| 538 | The new command C-x ' (expand-abbrev) expands the word before point as | ||
| 539 | an abbrev, even if abbrev-mode is not turned on. | ||
| 540 | |||
| 541 | ** Sending to inferior Lisp. | ||
| 542 | |||
| 543 | The command C-M-x in Lisp mode, which sends the current defun to | ||
| 544 | an inferior Lisp process, now works by writing the text into a temporary | ||
| 545 | file and actually sending only a `load'-form to load the file. | ||
| 546 | As a result, it avoids the Unix bugs that used to strike when the | ||
| 547 | text was above a certain length. | ||
| 548 | |||
| 549 | With a prefix argument, this command now makes the inferior Lisp buffer | ||
| 550 | appear on the screen and scrolls it so that the bottom is showing. | ||
| 551 | |||
| 552 | Two variables `inferior-lisp-load-command' and `inferior-lisp-prompt', | ||
| 553 | exist to customize these feature for different Lisp implementations. | ||
| 554 | |||
| 555 | ** C-x n p now disabled. | ||
| 556 | |||
| 557 | The command C-x n p, a nonrecomended command which narrows to the current | ||
| 558 | page, is now initially disabled like C-x n n. | ||
| 559 | |||
| 560 | * Dealing with files. | ||
| 561 | |||
| 562 | ** C-x C-v generalized | ||
| 563 | |||
| 564 | This command is now allowed even if the current buffer is not visiting | ||
| 565 | a file. As usual, it kills the current buffer and replaces it with a | ||
| 566 | newly found file. | ||
| 567 | |||
| 568 | ** M-x recover-file improved; auto save file names changed. | ||
| 569 | |||
| 570 | M-x recover-file now checks whether the last auto-save file is more | ||
| 571 | recent than the real visited file before offering to read in the | ||
| 572 | auto-save file. If the auto-save file is newer, a directory listing | ||
| 573 | containing the two files is displayed while you are asked whether you | ||
| 574 | want the auto save file. | ||
| 575 | |||
| 576 | Visiting a file also makes this check. If the auto-save file is more recent, | ||
| 577 | a message is printed suggesting that you consider using M-x recover file. | ||
| 578 | |||
| 579 | Auto save file names now by default have a `#' at the end as well | ||
| 580 | as at the beginning. This is so that `*.c' in a shell command | ||
| 581 | will never match auto save files. | ||
| 582 | |||
| 583 | On VMS, auto save file names are made by appending `_$' at the front | ||
| 584 | and `$' at the end. | ||
| 585 | |||
| 586 | When you change the visited file name of a buffer, the auto save file | ||
| 587 | is now renamed to belong to the new visited file name. | ||
| 588 | |||
| 589 | You can customize the way auto save file names are made by redefining | ||
| 590 | the two functions `make-auto-save-file-name' and `auto-save-file-name-p', | ||
| 591 | both of which are defined in `files.el'. | ||
| 592 | |||
| 593 | ** Modifying a buffer whose file is changed on disk is detected instantly. | ||
| 594 | |||
| 595 | On systems where clash detection (locking of files being edited) is | ||
| 596 | implemented, Emacs also checks the first time you modify a buffer | ||
| 597 | whether the file has changed on disk since it was last visited or saved. | ||
| 598 | If it has, you are asked to confirm that you want to change the buffer. | ||
| 599 | |||
| 600 | ** Exiting Emacs offers to save `*mail*'. | ||
| 601 | |||
| 602 | Emacs can now know about buffers that it should offer to save on exit | ||
| 603 | even though they are not visiting files. This is done for any buffer | ||
| 604 | which has a non-nil local value of `buffer-offer-save'. By default, | ||
| 605 | Mail mode provides such a local value. | ||
| 606 | |||
| 607 | ** Backup file changes. | ||
| 608 | |||
| 609 | If a backup file cannot be written in the directory of the visited file | ||
| 610 | due to fascist file protection, a backup file is now written in your home | ||
| 611 | directory as `~/%backup%~'. Only one such file is made, ever, so only | ||
| 612 | the most recently made such backup is available. | ||
| 613 | |||
| 614 | When backup files are made by copying, the last-modification time of the | ||
| 615 | original file is now preserved in the backup copy. | ||
| 616 | |||
| 617 | ** Visiting remote files. | ||
| 618 | |||
| 619 | On an internet host, you can now visit and save files on any other | ||
| 620 | internet host directly from Emacs with the commands M-x ftp-find-file | ||
| 621 | and M-x ftp-write-file. Specify an argument of the form HOST:FILENAME. | ||
| 622 | Since standard internet FTP is used, the other host may be any kind | ||
| 623 | of machine and is not required to have any special facilities. | ||
| 624 | |||
| 625 | The first time any one remote host is accessed, you will be asked to | ||
| 626 | give the user name and password for use on that host. FTP is reinvoked | ||
| 627 | each time you ask to use it, but previously specified user names and | ||
| 628 | passwords are remembered automatically. | ||
| 629 | |||
| 630 | ** Dired `g' command. | ||
| 631 | |||
| 632 | `g' in Dired mode is equivalent to M-x revert-buffer; it causes the | ||
| 633 | current contents of the same directory to be read in. | ||
| 634 | |||
| 635 | * Changes in major modes. | ||
| 636 | |||
| 637 | ** C mode indentation change. | ||
| 638 | |||
| 639 | The binding of Linefeed is no longer changed by C mode. It once again | ||
| 640 | has its normal meaning, which is to insert a newline and then indent | ||
| 641 | afterward. | ||
| 642 | |||
| 643 | The old definition did one additional thing: it reindented the line | ||
| 644 | before the new newline. This has been removed because it made the | ||
| 645 | command twice as slow. The only time it was really useful was after the | ||
| 646 | insertion of an `else', since the fact of starting with `else' may change | ||
| 647 | the way that line is indented. Now you will have to type TAB again | ||
| 648 | yourself to reindent the `else' properly. | ||
| 649 | |||
| 650 | If the variable `c-tab-always-indent' is set to `nil', the TAB command | ||
| 651 | in C mode, with no argument, will just insert a tab character if there | ||
| 652 | is non-whitespace preceding point on the current line. Giving it a | ||
| 653 | prefix argument will force reindentation of the line (as well as | ||
| 654 | of the compound statement that begins after point, if any). | ||
| 655 | |||
| 656 | ** Fortran mode now exists. | ||
| 657 | |||
| 658 | This mode provides commands for motion and indentation of Fortran code, | ||
| 659 | plus built-in abbrevs for Fortran keywords. For details, see the manual | ||
| 660 | or the on-line documentation of the command `fortran-mode'. | ||
| 661 | |||
| 662 | ** Scribe mode now exists. | ||
| 663 | |||
| 664 | This mode does something useful for editing files of Scribe input. | ||
| 665 | It is used automatically for files with names ending in ".mss". | ||
| 666 | |||
| 667 | ** Modula2 and Prolog modes now exist. | ||
| 668 | |||
| 669 | These modes are for editing programs in the languages of the same names. | ||
| 670 | They can be selected with M-x modula-2-mode and M-x prolog-mode. | ||
| 671 | |||
| 672 | ** Telnet mode changes. | ||
| 673 | |||
| 674 | The telnet mode special commands have now been assigned to C-c keys. | ||
| 675 | Most of them are the same as in Shell mode. | ||
| 676 | |||
| 677 | ** Picture mode changes. | ||
| 678 | |||
| 679 | The special picture-mode commands to specify the direction of cursor | ||
| 680 | motion after insertion have been moved to C-c keys. The commands to | ||
| 681 | specify diagonal motion were already C-c keys; they are unchanged. | ||
| 682 | The keys to specify horizontal or vertical motion are now | ||
| 683 | C-c < (left), C-c > (right), C-c ^ (up) and C-c . (down). | ||
| 684 | |||
| 685 | ** Nroff mode comments. | ||
| 686 | |||
| 687 | Comments are now supported in Nroff mode. The standard comment commands | ||
| 688 | such as M-; and C-x ; know how to insert, align and delete comments | ||
| 689 | that start with backslash-doublequote. | ||
| 690 | |||
| 691 | ** LaTeX mode. | ||
| 692 | |||
| 693 | LaTeX mode now exists. Use M-x latex-mode to select this mode, and | ||
| 694 | M-x plain-tex-mode to select the previously existing mode for Plain | ||
| 695 | TeX. M-x tex-mode attempts to examine the contents of the buffer and | ||
| 696 | choose between latex-mode and plain-tex-mode accordingly; if the | ||
| 697 | buffer is empty or it cannot tell, the variable `TeX-default-mode' | ||
| 698 | controls the choice. Its value should be the symbol for the mode to | ||
| 699 | be used. | ||
| 700 | |||
| 701 | The facilities for running TeX on all or part of the buffer | ||
| 702 | work with LaTeX as well. | ||
| 703 | |||
| 704 | Some new commands available in both modes: | ||
| 705 | |||
| 706 | C-c C-l recenter the window showing the TeX output buffer | ||
| 707 | so most recent line of output can be seen. | ||
| 708 | C-c C-k kill the TeX subprocess. | ||
| 709 | C-c C-q show the printer queue. | ||
| 710 | C-c C-f close a block (appropriate for LaTeX only). | ||
| 711 | If the current line contains a \begin{...}, | ||
| 712 | this inserts an \end{...} on the following line | ||
| 713 | and puts point on a blank line between them. | ||
| 714 | |||
| 715 | ** Outline mode changes. | ||
| 716 | |||
| 717 | Invisible lines in outline mode are now indicated by `...' at the | ||
| 718 | end of the previous visible line. | ||
| 719 | |||
| 720 | The special outline heading motion commands are now all on C-c keys. | ||
| 721 | A few new ones have been added. Here is a full list: | ||
| 722 | |||
| 723 | C-c C-n Move to next visible heading (formerly M-}) | ||
| 724 | C-c C-p Move to previous visible heading (formerly M-{) | ||
| 725 | C-c C-f Move to next visible heading at the same level. | ||
| 726 | Thus, if point is on a level-2 heading line, | ||
| 727 | this command moves to the next visible level-2 heading. | ||
| 728 | C-c C-b Move to previous visible heading at the same level. | ||
| 729 | C-c C-u Move up to previous visible heading at a higher level. | ||
| 730 | |||
| 731 | The variable `outline-regexp' now controls recognition of heading lines. | ||
| 732 | Any line whose beginning matches this regexp is a heading line. | ||
| 733 | The depth in outline structure is determined by the length of | ||
| 734 | the string that matches. | ||
| 735 | |||
| 736 | A line starting with a ^L (formfeed) is now by default considered | ||
| 737 | a header line. | ||
| 738 | |||
| 739 | * Mail reading and sending. | ||
| 740 | |||
| 741 | ** MH-E changes. | ||
| 742 | |||
| 743 | MH-E has been extensively modified and improved since the v17 release. | ||
| 744 | It contains many new features, including commands to: extracted failed | ||
| 745 | messages, kill a draft message, undo changes to a mail folder, monitor | ||
| 746 | delivery of a letter, print multiple messages, page digests backwards, | ||
| 747 | insert signatures, and burst digests. Also, many commands have been | ||
| 748 | made to able to deal with named sequences of messages, instead of | ||
| 749 | single messages. MH-E also has had numerous bugs fixed and commands | ||
| 750 | made to run faster. Furthermore, its keybindings have been changed to | ||
| 751 | be compatible with Rmail and the rest of GNU Emacs. | ||
| 752 | |||
| 753 | ** Mail mode changes. | ||
| 754 | |||
| 755 | The C-c commands of mail mode have been rearranged: | ||
| 756 | |||
| 757 | C-c s, C-c c, C-c t and C-c b (move point to various header fields) | ||
| 758 | have been reassigned as C-c C-f C-s, C-c C-f C-c, C-c C-f C-t and C-c | ||
| 759 | C-f C-b. C-c C-f is for "field". | ||
| 760 | |||
| 761 | C-c y, C-c w and C-c q have been changed to C-c C-y, C-c C-w and C-c C-q. | ||
| 762 | |||
| 763 | Thus, C-c LETTER is always unassigned. | ||
| 764 | |||
| 765 | ** Rmail C-r command changed to w. | ||
| 766 | |||
| 767 | The Rmail command to edit the current message is now `w'. This change | ||
| 768 | has been made because people frequently type C-r while in Rmail hoping | ||
| 769 | to do a reverse incremental search. That now works. | ||
| 770 | |||
| 771 | * Rnews changes. | ||
| 772 | |||
| 773 | ** Caesar rotation added. | ||
| 774 | |||
| 775 | The function news-caesar-buffer-body performs the rot13 code on the | ||
| 776 | body of a news message. You can also specify the number to rotate by, | ||
| 777 | as a prefix argument. The function is bound to C-c C-r in both | ||
| 778 | News mode and News Reply mode. | ||
| 779 | |||
| 780 | ** rmail-output command added. | ||
| 781 | |||
| 782 | The C-o command has been bound to rmail-output in news-mode. | ||
| 783 | This allows one to append an article to a file which is in either Unix | ||
| 784 | mail or RMAIL format. | ||
| 785 | |||
| 786 | ** news-reply-mode changes. | ||
| 787 | |||
| 788 | The C-c commands of news reply mode have been rearranged and changed, | ||
| 789 | so that C-c LETTER is always unassigned: | ||
| 790 | |||
| 791 | C-c y, C-c w and C-c q have been changed to C-c C-y, C-c C-w and C-c C-q. | ||
| 792 | |||
| 793 | C-c c, C-c t, and C-c b (move to various mail header fields) have been | ||
| 794 | deleted (they make no sense for posting and replying to USENET). | ||
| 795 | |||
| 796 | C-c s (move to Subject: header field) has been reassigned as C-c C-f | ||
| 797 | C-s. C-c C-f is for "field". Several additional move to news header | ||
| 798 | field commands have been added. | ||
| 799 | |||
| 800 | The local news-reply-mode bindings now look like this: | ||
| 801 | |||
| 802 | C-c C-s news-inews (post the message) C-c C-c news-inews | ||
| 803 | C-c C-f move to a header field (and create it if there isn't): | ||
| 804 | C-c C-f C-n move to Newsgroups: C-c C-f C-s move to Subj: | ||
| 805 | C-c C-f C-f move to Followup-To: C-c C-f C-k move to Keywords: | ||
| 806 | C-c C-f C-d move to Distribution: C-c C-f C-a move to Summary: | ||
| 807 | C-c C-y news-reply-yank-original (insert current message, in NEWS). | ||
| 808 | C-c C-q mail-fill-yanked-message (fill what was yanked). | ||
| 809 | C-c C-r caesar rotate all letters by 13 places in the article's body (rot13). | ||
| 810 | |||
| 811 | * Changes in tags handling. | ||
| 812 | |||
| 813 | ** M-. (`find-tag') and similar commands now look first for an exact | ||
| 814 | match in the tags table, and try substring matches only afterward. | ||
| 815 | |||
| 816 | ** The new command `find-tag-regexp' visits successively the tags that | ||
| 817 | match a specified regular expression. | ||
| 818 | |||
| 819 | ** You can now use more than one tags table. Using `visit-tags-table' | ||
| 820 | to load a new tags table does not discard the other tables previously | ||
| 821 | loaded. The other tags commands use all the tags tables that are loaded; | ||
| 822 | the first tags table used is the one that mentions the current visited file. | ||
| 823 | |||
| 824 | ** Tags tables can now be told to "include" other tags tables. This means | ||
| 825 | the tags table gives the file names of other tags tables. Tags command | ||
| 826 | then search included tags tables after the including table (but before any | ||
| 827 | other tags tables you have loaded). Included tags tables can make it much | ||
| 828 | easier and more efficient to maintain a tags table for a large package with | ||
| 829 | many subdirectories--there is one tags table for each subdirectory, and a | ||
| 830 | master tags table that includes each subdirectory table. You use `-i' | ||
| 831 | options to `etags' when creating the tags table to give the file names of | ||
| 832 | the included tables. | ||
| 833 | |||
| 834 | ** You can now use the tags table for completion of names during | ||
| 835 | ordinary editing. The command M-TAB (except in Emacs Lisp mode) | ||
| 836 | completes the identifier in the buffer before point, using the set of | ||
| 837 | all tags as the list of possible completions. | ||
| 838 | |||
| 839 | ** `tags-query-replace' and `tags-search' changes. | ||
| 840 | |||
| 841 | These functions no longer permanently create buffers for files that | ||
| 842 | are searched but that do not contain any matches for the search | ||
| 843 | pattern. | ||
| 844 | |||
| 845 | * Existing Emacs usable as a server. | ||
| 846 | |||
| 847 | Programs such as mailers that invoke "the editor" as an inferior | ||
| 848 | to edit some text can now be told to use an existing Emacs process | ||
| 849 | instead of creating a new editor. | ||
| 850 | |||
| 851 | To do this, you must have an Emacs process running and capable of | ||
| 852 | doing terminal I/O at the time you want to invoke it. This means that | ||
| 853 | either you are using a window system and give Emacs a separate window | ||
| 854 | or you run the other programs as inferiors of Emacs (such as, using | ||
| 855 | M-x shell). | ||
| 856 | |||
| 857 | First prepare the existing Emacs process by loading the `server' | ||
| 858 | library and executing M-x server-start. (Your .emacs can do this | ||
| 859 | automatically.) | ||
| 860 | |||
| 861 | Now tell the other programs to use, as "the editor", the Emacs client | ||
| 862 | program (etc/emacsclient, located in the same directory as this file). | ||
| 863 | This can be done by setting the environment variable EDITOR. | ||
| 864 | |||
| 865 | When another program invokes the emacsclient as "the editor", the | ||
| 866 | client actually transfers the file names to be edited to the existing | ||
| 867 | Emacs, which automatically visits the files. | ||
| 868 | |||
| 869 | When you are done editing a buffer for a client, do C-x # (server-edit). | ||
| 870 | This marks that buffer as done, and selects the next buffer that the client | ||
| 871 | asked for. When all the buffers requested by a client are marked in this | ||
| 872 | way, Emacs tells the client program to exit, so that the program that | ||
| 873 | invoked "the editor" will resume execution. | ||
| 874 | |||
| 875 | You can only have one server Emacs at a time, but multiple client programs | ||
| 876 | can put in requests at the same time. | ||
| 877 | |||
| 878 | The client/server work only on Berkeley Unix, since they use the Berkeley | ||
| 879 | sockets mechanism for their communication. | ||
| 880 | |||
| 881 | Changes in Lisp programming in Emacs version 18. | ||
| 882 | |||
| 883 | * Init file changes. | ||
| 884 | |||
| 885 | ** Suffixes no longer accepted on `.emacs'. | ||
| 886 | |||
| 887 | Emacs will no longer load a file named `.emacs.el' or `emacs.elc' | ||
| 888 | in place of `.emacs'. This is so that it will take less time to | ||
| 889 | find `.emacs'. If you want to compile your init file, give it another | ||
| 890 | name and make `.emacs' a link to the `.elc' file, or make it contain | ||
| 891 | a call to `load' to load the `.elc' file. | ||
| 892 | |||
| 893 | ** `default-profile' renamed to `default', and loaded after `.emacs'. | ||
| 894 | |||
| 895 | It used to be the case that the file `default-profile' was loaded if | ||
| 896 | and only if `.emacs' was not found. | ||
| 897 | |||
| 898 | Now the name `default-profile' is not used at all. Instead, a library | ||
| 899 | named `default' is loaded after the `.emacs' file. `default' is loaded | ||
| 900 | whether the `.emacs' file exists or not. However, loading of `default' | ||
| 901 | can be prevented if the `.emacs' file sets `inhibit-default-init' to non-nil. | ||
| 902 | |||
| 903 | In fact, you would call the default file `default.el' and probably would | ||
| 904 | byte-compile it to speed execution. | ||
| 905 | |||
| 906 | Note that for most purposes you are better off using a `site-init' library | ||
| 907 | since that will be loaded before the runnable Emacs is dumped. By using | ||
| 908 | a `site-init' library, you avoid taking up time each time Emacs is started. | ||
| 909 | |||
| 910 | ** inhibit-command-line has been eliminated. | ||
| 911 | |||
| 912 | This variable used to exist for .emacs files to set. It has been | ||
| 913 | eliminated because you can get the same effect by setting | ||
| 914 | command-line-args to nil and setting inhibit-startup-message to t. | ||
| 915 | |||
| 916 | * `apply' is more general. | ||
| 917 | |||
| 918 | `apply' now accepts any number of arguments. The first one is a function; | ||
| 919 | the rest are individual arguments to pass to that function, except for the | ||
| 920 | last, which is a list of arguments to pass. | ||
| 921 | |||
| 922 | Previously, `apply' required exactly two arguments. Its old behavior | ||
| 923 | follows as a special case of the new definition. | ||
| 924 | |||
| 925 | * New code-letter for `interactive'. | ||
| 926 | |||
| 927 | (interactive "NFoo: ") is like (interactive "nFoo: ") in reading | ||
| 928 | a number using the minibuffer to serve as the argument; however, | ||
| 929 | if a prefix argument was specified, it uses the prefix argument | ||
| 930 | value as the argument, and does not use the minibuffer at all. | ||
| 931 | |||
| 932 | This is used by the `goto-line' and `goto-char' commands. | ||
| 933 | |||
| 934 | * Semantics of variables. | ||
| 935 | |||
| 936 | ** Built-in per-buffer variables improved. | ||
| 937 | |||
| 938 | Several built-in variables which in the past had a different value in | ||
| 939 | each buffer now behave exactly as if `make-variable-buffer-local' had | ||
| 940 | been done to them. | ||
| 941 | |||
| 942 | These variables are `tab-width', `ctl-arrow', `truncate-lines', | ||
| 943 | `fill-column', `left-margin', `mode-line-format', `abbrev-mode', | ||
| 944 | `overwrite-mode', `case-fold-search', `auto-fill-hook', | ||
| 945 | `selective-display', `selective-display-ellipses'. | ||
| 946 | |||
| 947 | To be precise, each variable has a default value which shows through | ||
| 948 | in most buffers and can be accessed with `default-value' and set with | ||
| 949 | `set-default'. Setting the variable with `setq' makes the variable | ||
| 950 | local to the current buffer. Changing the default value has retroactive | ||
| 951 | effect on all buffers in which the variable is not local. | ||
| 952 | |||
| 953 | The variables `default-case-fold-search', etc., are now obsolete. | ||
| 954 | They now refer to the default value of the variable, which is not | ||
| 955 | quite the same behavior as before, but it should enable old init files | ||
| 956 | to continue to work. | ||
| 957 | |||
| 958 | ** New per-buffer variables. | ||
| 959 | |||
| 960 | The variables `fill-prefix', `comment-column' and `indent-tabs-mode' | ||
| 961 | are now per-buffer. They work just like `fill-column', etc. | ||
| 962 | |||
| 963 | ** New function `setq-default'. | ||
| 964 | |||
| 965 | `setq-default' sets the default value of a variable, and uses the | ||
| 966 | same syntax that `setq' accepts: the variable name is not evaluated | ||
| 967 | and need not be quoted. | ||
| 968 | |||
| 969 | `(setq-default case-fold-search nil)' would make searches case-sensitive | ||
| 970 | in all buffers that do not have local values for `case-fold-search'. | ||
| 971 | |||
| 972 | You can set multiple variables sequentially, each with its own value, | ||
| 973 | in `setq-default' just as in `setq'. | ||
| 974 | |||
| 975 | ** Functions `global-set' and `global-value' deleted. | ||
| 976 | |||
| 977 | These functions were never used except by mistake by users expecting | ||
| 978 | the functionality of `set-default' and `default-value'. | ||
| 979 | |||
| 980 | * Changes in defaulting of major modes. | ||
| 981 | |||
| 982 | When `default-major-mode' is `nil', new buffers are supposed to | ||
| 983 | get their major mode from the buffer that is current. However, | ||
| 984 | certain major modes (such as Dired mode, Rmail mode, Rmail Summary mode, | ||
| 985 | and others) are not reasonable to use in this way. | ||
| 986 | |||
| 987 | Now such modes' names have been given non-`nil' `mode-class' properties. | ||
| 988 | If the current buffer's mode has such a property, Fundamental mode is | ||
| 989 | used as the default for newly created buffers. | ||
| 990 | |||
| 991 | * `where-is-internal' requires additional arguments. | ||
| 992 | |||
| 993 | This function now accepts three arguments, two of them required: | ||
| 994 | DEFINITION, the definition to search for; LOCAL-KEYMAP, the keymap | ||
| 995 | to use as the local map when doing the searching, and FIRST-ONLY, | ||
| 996 | which is nonzero to return only the first key found. | ||
| 997 | |||
| 998 | This function returns a list of keys (strings) whose definitions | ||
| 999 | (in the LOCAL-KEYMAP or the current global map) are DEFINITION. | ||
| 1000 | |||
| 1001 | If FIRST-ONLY is non-nil, it returns a single key (string). | ||
| 1002 | |||
| 1003 | This function has changed incompatibly in that now two arguments | ||
| 1004 | are required when previously only one argument was allowed. To get | ||
| 1005 | the old behavior of this function, write `(current-local-map)' as | ||
| 1006 | the expression for the second argument. | ||
| 1007 | |||
| 1008 | The incompatibility is sad, but `nil' is a legitimate value for the | ||
| 1009 | second argument (it means there is no local keymap), so it cannot also | ||
| 1010 | serve as a default meaning to use the current local keymap. | ||
| 1011 | |||
| 1012 | * Abbrevs with hooks. | ||
| 1013 | |||
| 1014 | When an abbrev defined with a hook is expanded, it now performs the | ||
| 1015 | usual replacement of the abbrev with the expansion before running the | ||
| 1016 | hook. Previously the abbrev itself was deleted but the expansion was | ||
| 1017 | not inserted. | ||
| 1018 | |||
| 1019 | * Function `scan-buffer' deleted. | ||
| 1020 | |||
| 1021 | Use `search-forward' or `search-backward' in place of `scan-buffer'. | ||
| 1022 | You will have to rearrange the arguments. | ||
| 1023 | |||
| 1024 | * X window interface improvements. | ||
| 1025 | |||
| 1026 | ** Detect release of mouse buttons. | ||
| 1027 | |||
| 1028 | Button-up events can now be detected. See the file `lisp/x-mouse.el' | ||
| 1029 | for details. | ||
| 1030 | |||
| 1031 | ** New pop-up menu facility. | ||
| 1032 | |||
| 1033 | The new function `x-popup-menu' pops up a menu (in a X window) | ||
| 1034 | and returns an indication of which selection the user made. | ||
| 1035 | For more information, see its self-documentation. | ||
| 1036 | |||
| 1037 | * M-x disassemble. | ||
| 1038 | |||
| 1039 | This command prints the disassembly of a byte-compiled Emacs Lisp function. | ||
| 1040 | |||
| 1041 | Would anyone like to interface this to the debugger? | ||
| 1042 | |||
| 1043 | * `insert-buffer-substring' can insert part of the current buffer. | ||
| 1044 | |||
| 1045 | The old restriction that the text being inserted had to come from | ||
| 1046 | a different buffer is now lifted. | ||
| 1047 | |||
| 1048 | When inserting text from the current buffer, the text to be inserted | ||
| 1049 | is determined from the specified bounds before any copying takes place. | ||
| 1050 | |||
| 1051 | * New function `substitute-key-definition'. | ||
| 1052 | |||
| 1053 | This is a new way to replace one command with another command as the | ||
| 1054 | binding of whatever keys may happen to refer to it. | ||
| 1055 | |||
| 1056 | (substitute-key-definition OLDDEF NEWDEF KEYMAP) looks through KEYMAP | ||
| 1057 | for keys defined to run OLDDEF, and rebinds those keys to run NEWDEF | ||
| 1058 | instead. | ||
| 1059 | |||
| 1060 | * New function `insert-char'. | ||
| 1061 | |||
| 1062 | Insert a specified character, a specified number of times. | ||
| 1063 | |||
| 1064 | * `mark-marker' changed. | ||
| 1065 | |||
| 1066 | When there is no mark, this now returns a marker that points | ||
| 1067 | nowhere, rather than `nil'. | ||
| 1068 | |||
| 1069 | * `ding' accepts argument. | ||
| 1070 | |||
| 1071 | When given an argument, the function `ding' does not terminate | ||
| 1072 | execution of a keyboard macro. Normally, `ding' does terminate | ||
| 1073 | all macros that are currently executing. | ||
| 1074 | |||
| 1075 | * New function `minibuffer-depth'. | ||
| 1076 | |||
| 1077 | This function returns the current depth in minibuffer activations. | ||
| 1078 | The value is zero when the minibuffer is not in use. | ||
| 1079 | Values greater than one are possible if the user has entered the | ||
| 1080 | minibuffer recursively. | ||
| 1081 | |||
| 1082 | * New function `documentation-property'. | ||
| 1083 | |||
| 1084 | (documentation-property SYMBOL PROPNAME) is like (get SYMBOL PROPNAME), | ||
| 1085 | except that if the property value is a number `documentation-property' | ||
| 1086 | will take that number (or its absolute value) as a character position | ||
| 1087 | in the DOC file and return the string found there. | ||
| 1088 | |||
| 1089 | (documentation-property VAR 'variable-documentation) is the proper | ||
| 1090 | way for a Lisp program to get the documentation of variable VAR. | ||
| 1091 | |||
| 1092 | * New documentation-string expansion feature. | ||
| 1093 | |||
| 1094 | If a documentation string (for a variable or function) contains text | ||
| 1095 | of the form `\<FOO>', it means that all command names specified in | ||
| 1096 | `\[COMMAND]' construct from that point on should be turned into keys | ||
| 1097 | using the value of the variable FOO as the local keymap. Thus, for example, | ||
| 1098 | |||
| 1099 | `\<emacs-lisp-mode-map>\[eval-defun] evaluates the defun containing point.' | ||
| 1100 | |||
| 1101 | will expand into | ||
| 1102 | |||
| 1103 | "ESC C-x evaluates the defun containing point." | ||
| 1104 | |||
| 1105 | regardless of the current major mode, because ESC C-x is defined to | ||
| 1106 | run `eval-defun' in the keymap `emacs-lisp-mode-map'. The effect is | ||
| 1107 | to show the key for `eval-defun' in Emacs Lisp mode regardless of the | ||
| 1108 | current major mode. | ||
| 1109 | |||
| 1110 | The `\<...>' construct applies to all `\[...]' constructs that follow it, | ||
| 1111 | up to the end of the documentation string or the next `\<...>'. | ||
| 1112 | |||
| 1113 | Without `\<...>', the keys for commands specified in `\[...]' are found | ||
| 1114 | in the current buffer's local map. | ||
| 1115 | |||
| 1116 | The current global keymap is always searched second, whether `\<...>' | ||
| 1117 | has been used or not. | ||
| 1118 | |||
| 1119 | * Multiple hooks allowed in certain contexts. | ||
| 1120 | |||
| 1121 | The old hook variables `find-file-hook', `find-file-not-found-hook' and | ||
| 1122 | `write-file-hook' have been replaced. | ||
| 1123 | |||
| 1124 | The replacements are `find-file-hooks', `find-file-not-found-hooks' | ||
| 1125 | and `write-file-hooks'. Each holds a list of functions to be called; | ||
| 1126 | by default, `nil', for no functions. The functions are called in | ||
| 1127 | order of appearance in the list. | ||
| 1128 | |||
| 1129 | In the case of `find-file-hooks', all the functions are executed. | ||
| 1130 | |||
| 1131 | In the case of `find-file-not-found-hooks', if any of the functions | ||
| 1132 | returns non-`nil', the rest of the functions are not called. | ||
| 1133 | |||
| 1134 | In the case of `write-file-hooks', if any of the functions returns | ||
| 1135 | non-`nil', the rest of the functions are not called, and the file is | ||
| 1136 | considered to have been written already; so actual writing in the | ||
| 1137 | usual way is not done. If `write-file-hooks' is local to a buffer, | ||
| 1138 | it is set to its global value if `set-visited-file-name' is called | ||
| 1139 | (and thus by C-x C-w as well). | ||
| 1140 | |||
| 1141 | `find-file-not-found-hooks' and `write-file-hooks' can be used | ||
| 1142 | together to implement editing of files that are not stored as Unix | ||
| 1143 | files: stored in archives, or inside version control systems, or on | ||
| 1144 | other machines running other operating systems and accessible via ftp. | ||
| 1145 | |||
| 1146 | * New hooks for suspending Emacs. | ||
| 1147 | |||
| 1148 | Suspending Emacs runs the hook `suspend-hook' before suspending | ||
| 1149 | and the hook `suspend-resume-hook' if the suspended Emacs is resumed. | ||
| 1150 | Running a hook is done by applying the variable's value to no arguments | ||
| 1151 | if the variable has a non-`nil' value. If `suspend-hook' returns | ||
| 1152 | non-`nil', then suspending is inhibited and so is running the | ||
| 1153 | `suspend-resume-hook'. The non-`nil' value means that the `suspend-hook' | ||
| 1154 | has done whatever suspending is required. | ||
| 1155 | |||
| 1156 | * Disabling commands can print a special message. | ||
| 1157 | |||
| 1158 | A command is disabled by giving it a non-`nil' `disabled' property. | ||
| 1159 | Now, if this property is a string, it is included in the message | ||
| 1160 | printed when the user tries to run the command. | ||
| 1161 | |||
| 1162 | * Emacs can open TCP connections. | ||
| 1163 | |||
| 1164 | The function `open-network-stream' opens a TCP connection to | ||
| 1165 | a specified host and service. Its value is a Lisp object that represents | ||
| 1166 | the connection. The object is a kind of "subprocess", and I/O are | ||
| 1167 | done like I/O to subprocesses. | ||
| 1168 | |||
| 1169 | * Display-related changes. | ||
| 1170 | |||
| 1171 | ** New mode-line control features. | ||
| 1172 | |||
| 1173 | The display of the mode line used to be controlled by a format-string | ||
| 1174 | that was the value of the variable `mode-line-format'. | ||
| 1175 | |||
| 1176 | This variable still exists, but it now allows more general values, | ||
| 1177 | not just strings. Lists, cons cells and symbols are also meaningful. | ||
| 1178 | |||
| 1179 | The mode line contents are created by outputting various mode elements | ||
| 1180 | one after the other. Here are the kinds of objects that can be | ||
| 1181 | used as mode elements, and what they do in the display: | ||
| 1182 | |||
| 1183 | string the contents of the string are output to the mode line, | ||
| 1184 | and %-constructs are replaced by other text. | ||
| 1185 | |||
| 1186 | t or nil ignored; no output results. | ||
| 1187 | |||
| 1188 | symbol the symbol's value is used. If the value is a string, | ||
| 1189 | the string is output verbatim to the mode line | ||
| 1190 | (so %-constructs are not interpreted). Otherwise, | ||
| 1191 | the symbol's value is processed as a mode element. | ||
| 1192 | |||
| 1193 | list (whose first element is a string or list or cons cell) | ||
| 1194 | the elements of the list are treated as as mode elements, | ||
| 1195 | so that the output they generate is concatenated, | ||
| 1196 | |||
| 1197 | list (whose car is a symbol) | ||
| 1198 | if the symbol's value is non-nil, the second element of the | ||
| 1199 | list is treated as a mode element. Otherwise, the third | ||
| 1200 | element (if any) of the list is treated as a mode element. | ||
| 1201 | |||
| 1202 | cons (whose car is a positive integer) | ||
| 1203 | the cdr of the cons is used as a mode element, but | ||
| 1204 | the text it produces is padded, if necessary, to have | ||
| 1205 | at least the width specified by the integer. | ||
| 1206 | |||
| 1207 | cons (whose car is a negative integer) | ||
| 1208 | the cdr of the cons is used as a mode element, but | ||
| 1209 | the text it produces is truncated, if necessary, to have | ||
| 1210 | at most the width specified by the integer. | ||
| 1211 | |||
| 1212 | There is always one mode element to start with, that being the value of | ||
| 1213 | `mode-line-format', but if this value is a list then it leads to several | ||
| 1214 | more mode elements, which can lead to more, and so on. | ||
| 1215 | |||
| 1216 | There is one new %-construct for mode elements that are strings: | ||
| 1217 | `%n' displays ` Narrow' for a buffer that is narrowed. | ||
| 1218 | |||
| 1219 | The default value of `mode-line-format' refers to several other variables. | ||
| 1220 | These variables are `mode-name', `mode-line-buffer-identification', | ||
| 1221 | `mode-line-process', `mode-line-modified', `global-mode-string' and | ||
| 1222 | `minor-mode-alist'. The first four are local in every buffer in which they | ||
| 1223 | are changed from the default. | ||
| 1224 | |||
| 1225 | mode-name Name of buffer's major mode. Local in every buffer. | ||
| 1226 | |||
| 1227 | mode-line-buffer-identification | ||
| 1228 | Normally the list ("Emacs: %17b"), it is responsible | ||
| 1229 | for displaying text to indicate what buffer is being shown | ||
| 1230 | and what kind of editing it is doing. `Emacs' means | ||
| 1231 | that a file of characters is being edited. Major modes | ||
| 1232 | such as Info and Dired which edit or view other kinds | ||
| 1233 | of data often change this value. This variables becomes | ||
| 1234 | local to the current buffer if it is setq'd. | ||
| 1235 | |||
| 1236 | mode-line-process | ||
| 1237 | Normally nil, this variable is responsible for displaying | ||
| 1238 | information about the process running in the current buffer. | ||
| 1239 | M-x shell-mode and M-x compile alter this variable. | ||
| 1240 | |||
| 1241 | mode-line-modified | ||
| 1242 | This variable is responsible for displaying the indication | ||
| 1243 | of whether the current buffer is modified or read-only. | ||
| 1244 | By default its value is `("--%*%*-")'. | ||
| 1245 | |||
| 1246 | minor-mode-alist | ||
| 1247 | This variable is responsible for displaying text for those | ||
| 1248 | minor modes that are currently enabled. Its value | ||
| 1249 | is a list of elements of the form (VARIABLE STRING), | ||
| 1250 | where STRING is to be displayed if VARIABLE's value | ||
| 1251 | (in the buffer whose mode line is being displayed) | ||
| 1252 | is non-nil. This variable is not made local to particular | ||
| 1253 | buffers, but loading some libraries may add elements to it. | ||
| 1254 | |||
| 1255 | global-mode-string | ||
| 1256 | This variable is used to display the time, if you ask | ||
| 1257 | for that. | ||
| 1258 | |||
| 1259 | The idea of these variables is to eliminate the need for major modes | ||
| 1260 | to alter mode-line-format itself. | ||
| 1261 | |||
| 1262 | ** `window-point' valid for selected window. | ||
| 1263 | |||
| 1264 | The value returned by `window-point' used to be incorrect when its | ||
| 1265 | argument was the selected window. Now the value is correct. | ||
| 1266 | |||
| 1267 | ** Window configurations may be saved as Lisp objects. | ||
| 1268 | |||
| 1269 | The function `current-window-configuration' returns a special type of | ||
| 1270 | Lisp object that represents the current layout of windows: the | ||
| 1271 | sizes and positions of windows, which buffers appear in them, and | ||
| 1272 | which parts of the buffers appear on the screen. | ||
| 1273 | |||
| 1274 | The function `set-window-configuration' takes one argument, which must | ||
| 1275 | be a window configuration object, and restores that configuration. | ||
| 1276 | |||
| 1277 | ** New hook `temp-output-buffer-show-hook'. | ||
| 1278 | |||
| 1279 | This hook allows you to control how help buffers are displayed. | ||
| 1280 | Whenever `with-output-to-temp-buffer' has executed its body and wants | ||
| 1281 | to display the temp buffer, if this variable is bound and non-`nil' | ||
| 1282 | then its value is called with one argument, the temp buffer. | ||
| 1283 | The hook function is solely responsible for displaying the buffer. | ||
| 1284 | The standard manner of display--making the buffer appear in a window--is | ||
| 1285 | used only if there is no hook function. | ||
| 1286 | |||
| 1287 | ** New function `minibuffer-window'. | ||
| 1288 | |||
| 1289 | This function returns the window used (sometimes) for displaying | ||
| 1290 | the minibuffer. It can be used even when the minibuffer is not active. | ||
| 1291 | |||
| 1292 | ** New feature to `next-window'. | ||
| 1293 | |||
| 1294 | If the optional second argument is neither `nil' nor `t', the minibuffer | ||
| 1295 | window is omitted from consideration even when active; if the starting | ||
| 1296 | window was the last non-minibuffer window, the value will be the first | ||
| 1297 | non-minibuffer window. | ||
| 1298 | |||
| 1299 | ** New variable `minibuffer-scroll-window'. | ||
| 1300 | |||
| 1301 | When this variable is non-`nil', the command `scroll-other-window' | ||
| 1302 | uses it as the window to be scrolled. Displays of completion-lists | ||
| 1303 | set this variable to the window containing the display. | ||
| 1304 | |||
| 1305 | ** New argument to `sit-for'. | ||
| 1306 | |||
| 1307 | A non-nil second argument to `sit-for' means do not redisplay; | ||
| 1308 | just wait for the specified time or until input is available. | ||
| 1309 | |||
| 1310 | ** Deleted function `set-minor-mode'; minor modes must be changed. | ||
| 1311 | |||
| 1312 | The function `set-minor-mode' has been eliminated. The display | ||
| 1313 | of minor mode names in the mode line is now controlled by the | ||
| 1314 | variable `minor-mode-alist'. To specify display of a new minor | ||
| 1315 | mode, it is sufficient to add an element to this list. Once that | ||
| 1316 | is done, you can turn the mode on and off just by setting a variable, | ||
| 1317 | and the display will show its status automatically. | ||
| 1318 | |||
| 1319 | ** New variable `cursor-in-echo-area'. | ||
| 1320 | |||
| 1321 | If this variable is non-nil, the screen cursor appears on the | ||
| 1322 | last line of the screen, at the end of the text displayed there. | ||
| 1323 | |||
| 1324 | Binding this variable to t is useful at times when reading single | ||
| 1325 | characters of input with `read-char'. | ||
| 1326 | |||
| 1327 | ** New per-buffer variable `selective-display-ellipses'. | ||
| 1328 | |||
| 1329 | If this variable is non-nil, an ellipsis (`...') appears on the screen | ||
| 1330 | at the end of each text line that is followed by invisible text. | ||
| 1331 | |||
| 1332 | If this variable is nil, no ellipses appear. Then there is no sign | ||
| 1333 | on the screen that invisible text is present. | ||
| 1334 | |||
| 1335 | Text is made invisible under the control of the variable | ||
| 1336 | `selective-display'; this is how Outline mode and C-x $ work. | ||
| 1337 | |||
| 1338 | ** New variable `no-redraw-on-reenter'. | ||
| 1339 | |||
| 1340 | If you set this variable non-nil, Emacs will not clear the screen when | ||
| 1341 | you resume it after suspending it. This is for the sake of terminals | ||
| 1342 | with multiple screens of memory, where the termcap entry has been set | ||
| 1343 | up to switch between screens when Emacs is suspended and resumed. | ||
| 1344 | |||
| 1345 | ** New argument to `set-screen-height' or `set-screen-width'. | ||
| 1346 | |||
| 1347 | These functions now take an optional second argument which says | ||
| 1348 | what significance the newly specified height or width has. | ||
| 1349 | |||
| 1350 | If the argument is nil, or absent, it means that Emacs should | ||
| 1351 | believe that the terminal height or width really is as just specified. | ||
| 1352 | |||
| 1353 | If the argument is t, it means Emacs should not believe that the | ||
| 1354 | terminal really is this high or wide, but it should use the | ||
| 1355 | specific height or width as the number of lines or columns to display. | ||
| 1356 | Thus, you could display only 24 lines on a screen known to have 48 lines. | ||
| 1357 | |||
| 1358 | What practical difference is there between using only 24 lines for display | ||
| 1359 | and really believing that the terminal has 24 lines? | ||
| 1360 | |||
| 1361 | 1. The "real" height of the terminal says what the terminal command | ||
| 1362 | to move the cursor to the last line will do. | ||
| 1363 | |||
| 1364 | 2. The "real" height of the terminal determines how much padding is | ||
| 1365 | needed. | ||
| 1366 | |||
| 1367 | * File-related changes. | ||
| 1368 | |||
| 1369 | ** New parameter `backup-by-copying-when-mismatch'. | ||
| 1370 | |||
| 1371 | If this variable is non-`nil', then when Emacs is about to save a | ||
| 1372 | file, it will create the backup file by copying if that would avoid | ||
| 1373 | changing the file's uid or gid. | ||
| 1374 | |||
| 1375 | The default value of this variable is `nil', because usually it is | ||
| 1376 | useful to have the uid of a file change according to who edited it | ||
| 1377 | last. I recommend thet this variable be left normally `nil' and | ||
| 1378 | changed with a local variables list in those particular files where | ||
| 1379 | the uid needs to be preserved. | ||
| 1380 | |||
| 1381 | ** New parameter `file-precious-flag'. | ||
| 1382 | |||
| 1383 | If this variable is non-`nil', saving the buffer tries to avoid | ||
| 1384 | leaving an incomplete file due to disk full or other I/O errors. | ||
| 1385 | It renames the old file before saving. If saving is successful, | ||
| 1386 | the renamed file is deleted; if saving gets an error, the renamed | ||
| 1387 | file is renamed back to the name you visited. | ||
| 1388 | |||
| 1389 | Backups are always made by copying for such files. | ||
| 1390 | |||
| 1391 | ** New variable `buffer-offer-save'. | ||
| 1392 | |||
| 1393 | If the value of this variable is non-`nil' in a buffer then exiting | ||
| 1394 | Emacs will offer to save the buffer (if it is modified and nonempty) | ||
| 1395 | even if the buffer is not visiting a file. This variable is | ||
| 1396 | automatically made local to the current buffer whenever it is set. | ||
| 1397 | |||
| 1398 | ** `rename-file', `copy-file', `add-name-to-file' and `make-symbolic-link'. | ||
| 1399 | |||
| 1400 | The third argument to these functions used to be `t' or `nil'; `t' | ||
| 1401 | meaning go ahead even if the specified new file name already has a file, | ||
| 1402 | and `nil' meaning to get an error. | ||
| 1403 | |||
| 1404 | Now if the third argument is a number it means to ask the user for | ||
| 1405 | confirmation in this case. | ||
| 1406 | |||
| 1407 | ** New optional argument to `copy-file'. | ||
| 1408 | |||
| 1409 | If `copy-file' receives a non-nil fourth argument, it attempts | ||
| 1410 | to give the new copy the same time-of-last-modification that the | ||
| 1411 | original file has. | ||
| 1412 | |||
| 1413 | ** New function `file-newer-than-file-p'. | ||
| 1414 | |||
| 1415 | (file-newer-than-file-p FILE1 FILE2) returns non-nil if FILE1 has been | ||
| 1416 | modified more recently than FILE2. If FILE1 does not exist, the value | ||
| 1417 | is always nil; otherwise, if FILE2 does not exist, the value is t. | ||
| 1418 | This is meant for use when FILE2 depends on FILE1, to see if changes | ||
| 1419 | in FILE1 make it necessary to recompute FILE2 from it. | ||
| 1420 | |||
| 1421 | ** Changed function `file-exists-p'. | ||
| 1422 | |||
| 1423 | This function is no longer the same as `file-readable-p'. | ||
| 1424 | `file-exists-p' can now return t for a file that exists but which | ||
| 1425 | the fascists won't allow you to read. | ||
| 1426 | |||
| 1427 | ** New function `file-locked-p'. | ||
| 1428 | |||
| 1429 | This function receives a file name as argument and returns `nil' | ||
| 1430 | if the file is not locked, `t' if locked by this Emacs, or a | ||
| 1431 | string giving the name of the user who has locked it. | ||
| 1432 | |||
| 1433 | ** New function `file-name-sans-versions'. | ||
| 1434 | |||
| 1435 | (file-name-sans-versions NAME) returns a substring of NAME, with any | ||
| 1436 | version numbers or other backup suffixes deleted from the end. | ||
| 1437 | |||
| 1438 | ** New functions for directory names. | ||
| 1439 | |||
| 1440 | Although a directory is really a kind of file, specifying a directory | ||
| 1441 | uses a somewhat different syntax from specifying a file. | ||
| 1442 | In Emacs, a directory name is used as part of a file name. | ||
| 1443 | |||
| 1444 | On Unix, the difference is small: a directory name ends in a slash, | ||
| 1445 | while a file name does not: thus, `/usr/rms/' to name a directory, | ||
| 1446 | while `/usr/rms' names the file which holds that directory. | ||
| 1447 | |||
| 1448 | On VMS, the difference is considerable: `du:[rms.foo]' specifies a | ||
| 1449 | directory, but the name of the file that holds that directory is | ||
| 1450 | `du:[rms]foo.dir'. | ||
| 1451 | |||
| 1452 | There are two new functions for converting between directory names | ||
| 1453 | and file names. `directory-file-name' takes a directory name and | ||
| 1454 | returns the name of the file in which that directory's data is stored. | ||
| 1455 | `file-name-as-directory' takes the name of a file and returns | ||
| 1456 | the corresponding directory name. These always understand Unix file name | ||
| 1457 | syntax; on VMS, they understand VMS syntax as well. | ||
| 1458 | |||
| 1459 | For example, (file-name-as-directory "/usr/rms") returns "/usr/rms/" | ||
| 1460 | and (directory-file-name "/usr/rms/") returns "/usr/rms". | ||
| 1461 | On VMS, (file-name-as-directory "du:[rms]foo.dir") returns "du:[rms.foo]" | ||
| 1462 | and (directory-file-name "du:[rms.foo]") returns "du:[rms]foo.dir". | ||
| 1463 | |||
| 1464 | ** Value of `file-attributes' changed. | ||
| 1465 | |||
| 1466 | The function file-attributes returns a list containing many kinds of | ||
| 1467 | information about a file. Now the list has eleven elements. | ||
| 1468 | |||
| 1469 | The tenth element is `t' if deleting the file and creating another | ||
| 1470 | file of the same name would result in a change in the file's group; | ||
| 1471 | `nil' if there would be no change. You can also think of this as | ||
| 1472 | comparing the file's group with the default group for files created in | ||
| 1473 | the same directory by you. | ||
| 1474 | |||
| 1475 | The eleventh element is the inode number of the file. | ||
| 1476 | |||
| 1477 | ** VMS-only function `file-name-all-versions'. | ||
| 1478 | |||
| 1479 | This function returns a list of all the completions, including version | ||
| 1480 | number, of a specified version-number-less file name. This is like | ||
| 1481 | `file-name-all-completions', except that the latter returns values | ||
| 1482 | that do not include version numbers. | ||
| 1483 | |||
| 1484 | ** VMS-only variable `vms-stmlf-recfm'. | ||
| 1485 | |||
| 1486 | On a VMS system, if this variable is non-nil, Emacs will give newly | ||
| 1487 | created files the record format `stmlf'. This is necessary for files | ||
| 1488 | that must contain lines of arbitrary length, such as compiled Emacs | ||
| 1489 | Lisp. | ||
| 1490 | |||
| 1491 | When writing a new version of an existing file, Emacs always keeps | ||
| 1492 | the same record format as the previous version; so this variable has | ||
| 1493 | no effect. | ||
| 1494 | |||
| 1495 | This variable has no effect on Unix systems. | ||
| 1496 | |||
| 1497 | ** `insert-file-contents' on an empty file. | ||
| 1498 | |||
| 1499 | This no longer sets the buffer's "modified" flag. | ||
| 1500 | |||
| 1501 | ** New function (VMS only) `define-logical-name': | ||
| 1502 | |||
| 1503 | (define-logical-name LOGICAL TRANSLATION) defines a VMS logical name | ||
| 1504 | LOGICAL whose translation is TRANSLATION. The new name applies to | ||
| 1505 | the current process only. | ||
| 1506 | |||
| 1507 | ** Deleted variable `ask-about-buffer-names'. | ||
| 1508 | |||
| 1509 | If you want buffer names for files to be generated in a special way, | ||
| 1510 | you must redefine `create-file-buffer'. | ||
| 1511 | |||
| 1512 | * Subprocess-related changes. | ||
| 1513 | |||
| 1514 | ** New function `process-list'. | ||
| 1515 | |||
| 1516 | This function takes no arguments and returns a list of all | ||
| 1517 | of Emacs's asynchronous subprocesses. | ||
| 1518 | |||
| 1519 | ** New function `process-exit-status'. | ||
| 1520 | |||
| 1521 | This function, given a process, process name or buffer as argument, | ||
| 1522 | returns the exit status code or signal number of the process. | ||
| 1523 | If the process has not yet exited or died, this function returns 0. | ||
| 1524 | |||
| 1525 | ** Process output ignores `buffer-read-only'. | ||
| 1526 | |||
| 1527 | Output from a process will go into the process's buffer even if the | ||
| 1528 | buffer is read only. | ||
| 1529 | |||
| 1530 | ** Switching buffers in filter functions and sentinels. | ||
| 1531 | |||
| 1532 | Emacs no longer saves and restore the current buffer around calling | ||
| 1533 | the filter and sentinel functions, so these functions can now | ||
| 1534 | permanently alter the selected buffer in a straightforward manner. | ||
| 1535 | |||
| 1536 | ** Specifying environment variables for subprocesses. | ||
| 1537 | |||
| 1538 | When a subprocess is started with `start-process' or `call-process', | ||
| 1539 | the value of the variable `process-environment' is taken to | ||
| 1540 | specify the environment variables to give the subprocess. The | ||
| 1541 | value should be a list of strings, each of the form "VAR=VALUE". | ||
| 1542 | |||
| 1543 | `process-environment' is initialized when Emacs starts up | ||
| 1544 | based on Emacs's environment. | ||
| 1545 | |||
| 1546 | ** New variable `process-connection-type'. | ||
| 1547 | |||
| 1548 | If this variable is `nil', when a subprocess is created, Emacs uses | ||
| 1549 | a pipe rather than a pty to communicate with it. Normally this | ||
| 1550 | variable is `t', telling Emacs to use a pty if ptys are supported | ||
| 1551 | and one is available. | ||
| 1552 | |||
| 1553 | ** New function `waiting-for-user-input-p'. | ||
| 1554 | |||
| 1555 | This function, given a subprocess as argument, returns `t' if that | ||
| 1556 | subprocess appears to be waiting for input sent from Emacs, | ||
| 1557 | or `nil' otherwise. | ||
| 1558 | |||
| 1559 | ** New hook `shell-set-directory-error-hook'. | ||
| 1560 | |||
| 1561 | The value of this variable is called, with no arguments, whenever | ||
| 1562 | Shell mode gets an error trying to keep track of directory-setting | ||
| 1563 | commands (such as `cd' and `pushd') used in the shell buffer. | ||
| 1564 | |||
| 1565 | * New functions `user-uid' and `user-real-uid'. | ||
| 1566 | |||
| 1567 | These functions take no arguments and return, respectively, | ||
| 1568 | the effective uid and the real uid of the Emacs process. | ||
| 1569 | The value in each case is an integer. | ||
| 1570 | |||
| 1571 | * New variable `print-escape-newlines' controls string printing. | ||
| 1572 | |||
| 1573 | If this variable is non-`nil', then when a Lisp string is printed | ||
| 1574 | by the Lisp printing function `prin1' or `print', newline characters | ||
| 1575 | are printed as `\n' rather than as a literal newline. | ||
| 1576 | |||
| 1577 | * New function `sysnetunam' on HPUX. | ||
| 1578 | |||
| 1579 | This function takes two arguments, a network address PATH and a | ||
| 1580 | login string LOGIN, and executes the system call `netunam'. | ||
| 1581 | It returns `t' if the call succeeds, otherwise `nil'. | ||
| 1582 | |||
| 1583 | News regarding installation: | ||
| 1584 | |||
| 1585 | * Many `s-...' file names changed. | ||
| 1586 | |||
| 1587 | Many `s-...' files have been renamed. All periods in such names, | ||
| 1588 | except the ones just before the final `h', have been changed to | ||
| 1589 | hyphens. Thus, `s-bsd4.2.h' has been renamed to `s-bsd4-2.h'. | ||
| 1590 | |||
| 1591 | This is so a Unix distribution can be moved mechanically to VMS. | ||
| 1592 | |||
| 1593 | * `DOCSTR...' file now called `DOC-...'. | ||
| 1594 | |||
| 1595 | The file of on-line documentation strings, that used to be | ||
| 1596 | `DOCSTR.mm.nn.oo' in this directory, is now called `DOC-mm.nn.oo'. | ||
| 1597 | This is so that it can port to VMS using the standard conventions | ||
| 1598 | for translating filenames for VMS. | ||
| 1599 | |||
| 1600 | This file also now contains the doc strings for variables as | ||
| 1601 | well as functions. | ||
| 1602 | |||
| 1603 | * Emacs no longer uses floating point arithmetic. | ||
| 1604 | |||
| 1605 | This may make it easier to port to some machines. | ||
| 1606 | |||
| 1607 | * Macros `XPNTR' and `XSETPNTR'; flag `DATA_SEG_BITS'. | ||
| 1608 | |||
| 1609 | These macros exclusively are used to unpack a pointer from a Lisp_Object | ||
| 1610 | and to insert a pointer into a Lisp_Object. Redefining them may help | ||
| 1611 | port Emacs to machines in which all pointers to data objects have | ||
| 1612 | certain high bits set. | ||
| 1613 | |||
| 1614 | If `DATA_SEG_BITS' is defined, it should be a number which contains | ||
| 1615 | the high bits to be inclusive or'ed with pointers that are unpacked. | ||
| 1616 | |||
| 1617 | * New flag `HAVE_X_MENU'. | ||
| 1618 | |||
| 1619 | Define this flag in `config.h' in addition to `HAVE_X_WINDOWS' | ||
| 1620 | to enable use of the Emacs interface to X Menus. On some operating | ||
| 1621 | systems, the rest of the X interface works properly but X Menus | ||
| 1622 | do not work; hence this separate flag. See the file `src/xmenu.c' | ||
| 1623 | for more information. | ||
| 1624 | |||
| 1625 | * Macros `ARRAY_MARK_FLAG' and `DONT_COPY_FLAG'. | ||
| 1626 | |||
| 1627 | * `HAVE_ALLOCA' prevents assembly of `alloca.s'. | ||
| 1628 | |||
| 1629 | * `SYSTEM_MALLOC' prevents use of GNU `malloc.c'. | ||
| 1630 | |||
| 1631 | SYSTEM_MALLOC, if defined, means use the system's own `malloc' routines | ||
| 1632 | rather than those that come with Emacs. | ||
| 1633 | |||
| 1634 | Use this only if absolutely necessary, because if it is used you do | ||
| 1635 | not get warnings when space is getting low. | ||
| 1636 | |||
| 1637 | * New flags to control unexec. | ||
| 1638 | |||
| 1639 | See the file `unexec.c' for a long comment on the compilation | ||
| 1640 | switches that suffice to make it work on many machines. | ||
| 1641 | |||
| 1642 | * `PNTR_COMPARISON_TYPE' | ||
| 1643 | |||
| 1644 | Pointers that need to be compared for ordering are converted to this type | ||
| 1645 | first. Normally this is `unsigned int'. | ||
| 1646 | |||
| 1647 | * `HAVE_VFORK', `HAVE_DUP2' and `HAVE_GETTIMEOFDAY'. | ||
| 1648 | |||
| 1649 | These flags just say whether certain system calls are available. | ||
| 1650 | |||
| 1651 | * New macros control compiler switches, linker switches and libraries. | ||
| 1652 | |||
| 1653 | The m- and s- files can now control in a modular fashion the precise | ||
| 1654 | arguments passed to `cc' and `ld'. | ||
| 1655 | |||
| 1656 | LIBS_STANDARD defines the standard C libraries. Default is `-lc'. | ||
| 1657 | LIBS_DEBUG defines the extra libraries to use when debugging. Default `-lg'. | ||
| 1658 | LIBS_SYSTEM can be defined by the s- file to specify extra libraries. | ||
| 1659 | LIBS_MACHINE can be defined by the m- file to specify extra libraries. | ||
| 1660 | LIBS_TERMCAP defines the libraries for Termcap or Terminfo. | ||
| 1661 | It is defined by default in a complicated fashion but the m- or s- file | ||
| 1662 | can override it. | ||
| 1663 | |||
| 1664 | LD_SWITCH_SYSTEM can be defined by the s- file to specify extra `ld' switches. | ||
| 1665 | The default is `-X' on BSD systems except those few that use COFF object files. | ||
| 1666 | LD_SWITCH_MACHINE can be defined by the m- file to specify extra `ld' switches. | ||
| 1667 | |||
| 1668 | C_DEBUG_SWITCH defines the switches to give `cc' when debugging. Default `-g'. | ||
| 1669 | C_OPTIMIZE_SWITCH defines the switches to give `cc' to optimize. Default `-O'. | ||
| 1670 | C_SWITCH_MACHINE can be defined by the m- file to specify extra `cc' switches. | ||
| 1671 | |||
| 1672 | For older news, see the file ONEWS.3. | ||
| 1673 | |||
| 1674 | ---------------------------------------------------------------------- | ||
| 1675 | Copyright information: | ||
| 1676 | |||
| 1677 | Copyright (C) 1992 Free Software Foundation, Inc. | ||
| 1678 | |||
| 1679 | Permission is granted to anyone to make or distribute verbatim copies | ||
| 1680 | of this document as received, in any medium, provided that the | ||
| 1681 | copyright notice and this permission notice are preserved, | ||
| 1682 | thus giving the recipient permission to redistribute in turn. | ||
| 1683 | |||
| 1684 | Permission is granted to distribute modified versions | ||
| 1685 | of this document, or of portions of it, | ||
| 1686 | under the above conditions, provided also that they | ||
| 1687 | carry prominent notices stating who last changed them. | ||
| 1688 | |||
| 1689 | Local variables: | ||
| 1690 | mode: text | ||
| 1691 | end: | ||
| 1692 | |||
| 1693 | arch-tag: 373312be-99a8-46d5-bcb0-a62577ab5045 | ||