aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim F. Storm2006-06-04 01:01:51 +0000
committerKim F. Storm2006-06-04 01:01:51 +0000
commit9a21d88ba1c249264c225cb64d24cdb3b57b73e1 (patch)
tree7176b48a33f88583cd7ffd452c551e8a681e9b3b
parent71ee3e042e4bc6464430e25574a440d15e14a328 (diff)
downloademacs-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/NEWS9351
-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.204513
-rw-r--r--etc/NEWS.214900
-rw-r--r--etc/ONEWS.11167
-rw-r--r--etc/ONEWS.41693
8 files changed, 10686 insertions, 12214 deletions
diff --git a/etc/NEWS b/etc/NEWS
index a8dd3843396..2c545b5b221 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1,12 +1,18 @@
1GNU Emacs NEWS -- history of user-visible changes. 2006-05-21 1GNU Emacs NEWS -- history of user-visible changes. 2006-06-04
2Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 2Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
3 Free Software Foundation, Inc. 3 Free Software Foundation, Inc.
4See the end for copying conditions. 4See the end for copying conditions.
5 5
6Please send Emacs bug reports to bug-gnu-emacs@gnu.org. 6Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
7For older news, see the file ONEWS 7If possible, use M-x report-emacs-bug.
8You 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. 9This file is about changes in emacs version 22.
10
11See files NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 for changes
12in older emacs versions.
13
14You can narrow news to a specific version by calling `view-emacs-news'
15with a prefix argument or by typing C-u C-h C-n.
10 16
11Temporary note: 17Temporary 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
5656return. The macro `1value' suppresses a brown splotch for its argument. 5662return. The macro `1value' suppresses a brown splotch for its argument.
5657This macro is a no-op except during test-coverage -- then it signals 5663This macro is a no-op except during test-coverage -- then it signals
5658an error if the argument actually returns differing values. 5664an 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
5663been added.
5664
5665
5666* Changes in Emacs 21.3
5667
5668** The obsolete C mode (c-mode.el) has been removed to avoid problems
5669with Custom.
5670
5671** UTF-16 coding systems are available, encoding the same characters
5672as mule-utf-8.
5673
5674** There is a new language environment for UTF-8 (set up automatically
5675in UTF-8 locales).
5676
5677** Translation tables are available between equivalent characters in
5678different Emacs charsets -- for instance `e with acute' coming from the
5679Latin-1 and Latin-2 charsets. User options `unify-8859-on-encoding-mode'
5680and `unify-8859-on-decoding-mode' respectively turn on translation
5681between 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
5685it and write it out again without edits, so it is not generally advisable.
5686By 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
5691If you want the old behavior, set selection-coding-system to
5692compound-text, which may be significantly more efficient. Using
5693compound-text-with-extensions seems to be necessary only for decoding
5694text from applications under XFree86 4.2, whose behavior is actually
5695contrary 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
5709X applications can use `extended segments' to encode characters in
5710compound text that belong to character sets which are not part of the
5711list of approved standard encodings for X, e.g. Big5. To paste
5712selections with such characters into Emacs, use the new coding system
5713compound-text-with-extensions as the value of selection-coding-system.
5714
5715** The default values of `tooltip-delay' and `tooltip-hide-delay'
5716were changed.
5717
5718** On terminals whose erase-char is ^H (Backspace), Emacs
5719now uses normal-erase-is-backspace-mode.
5720
5721** When the *scratch* buffer is recreated, its mode is set from
5722initial-major-mode, which normally is lisp-interaction-mode,
5723instead of using default-major-mode.
5724
5725** The new option `Info-scroll-prefer-subnodes' causes Info to behave
5726like the stand-alone Info reader (from the GNU Texinfo package) as far
5727as 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
5729visits the subnode pointed to by the first menu entry. If this option
5730is nil, SPC scrolls to the end of the current node, and only then goes
5731to the first menu item, like the stand-alone reader does.
5732
5733This change was already in Emacs 21.1, but wasn't advertised in the
5734NEWS.
5735
5736
5737* Lisp Changes in Emacs 21.2
5738
5739** The meanings of scroll-up-aggressively and scroll-down-aggressively
5740have been interchanged, so that the former now controls scrolling up,
5741and the latter now controls scrolling down.
5742
5743** The variable `compilation-parse-errors-filename-function' can
5744be used to transform filenames found in compilation output.
5745
5746
5747* Installation Changes in Emacs 21.1
5748
5749See the INSTALL file for information on installing extra libraries and
5750fonts to take advantage of the new graphical features and extra
5751charsets 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
5758images and toolkit scrollbars. Use the --help option in `configure'
5759to list them.
5760
5761** You can build a 64-bit Emacs for SPARC/Solaris systems which
5762support 64-bit executables and also on Irix 6.5. This increases the
5763maximum buffer size. See etc/MACHINES for instructions. Changes to
5764build on other 64-bit systems should be straightforward modulo any
5765necessary changes to unexec.
5766
5767** There is a new configure option `--disable-largefile' to omit
5768Unix-98-style support for large files if that is available.
5769
5770** There is a new configure option `--without-xim' that instructs
5771Emacs to not use X Input Methods (XIM), if these are available.
5772
5773** `movemail' defaults to supporting POP. You can turn this off using
5774the --without-pop configure option, should that be necessary.
5775
5776** This version can be built for the Macintosh, but does not implement
5777all of the new display features described below. The port currently
5778lacks unexec, asynchronous processes, and networking support. See the
5779"Emacs and the Mac OS" appendix in the Emacs manual, for the
5780description of aspects specific to the Mac.
5781
5782** Note that the MS-Windows port does not yet implement various of the
5783new display features described below.
5784
5785
5786* Changes in Emacs 21.1
5787
5788** Emacs has a new redisplay engine.
5789
5790The new redisplay handles characters of variable width and height.
5791Italic text can be used without redisplay problems. Fonts containing
5792oversized characters, i.e. characters larger than the logical height
5793of a font can be used. Images of various formats can be displayed in
5794the text.
5795
5796** Emacs has a new face implementation.
5797
5798The new faces no longer fundamentally use X font names to specify the
5799font. Instead, each face has several independent attributes--family,
5800height, width, weight and slant--that it may or may not specify.
5801These attributes can be merged from various faces, and then together
5802specify a font.
5803
5804Faces are supported on terminals that can display color or fonts.
5805These terminal capabilities are auto-detected. Details can be found
5806under Lisp changes, below.
5807
5808** Emacs can display faces on TTY frames.
5809
5810Emacs automatically detects terminals that are able to display colors.
5811Faces with a weight greater than normal are displayed extra-bright, if
5812the terminal supports it. Faces with a weight less than normal and
5813italic faces are displayed dimmed, if the terminal supports it.
5814Underlined faces are displayed underlined if possible. Other face
5815attributes such as `overline', `strike-through', and `box' are ignored
5816on terminals.
5817
5818The command-line options `-fg COLOR', `-bg COLOR', and `-rv' are now
5819supported on character terminals.
5820
5821Emacs automatically remaps all X-style color specifications to one of
5822the colors supported by the terminal. This means you could have the
5823same color customizations that work both on a windowed display and on
5824a 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
5830Emacs supports playing sound files on GNU/Linux and FreeBSD (Voxware
5831driver and native BSD driver, a.k.a. Luigi's driver). Currently
5832supported file formats are RIFF-WAVE (*.wav) and Sun Audio (*.au).
5833You must configure Emacs with the option `--with-sound=yes' to enable
5834sound support.
5835
5836** Emacs now resizes mini-windows if appropriate.
5837
5838If a message is longer than one line, or minibuffer contents are
5839longer than one line, Emacs can resize the minibuffer window unless it
5840is on a frame of its own. You can control resizing and the maximum
5841minibuffer window size by setting the following variables:
5842
5843- User option: max-mini-window-height
5844
5845Maximum height for resizing mini-windows. If a float, it specifies a
5846fraction of the mini-window frame's height. If an integer, it
5847specifies a number of lines.
5848
5849Default is 0.25.
5850
5851- User option: resize-mini-windows
5852
5853How to resize mini-windows. If nil, don't resize. If t, always
5854resize to fit the size of the text. If `grow-only', let mini-windows
5855grow only, until they become empty, at which point they are shrunk
5856again.
5857
5858Default is `grow-only'.
5859
5860** LessTif support.
5861
5862Emacs 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
5867When Emacs is configured to use LessTif or Motif, reading a file name
5868from a menu will pop up a file selection dialog if `use-dialog-box' is
5869non-nil.
5870
5871** File selection dialog on MS-Windows is supported.
5872
5873When a file is visited by clicking File->Open, the MS-Windows version
5874now pops up a standard file selection dialog where you can select a
5875file to visit. File->Save As also pops up that dialog.
5876
5877** Toolkit scroll bars.
5878
5879Emacs now uses toolkit scroll bars if available. When configured for
5880LessTif/Motif, it will use that toolkit's scroll bar. Otherwise, when
5881configured for Lucid and Athena widgets, it will use the Xaw3d scroll
5882bar if Xaw3d is available. You can turn off the use of toolkit scroll
5883bars by specifying `--with-toolkit-scroll-bars=no' when configuring
5884Emacs.
5885
5886When you encounter problems with the Xaw3d scroll bar, watch out how
5887Xaw3d is compiled on your system. If the Makefile generated from
5888Xaw3d's Imakefile contains a `-DNARROWPROTO' compiler option, and your
5889Emacs system configuration file `s/your-system.h' does not contain a
5890define for NARROWPROTO, you might consider adding it. Take
5891`s/freebsd.h' as an example.
5892
5893Alternatively, if you don't have access to the Xaw3d source code, take
5894a look at your system's imake configuration file, for example in the
5895directory `/usr/X11R6/lib/X11/config' (paths are different on
5896different systems). You will find files `*.cf' there. If your
5897system's cf-file contains a line like `#define NeedWidePrototypes NO',
5898add a `#define NARROWPROTO' to your Emacs system configuration file.
5899
5900The reason for this is that one Xaw3d function uses `double' or
5901`float' function parameters depending on the setting of NARROWPROTO.
5902This is not a problem when Imakefiles are used because each system's
5903imake configuration file contains the necessary information. Since
5904Emacs doesn't use imake, this has do be done manually.
5905
5906** Tool bar support.
5907
5908Emacs supports a tool bar at the top of a frame under X. For details
5909of how to define a tool bar, see the page describing Lisp-level
5910changes. Tool-bar global minor mode controls whether or not it is
5911displayed and is on by default. The appearance of the bar is improved
5912if Emacs has been built with XPM image support. Otherwise monochrome
5913icons will be used.
5914
5915To make the tool bar more useful, we need contributions of extra icons
5916for specific modes (with copyright assignments).
5917
5918** Tooltips.
5919
5920Tooltips are small X windows displaying a help string at the current
5921mouse position. The Lisp package `tooltip' implements them. You can
5922turn them off via the user option `tooltip-mode'.
5923
5924Tooltips also provides support for GUD debugging. If activated,
5925variable values can be displayed in tooltips by pointing at them with
5926the mouse in source buffers. You can customize various aspects of the
5927tooltip display in the group `tooltip'.
5928
5929** Automatic Hscrolling
5930
5931Horizontal scrolling now happens automatically if
5932`automatic-hscrolling' is set (the default). This setting can be
5933customized.
5934
5935If a window is scrolled horizontally with set-window-hscroll, or
5936scroll-left/scroll-right (C-x <, C-x >), this serves as a lower bound
5937for automatic horizontal scrolling. Automatic scrolling will scroll
5938the text more to the left if necessary, but won't scroll the text more
5939to 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
5942of its own. By default, when a window is selected, the cursor is
5943solid; otherwise, it is hollow. The user-option
5944`cursor-in-non-selected-windows' controls how to display the
5945cursor in non-selected windows. If nil, no cursor is shown, if
5946non-nil a hollow box cursor is shown.
5947
5948** Fringes to the left and right of windows are used to display
5949truncation marks, continuation marks, overlay arrows and alike. The
5950foreground, background, and stipple of these areas can be changed by
5951customizing face `fringe'.
5952
5953** The mode line under X is now drawn with shadows by default.
5954You can change its appearance by modifying the face `mode-line'.
5955In particular, setting the `:box' attribute to nil turns off the 3D
5956appearance of the mode line. (The 3D appearance makes the mode line
5957occupy more space, and thus might cause the first or the last line of
5958the window to be partially obscured.)
5959
5960The variable `mode-line-inverse-video', which was used in older
5961versions of emacs to make the mode-line stand out, is now deprecated.
5962However, setting it to nil will cause the `mode-line' face to be
5963ignored, and mode-lines to be drawn using the default text face.
5964
5965** Mouse-sensitive mode line.
5966
5967Different parts of the mode line have been made mouse-sensitive on all
5968systems which support the mouse. Moving the mouse to a
5969mouse-sensitive part in the mode line changes the appearance of the
5970mouse pointer to an arrow, and help about available mouse actions is
5971displayed either in the echo area, or in the tooltip window if you
5972have enabled one.
5973
5974Currently, 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
5989Emacs can optionally display an hourglass pointer under X. You can
5990turn the display on or off by customizing group `cursor'.
5991
5992** Blinking cursor
5993
5994M-x blink-cursor-mode toggles a blinking cursor under X and on
5995terminals having terminal capabilities `vi', `vs', and `ve'. Blinking
5996and related parameters like frequency and delay can be customized in
5997the group `cursor'.
5998
5999** New font-lock support mode `jit-lock-mode'.
6000
6001This support mode is roughly equivalent to `lazy-lock' but is
6002generally faster. It supports stealth and deferred fontification.
6003See the documentation of the function `jit-lock-mode' for more
6004details.
6005
6006Font-lock uses jit-lock-mode as default support mode, so you don't
6007have to do anything to activate it.
6008
6009** The default binding of the Delete key has changed.
6010
6011The new user-option `normal-erase-is-backspace' can be set to
6012determine the effect of the Delete and Backspace function keys.
6013
6014On window systems, the default value of this option is chosen
6015according to the keyboard used. If the keyboard has both a Backspace
6016key and a Delete key, and both are mapped to their usual meanings, the
6017option's default value is set to t, so that Backspace can be used to
6018delete backward, and Delete can be used to delete forward. On
6019keyboards which either have only one key (usually labeled DEL), or two
6020keys DEL and BS which produce the same effect, the option's value is
6021set to nil, and these keys delete backward.
6022
6023If not running under a window system, setting this option accomplishes
6024a similar effect by mapping C-h, which is usually generated by the
6025Backspace key, to DEL, and by mapping DEL to C-d via
6026`keyboard-translate'. The former functionality of C-h is available on
6027the F1 key. You should probably not use this setting on a text-only
6028terminal if you don't have both Backspace, Delete and F1 keys.
6029
6030Programmatically, you can call function normal-erase-is-backspace-mode
6031to toggle the behavior of the Delete and Backspace keys.
6032
6033** The default for user-option `next-line-add-newlines' has been
6034changed to nil, i.e. C-n will no longer add newlines at the end of a
6035buffer by default.
6036
6037** The <home> and <end> keys now move to the beginning or end of the
6038current line, respectively. C-<home> and C-<end> move to the
6039beginning and end of the buffer.
6040
6041** Emacs now checks for recursive loads of Lisp files. If the
6042recursion depth exceeds `recursive-load-depth-limit', an error is
6043signaled.
6044
6045** When an error is signaled during the loading of the user's init
6046file, Emacs now pops up the *Messages* buffer.
6047
6048** Emacs now refuses to load compiled Lisp files which weren't
6049compiled with Emacs. Set `load-dangerous-libraries' to t to change
6050this behavior.
6051
6052The reason for this change is an incompatible change in XEmacs's byte
6053compiler. Files compiled with XEmacs can contain byte codes that let
6054Emacs dump core.
6055
6056** Toggle buttons and radio buttons in menus.
6057
6058When compiled with LessTif (or Motif) support, Emacs uses toolkit
6059widgets for radio and toggle buttons in menus. When configured for
6060Lucid, Emacs draws radio buttons and toggle buttons similar to Motif.
6061
6062** The menu bar configuration has changed. The new configuration is
6063more CUA-compliant. The most significant change is that Options is
6064now 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
6067using that menu.
6068
6069** Highlighting of trailing whitespace.
6070
6071When `show-trailing-whitespace' is non-nil, Emacs displays trailing
6072whitespace in the face `trailing-whitespace'. Trailing whitespace is
6073defined as spaces or tabs at the end of a line. To avoid busy
6074highlighting when entering new text, trailing whitespace is not
6075displayed if point is at the end of the line containing the
6076whitespace.
6077
6078** C-x 5 1 runs the new command delete-other-frames which deletes
6079all frames except the selected one.
6080
6081** The new user-option `confirm-kill-emacs' can be customized to
6082let Emacs ask for confirmation before exiting.
6083
6084** The header line in an Info buffer is now displayed as an emacs
6085header-line (which is like a mode-line, but at the top of the window),
6086so that it remains visible even when the buffer has been scrolled.
6087This 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
6091have 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
6101displayed it pops up a menu containing the items which would be on the
6102menu bar. If the menu bar is displayed, it pops up the major mode
6103menu or the Edit menu if there is no major mode menu.
6104
6105** Variable `load-path' is no longer customizable through Customize.
6106
6107You can no longer use `M-x customize-variable' to customize `load-path'
6108because it now contains a version-dependent component. You can still
6109use `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
6113point in a pop-up window.
6114
6115** Emacs can now support 'wheeled' mice (such as the MS IntelliMouse)
6116under XFree86. To enable this, use the `mouse-wheel-mode' command, or
6117customize the variable `mouse-wheel-mode'.
6118
6119The variables `mouse-wheel-follow-mouse' and `mouse-wheel-scroll-amount'
6120determine where and by how much buffers are scrolled.
6121
6122** Emacs' auto-save list files are now by default stored in a
6123sub-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/'.)
6125You 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
6130to prevent `display-buffer' from evening out window heights.
6131
6132** The new command M-x delete-trailing-whitespace RET will delete the
6133trailing whitespace within the current restriction. You can also add
6134this 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
6137be added to the end of the buffer even if `require-final-newline' is
6138non-nil.
6139
6140** The new user-option `find-file-suppress-same-file-warnings' can be
6141set to suppress warnings ``X and Y are the same file'' when visiting a
6142file that is already visited under a different name.
6143
6144** The new user-option `electric-help-shrink-window' can be set to
6145nil 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
6148and displays information about that.
6149
6150** The new variable `auto-mode-interpreter-regexp' contains a regular
6151expression matching interpreters, for file mode determination.
6152
6153This regular expression is matched against the first line of a file to
6154determine the file's mode in `set-auto-mode' when Emacs can't deduce a
6155mode from the file's name. If it matches, the file is assumed to be
6156interpreted by the interpreter matched by the second group of the
6157regular expression. The mode is then determined as the mode
6158associated with that interpreter in `interpreter-mode-alist'.
6159
6160** New function executable-make-buffer-file-executable-if-script-p is
6161suitable 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
6164buffer-file-coding-system is `undecided' and it is safe for the buffer
6165contents. (The most preferred is set by set-language-environment or
6166by M-x prefer-coding-system.) Thus if you visit an ASCII file and
6167insert a non-ASCII character from your current language environment,
6168the file will be saved silently with the appropriate coding.
6169Previously you would be prompted for a safe coding system.
6170
6171** The many obsolete language `setup-...-environment' commands have
6172been removed -- use `set-language-environment'.
6173
6174** The new Custom option `keyboard-coding-system' specifies a coding
6175system for keyboard input.
6176
6177** New variable `inhibit-iso-escape-detection' determines if Emacs'
6178coding system detection algorithm should pay attention to ISO2022's
6179escape sequences. If this variable is non-nil, the algorithm ignores
6180such escape sequences. The default value is nil, and it is
6181recommended not to change it except for the special case that you
6182always want to read any escape code verbatim. If you just want to
6183read 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
6185RET C-x C-f filename RET.
6186
6187** Variable `default-korean-keyboard' is initialized properly from the
6188environment variable `HANGUL_KEYBOARD_TYPE'.
6189
6190** New command M-x list-charset-chars reads a character set name and
6191displays all characters in that character set.
6192
6193** M-x set-terminal-coding-system (C-x RET t) now allows CCL-based
6194coding systems such as cpXXX and cyrillic-koi8.
6195
6196** Emacs now attempts to determine the initial language environment
6197and preferred and locale coding systems systematically from the
6198LC_ALL, LC_CTYPE, and LANG environment variables during startup.
6199
6200** New language environments `Polish', `Latin-8' and `Latin-9'.
6201Latin-8 and Latin-9 correspond respectively to the ISO character sets
62028859-14 (Celtic) and 8859-15 (updated Latin-1, with the Euro sign).
6203GNU Intlfonts doesn't support these yet but recent X releases have
62048859-15. See etc/INSTALL for information on obtaining extra fonts.
6205There are new Leim input methods for Latin-8 and Latin-9 prefix (only)
6206and Polish `slash'.
6207
6208** New language environments `Dutch' and `Spanish'.
6209These new environments mainly select appropriate translations
6210of the tutorial.
6211
6212** In Ethiopic language environment, special key bindings for
6213function keys are changed as follows. This is to conform to "Emacs
6214Lisp 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.
6234New input methods "turkish-postfix", "turkish-alt-postfix",
6235"greek-mizuochi", "TeX", and "greek-babel" are now part of the Leim
6236package.
6237
6238** The rule of input method "slovak" is slightly changed. Now the
6239rules for translating "q" and "Q" to "`" (backquote) are deleted, thus
6240typing 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
62458859 character sets but can display Latin-1, you can display
6246more-or-less mnemonic sequences of ASCII/Latin-1 characters instead of
6247empty boxes (under a window system) or question marks (not under a
6248window system). Customize the option `latin1-display' to turn this
6249on.
6250
6251** M-; now calls comment-dwim which tries to do something clever based
6252on the context. M-x kill-comment is now an alias to comment-kill,
6253defined in newcomment.el. You can choose different styles of region
6254commenting 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
6258indicator used by the display-time package. On a suitable display the
6259indicator can be an icon and is mouse-sensitive.
6260
6261** On window-systems, additional space can be put between text lines
6262on the display using several methods
6263
6264- By setting frame parameter `line-spacing' to PIXELS. PIXELS must be
6265a positive integer, and specifies that PIXELS number of pixels should
6266be put below text lines on the affected frame or frames.
6267
6268- By setting X resource `lineSpacing', class `LineSpacing'. This is
6269equivalent 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
6274the same, but applies to the a particular buffer only.
6275
6276** The new command `clone-indirect-buffer' can be used to create
6277an indirect buffer that is a twin copy of the current buffer. The
6278command `clone-indirect-buffer-other-window', bound to C-x 4 c,
6279does 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,
6283typically in a single directory or in an invisible sub-directory.
6284
6285** New commands iso-iso2sgml and iso-sgml2iso convert between Latin-1
6286characters and the corresponding SGML (HTML) entities.
6287
6288** New X resources recognized
6289
6290*** The X resource `synchronous', class `Synchronous', specifies
6291whether Emacs should run in synchronous mode. Synchronous mode
6292is useful for debugging X problems.
6293
6294Example:
6295
6296 emacs.synchronous: true
6297
6298*** The X resource `visualClass, class `VisualClass', specifies the
6299visual Emacs should use. The resource's value should be a string of
6300the form `CLASS-DEPTH', where CLASS is the name of the visual class,
6301and DEPTH is the requested color depth as a decimal number. Valid
6302visual class names are
6303
6304 TrueColor
6305 PseudoColor
6306 DirectColor
6307 StaticColor
6308 GrayScale
6309 StaticGray
6310
6311Visual class names specified as X resource are case-insensitive, i.e.
6312`pseudocolor', `Pseudocolor' and `PseudoColor' all have the same
6313meaning.
6314
6315The program `xdpyinfo' can be used to list the visual classes
6316supported on your display, and which depths they have. If
6317`visualClass' is not specified, Emacs uses the display's default
6318visual.
6319
6320Example:
6321
6322 emacs.visualClass: TrueColor-8
6323
6324*** The X resource `privateColormap', class `PrivateColormap',
6325specifies that Emacs should use a private colormap if it is using the
6326default visual, and that visual is of class PseudoColor. Recognized
6327resource values are `true' or `on'.
6328
6329Example:
6330
6331 emacs.privateColormap: true
6332
6333** Faces and frame parameters.
6334
6335There are four new faces `scroll-bar', `border', `cursor' and `mouse'.
6336Setting 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'
6339sets the background color of face `border' and vice versa. Likewise
6340for frame parameters `cursor-color' and face `cursor', and frame
6341parameter `mouse-color' and face `mouse'.
6342
6343Changing 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
6350The face `menu' can be used to change colors and font of Emacs' menus.
6351
6352** New frame parameter `screen-gamma' for gamma correction.
6353
6354The new frame parameter `screen-gamma' specifies gamma-correction for
6355colors. Its value may be nil, the default, in which case no gamma
6356correction occurs, or a number > 0, usually a float, that specifies
6357the screen gamma of a frame's display.
6358
6359PC monitors usually have a screen gamma of 2.2. smaller values result
6360in darker colors. You might want to try a screen gamma of 1.5 for LCD
6361color displays. The viewing gamma Emacs uses is 0.4545. (1/2.2).
6362
6363The X resource name of this parameter is `screenGamma', class
6364`ScreenGamma'.
6365
6366** Tabs and variable-width text.
6367
6368Tabs are now displayed with stretch properties; the width of a tab is
6369defined as a multiple of the normal character width of a frame, and is
6370independent of the fonts used in the text where the tab appears.
6371Thus, 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
6379The default margin is 4 which makes the menu bar appear like the
6380LessTif/Motif one.
6381
6382*** Arrows that indicate sub-menus are now drawn with shadows, as in
6383LessTif and Motif.
6384
6385** A block cursor can be drawn as wide as the glyph under it under X.
6386
6387As an example: if a block cursor is over a tab character, it will be
6388drawn 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
6392bitmap (this is similar to the tilde displayed by vi and Less).
6393
6394This behavior is activated by setting the buffer-local variable
6395`indicate-empty-lines' to a non-nil value. The default value of this
6396variable is found in `default-indicate-empty-lines'.
6397
6398** There is a new "aggressive" scrolling method.
6399
6400When scrolling up because point is above the window start, if the
6401value of the buffer-local variable `scroll-up-aggressively' is a
6402number, Emacs chooses a new window start so that point ends up that
6403fraction of the window's height from the top of the window.
6404
6405When scrolling down because point is below the window end, if the
6406value of the buffer-local variable `scroll-down-aggressively' is a
6407number, Emacs chooses a new window start so that point ends up that
6408fraction of the window's height from the bottom of the window.
6409
6410** You can now easily create new *Info* buffers using either
6411M-x clone-buffer, C-u m <entry> RET or C-u g <entry> RET.
6412M-x clone-buffer can also be used on *Help* and several other special
6413buffers.
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
6418abbreviated file names. Abbreviations can be customized by changing
6419`directory-abbrev-alist'.
6420
6421** A new variable, backup-by-copying-when-privileged-mismatch, gives
6422the highest file uid for which backup-by-copying-when-mismatch will be
6423forced on. The assumption is that uids less than or equal to this
6424value are special uids (root, bin, daemon, etc.--not real system
6425users) and that files owned by these users should not change ownership,
6426even if your system policy allows users other than root to edit them.
6427
6428The default is 200; set the variable to nil to disable the feature.
6429
6430** The rectangle commands now avoid inserting undesirable spaces,
6431notably at the end of lines.
6432
6433All these functions have been rewritten to avoid inserting unwanted
6434spaces, 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',
6439but inserts text instead of replacing it.
6440
6441** The new command M-x query-replace-regexp-eval acts like
6442query-replace-regexp, but takes a Lisp expression which is evaluated
6443after each match to get the replacement text.
6444
6445** M-x query-replace recognizes a new command `e' (or `E') that lets
6446you 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
6450in 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
6455to the source name (.emacs.el), if that exists, after loading it.
6456
6457** The help string specified for a menu-item whose definition contains
6458the property `:help HELP' is now displayed under X, on MS-Windows, and
6459MS-DOS, either in the echo area or with tooltips. Many standard menus
6460displayed by Emacs now have help strings.
6461
6462--
6463** New user option `read-mail-command' specifies a command to use to
6464read mail from the menu etc.
6465
6466** The environment variable `EMACSLOCKDIR' is no longer used on MS-Windows.
6467This environment variable was used when creating lock files. Emacs on
6468MS-Windows does not use this variable anymore. This change was made
6469before Emacs 21.1, but wasn't documented until now.
6470
6471** Highlighting of mouse-sensitive regions is now supported in the
6472MS-DOS version of Emacs.
6473
6474** The new command `msdos-set-mouse-buttons' forces the MS-DOS version
6475of Emacs to behave as if the mouse had a specified number of buttons.
6476This comes handy with mice that don't report their number of buttons
6477correctly. One example is the wheeled mice, which report 3 buttons,
6478but clicks on the middle button are not passed to the MS-DOS version
6479of 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
6485M-x customize-set-variable or M-x customize-set-value. Note that
6486customization comments will cause the customizations to fail in
6487earlier versions of Emacs.
6488
6489*** The new option `custom-buffer-done-function' says whether to kill
6490Custom buffers when you've done with them or just bury them (the
6491default).
6492
6493*** If Emacs was invoked with the `-q' or `--no-init-file' options, it
6494does not allow you to save customizations in your `~/.emacs' init
6495file. This is because saving customizations from such a session would
6496wipe out all the other customizationss you might have on your init
6497file.
6498
6499** If Emacs was invoked with the `-q' or `--no-init-file' options, it
6500does not save disabled and enabled commands for future sessions, to
6501avoid overwriting existing customizations of this kind that are
6502already 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
6507modes, C-j in Lisp Interaction mode, and M-:, now bind the variables
6508print-level, print-length, and debug-on-error based on the new
6509customizable variables eval-expression-print-level,
6510eval-expression-print-length, and eval-expression-debug-on-error.
6511
6512The default values for the first two of these variables are 12 and 4
6513respectively, which means that `eval-expression' now prints at most
6514the first 12 members of a list and at most 4 nesting levels deep (if
6515the list is longer or deeper than that, an ellipsis `...' is
6516printed).
6517
6518<RET> or <mouse-2> on the printed text toggles between an abbreviated
6519printed representation and an unabbreviated one.
6520
6521The default value of eval-expression-debug-on-error is t, so any error
6522during evaluation produces a backtrace.
6523
6524*** The function `eval-defun' (C-M-x) now loads Edebug and instruments
6525code when called with a prefix argument.
6526
6527** CC mode changes.
6528
6529Note: This release contains changes that might not be compatible with
6530current user setups (although it's believed that these
6531incompatibilities will only show in very uncommon circumstances).
6532However, since the impact is uncertain, these changes may be rolled
6533back depending on user feedback. Therefore there's no forward
6534compatibility guarantee wrt the new features introduced in this
6535release.
6536
6537*** The hardcoded switch to "java" style in Java mode is gone.
6538CC Mode used to automatically set the style to "java" when Java mode
6539is entered. This has now been removed since it caused too much
6540confusion.
6541
6542However, to keep backward compatibility to a certain extent, the
6543default value for c-default-style now specifies the "java" style for
6544java-mode, but "gnu" for all other modes (as before). So you won't
6545notice the change if you haven't touched that variable.
6546
6547*** New cleanups, space-before-funcall and compact-empty-funcall.
6548Two new cleanups have been added to c-cleanup-list:
6549
6550space-before-funcall causes a space to be inserted before the opening
6551parenthesis of a function call, which gives the style "foo (bar)".
6552
6553compact-empty-funcall causes any space before a function call opening
6554parenthesis to be removed if there are no arguments to the function.
6555It's typically useful together with space-before-funcall to get the
6556style "foo (bar)" and "foo()".
6557
6558*** Some keywords now automatically trigger reindentation.
6559Keywords like "else", "while", "catch" and "finally" have been made
6560"electric" to make them reindent automatically when they continue an
6561earlier statement. An example:
6562
6563for (i = 0; i < 17; i++)
6564 if (a[i])
6565 res += a[i]->offset;
6566else
6567
6568Here, the "else" should be indented like the preceding "if", since it
6569continues that statement. CC Mode will automatically reindent it after
6570the "else" has been typed in full, since it's not until then it's
6571possible to decide whether it's a new statement or a continuation of
6572the preceding "if".
6573
6574CC Mode uses Abbrev mode to achieve this, which is therefore turned on
6575by default.
6576
6577*** M-a and M-e now moves by sentence in multiline strings.
6578Previously these two keys only moved by sentence in comments, which
6579meant that sentence movement didn't work in strings containing
6580documentation or other natural language text.
6581
6582The reason it's only activated in multiline strings (i.e. strings that
6583contain a newline, even when escaped by a '\') is to avoid stopping in
6584the short strings that often reside inside statements. Multiline
6585strings almost always contain text in a natural language, as opposed
6586to other strings that typically contain format specifications,
6587commands, etc. Also, it's not that bothersome that M-a and M-e misses
6588sentences in single line strings, since they're short anyway.
6589
6590*** Support for autodoc comments in Pike mode.
6591Autodoc comments for Pike are used to extract documentation from the
6592source, like Javadoc in Java. Pike mode now recognize this markup in
6593comment prefixes and paragraph starts.
6594
6595*** The comment prefix regexps on c-comment-prefix may be mode specific.
6596When c-comment-prefix is an association list, it specifies the comment
6597line prefix on a per-mode basis, like c-default-style does. This
6598change came about to support the special autodoc comment prefix in
6599Pike mode only.
6600
6601*** Better handling of syntactic errors.
6602The recovery after unbalanced parens earlier in the buffer has been
6603improved; CC Mode now reports them by dinging and giving a message
6604stating the offending line, but still recovers and indent the
6605following lines in a sane way (most of the time). An "else" with no
6606matching "if" is handled similarly. If an error is discovered while
6607indenting a region, the whole region is still indented and the error
6608is reported afterwards.
6609
6610*** Lineup functions may now return absolute columns.
6611A lineup function can give an absolute column to indent the line to by
6612returning a vector with the desired column as the first element.
6613
6614*** More robust and warning-free byte compilation.
6615Although this is strictly not a user visible change (well, depending
6616on the view of a user), it's still worth mentioning that CC Mode now
6617can be compiled in the standard ways without causing trouble. Some
6618code have also been moved between the subpackages to enhance the
6619modularity somewhat. Thanks to Martin Buchholz for doing the
6620groundwork.
6621
6622*** c-style-variables-are-local-p now defaults to t.
6623This is an incompatible change that has been made to make the behavior
6624of the style system wrt global variable settings less confusing for
6625non-advanced users. If you know what this variable does you might
6626want to set it to nil in your .emacs, otherwise you probably don't
6627have to bother.
6628
6629Defaulting c-style-variables-are-local-p to t avoids the confusing
6630situation that occurs when a user sets some style variables globally
6631and edits both a Java and a non-Java file in the same Emacs session.
6632If the style variables aren't buffer local in this case, loading of
6633the second file will cause the default style (either "gnu" or "java"
6634by default) to override the global settings made by the user.
6635
6636*** New initialization procedure for the style system.
6637When the initial style for a buffer is determined by CC Mode (from the
6638variable c-default-style), the global values of style variables now
6639take precedence over the values specified by the chosen style. This
6640is different than the old behavior: previously, the style-specific
6641settings would override the global settings. This change makes it
6642possible to do simple configuration in the intuitive way with
6643Customize or with setq lines in one's .emacs file.
6644
6645By default, the global value of every style variable is the new
6646special symbol set-from-style, which causes the value to be taken from
6647the style system. This means that in effect, only an explicit setting
6648of a style variable will cause the "overriding" behavior described
6649above.
6650
6651Also note that global settings override style-specific settings *only*
6652when the initial style of a buffer is chosen by a CC Mode major mode
6653function. When a style is chosen in other ways --- for example, by a
6654call like (c-set-style "gnu") in a hook, or via M-x c-set-style ---
6655then the style-specific values take precedence over any global style
6656values. In Lisp terms, global values override style-specific values
6657only when the new second argument to c-set-style is non-nil; see the
6658function documentation for more info.
6659
6660The purpose of these changes is to make it easier for users,
6661especially novice users, to do simple customizations with Customize or
6662with setq in their .emacs files. On the other hand, the new system is
6663intended to be compatible with advanced users' customizations as well,
6664such as those that choose styles in hooks or whatnot. This new system
6665is believed to be almost entirely compatible with current
6666configurations, in spite of the changed precedence between style and
6667global 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.
6672This became possible as a result of the new initialization behavior.
6673
6674This variable is treated slightly differently from the other style
6675variables; instead of using the symbol set-from-style, it will be
6676completed with the syntactic symbols it doesn't already contain when
6677the style is first initialized. This means it now defaults to the
6678empty list to make all syntactic elements get their values from the
6679style system.
6680
6681**** Compatibility variable to restore the old behavior.
6682In case your configuration doesn't work with this change, you can set
6683c-old-style-variable-behavior to non-nil to get the old behavior back
6684as far as possible.
6685
6686*** Improvements to line breaking and text filling.
6687CC Mode now handles this more intelligently and seamlessly wrt the
6688surrounding code, especially inside comments. For details see the new
6689chapter about this in the manual.
6690
6691**** New variable to recognize comment line prefix decorations.
6692The variable c-comment-prefix-regexp has been added to properly
6693recognize the line prefix in both block and line comments. It's
6694primarily used to initialize the various paragraph recognition and
6695adaptive filling variables that the text handling functions uses.
6696
6697**** New variable c-block-comment-prefix.
6698This is a generalization of the now obsolete variable
6699c-comment-continuation-stars to handle arbitrary strings.
6700
6701**** CC Mode now uses adaptive fill mode.
6702This to make it adapt better to the paragraph style inside comments.
6703
6704It's also possible to use other adaptive filling packages inside CC
6705Mode, notably Kyle E. Jones' Filladapt mode (http://wonderworks.com/).
6706A new convenience function c-setup-filladapt sets up Filladapt for use
6707inside CC Mode.
6708
6709Note though that the 2.12 version of Filladapt lacks a feature that
6710causes it to work suboptimally when c-comment-prefix-regexp can match
6711the empty string (which it commonly does). A patch for that is
6712available from the CC Mode web site (http://www.python.org/emacs/
6713cc-mode/).
6714
6715**** The variables `c-hanging-comment-starter-p' and
6716`c-hanging-comment-ender-p', which controlled how comment starters and
6717enders were filled, are not used anymore. The new version of the
6718function `c-fill-paragraph' keeps the comment starters and enders as
6719they were before the filling.
6720
6721**** It's now possible to selectively turn off auto filling.
6722The variable c-ignore-auto-fill is used to ignore auto fill mode in
6723specific contexts, e.g. in preprocessor directives and in string
6724literals.
6725
6726**** New context sensitive line break function c-context-line-break.
6727It works like newline-and-indent in normal code, and adapts the line
6728prefix according to the comment style when used inside comments. If
6729you're normally using newline-and-indent, you might want to switch to
6730this function.
6731
6732*** Fixes to IDL mode.
6733It now does a better job in recognizing only the constructs relevant
6734to IDL. E.g. it no longer matches "class" as the beginning of a
6735struct block, but it does match the CORBA 2.3 "valuetype" keyword.
6736Thanks to Eric Eide.
6737
6738*** Improvements to the Whitesmith style.
6739It now keeps the style consistently on all levels and both when
6740opening 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.
6745See their docstrings for details. c-lineup-template-args does a
6746better job of tracking the brackets used as parens in C++ templates,
6747and is used by default to line up continued template arguments.
6748
6749*** c-lineup-comment now preserves alignment with a comment on the
6750previous line. It used to instead preserve comments that started in
6751the column specified by comment-column.
6752
6753*** c-lineup-C-comments handles "free form" text comments.
6754In comments with a long delimiter line at the start, the indentation
6755is kept unchanged for lines that start with an empty comment line
6756prefix. This is intended for the type of large block comments that
6757contain documentation with its own formatting. In these you normally
6758don't want CC Mode to change the indentation.
6759
6760*** The `c' syntactic symbol is now relative to the comment start
6761instead of the previous line, to make integers usable as lineup
6762arguments.
6763
6764*** All lineup functions have gotten docstrings.
6765
6766*** More preprocessor directive movement functions.
6767c-down-conditional does the reverse of c-up-conditional.
6768c-up-conditional-with-else and c-down-conditional-with-else are
6769variants of these that also stops at "#else" lines (suggested by Don
6770Provan).
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
6777command will delete non-empty directories recursively. The default
6778is, delete only empty directories.
6779
6780*** New variable `dired-recursive-copies' determines if the copy
6781command will copy directories recursively. The default is, do not
6782copy directories recursively.
6783
6784*** In command `dired-do-shell-command' (usually bound to `!') a `?'
6785in the shell command has a special meaning similar to `*', but with
6786the difference that the command will be run on each file individually.
6787
6788*** The new command `dired-find-alternate-file' (usually bound to `a')
6789replaces the Dired buffer with the buffer for an alternate file or
6790directory.
6791
6792*** The new command `dired-show-file-type' (usually bound to `y') shows
6793a message in the echo area describing what type of file the point is on.
6794This command invokes the external program `file' do its work, and so
6795will only work on systems with that program, and will be only as
6796accurate or inaccurate as it is.
6797
6798*** Dired now properly handles undo changes of adding/removing `-R'
6799from ls switches.
6800
6801*** Dired commands that prompt for a destination file now allow the use
6802of the `M-n' command in the minibuffer to insert the source filename,
6803which the user can then edit. This only works if there is a single
6804source file, not when operating on multiple marked files.
6805
6806** Gnus changes.
6807
6808The Gnus NEWS entries are short, but they reflect sweeping changes in
6809four areas: Article display treatment, MIME treatment,
6810internationalization and mail-fetching.
6811
6812*** The mail-fetching functions have changed. See the manual for the
6813many details. In particular, all procmail fetching variables are gone.
6814
6815If 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
6822this now has changed to
6823
6824(setq mail-sources
6825 '((directory :path "~/mail/incoming/"
6826 :suffix ".in")))
6827
6828More information is available in the info doc at Select Methods ->
6829Getting Mail -> Mail Sources
6830
6831*** Gnus is now a MIME-capable reader. This affects many parts of
6832Gnus, and adds a slew of new commands. See the manual for details.
6833Separate MIME packages like RMIME, mime-compose etc., will probably no
6834longer work; remove them and use the native facilities.
6835
6836The FLIM/SEMI package still works with Emacs 21, but if you want to
6837use the native facilities, you must remove any mailcap.el[c] that was
6838installed by FLIM/SEMI version 1.13 or earlier.
6839
6840*** Gnus has also been multilingualized. This also affects too many
6841parts of Gnus to summarize here, and adds many new variables. There
6842are built-in facilities equivalent to those of gnus-mule.el, which is
6843now just a compatibility layer.
6844
6845*** gnus-mule.el is now just a compatibility layer over the built-in
6846Gnus facilities.
6847
6848*** gnus-auto-select-first can now be a function to be
6849called to position point.
6850
6851*** The user can now decide which extra headers should be included in
6852summary buffers and NOV files.
6853
6854*** `gnus-article-display-hook' has been removed. Instead, a number
6855of variables starting with `gnus-treat-' have been added.
6856
6857*** The Gnus posting styles have been redone again and now work in a
6858subtly different manner.
6859
6860*** New web-based backends have been added: nnslashdot, nnwarchive
6861and nnultimate. nnweb has been revamped, again, to keep up with
6862ever-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
6871macros
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
6887There is now support for Imenu to index headings. A new command
6888`outline-headers-as-kill' copies the visible headings in the region to
6889the 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
6894with buffers when done with them. If non-nil, the default, buffers
6895are killed, unless they were already present before visiting them with
6896Emacs Server. If nil, `server-temp-file-regexp' specifies which
6897buffers to kill, as before.
6898
6899Please note that only buffers are killed that still have a client,
6900i.e. buffers visited with `emacsclient --no-wait' are never killed in
6901this way.
6902
6903** Both emacsclient and Emacs itself now accept command line options
6904of 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.
6909The new user option show-paren-priority specifies the priority to
6910use. Default is 1000.
6911
6912** New command M-x check-parens can be used to find unbalanced paren
6913groups and strings in buffers in Lisp mode (or other modes).
6914
6915** Changes to hideshow.el
6916
6917*** Generalized block selection and traversal
6918
6919A block is now recognized by its start and end regexps (both strings),
6920and an integer specifying which sub-expression in the start regexp
6921serves as the place where a `forward-sexp'-like function can operate.
6922See the documentation of variable `hs-special-modes-alist'.
6923
6924*** During incremental search, if Hideshow minor mode is active,
6925hidden blocks are temporarily shown. The variable `hs-headline' can
6926be used in the mode line format to show the line at the beginning of
6927the open block.
6928
6929*** User option `hs-hide-all-non-comment-function' specifies a
6930function to be called at each top-level block beginning, instead of
6931the 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,
6936roughly imitating those of Outline minor mode. Notably, the prefix
6937for all bindings is now `C-c @'. For details, see the documentation
6938for `hs-minor-mode'.
6939
6940*** The variable `hs-show-hidden-short-form' has been removed, and
6941hideshow.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
6946an entry appropriate for the file's parent. This is useful for making
6947log entries by comparing a version with deleted functions.
6948
6949**** New command M-x change-log-merge merges another log into the
6950current buffer.
6951
6952*** New command M-x change-log-redate fixes any old-style date entries
6953in a log file.
6954
6955*** Change Log mode now adds a file's version number to change log
6956entries if user-option `change-log-version-info-enabled' is non-nil.
6957Unless the file is under version control the search for a file's
6958version number is performed based on regular expressions from
6959`change-log-version-number-regexp-list' which can be customized.
6960Version 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
6972font-lock keywords from the current buffer or from a specific major mode.
6973
6974*** Multi-line patterns are now supported. Modes using this, should
6975set font-lock-multiline to t in their font-lock-defaults.
6976
6977*** `font-lock-syntactic-face-function' allows major-modes to choose
6978the face used for each string/comment.
6979
6980*** A new standard face `font-lock-doc-face'.
6981Meant 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
6986to use, which defaults to "*shell*". When used interactively, a
6987non-default buffer may be specified by giving the `shell' command a
6988prefix argument (causing it to prompt for the buffer name).
6989
6990** Comint (subshell) changes
6991
6992These changes generally affect all modes derived from comint mode, which
6993include shell-mode, gdb-mode, scheme-interaction-mode, etc.
6994
6995*** Comint now by default interprets some carriage-control characters.
6996Comint now removes CRs from CR LF sequences, and treats single CRs and
6997BSs in the output in a way similar to a terminal (by deleting to the
6998beginning of the line, or deleting the previous character,
6999respectively). This is achieved by adding `comint-carriage-motion' to
7000the `comint-output-filter-functions' hook by default.
7001
7002*** By default, comint no longer uses the variable `comint-prompt-regexp'
7003to distinguish prompts from user-input. Instead, it notices which
7004parts of the text were output by the process, and which entered by the
7005user, and attaches `field' properties to allow emacs commands to use
7006this information. Common movement commands, notably beginning-of-line,
7007respect field boundaries in a fairly natural manner. To disable this
7008feature, 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
7012and redirect the output to a designated buffer or buffers.
7013
7014*** The command M-x comint-redirect-send-command reads a command and
7015buffer name from the mini-buffer. The command is sent to the current
7016buffer's process, and its output is inserted into the specified buffer.
7017
7018The command M-x comint-redirect-send-command-to-process acts like
7019M-x comint-redirect-send-command but additionally reads the name of
7020the buffer whose process should be used from the mini-buffer.
7021
7022*** Packages based on comint now highlight user input and program prompts,
7023and support choosing previous input with mouse-2. To control these features,
7024see 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')
7027saves the output from the most recent command to a file. With a prefix
7028argument, 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
7032compatibility.
7033
7034*** The new function `comint-add-to-input-history' adds commands to the input
7035ring (history).
7036
7037*** The new variable `comint-input-history-ignore' is a regexp for
7038identifying history lines that should be ignored, like tcsh time-stamp
7039strings, 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
7044set to fine tune the identification of the correspondent when
7045receiving new mail. If it matches the address of the sender, the
7046recipient is taken as correspondent of a mail. If nil, the default,
7047`user-login-name' and `user-mail-address' are used to exclude yourself
7048as correspondent.
7049
7050Usually you don't have to set this variable, except if you collect
7051mails sent by you under different user names. Then it should be a
7052regexp matching your mail addresses.
7053
7054*** The new user-option rmail-confirm-expunge controls whether and how
7055to ask for confirmation before expunging deleted messages from an
7056Rmail file. You can choose between no confirmation, confirmation
7057with y-or-n-p, or confirmation with yes-or-no-p. Default is to ask
7058for confirmation with yes-or-no-p.
7059
7060*** RET is now bound in the Rmail summary to rmail-summary-goto-msg,
7061like `j'.
7062
7063*** There is a new user option `rmail-digest-end-regexps' that
7064specifies the regular expressions to detect the line that ends a
7065digest message.
7066
7067*** The new user option `rmail-automatic-folder-directives' specifies
7068in which folder to put messages automatically.
7069
7070*** The new function `rmail-redecode-body' allows to fix a message
7071with non-ASCII characters if Emacs happens to decode it incorrectly
7072due to missing or malformed "charset=" header.
7073
7074** The new user-option `mail-envelope-from' can be used to specify
7075an envelope-from address different from user-mail-address.
7076
7077** The variable mail-specify-envelope-from controls whether to
7078use the -f option when sending mail.
7079
7080** The Rmail command `o' (`rmail-output-to-rmail-file') now writes the
7081current message in the internal `emacs-mule' encoding, rather than in
7082the encoding taken from the variable `buffer-file-coding-system'.
7083This allows to save messages whose characters cannot be safely encoded
7084by the buffer's coding system, and makes sure the message will be
7085displayed correctly when you later visit the target Rmail file.
7086
7087If you want your Rmail files be encoded in a specific coding system
7088other 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.
7124The level of a heading is determined from the number of leading
7125semicolons in a heading line. Toplevel forms starting with a `('
7126in column 1 are always made leaves.
7127
7128** The M-x time-stamp command (most commonly used on write-file-hooks)
7129has the following new features:
7130
7131*** The patterns for finding the time stamp and for updating a pattern
7132may match text spanning multiple lines. For example, some people like
7133to have the filename and date on separate lines. The new variable
7134time-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
7137feature is useful if you need separate time stamps in a program source
7138file to both include in formatted documentation and insert in the
7139compiled binary. The same time-stamp will be written at each matching
7140pattern. The variable time-stamp-count enables this new feature; it
7141defaults to 1.
7142
7143** Partial Completion mode now completes environment variables in
7144file names.
7145
7146** Ispell changes
7147
7148*** The command `ispell' now spell-checks a region if
7149transient-mark-mode is on, and the mark is active. Otherwise it
7150spell-checks the current buffer.
7151
7152*** Support for synchronous subprocesses - DOS/Windoze - has been
7153added.
7154
7155*** An "alignment error" bug was fixed when a manual spelling
7156correction 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
7161cases.
7162
7163*** Spell checking HTML buffers has been improved and isn't so strict
7164on syntax errors.
7165
7166*** The buffer-local words are now always placed on a new line at the
7167end 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
7173alias.
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
7180Fontlock mode is active.
7181
7182** Isearch changes
7183
7184*** Isearch now puts a call to `isearch-resume' in the command history,
7185so 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,
7188respectively, i.e. you can repeat a regexp isearch with the same keys
7189that started the search.
7190
7191*** In Isearch mode, mouse-2 in the echo area now yanks the current
7192selection into the search string rather than giving an error.
7193
7194*** There is a new lazy highlighting feature in incremental search.
7195
7196Lazy highlighting is switched on/off by customizing variable
7197`isearch-lazy-highlight'. When active, all matches for the current
7198search string are highlighted. The current match is highlighted as
7199before using face `isearch' or `region'. All other matches are
7200highlighted using face `isearch-lazy-highlight-face' which defaults to
7201`secondary-selection'.
7202
7203The extra highlighting makes it easier to anticipate where the cursor
7204will end up each time you press C-s or C-r to repeat a pending search.
7205Highlighting of these additional matches happens in a deferred fashion
7206using "idle timers," so the cycles needed do not rob isearch of its
7207usual snappy response.
7208
7209If `isearch-lazy-highlight-cleanup' is set to t, highlights for
7210matches are automatically cleared when you end the search. If it is
7211set to nil, you can remove the highlights manually with `M-x
7212isearch-lazy-highlight-cleanup'.
7213
7214** VC Changes
7215
7216VC has been overhauled internally. It is now modular, making it
7217easier to plug-in arbitrary version control backends. (See Lisp
7218Changes for details on the new structure.) As a result, the mechanism
7219to enable and disable support for particular version systems has
7220changed: everything is now controlled by the new variable
7221`vc-handled-backends'. Its value is a list of symbols that identify
7222version systems; the default is '(RCS CVS SCCS). When finding a file,
7223each of the backends in that list is tried in order to see whether the
7224file is registered in that backend.
7225
7226When registering a new file, VC first tries each of the listed
7227backends to see if any of them considers itself "responsible" for the
7228directory of the file (e.g. because a corresponding subdirectory for
7229master files exists). If none of the backends is responsible, then
7230the first backend in the list that could register the file is chosen.
7231As a consequence, the variable `vc-default-back-end' is now obsolete.
7232
7233The old variable `vc-master-templates' is also obsolete, although VC
7234still supports it for backward compatibility. To define templates for
7235RCS or SCCS, you should rather use the new variables
7236vc-{rcs,sccs}-master-templates. (There is no such feature under CVS
7237where it doesn't make sense.)
7238
7239The variables `vc-ignore-vc-files' and `vc-handle-cvs' are also
7240obsolete 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
7245The variable `vc-checkout-carefully' is obsolete: the corresponding
7246checks are always done now.
7247
7248VC Dired buffers are now kept up-to-date during all version control
7249operations.
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
7255The command C-x v m (vc-merge) now accepts an empty argument as the
7256first revision number. This means that any recent changes on the
7257current branch should be picked up from the repository and merged into
7258the working file (``merge news'').
7259
7260The 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
7262downwards.
7263
7264*** Multiple Backends
7265
7266VC now lets you register files in more than one backend. This is
7267useful, for example, if you are working with a slow remote CVS
7268repository. You can then use RCS for local editing, and occasionally
7269commit your changes back to CVS, or pick up changes from CVS into your
7270local RCS archives.
7271
7272To make this work, the ``more local'' backend (RCS in our example)
7273should come first in `vc-handled-backends', and the ``more remote''
7274backend (CVS) should come later. (The default value of
7275`vc-handled-backends' already has it that way.)
7276
7277You can then commit changes to another backend (say, RCS), by typing
7278C-u C-x v v RCS RET (i.e. vc-next-action now accepts a backend name as
7279a revision number). VC registers the file in the more local backend
7280if that hasn't already happened, and commits to a branch based on the
7281current revision number from the more remote backend.
7282
7283If a file is registered in multiple backends, you can switch to
7284another one using C-x v b (vc-switch-backend). This does not change
7285any files, it only changes VC's perspective on the file. Use this to
7286pick up changes from CVS while working under RCS locally.
7287
7288After you are done with your local RCS editing, you can commit your
7289changes back to CVS using C-u C-x v v CVS RET. In this case, the
7290local RCS archive is removed after the commit, and the log entry
7291buffer is initialized to contain the entire RCS change log of the file.
7292
7293*** Changes for CVS
7294
7295There is a new user option, `vc-cvs-stay-local'. If it is `t' (the
7296default), then VC avoids network queries for files registered in
7297remote repositories. The state of such files is then only determined
7298by heuristics and past information. `vc-cvs-stay-local' can also be a
7299regexp to match against repository hostnames; only files from hosts
7300that match it are treated locally. If the variable is nil, then VC
7301queries the repository just as often as it does for local files.
7302
7303If `vc-cvs-stay-local' is on, then VC also makes local backups of
7304repository versions. This means that ordinary diffs (C-x v =) and
7305revert operations (C-x v u) can be done completely locally, without
7306any repository interactions at all. The name of a local version
7307backup of FILE is FILE.~REV.~, where REV is the repository version
7308number. This format is similar to that used by C-x v ~
7309(vc-version-other-window), except for the trailing dot. As a matter
7310of fact, the two features can each use the files created by the other,
7311the only difference being that files with a trailing `.' are deleted
7312automatically after commit. (This feature doesn't work on MS-DOS,
7313since DOS disallows more than a single dot in the trunk of a file
7314name.)
7315
7316If `vc-cvs-stay-local' is on, and there have been changes in the
7317repository, VC notifies you about it when you actually try to commit.
7318If you want to check for updates from the repository without trying to
7319commit, you can either use C-x v m RET to perform an update on the
7320current file, or you can use C-x v r RET to get an update for an
7321entire directory tree.
7322
7323The 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
7325is only meaningful if the CVSREAD variable is set, or if files are
7326"watched" by other developers.)
7327
7328The 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
7330an empty snapshot name to the latter, that performs a `cvs update',
7331starting at the given directory.
7332
7333*** Lisp Changes in VC
7334
7335VC has been restructured internally to make it modular. You can now
7336add support for arbitrary version control backends by writing a
7337library that provides a certain set of backend-specific functions, and
7338then telling VC to use that library. For example, to add support for
7339a version system named SYS, you write a library named vc-sys.el, which
7340provides a number of functions vc-sys-... (see commentary at the top
7341of vc.el for a detailed list of them). To make VC use that library,
7342you 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
7346SUBS command and EDT scroll margins. It also works with more
7347terminal/keyboard configurations and it now works under XEmacs.
7348See etc/edt-user.doc for more information.
7349
7350** New modes and packages
7351
7352*** The new global minor mode `minibuffer-electric-default-mode'
7353automatically hides the `(default ...)' part of minibuffer prompts when
7354the default is not applicable.
7355
7356*** Artist is an Emacs lisp package that allows you to draw lines,
7357rectangles and ellipses by using your mouse and/or keyboard. The
7358shapes are made up with the ascii characters |, -, / and \.
7359
7360Features 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
7419implemented entirely in Emacs Lisp. Use `M-x eshell' to invoke it.
7420It functions similarly to bash and zsh, and allows running of Lisp
7421functions and external commands using the same syntax. It supports
7422history lists, aliases, extended globbing, smart scrolling, etc. It
7423will work on any platform Emacs has been ported to. And since most of
7424the basic commands -- ls, rm, mv, cp, ln, du, cat, etc. -- have been
7425rewritten in Lisp, it offers an operating-system independent shell,
7426all within the scope of your Emacs process.
7427
7428*** The new package timeclock.el is a mode is for keeping track of time
7429intervals. You can use it for whatever purpose you like, but the
7430typical scenario is to keep track of how much time you spend working
7431on certain projects.
7432
7433*** The new package hi-lock.el provides commands to highlight matches
7434of interactively entered regexps. For example,
7435
7436 M-x highlight-regexp RET clearly RET RET
7437
7438will highlight all occurrences of `clearly' using a yellow background
7439face. New occurrences of `clearly' will be highlighted as they are
7440typed. `M-x unhighlight-regexp RET' will remove the highlighting.
7441Any existing face can be used for highlighting and a set of
7442appropriate faces is provided. The regexps can be written into the
7443current buffer in a form that will be recognized the next time the
7444corresponding file is read. There are commands to highlight matches
7445to phrases and to highlight entire lines containing a match.
7446
7447*** The new package zone.el plays games with Emacs' display when
7448Emacs is idle.
7449
7450*** The new package tildify.el allows to add hard spaces or other text
7451fragments in accordance with the current major mode.
7452
7453*** The new package xml.el provides a simple but generic XML
7454parser. It doesn't parse the DTDs however.
7455
7456*** The comment operations are now provided by the newcomment.el
7457package which allows different styles of comment-region and should
7458be more robust while offering the same functionality.
7459`comment-region' now doesn't always comment a-line-at-a-time, but only
7460comments the region, breaking the line at point if necessary.
7461
7462*** The Ebrowse package implements a C++ class browser and tags
7463facilities tailored for use with C++. It is documented in a
7464separate Texinfo file.
7465
7466*** The PCL-CVS package available by either running M-x cvs-examine or
7467by visiting a CVS administrative directory (with a prefix argument)
7468provides 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
7470enter check-in log messages.
7471
7472*** The new package called `woman' allows to browse Unix man pages
7473without invoking external programs.
7474
7475The command `M-x woman' formats manual pages entirely in Emacs Lisp
7476and then displays them, like `M-x manual-entry' does. Unlike
7477`manual-entry', `woman' does not invoke any external programs, so it
7478is useful on systems such as MS-DOS/MS-Windows where the `man' and
7479Groff or `troff' commands are not readily available.
7480
7481The command `M-x woman-find-file' asks for the file name of a man
7482page, then formats and displays it like `M-x woman' does.
7483
7484*** The new command M-x re-builder offers a convenient interface for
7485authoring regular expressions with immediate visual feedback.
7486
7487The buffer from which the command was called becomes the target for
7488the regexp editor popping up in a separate window. Matching text in
7489the target buffer is immediately color marked during the editing.
7490Each sub-expression of the regexp will show up in a different face so
7491even complex regexps can be edited and verified on target data in a
7492single step.
7493
7494On displays not supporting faces the matches instead blink like
7495matching parens to make them stand out. On such a setup you will
7496probably also want to use the sub-expression mode when the regexp
7497contains such to get feedback about their respective limits.
7498
7499*** glasses-mode is a minor mode that makes
7500unreadableIdentifiersLikeThis readable. It works as glasses, without
7501actually modifying content of a buffer.
7502
7503*** The package ebnf2ps translates an EBNF to a syntactic chart in
7504PostScript.
7505
7506Currently accepts ad-hoc EBNF, ISO EBNF and Bison/Yacc.
7507
7508The 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
7533Please, 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
7536align. Its mode-specific rules, based on regular expressions,
7537determine where the columns should be split. In C and C++, for
7538example, it will align variable names in declaration lists, or the
7539equal signs of assignments.
7540
7541*** `paragraph-indent-minor-mode' is a new minor mode supporting
7542paragraphs in the same style as `paragraph-indent-text-mode'.
7543
7544*** bs.el is a new package for buffer selection similar to
7545list-buffers or electric-buffer-list. Use M-x bs-show to display a
7546buffer 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
7551replace desktop calculators such as xcalc and calc.exe. Actually, it
7552is not too small - it has more features than most desktop calculators,
7553and can be customized easily to get many more functions. It should
7554not be confused with "calc" which is a much bigger mathematical tool
7555which answers different needs.
7556
7557*** The minor modes cwarn-mode and global-cwarn-mode highlights
7558suspicious C and C++ constructions. Currently, assignments inside
7559expressions, semicolon following `if', `for' and `while' (except, of
7560course, after a `do .. while' statement), and C++ functions with
7561reference parameters are recognized. The modes require font-lock mode
7562to be enabled.
7563
7564*** smerge-mode.el provides `smerge-mode', a simple minor-mode for files
7565containing 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
7570current 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
7575Please note: if `ansi-color-for-comint-mode' and
7576`global-font-lock-mode' are non-nil, loading ansi-color.el will
7577disable font-lock and add `ansi-color-apply' to
7578`comint-preoutput-filter-functions' for all shell-mode buffers. This
7579displays the output of "ls --color=yes" using the correct foreground
7580and background colors.
7581
7582*** delphi.el provides a major mode for editing the Delphi (Object
7583Pascal) language.
7584
7585*** quickurl.el provides a simple method of inserting a URL based on
7586the 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
7593whitespace in a file.
7594
7595*** PostScript mode (ps-mode) is a new major mode for editing PostScript
7596files. It offers: interaction with a PostScript interpreter, including
7597(very basic) error handling; fontification, easily customizable for
7598interpreter messages; auto-indentation; insertion of EPSF templates and
7599often used code snippets; viewing of BoundingBox; commenting out /
7600uncommenting regions; conversion of 8bit characters to PostScript octal
7601codes. All functionality is accessible through a menu.
7602
7603*** delim-col helps to prettify columns in a text region or rectangle.
7604
7605Here is an example of columns:
7606
7607horse apple bus
7608dog pineapple car EXTRA
7609porcupine strawberry airplane
7610
7611Doing 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
7619Selecting the lines above and typing:
7620
7621 M-x delimit-columns-region
7622
7623It results:
7624
7625[ horse , apple , bus , ]
7626[ dog , pineapple , car , EXTRA ]
7627[ porcupine, strawberry, airplane, ]
7628
7629delim-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
7643delim-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
7649operated on recently. User option recentf-menu-filter specifies a
7650menu filter function to change the menu appearance. For example, the
7651recent 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
7657The `recentf-filter-changer' menu filter function allows to
7658dynamically change the menu appearance.
7659
7660*** elide-head.el provides a mechanism for eliding boilerplate header
7661text.
7662
7663*** footnote.el provides `footnote-mode', a minor mode supporting use
7664of footnotes. It is intended for use with Message mode, but isn't
7665specific to Message mode.
7666
7667*** diff-mode.el provides `diff-mode', a major mode for
7668viewing/editing context diffs (patches). It is selected for files
7669with extension `.diff', `.diffs', `.patch' and `.rej'.
7670
7671*** EUDC, the Emacs Unified Directory Client, provides a common user
7672interface to access directory servers using different directory
7673protocols. It has a separate manual.
7674
7675*** autoconf.el provides a major mode for editing configure.in files
7676for Autoconf, selected automatically.
7677
7678*** windmove.el provides moving between windows.
7679
7680*** crm.el provides a facility to read multiple strings from the
7681minibuffer with completion.
7682
7683*** todo-mode.el provides management of TODO lists and integration
7684with the diary features.
7685
7686*** autoarg.el provides a feature reported from Twenex Emacs whereby
7687numeric keys supply prefix args rather than self inserting.
7688
7689*** The function `turn-off-auto-fill' unconditionally turns off Auto
7690Fill mode.
7691
7692*** pcomplete.el is a library that provides programmable completion
7693facilities for Emacs, similar to what zsh and tcsh offer. The main
7694difference is that completion functions are written in Lisp, meaning
7695they can be profiled, debugged, etc.
7696
7697*** antlr-mode is a new major mode for editing ANTLR grammar files.
7698It is automatically turned on for files whose names have the extension
7699`.g'.
7700
7701** Changes in sort.el
7702
7703The function sort-numeric-fields interprets numbers starting with `0'
7704as octal and numbers starting with `0x' or `0X' as hexadecimal. The
7705new user-option sort-numeric-base can be used to specify a default
7706numeric base.
7707
7708** Changes to Ange-ftp
7709
7710*** Ange-ftp allows you to specify of a port number in remote file
7711names cleanly. It is appended to the host name, separated by a hash
7712sign, 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
7715ftp mode will be used if the ftp client supports that.
7716
7717*** Ange-ftp handles the output of the w32-style clients which
7718output ^M at the end of lines.
7719
7720** The recommended way of using Iswitchb is via the new global minor
7721mode `iswitchb-mode'.
7722
7723** Just loading the msb package doesn't switch on Msb mode anymore.
7724If 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
7730group.
7731
7732*** The variable `flyspell-generic-check-word-p' has been renamed
7733to `flyspell-generic-check-word-predicate'. The old name is still
7734available as alias.
7735
7736** The user option `backward-delete-char-untabify-method' controls the
7737behavior of `backward-delete-char-untabify'. The following values
7738are 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;
7743nil -- just delete one character.
7744
7745Default 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
7750symbol, not double-quoted.
7751
7752** Some packages are declared obsolete, to be removed in a future
7753version. They are: auto-show, c-mode, hilit19, hscroll, ooutline,
7754profile, rnews, rnewspost, and sc. Their implementations have been
7755moved to lisp/obsolete.
7756
7757** auto-compression mode is no longer enabled just by loading jka-compr.el.
7758To 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
7769operate on the active region in Transient Mark mode.
7770
7771** `gnus-user-agent' is a new possibility for `mail-user-agent'. It
7772is like `message-user-agent', but with all the Gnus paraphernalia.
7773
7774** The Strokes package has been updated. If your Emacs has XPM
7775support, you can use it for pictographic editing. In Strokes mode,
7776use C-mouse-2 to compose a complex stoke and insert it into the
7777buffer. You can encode or decode a strokes buffer with new commands
7778M-x strokes-encode-buffer and M-x strokes-decode-buffer. There is a
7779new command M-x strokes-list-strokes.
7780
7781** Hexl contains a new command `hexl-insert-hex-string' which inserts
7782a string of hexadecimal numbers read from the mini-buffer.
7783
7784** Hexl mode allows to insert non-ASCII characters.
7785
7786The non-ASCII characters are encoded using the same encoding as the
7787file you are visiting in Hexl mode.
7788
7789** Shell script mode changes.
7790
7791Shell script mode (sh-script) can now indent scripts for shells
7792derived from sh and rc. The indentation style is customizable, and
7793sh-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
7800possible 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.
7802This feature is useful especially for regex files, where each line contains
7803a regular expression. The manual contains details.
7804
7805*** In C and derived languages, etags creates tags for function
7806declarations 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
7812automatically 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
7816C-like languages. Previously, it was limited to one or two brace levels.
7817
7818*** New language Ada: tags are functions, procedures, packages, tasks, and
7819types.
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
7826are now tagged.
7827
7828*** In makefiles, tags the targets.
7829
7830*** In Perl, the --globals option tags global variables. my and local
7831variables 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
7836for PSWrap.
7837
7838** Changes in etags.el
7839
7840*** The new user-option tags-case-fold-search can be used to make
7841tags operations case-sensitive or case-insensitive. The default
7842is to use the same setting as case-fold-search.
7843
7844*** You can display additional output with M-x tags-apropos by setting
7845the new variable tags-apropos-additional-actions.
7846
7847If non-nil, the variable's value should be a list of triples (TITLE
7848FUNCTION TO-SEARCH). For each triple, M-x tags-apropos processes
7849TO-SEARCH and lists tags from it. TO-SEARCH should be an alist,
7850obarray, or symbol. If it is a symbol, the symbol's value is used.
7851
7852TITLE is a string to use to label the list of tags from TO-SEARCH.
7853
7854FUNCTION is a function to call when an entry is selected in the Tags
7855List buffer. It is called with one argument, the selected symbol.
7856
7857A 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
7864of tags in the output of M-x tags-apropos.
7865
7866*** Setting tags-apropos-verbose to a non-nil value displays the
7867names of tags files in the *Tags List* buffer.
7868
7869*** You can now search for tags that are part of the filename itself.
7870If 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,
7873point will go to the beginning of the file.
7874
7875*** Compressed files are now transparently supported if
7876auto-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
7880in buffers where no match is found. In buffers where a match is
7881found, the original value of point is pushed on the marker ring.
7882
7883** Fortran mode has a new command `fortran-strip-sequence-nos' to
7884remove text past column 72. The syntax class of `\' in Fortran is now
7885appropriate 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'
7892containing a list of regular expressions. Buffers matching a regular
7893expression from that list, are not checked.
7894
7895** Emacs can now figure out modification times of remote files.
7896When you do C-x C-f /user@host:/path/file RET and edit the file,
7897and someone else modifies the file, you will be prompted to revert
7898the 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
7903displays local abbrevs, only.
7904
7905** Refill minor mode provides preliminary support for keeping
7906paragraphs filled as you modify them.
7907
7908** The variable `double-click-fuzz' specifies how much the mouse
7909may be moved between clicks that are recognized as a pair. Its value
7910is measured in pixels.
7911
7912** The new global minor mode `auto-image-file-mode' allows image files
7913to be visited as images.
7914
7915** Two new user-options `grep-command' and `grep-find-command'
7916were added to compile.el.
7917
7918** Withdrawn packages
7919
7920*** mldrag.el has been removed. mouse.el provides the same
7921functionality 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
7930There are a few Lisp changes which are not backwards-compatible and
7931may require changes to existing code. Here is a list for reference.
7932See 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.
7936Use `copy-sequence' to copy the string, then use `set-text-properties'
7937to remove the properties of the copy.
7938
7939** Since the `keymap' text property now has significance, some code
7940which uses both `local-map' and `keymap' properties (for portability)
7941may, for instance, give rise to duplicate menus when the keymaps from
7942these properties are active.
7943
7944** The change in the treatment of non-ASCII characters in search
7945ranges may affect some code.
7946
7947** A non-nil value for the LOCAL arg of add-hook makes the hook
7948buffer-local even if `make-local-hook' hasn't been called, which might
7949make a difference to some code.
7950
7951** The new treatment of the minibuffer prompt might affect code which
7952operates on the minibuffer.
7953
7954** The new character sets `eight-bit-control' and `eight-bit-graphic'
7955cause `no-conversion' and `emacs-mule-unix' coding systems to produce
7956different results when reading files with non-ASCII characters
7957(previously, both coding systems would produce the same results).
7958Specifically, `no-conversion' interprets each 8-bit byte as a separate
7959character. This makes `no-conversion' inappropriate for reading
7960multibyte text, e.g. buffers written to disk in their internal MULE
7961encoding (auto-saving does that, for example). If a Lisp program
7962reads such files with `no-conversion', each byte of the multibyte
7963sequence, including the MULE leading codes such as \201, is treated as
7964a separate character, which prevents them from being interpreted in
7965the buffer as multibyte characters.
7966
7967Therefore, Lisp programs that read files which contain the internal
7968MULE encoding should use `emacs-mule-unix'. `no-conversion' is only
7969appropriate 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
7976long promised. So does any code that uses derivatives of `concat',
7977such as `mapconcat'.
7978
7979** The function base64-decode-string now always returns a unibyte
7980string.
7981
7982** Not a Lisp incompatibility as such but, with the introduction of
7983extra private charsets, there is now only one slot free for a new
7984dimension-2 private charset. User code which tries to add more than
7985one extra will fail unless you rebuild Emacs with some standard
7986charset(s) removed; that is probably inadvisable because it changes
7987the emacs-mule encoding. Also, files stored in the emacs-mule
7988encoding using Emacs 20 with additional private charsets defined will
7989probably not be read correctly by Emacs 21.
7990
7991** The variable `directory-sep-char' is slated for removal.
7992Not really a change (yet), but a projected one that you should be
7993aware of: The variable `directory-sep-char' is deprecated, and should
7994not be used. It was always ignored on GNU/Linux and Unix systems and
7995on MS-DOS, but the MS-Windows port tried to support it by adapting the
7996behavior of certain primitives to the value of this variable. It
7997turned out that such support cannot be reliable, so it was decided to
7998remove this variable in the near future. Lisp programs are well
7999advised not to set it to anything but '/', because any different value
8000will 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
8009allows the animated display of strings.
8010 5665
8011** The new function `interactive-form' can be used to obtain the
8012interactive form of a function.
8013
8014** The keyword :set-after in defcustom allows to specify dependencies
8015between 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
8025This specifies that default-input-method should be set after
8026current-language-environment even if default-input-method appears
8027first in a custom-set-variables statement.
8028
8029** The new hook `kbd-macro-termination-hook' is run at the end of
8030function execute-kbd-macro. Functions on this hook are called with no
8031args. 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
8035from a list are now available without requiring the CL package.
8036
8037** The new user-option `even-window-heights' can be set to nil
8038to prevent `display-buffer' from evening out window heights.
8039
8040** The user-option `face-font-registry-alternatives' specifies
8041alternative 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
8046deleting the frame. The hook is called with one arg, the frame
8047being 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.
8052If a range in a regular expression or the arg of
8053skip-chars-forward/backward starts with a unibyte character C and ends
8054with a multibyte character C2, the range is divided into two: one is
8055C..?\377, the other is C1..C2, where C1 is the first character of C2's
8056charset.
8057
8058** The new function `display-message-or-buffer' displays a message in
8059the echo area or pops up a buffer, depending on the length of the
8060message.
8061
8062** The new macro `with-auto-compression-mode' allows evaluating an
8063expression with auto-compression-mode enabled.
8064
8065** In image specifications, `:heuristic-mask' has been replaced
8066with 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
8071backslash.
8072
8073** Reading from the mini-buffer now reads from standard input if Emacs
8074is running in batch mode. For example,
8075
8076 (message "%s" (read t))
8077
8078will read a Lisp expression from standard input and print the result
8079to 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'
8085will raise frames displaying a buffer, instead of creating a new
8086frame or window.
8087
8088** Two new functions for removing elements from lists/sequences
8089were added
8090
8091- Function: remove ELT SEQ
8092
8093Return a copy of SEQ with all occurrences of ELT removed. SEQ must be
8094a list, vector, or string. The comparison is done with `equal'.
8095
8096- Function: remq ELT LIST
8097
8098Return a copy of LIST with all occurrences of ELT removed. The
8099comparison 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
8104has 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
8108without signaling "Attempt to change char length of a string". It may
8109convert a unibyte string to multibyte if necessary.
8110
8111** The value of the `help-echo' text property is called as a function
8112or 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
8115function was declared obsolete.
8116
8117** Function `plist-member' is renamed from `widget-plist-member' (which is
8118retained as an alias).
8119
8120** Easy-menu's :filter now takes the unconverted form of the menu and
8121the 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
8127Return a list of windows on FRAME, starting with WINDOW. FRAME nil or
8128omitted means use the selected frame. WINDOW nil or omitted means use
8129the selected window. MINIBUF t means include the minibuffer window,
8130even if it isn't active. MINIBUF nil or omitted means include the
8131minibuffer window only if it's active. MINIBUF neither nil nor t
8132means 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
8138Return a window satisfying PREDICATE.
8139
8140This function cycles through all visible windows using `walk-windows',
8141calling PREDICATE on each one. PREDICATE is called with a window as
8142argument. The first window for which PREDICATE returns a non-nil
8143value is returned. If no window satisfies PREDICATE, DEFAULT is
8144returned.
8145
8146Optional second arg MINIBUF t means count the minibuffer window even
8147if not active. MINIBUF nil or omitted means count the minibuffer iff
8148it is active. MINIBUF neither t nor nil means not to count the
8149minibuffer even if it is active.
8150
8151Several frames may share a single minibuffer; if the minibuffer
8152counts, all windows on all frames that share that minibuffer count
8153too. Therefore, if you are using a separate minibuffer frame
8154and the minibuffer is active and MINIBUF says it counts,
8155`walk-windows' includes the windows in the frame from which you
8156entered the minibuffer, as well as the minibuffer window.
8157
8158ALL-FRAMES is the optional third argument.
8159ALL-FRAMES nil or omitted means cycle within the frames as specified above.
8160ALL-FRAMES = `visible' means include windows on all visible frames.
8161ALL-FRAMES = 0 means include windows on all visible and iconified frames.
8162ALL-FRAMES = t means include windows on all frames including invisible frames.
8163If ALL-FRAMES is a frame, it means include windows on that frame.
8164Anything else means restrict to the selected frame.
8165
8166** The function `single-key-description' now encloses function key and
8167event names in angle brackets. When called with a second optional
8168argument non-nil, angle brackets won't be printed.
8169
8170** If the variable `message-truncate-lines' is bound to t around a
8171call to `message', the echo area will not be resized to display that
8172message; it will be truncated instead, as it was done in 20.x.
8173Default value is nil.
8174
8175** The user option `line-number-display-limit' can now be set to nil,
8176meaning no limit.
8177
8178** The new user option `line-number-display-limit-width' controls
8179the maximum width of lines in a buffer for which Emacs displays line
8180numbers in the mode line. The default is 200.
8181
8182** `select-safe-coding-system' now also checks the most preferred
8183coding-system if buffer-file-coding-system is `undecided' and
8184DEFAULT-CODING-SYSTEM is not specified,
8185
8186** The function `subr-arity' provides information about the argument
8187list 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
8192buffer's local map and the map specified by the `local-map' property.
8193This is probably what most current uses of `local-map' want, rather
8194than 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
8198removed. Use `before-change-functions' and `after-change-functions'
8199instead.
8200
8201** The function `apropos-mode' runs the hook `apropos-mode-hook'.
8202
8203** `concat' no longer accepts individual integer arguments,
8204as 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
8209for reading specific files, analogous to auto-coding-alist, but
8210patterns 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
8216regular expressions.
8217
8218- Function: rx-to-string SEXP
8219
8220Translate SEXP into a regular expression in string notation.
8221
8222- Macro: rx SEXP
8223
8224Translate SEXP into a regular expression in string notation.
8225
8226The following are valid subforms of regular expressions in sexp
8227notation.
8228
8229STRING
8230 matches string STRING literally.
8231
8232CHAR
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
8485buffer is widened inside the save-restriction and changes made outside
8486the original restriction. Previously, doing this would cause the saved
8487restriction 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
8491when they find 8-bit characters. Previously, they included `ascii' in a
8492multibyte 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
8496if it contains a character from the `eight-bit-control' character set.
8497
8498*** The handling of multibyte sequences in a multibyte buffer is
8499changed. Previously, a byte sequence matching the pattern
8500[\200-\237][\240-\377]+ was interpreted as a single character
8501regardless of the length of the trailing bytes [\240-\377]+. Thus, if
8502the sequence was longer than what the leading byte indicated, the
8503extra trailing bytes were ignored by Lisp functions. Now such extra
8504bytes are independent 8-bit characters belonging to the charset
8505eight-bit-graphic.
8506
8507** Fontsets are now implemented using char-tables.
8508
8509A fontset can now be specified for each independent character, for
8510a group of characters or for a character set rather than just for a
8511character set as previously.
8512
8513*** The arguments of the function `set-fontset-font' are changed.
8514They are NAME, CHARACTER, FONTNAME, and optional FRAME. The function
8515modifies fontset NAME to use FONTNAME for CHARACTER.
8516
8517CHARACTER may be a cons (FROM . TO), where FROM and TO are non-generic
8518characters. In that case FONTNAME is used for all characters in the
8519range FROM and TO (inclusive). CHARACTER may be a charset. In that
8520case FONTNAME is used for all character in the charset.
8521
8522FONTNAME may be a cons (FAMILY . REGISTRY), where FAMILY is the family
8523name of a font and REGISTRY is a registry name of a font.
8524
8525*** Variable x-charset-registry has been deleted. The default charset
8526registries of character sets are set in the default fontset
8527"fontset-default".
8528
8529*** The function `create-fontset-from-fontset-spec' ignores the second
8530argument STYLE-VARIANT. It never creates style-variant fontsets.
8531
8532** The method of composing characters is changed. Now character
8533composition is done by a special text property `composition' in
8534buffers and strings.
8535
8536*** Charset composition is deleted. Emacs never creates a `composite
8537character' which is an independent character with a unique character
8538code. Thus the following functions handling `composite characters'
8539have been deleted: composite-char-component,
8540composite-char-component-count, composite-char-composition-rule,
8541composite-char-composition-rule and decompose-composite-char delete.
8542The variables leading-code-composition and min-composite-char have
8543also been deleted.
8544
8545*** Three more glyph reference points are added. They can be used to
8546specify 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
8550MODIFICATION-FUNC. With COMPONENTS, you can specify not only a
8551composition rule but also characters to be composed. Such characters
8552may differ between buffer and string text.
8553
8554*** The function `compose-string' takes new arguments START, END,
8555COMPONENTS, and MODIFICATION-FUNC.
8556
8557*** The function `compose-string' puts text property `composition'
8558directly on the argument STRING instead of returning a new string.
8559Likewise, the function `decompose-string' just removes text property
8560`composition' from STRING.
8561
8562*** The new function `find-composition' returns information about
8563a composition at a specified position in a buffer or a string.
8564
8565*** The function `decompose-composite-char' is now labeled as
8566obsolete.
8567
8568** The new coding system `mac-roman' is primarily intended for use on
8569the 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
8573introduced for Unicode characters in the range U+0100..U+24FF,
8574U+2500..U+33FF, U+E000..U+FFFF respectively.
8575
8576Note that the character sets are not yet unified in Emacs, so
8577characters which belong to charsets such as Latin-2, Greek, Hebrew,
8578etc. and the same characters in the `mule-unicode-*' charsets are
8579different characters, as far as Emacs is concerned. For example, text
8580which includes Unicode characters from the Latin-2 locale cannot be
8581encoded by Emacs with ISO 8859-2 coding system.
8582
8583** The new coding system `mule-utf-8' has been added.
8584It provides limited support for decoding/encoding UTF-8 text. For
8585details, 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
8589standard JIS X 0213 Plane 1 and Plane 2.
8590
8591** The new character sets `latin-iso8859-14' and `latin-iso8859-15'
8592have been introduced.
8593
8594** The new character sets `eight-bit-control' and `eight-bit-graphic'
8595have been introduced for 8-bit characters in the ranges 0x80..0x9F and
85960xA0..0xFF respectively. Note that the multibyte representation of
8597eight-bit-control is never exposed; this leads to an exception in the
8598emacs-mule coding system, which encodes everything else to the
8599buffer/string internal representation. Note that to search for
8600eight-bit-graphic characters in a multibyte buffer, the search string
8601must be multibyte, otherwise such characters will be converted to
8602their multibyte equivalent.
8603
8604** If the APPEND argument of `write-region' is an integer, it seeks to
8605that offset in the file before writing.
8606
8607** The function `add-minor-mode' has been added for convenience and
8608compatibility 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
8612from 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
8617additional optional arguments START and END that specify the region to
8618operate on.
8619
8620** The new function `count-screen-lines' is a more flexible alternative
8621to `window-buffer-height'.
8622
8623- Function: count-screen-lines &optional BEG END COUNT-FINAL-NEWLINE WINDOW
8624
8625Return the number of screen lines in the region between BEG and END.
8626The number of screen lines may be different from the number of actual
8627lines, due to line breaking, display table, etc.
8628
8629Optional arguments BEG and END default to `point-min' and `point-max'
8630respectively.
8631
8632If region ends with a newline, ignore it unless optional third argument
8633COUNT-FINAL-NEWLINE is non-nil.
8634
8635The optional fourth argument WINDOW specifies the window used for
8636obtaining parameters such as width, horizontal scrolling, and so
8637on. The default is to use the selected window's parameters.
8638
8639Like `vertical-motion', `count-screen-lines' always uses the current
8640buffer, regardless of which buffer is displayed in WINDOW. This makes
8641possible to use `count-screen-lines' in any buffer, whether or not it
8642is currently displayed in some window.
8643
8644** The new function `mapc' is like `mapcar' but doesn't collect the
8645argument function's results.
8646
8647** The functions base64-decode-region and base64-decode-string now
8648signal an error instead of returning nil if decoding fails. Also,
8649`base64-decode-string' now always returns a unibyte string (in Emacs
865020, it returned a multibyte string when the result was a valid multibyte
8651sequence).
8652
8653** The function sendmail-user-agent-compose now recognizes a `body'
8654header in the list of headers passed to it.
8655
8656** The new function member-ignore-case works like `member', but
8657ignores differences in case and text representation.
8658
8659** The buffer-local variable cursor-type can be used to specify the
8660cursor to use in windows displaying a buffer. Values are interpreted
8661as 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
8670an open parenthesis in column 0 is considered to be the start of a
8671defun. If set, the default, it is considered a defun start. If not
8672set, an open parenthesis in column 0 has no special meaning.
8673
8674** The new function `string-to-syntax' can be used to translate syntax
8675specifications in string form as accepted by `modify-syntax-entry' to
8676the cons-cell form that is used for the values of the `syntax-table'
8677text property, and in `font-lock-syntactic-keywords'.
8678
8679Example:
8680
8681 (string-to-syntax "()")
8682 => (4 . 41)
8683
8684** Emacs' reader supports CL read syntax for integers in bases
8685other than 10.
8686
8687*** `#BINTEGER' or `#bINTEGER' reads INTEGER in binary (radix 2).
8688INTEGER 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
8713the given property to obtain a string if it doesn't refer to etc/DOC
8714and isn't a string.
8715
8716** If called for a symbol, the function `documentation' now looks for
8717a `function-documentation' property of that symbol. If it has a non-nil
8718value, the documentation is taken from that value. If the value is
8719not 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
8724for 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
8730that don't fit into a Lisp integer.
8731
8732** The variable keyword-symbols-constants-flag has been removed.
8733Keywords are now always considered constants.
8734
8735** The new function `delete-and-extract-region' deletes text and
8736returns it.
8737
8738** The function `clear-this-command-keys' now also clears the vector
8739returned by function `recent-keys'.
8740
8741** Variables `beginning-of-defun-function' and `end-of-defun-function'
8742can be used to define handlers for the functions that find defuns.
8743Major modes can define these locally instead of rebinding C-M-a
8744etc. if the normal conventions for defuns are not appropriate for the
8745mode.
8746
8747** easy-mmode-define-minor-mode now takes an additional BODY argument
8748and is renamed `define-minor-mode'.
8749
8750** If an abbrev has a hook function which is a symbol, and that symbol
8751has a non-nil `no-self-insert' property, the return value of the hook
8752function specifies whether an expansion has been done or not. If it
8753returns nil, abbrev-expand also returns nil, meaning "no expansion has
8754been performed."
8755
8756When abbrev expansion is done by typing a self-inserting character,
8757and the abbrev has a hook with the `no-self-insert' property, and the
8758hook function returns non-nil meaning expansion has been done,
8759then the self-inserting character is not inserted.
8760
8761** The function `intern-soft' now accepts a symbol as first argument.
8762In this case, that exact symbol is looked up in the specified obarray,
8763and 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
8766with the syntax table of the current buffer temporarily set to a
8767specified table.
8768
8769 (with-syntax-table TABLE &rest BODY)
8770
8771Evaluate BODY with syntax table of current buffer set to a copy of
8772TABLE. The current syntax table is saved, BODY is evaluated, and the
8773saved table is restored, even in case of an abnormal exit. Value is
8774what BODY returns.
8775
8776** Regular expressions now support intervals \{n,m\} as well as
8777Perl's shy-groups \(?:...\) and non-greedy *? +? and ?? operators.
8778Also back-references like \2 are now considered as an error if the
8779corresponding subgroup does not exist (or is not closed yet).
8780Previously it would have been silently turned into `2' (ignoring the `\').
8781
8782** The optional argument BUFFER of function file-local-copy has been
8783removed since it wasn't used by anything.
8784
8785** The file name argument of function `file-locked-p' is now required
8786instead of being optional.
8787
8788** The new built-in error `text-read-only' is signaled when trying to
8789modify read-only text.
8790
8791** New functions and variables for locales.
8792
8793The new variable `locale-coding-system' specifies how to encode and
8794decode strings passed to low-level message functions like strerror and
8795time functions like strftime. The new variables
8796`system-messages-locale' and `system-time-locale' give the system
8797locales to be used when invoking these two types of functions.
8798
8799The new function `set-locale-environment' sets the language
8800environment, preferred coding system, and locale coding system from
8801the system locale as specified by the LC_ALL, LC_CTYPE, and LANG
8802environment variables. Normally, it is invoked during startup and need
8803not 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.
8808To declare a comment syntax as allowing nesting, just add an `n'
8809modifier to either of the characters of the comment end and the comment
8810start sequences.
8811
8812** The function `pixmap-spec-p' has been renamed `bitmap-spec-p'
8813because `bitmap' is more in line with the usual X terminology.
8814
8815** New function `propertize'
8816
8817The new function `propertize' can be used to conveniently construct
8818strings with text properties.
8819
8820- Function: propertize STRING &rest PROPERTIES
8821
8822Value is a copy of STRING with text properties assigned as specified
8823by PROPERTIES. PROPERTIES is a sequence of pairs PROPERTY VALUE, with
8824PROPERTY being the name of a text property and VALUE being the
8825specified value of that property. Example:
8826
8827 (propertize "foo" 'face 'bold 'read-only t)
8828
8829** push and pop macros.
8830
8831Simple versions of the push and pop macros of Common Lisp
8832are now defined in Emacs Lisp. These macros allow only symbols
8833as 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
8841Simple versions of the dolist and dotimes macros of Common Lisp
8842are 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
8856class--for instance, [-[:digit:].+] matches digits or a period
8857or 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
8885The following functions are defined for hash tables:
8886
8887- Function: make-hash-table ARGS
8888
8889The argument list ARGS consists of keyword/argument pairs. All arguments
8890are optional. The following arguments are defined:
8891
8892:test TEST
8893
8894TEST must be a symbol specifying how to compare keys. Default is `eql'.
8895Predefined are `eq', `eql' and `equal'. If TEST is not predefined,
8896it must have been defined with `define-hash-table-test'.
8897
8898:size SIZE
8899
8900SIZE must be an integer > 0 giving a hint to the implementation how
8901many elements will be put in the hash table. Default size is 65.
8902
8903:rehash-size REHASH-SIZE
8904
8905REHASH-SIZE specifies by how much to grow a hash table once it becomes
8906full. If REHASH-SIZE is an integer, add that to the hash table's old
8907size to get the new size. Otherwise, REHASH-SIZE must be a float >
89081.0, and the new size is computed by multiplying REHASH-SIZE with the
8909old size. Default rehash size is 1.5.
8910
8911:rehash-threshold THRESHOLD
8912
8913THRESHOLD must be a float > 0 and <= 1.0 specifying when to resize the
8914hash 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
8919WEAK 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
8922collection if their key and/or value are not referenced elsewhere
8923outside of the hash table. Default are non-weak hash tables.
8924
8925- Function: makehash &optional TEST
8926
8927Similar to make-hash-table, but only TEST can be specified.
8928
8929- Function: hash-table-p TABLE
8930
8931Returns non-nil if TABLE is a hash table object.
8932
8933- Function: copy-hash-table TABLE
8934
8935Returns a copy of TABLE. Only the table itself is copied, keys and
8936values are shared.
8937
8938- Function: hash-table-count TABLE
8939
8940Returns the number of entries in TABLE.
8941
8942- Function: hash-table-rehash-size TABLE
8943
8944Returns the rehash size of TABLE.
8945
8946- Function: hash-table-rehash-threshold TABLE
8947
8948Returns the rehash threshold of TABLE.
8949
8950- Function: hash-table-rehash-size TABLE
8951
8952Returns the size of TABLE.
8953
8954- Function: hash-table-test TABLE
8955
8956Returns the test TABLE uses to compare keys.
8957
8958- Function: hash-table-weakness TABLE
8959
8960Returns the weakness specified for TABLE.
8961
8962- Function: clrhash TABLE
8963
8964Clear TABLE.
8965
8966- Function: gethash KEY TABLE &optional DEFAULT
8967
8968Look up KEY in TABLE and return its associated VALUE or DEFAULT if
8969not found.
8970
8971- Function: puthash KEY VALUE TABLE
8972
8973Associate KEY with VALUE in TABLE. If KEY is already associated with
8974another value, replace the old value with VALUE.
8975
8976- Function: remhash KEY TABLE
8977
8978Remove KEY from TABLE if it is there.
8979
8980- Function: maphash FUNCTION TABLE
8981
8982Call FUNCTION for all elements in TABLE. FUNCTION must take two
8983arguments KEY and VALUE.
8984
8985- Function: sxhash OBJ
8986
8987Return a hash code for Lisp object OBJ.
8988
8989- Function: define-hash-table-test NAME TEST-FN HASH-FN
8990
8991Define a new hash table test named NAME. If NAME is specified as
8992a test in `make-hash-table', the table created will use TEST-FN for
8993comparing keys, and HASH-FN to compute hash codes for keys. Test
8994and hash function are stored as symbol property `hash-table-test'
8995of NAME with a value of (TEST-FN HASH-FN).
8996
8997TEST-FN must take two arguments and return non-nil if they are the same.
8998
8999HASH-FN must take one argument and return an integer that is the hash
9000code of the argument. The function should use the whole range of
9001integer values for hash code computation, including negative integers.
9002
9003Example: The following creates a hash table whose keys are supposed to
9004be 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
9019It now works to use the #N= and #N# constructs to represent
9020circular structures. For example, #1=(a . #1#) represents
9021a cons cell which is its own cdr.
9022
9023** The Lisp printer handles circular structure.
9024
9025If 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
9029t, that means replace a tab with spaces if necessary to reach the
9030specified column, but do not add spaces at the end of the line if it
9031is too short to reach that column.
9032
9033** perform-replace has a new feature: the REPLACEMENTS argument may
9034now be a cons cell (FUNCTION . DATA). This means to call FUNCTION
9035after each match to get the replacement text. FUNCTION is called with
9036two arguments: DATA, and the number of replacements already made.
9037
9038If the FROM-STRING contains any upper-case letters,
9039perform-replace also turns off `case-fold-search' temporarily
9040and inserts the replacement text without altering case in it.
9041
9042** The function buffer-size now accepts an optional argument
9043to specify which buffer to return the size of.
9044
9045** The calendar motion commands now run the normal hook
9046calendar-move-hook after moving point.
9047
9048** The new variable small-temporary-file-directory specifies a
9049directory to use for creating temporary files that are likely to be
9050small. (Certain Emacs features use this directory.) If
9051small-temporary-file-directory is nil, they use
9052temporary-file-directory instead.
9053
9054** The variable `inhibit-modification-hooks', if non-nil, inhibits all
9055the hooks that track changes in the buffer. This affects
9056`before-change-functions' and `after-change-functions', as well as
9057hooks attached to text properties and overlay properties.
9058
9059** assq-delete-all is a new function that deletes all the
9060elements 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
9064make-temp-file is used like make-temp-name, except that it actually
9065creates the file before it returns. This prevents a timing error,
9066ensuring that no other job can use the same name for a temporary file.
9067
9068** New exclusive-open feature in `write-region'
9069
9070The optional seventh arg is now called MUSTBENEW. If non-nil, it insists
9071on a check for an existing file with the same name. If MUSTBENEW
9072is `excl', that means to get an error if the file already exists;
9073never overwrite. If MUSTBENEW is neither nil nor `excl', that means
9074ask for confirmation before overwriting, but do go ahead and
9075overwrite the file if the user gives confirmation.
9076
9077If the MUSTBENEW argument in `write-region' is `excl',
9078that means to use a special feature in the `open' system call
9079to get an error if the file exists at that time.
9080The error reported is `file-already-exists'.
9081
9082** Function `format' now handles text properties.
9083
9084Text properties of the format string are applied to the result string.
9085If the result string is longer than the format string, text properties
9086ending at the end of the format string are extended to the end of the
9087result string.
9088
9089Text properties from string arguments are applied to the result
9090string where arguments appear in the result string.
9091
9092Example:
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
9100results in a bold-face string with an italic `world' at the end.
9101
9102** Messages can now be displayed with text properties.
9103
9104Text properties are handled as described above for function `format'.
9105The following example displays a bold-face message with an italic
9106argument 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
9116Emacs supports playing sound files on GNU/Linux and the free BSDs
9117(Voxware driver and native BSD driver, aka as Luigi's driver).
9118
9119Currently supported file formats are RIFF-WAVE (*.wav) and Sun Audio
9120(*.au). You must configure Emacs with the option `--with-sound=yes'
9121to enable sound support.
9122
9123Sound files can be played by calling (play-sound SOUND). SOUND is a
9124list of the form `(sound PROPERTY...)'. The function is only defined
9125when sound support is present for the system on which Emacs runs. The
9126functions runs `play-sound-functions' with one argument which is the
9127sound to play, before playing the sound.
9128
9129The following sound properties are supported:
9130
9131- `:file FILE'
9132
9133FILE is a file name. If FILE isn't an absolute name, it will be
9134searched relative to `data-directory'.
9135
9136- `:data DATA'
9137
9138DATA is a string containing sound data. Either :file or :data
9139may be present, but not both.
9140
9141- `:volume VOLUME'
9142
9143VOLUME must be an integer in the range 0..100 or a float in the range
91440..1. This property is optional.
9145
9146- `:device DEVICE'
9147
9148DEVICE is a string specifying the system device on which to play the
9149sound. The default device is system-dependent.
9150
9151Other properties are ignored.
9152
9153An 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
9159a keyword symbol.
9160
9161** Changes to garbage collection
9162
9163*** The function garbage-collect now additionally returns the number
9164of live and free strings.
9165
9166*** There is a new variable `strings-consed' holding the number of
9167strings that have been consed so far.
9168
9169
9170* Lisp-level Display features added after release 2.6 of the Emacs
9171Lisp Manual
9172
9173** The user-option `resize-mini-windows' controls how Emacs resizes
9174mini-windows.
9175
9176** The function `pos-visible-in-window-p' now has a third optional
9177argument, PARTIALLY. If a character is only partially visible, nil is
9178returned, 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
9185image.
9186
9187- Function: image-size SPEC &optional PIXELS FRAME
9188
9189Return the size of an image as a pair (WIDTH . HEIGHT).
9190
9191SPEC is an image specification. PIXELS non-nil means return sizes
9192measured in pixels, otherwise return sizes measured in canonical
9193character units (fractions of the width/height of the frame's default
9194font). FRAME is the frame on which the image will be displayed.
9195FRAME nil or omitted means use the selected frame.
9196
9197** The function `image-mask-p' can be used to determine if an image
9198has a mask bitmap.
9199
9200- Function: image-mask-p SPEC &optional FRAME
9201
9202Return t if image SPEC has a mask bitmap.
9203FRAME is the frame on which the image will be displayed. FRAME nil
9204or omitted means use the selected frame.
9205
9206** The function `find-image' can be used to find a usable image
9207satisfying one of a list of specifications.
9208
9209** The STRING argument of `put-image' and `insert-image' is now
9210optional.
9211
9212** Image specifications may contain the property `:ascent center' (see
9213below).
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
9219to make Emacs avoid displaying text with bold black foreground on TTYs.
9220
9221Some terminals, notably PC consoles, emulate bold text by displaying
9222text in brighter colors. On such a console, a bold black foreground
9223is displayed in a gray color. If this turns out to be hard to read on
9224your monitor---the problem occurred with the mode line on
9225laptops---you can instruct Emacs to ignore the text's boldness, and to
9226just display it black instead.
9227
9228This situation can't be detected automatically. You will have to put
9229a line like
9230
9231 (tty-suppress-bold-inverse-default-colors t)
9232
9233in your `.emacs'.
9234
9235** New face implementation.
9236
9237Emacs faces have been reimplemented from scratch. They don't use XLFD
9238font names anymore and face merging now works as expected.
9239
9240*** New faces.
9241
9242Each 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
9273Faces are frame-local by nature because Emacs allows to define the
9274same named face (face names are symbols) differently for different
9275frames. Each frame has an alist of face definitions for all named
9276faces. The value of a named face in such an alist is a Lisp vector
9277with the symbol `face' in slot 0, and a slot for each of the face
9278attributes mentioned above.
9279
9280There is also a global face alist `face-new-frame-defaults'. Face
9281definitions from this list are used to initialize faces of newly
9282created frames.
9283
9284A face doesn't have to specify all attributes. Those not specified
9285have a nil value. Faces specifying all attributes are called
9286`fully-specified'.
9287
9288*** Face merging.
9289
9290The display style of a given character in the text is determined by
9291combining several faces. This process is called `face merging'. Any
9292aspect of the display style that isn't specified by overlays or text
9293properties is taken from the `default' face. Since it is made sure
9294that the default face is always fully-specified, face merging always
9295results in a fully-specified face.
9296
9297*** Face realization.
9298
9299After all face attributes for a character have been determined by
9300merging faces of that character, that face is `realized'. The
9301realization process maps face attributes to what is physically
9302available on the system where Emacs runs. The result is a `realized
9303face' in form of an internal structure which is stored in the face
9304cache of the frame on which it was realized.
9305
9306Face realization is done in the context of the charset of the
9307character to display because different fonts and encodings are used
9308for different charsets. In other words, for characters of different
9309charsets, different realized faces are needed to display them.
9310
9311Except for composite characters, faces are always realized for a
9312specific character set and contain a specific font, even if the face
9313being realized specifies a fontset. The reason is that the result of
9314the new font selection stage is better than what can be done with
9315statically defined font name patterns in fontsets.
9316
9317In unibyte text, Emacs' charsets aren't applicable; function
9318`char-charset' reports ASCII for all characters, including those >
93190x7f. The X registry and encoding of fonts to use is determined from
9320the variable `face-default-registry' in this case. The variable is
9321initialized at Emacs startup time from the font the user specified for
9322Emacs.
9323
9324Currently all unibyte text, i.e. all buffers with
9325`enable-multibyte-characters' nil are displayed with fonts of the same
9326registry and encoding `face-default-registry'. This is consistent
9327with the fact that languages can also be set globally, only.
9328
9329**** Clearing face caches.
9330
9331The Lisp function `clear-face-cache' can be called to clear face caches
9332on all frames. If called with a non-nil argument, it will also unload
9333unused fonts.
9334
9335*** Font selection.
9336
9337Font selection tries to find the best available matching font for a
9338given (charset, face) combination. This is done slightly differently
9339for faces specifying a fontset, or a font family name.
9340
9341If the face specifies a fontset name, that fontset determines a
9342pattern for fonts of the given charset. If the face specifies a font
9343family, a font pattern is constructed. Charset symbols have a
9344property `x-charset-registry' for that purpose that maps a charset to
9345an XLFD registry and encoding in the font pattern constructed.
9346
9347Available fonts on the system on which Emacs runs are then matched
9348against the font pattern. The result of font selection is the best
9349match for the given face attributes in this font list.
9350
9351Font selection can be influenced by the user.
9352
9353The user can specify the relative importance he gives the face
9354attributes width, height, weight, and slant by setting
9355face-font-selection-order (faces.el) to a list of face attribute
9356names. The default is (:width :height :weight :slant), and means
9357that font selection first tries to find a good match for the font
9358width specified by a face, then---within fonts with that width---tries
9359to find a best match for the specified font height, etc.
9360
9361Setting `face-font-family-alternatives' allows the user to specify
9362alternative font families to try if a family specified by a face
9363doesn't exist.
9364
9365Setting `face-font-registry-alternatives' allows the user to specify
9366all alternative font registry names to try for a face specifying a
9367registry.
9368
9369Please note that the interpretations of the above two variables are
9370slightly different.
9371
9372Setting face-ignored-fonts allows the user to ignore specific fonts.
9373
9374
9375**** Scalable fonts
9376
9377Emacs can make use of scalable fonts but doesn't do so by default,
9378since the use of too many or too big scalable fonts may crash XFree86
9379servers.
9380
9381To enable scalable font use, set the variable
9382`scalable-fonts-allowed'. A value of nil, the default, means never use
9383scalable fonts. A value of t means any scalable font may be used.
9384Otherwise, the value must be a list of regular expressions. A
9385scalable font may then be used if it matches a regular expression from
9386that list. Example:
9387
9388 (setq scalable-fonts-allowed '("muleindian-2$"))
9389
9390allows 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
9396Return a list of available fonts of family FAMILY on FRAME. If FAMILY
9397is omitted or nil, list all families. Otherwise, FAMILY must be a
9398string, possibly containing wildcards `?' and `*'.
9399
9400If FRAME is omitted or nil, use the selected frame. Each element of
9401the result is a vector [FAMILY WIDTH POINT-SIZE WEIGHT SLANT FIXED-P
9402FULL REGISTRY-AND-ENCODING]. FAMILY is the font family name.
9403POINT-SIZE is the size of the font in 1/10 pt. WIDTH, WEIGHT, and
9404SLANT are symbols describing the width, weight and slant of the font.
9405These symbols are the same as for face attributes. FIXED-P is non-nil
9406if the font is fixed-pitch. FULL is the full name of the font, and
9407REGISTRY-AND-ENCODING is a string giving the registry and encoding of
9408the font. The result list is sorted according to the current setting
9409of the face font sort order.
9410
9411- Function: x-font-family-list
9412
9413Return a list of available font families on FRAME. If FRAME is
9414omitted 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
9416non-nil if fonts of that family are fixed-pitch.
9417
9418- Variable: font-list-limit
9419
9420Limit for font matching. If an integer > 0, font matching functions
9421won't load more than that number of fonts when searching for a
9422matching font. The default is currently 100.
9423
9424*** Setting face attributes.
9425
9426For the most part, the new face implementation is interface-compatible
9427with the old one. Old face attribute related functions are now
9428implemented in terms of the new functions `set-face-attribute' and
9429`face-attribute'.
9430
9431Face attributes are identified by their names which are keyword
9432symbols. All attributes can be set to `unspecified'.
9433
9434The following attributes are recognized:
9435
9436`:family'
9437
9438VALUE must be a string specifying the font family, e.g. ``courier'',
9439or a fontset alias name. If a font family is specified, wild-cards `*'
9440and `?' are allowed.
9441
9442`:width'
9443
9444VALUE specifies the relative proportionate width of the font to use.
9445It 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
9451VALUE must be either an integer specifying the height of the font to use
9452in 1/10 pt, a floating point number specifying the amount by which to
9453scale any underlying face, or a function, which is called with the old
9454height (from the underlying face), and should return the new height.
9455
9456`:weight'
9457
9458VALUE specifies the weight of the font to use. It must be one of the
9459symbols `ultra-bold', `extra-bold', `bold', `semi-bold', `normal',
9460`semi-light', `light', `extra-light', `ultra-light'.
9461
9462`:slant'
9463
9464VALUE specifies the slant of the font to use. It must be one of the
9465symbols `italic', `oblique', `normal', `reverse-italic', or
9466`reverse-oblique'.
9467
9468`:foreground', `:background'
9469
9470VALUE must be a color name, a string.
9471
9472`:underline'
9473
9474VALUE specifies whether characters in FACE should be underlined. If
9475VALUE is t, underline with foreground color of the face. If VALUE is
9476a string, underline with that color. If VALUE is nil, explicitly
9477don't underline.
9478
9479`:overline'
9480
9481VALUE specifies whether characters in FACE should be overlined. If
9482VALUE is t, overline with foreground color of the face. If VALUE is a
9483string, overline with that color. If VALUE is nil, explicitly don't
9484overline.
9485
9486`:strike-through'
9487
9488VALUE specifies whether characters in FACE should be drawn with a line
9489striking through them. If VALUE is t, use the foreground color of the
9490face. If VALUE is a string, strike-through with that color. If VALUE
9491is nil, explicitly don't strike through.
9492
9493`:box'
9494
9495VALUE specifies whether characters in FACE should have a box drawn
9496around them. If VALUE is nil, explicitly don't draw boxes. If
9497VALUE is t, draw a box with lines of width 1 in the foreground color
9498of the face. If VALUE is a string, the string must be a color name,
9499and the box is drawn in that color with a line width of 1. Otherwise,
9500VALUE must be a property list of the form `(:line-width WIDTH
9501:color COLOR :style STYLE)'. If a keyword/value pair is missing from
9502the property list, a default value will be used for the value, as
9503specified below. WIDTH specifies the width of the lines to draw; it
9504defaults to 1. COLOR is the name of the color to draw in, default is
9505the foreground color of the face for simple boxes, and the background
9506color of the face for 3D boxes. STYLE specifies whether a 3D box
9507should be draw. If STYLE is `released-button', draw a box looking
9508like a released 3D button. If STYLE is `pressed-button' draw a box
9509that appears like a pressed button. If STYLE is nil, the default if
9510the property list doesn't contain a style specification, draw a 2D
9511box.
9512
9513`:inverse-video'
9514
9515VALUE specifies whether characters in FACE should be displayed in
9516inverse video. VALUE must be one of t or nil.
9517
9518`:stipple'
9519
9520If VALUE is a string, it must be the name of a file of pixmap data.
9521The directories listed in the `x-bitmap-file-path' variable are
9522searched. Alternatively, VALUE may be a list of the form (WIDTH
9523HEIGHT DATA) where WIDTH and HEIGHT are the size in pixels, and DATA
9524is a string containing the raw bits of the bitmap. VALUE nil means
9525explicitly don't use a stipple pattern.
9526
9527For convenience, attributes `:family', `:width', `:height', `:weight',
9528and `:slant' may also be set in one step from an X font name:
9529
9530`:font'
9531
9532Set font-related face attributes from VALUE. VALUE must be a valid
9533XLFD font name. If it is a font name pattern, the first matching font
9534is used--this is for compatibility with the behavior of previous
9535versions of Emacs.
9536
9537For compatibility with Emacs 20, keywords `:bold' and `:italic' can
9538be used to specify that a bold or italic font should be used. VALUE
9539must be t or nil in that case. A value of `unspecified' is not allowed."
9540
9541Please see also the documentation of `set-face-attribute' and
9542`defface'.
9543
9544`:inherit'
9545
9546VALUE is the name of a face from which to inherit attributes, or a list
9547of face names. Attributes from inherited faces are merged into the face
9548like an underlying face would be, with higher priority than underlying faces.
9549
9550*** Face attributes and X resources
9551
9552The following X resource names can be used to set face attributes
9553from 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
9579The value of the `face' text property can now be a single face
9580specification or a list of such specifications. Each face
9581specification can be
9582
95831. A symbol or string naming a Lisp face.
9584
95852. 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
95903. 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
9596The function `tty-color-define' can be used to define colors for use
9597on TTY and MSDOS frames. It maps a color name to a color number on
9598the terminal. Emacs defines a couple of common color mappings by
9599default. You can get defined colors with a call to
9600`defined-colors'. The function `tty-color-clear' can be
9601used to clear the mapping table.
9602
9603** Unified support for colors independent of frame type.
9604
9605The new functions `defined-colors', `color-defined-p', `color-values',
9606and `display-color-p' work for any type of frame. On frames whose
9607type is neither x nor w32, these functions transparently map X-style
9608color specifications to the closest colors supported by the frame
9609display. Lisp programs should use these new functions instead of the
9610old `x-defined-colors', `x-color-defined-p', `x-color-values', and
9611`x-display-color-p'. (The old function names are still available for
9612compatibility; they are now aliases of the new names.) Lisp programs
9613should no more look at the value of the variable window-system to
9614modify their color-related behavior.
9615
9616The primitives `color-gray-p' and `color-supported-p' also work for
9617any frame type.
9618
9619** Platform-independent functions to describe display capabilities.
9620
9621The 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
9627display. Lisp programs should call these functions instead of testing
9628the value of the variables `window-system' or `system-type', or calling
9629platform-specific functions such as `x-display-pixel-width'.
9630
9631The new function `display-images-p' returns non-nil if a particular
9632display can display image files.
9633
9634** The minibuffer prompt is now actually inserted in the minibuffer.
9635
9636This makes it possible to scroll through the prompt, if you want to.
9637To disallow this completely (like previous versions of emacs), customize
9638the variable `minibuffer-prompt-properties', and turn on the
9639`Inviolable' option.
9640
9641The function `minibuffer-prompt-end' returns the current position of the
9642end of the minibuffer prompt, if the minibuffer is current.
9643Otherwise, it returns `(point-min)'.
9644
9645** New `field' abstraction in buffers.
9646
9647There is now code to support an abstraction called `fields' in emacs
9648buffers. A field is a contiguous region of text with the same `field'
9649property (which can be a text property or an overlay).
9650
9651Many emacs functions, such as forward-word, forward-sentence,
9652forward-paragraph, beginning-of-line, etc., stop moving when they come
9653to the boundary between fields; beginning-of-line and end-of-line will
9654not let the point move past the field boundary, but other movement
9655commands continue into the next field if repeated. Stopping at field
9656boundaries can be suppressed programmatically by binding
9657`inhibit-field-text-motion' to a non-nil value around calls to these
9658functions.
9659
9660Now that the minibuffer prompt is inserted into the minibuffer, it is in
9661a separate field from the user-input part of the buffer, so that common
9662editing commands treat the user's text separately from the prompt.
9663
9664The 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
9668Return the position closest to NEW-POS that is in the same field as OLD-POS.
9669
9670A field is a region of text with the same `field' property.
9671If NEW-POS is nil, then the current point is used instead, and set to the
9672constrained position if that is different.
9673
9674If OLD-POS is at the boundary of two fields, then the allowable
9675positions for NEW-POS depends on the value of the optional argument
9676ESCAPE-FROM-EDGE: If ESCAPE-FROM-EDGE is nil, then NEW-POS is
9677constrained to the field that has the same `field' char-property
9678as any new characters inserted at OLD-POS, whereas if ESCAPE-FROM-EDGE
9679is non-nil, NEW-POS is constrained to the union of the two adjacent
9680fields. Additionally, if two fields are separated by another field with
9681the special value `boundary', then any point within this special field is
9682also considered to be `on the boundary'.
9683
9684If the optional argument ONLY-IN-LINE is non-nil and constraining
9685NEW-POS would move it to a different line, NEW-POS is returned
9686unconstrained. This useful for commands that move by line, like
9687C-n or C-a, which should generally respect field boundaries
9688only in the case where they can still move to the right line.
9689
9690If the optional argument INHIBIT-CAPTURE-PROPERTY is non-nil, and OLD-POS has
9691a non-nil property of that name, then any field boundaries are ignored.
9692
9693Field boundaries are not noticed if `inhibit-field-text-motion' is non-nil.
9694
9695- Function: delete-field &optional POS
9696
9697Delete the field surrounding POS.
9698A field is a region of text with the same `field' property.
9699If POS is nil, the value of point is used for POS.
9700
9701- Function: field-beginning &optional POS ESCAPE-FROM-EDGE
9702
9703Return the beginning of the field surrounding POS.
9704A field is a region of text with the same `field' property.
9705If POS is nil, the value of point is used for POS.
9706If ESCAPE-FROM-EDGE is non-nil and POS is at the beginning of its
9707field, then the beginning of the *previous* field is returned.
9708
9709- Function: field-end &optional POS ESCAPE-FROM-EDGE
9710
9711Return the end of the field surrounding POS.
9712A field is a region of text with the same `field' property.
9713If POS is nil, the value of point is used for POS.
9714If ESCAPE-FROM-EDGE is non-nil and POS is at the end of its field,
9715then the end of the *following* field is returned.
9716
9717- Function: field-string &optional POS
9718
9719Return the contents of the field surrounding POS as a string.
9720A field is a region of text with the same `field' property.
9721If POS is nil, the value of point is used for POS.
9722
9723- Function: field-string-no-properties &optional POS
9724
9725Return the contents of the field around POS, without text-properties.
9726A field is a region of text with the same `field' property.
9727If POS is nil, the value of point is used for POS.
9728
9729** Image support.
9730
9731Emacs can now display images. Images are inserted into text by giving
9732strings or buffer text a `display' text property containing one of
9733(AREA IMAGE) or IMAGE. The display of the `display' property value
9734replaces the display of the characters having that property.
9735
9736If the property value has the form (AREA IMAGE), AREA must be one of
9737`(margin left-margin)', `(margin right-margin)' or `(margin nil)'. If
9738AREA is `(margin nil)', IMAGE will be displayed in the text area of a
9739window, otherwise it will be displayed in the left or right marginal
9740area.
9741
9742IMAGE is an image specification.
9743
9744*** Image specifications
9745
9746Image specifications are lists of the form `(image PROPS)' where PROPS
9747is a property list whose keys are keyword symbols. Each
9748specifications must contain a property `:type TYPE' with TYPE being a
9749symbol specifying the image type, e.g. `xbm'. Properties not
9750described below are ignored.
9751
9752The following is a list of properties all image types share.
9753
9754`:ascent ASCENT'
9755
9756ASCENT must be a number in the range 0..100, or the symbol `center'.
9757If it is a number, it specifies the percentage of the image's height
9758to use for its ascent.
9759
9760If not specified, ASCENT defaults to the value 50 which means that the
9761image will be centered with the base line of the row it appears in.
9762
9763If ASCENT is `center' the image is vertically centered around a
9764centerline which is the vertical center of text drawn at the position
9765of the image, in the manner specified by the text properties and
9766overlays that apply to the image.
9767
9768`:margin MARGIN'
9769
9770MARGIN must be either a number >= 0 specifying how many pixels to put
9771as margin around the image, or a pair (X . Y) with X specifying the
9772horizontal margin and Y specifying the vertical margin. Default is 0.
9773
9774`:relief RELIEF'
9775
9776RELIEF is analogous to the `:relief' attribute of faces. Puts a relief
9777around an image.
9778
9779`:conversion ALGO'
9780
9781Apply an image algorithm to the image before displaying it.
9782
9783ALGO `laplace' or `emboss' means apply a Laplace or ``emboss''
9784edge-detection algorithm to the image.
9785
9786ALGO `(edge-detection :matrix MATRIX :color-adjust ADJUST)' means
9787apply a general edge-detection algorithm. MATRIX must be either a
9788nine-element list or a nine-element vector of numbers. A pixel at
9789position x/y in the transformed image is computed from original pixels
9790around that position. MATRIX specifies, for each pixel in the
9791neighborhood of x/y, a factor with which that pixel will influence the
9792transformed pixel; element 0 specifies the factor for the pixel at
9793x-1/y-1, element 1 the factor for the pixel at x/y-1 etc. as shown
9794below.
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
9800The resulting pixel is computed from the color intensity of the color
9801resulting from summing up the RGB values of surrounding pixels,
9802multiplied by the specified factors, and dividing that sum by the sum
9803of the factors' absolute values.
9804
9805Laplace edge-detection currently uses a matrix of
9806
9807 (1 0 0
9808 0 0 0
9809 9 9 -1)
9810
9811Emboss edge-detection uses a matrix of
9812
9813 ( 2 -1 0
9814 -1 0 1
9815 0 1 -2)
9816
9817ALGO `disabled' means transform the image so that it looks
9818``disabled''.
9819
9820`:mask MASK'
9821
9822If MASK is `heuristic' or `(heuristic BG)', build a clipping mask for
9823the image, so that the background of a frame is visible behind the
9824image. If BG is not specified, or if BG is t, determine the
9825background color of the image by looking at the 4 corners of the
9826image, assuming the most frequently occurring color from the corners is
9827the background color of the image. Otherwise, BG must be a list `(RED
9828GREEN BLUE)' specifying the color to assume for the background of the
9829image.
9830
9831If MASK is nil, remove a mask from the image, if it has one. Images
9832in some formats include a mask which can be removed by specifying
9833`:mask nil'.
9834
9835`:file FILE'
9836
9837Load image from FILE. If FILE is not absolute after expanding it,
9838search for the image in `data-directory'. Some image types support
9839building images from data. When this is done, no `:file' property
9840may be present in the image specification.
9841
9842`:data DATA'
9843
9844Get image data from DATA. (As of this writing, this is not yet
9845supported for image type `postscript'). Either :file or :data may be
9846present in an image specification, but not both. All image types
9847support strings as DATA, some types allow additional types of DATA.
9848
9849*** Supported image types
9850
9851**** XBM, image type `xbm'.
9852
9853XBM images don't require an external library. Additional image
9854properties supported are:
9855
9856`:foreground FG'
9857
9858FG must be a string specifying the image foreground color, or nil
9859meaning to use the default. Default is the frame's foreground color.
9860
9861`:background BG'
9862
9863BG must be a string specifying the image background color, or nil
9864meaning to use the default. Default is the frame's background color.
9865
9866XBM images can be constructed from data instead of file. In this
9867case, the image specification must contain the following properties
9868instead of a `:file' property.
9869
9870`:width WIDTH'
9871
9872WIDTH specifies the width of the image in pixels.
9873
9874`:height HEIGHT'
9875
9876HEIGHT specifies the height of the image in pixels.
9877
9878`:data DATA'
9879
9880DATA 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
9896XPM images require the external library `libXpm', package
9897`xpm-3.4k.tar.gz', version 3.4k or later. Make sure the library is
9898found when Emacs is configured by supplying appropriate paths via
9899`--x-includes' and `--x-libraries'.
9900
9901Additional image properties supported are:
9902
9903`:color-symbols SYMBOLS'
9904
9905SYMBOLS must be a list of pairs (NAME . COLOR), with NAME being the
9906name of color as it appears in an XPM file, and COLOR being an X color
9907name.
9908
9909XPM images can be built from memory instead of files. In that case,
9910add a `:data' property instead of a `:file' property.
9911
9912The XPM library uses libz in its implementation so that it is able
9913to display compressed images.
9914
9915**** PBM, image type `pbm'
9916
9917PBM images don't require an external library. Color, gray-scale and
9918mono images are supported. Additional image properties supported for
9919mono images are:
9920
9921`:foreground FG'
9922
9923FG must be a string specifying the image foreground color, or nil
9924meaning to use the default. Default is the frame's foreground color.
9925
9926`:background FG'
9927
9928BG must be a string specifying the image background color, or nil
9929meaning to use the default. Default is the frame's background color.
9930
9931**** JPEG, image type `jpeg'
9932
9933Support for JPEG images requires the external library `libjpeg',
9934package `jpegsrc.v6a.tar.gz', or later. There are no additional image
9935properties defined.
9936
9937**** TIFF, image type `tiff'
9938
9939Support for TIFF images requires the external library `libtiff',
9940package `tiff-v3.4-tar.gz', or later. There are no additional image
9941properties defined.
9942
9943**** GIF, image type `gif'
9944
9945Support for GIF images requires the external library `libungif', package
9946`libungif-4.1.0', or later.
9947
9948Additional image properties supported are:
9949
9950`:index INDEX'
9951
9952INDEX must be an integer >= 0. Load image number INDEX from a
9953multi-image GIF file. If INDEX is too large, the image displays
9954as a hollow box.
9955
9956This could be used to implement limited support for animated GIFs.
9957For example, the following function displays a multi-image GIF file
9958at point-min in the current buffer, switching between sub-images
9959every 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
9978Support for PNG images requires the external library `libpng',
9979package `libpng-1.0.2.tar.gz', or later. There are no additional image
9980properties defined.
9981
9982**** Ghostscript, image type `postscript'.
9983
9984Additional image properties supported are:
9985
9986`:pt-width WIDTH'
9987
9988WIDTH is width of the image in pt (1/72 inch). WIDTH must be an
9989integer. This is a required property.
9990
9991`:pt-height HEIGHT'
9992
9993HEIGHT specifies the height of the image in pt (1/72 inch). HEIGHT
9994must be a integer. This is an required property.
9995
9996`:bounding-box BOX'
9997
9998BOX must be a list or vector of 4 integers giving the bounding box of
9999the PS image, analogous to the `BoundingBox' comment found in PS
10000files. This is an required property.
10001
10002Part of the Ghostscript interface is implemented in Lisp. See
10003lisp/gs.el.
10004
10005*** Lisp interface.
10006
10007The variable `image-types' contains a list of those image types
10008which are supported in the current configuration.
10009
10010Images are stored in an image cache and removed from the cache when
10011they haven't been displayed for `image-cache-eviction-delay seconds.
10012The function `clear-image-cache' can be used to clear the image cache
10013manually. Images in the cache are compared with `equal', i.e. all
10014images with `equal' specifications share the same image.
10015
10016*** Simplified image API, image.el
10017
10018The new Lisp package image.el contains functions that simplify image
10019creation and putting images into text. The function `create-image'
10020can be used to create images. The macro `defimage' can be used to
10021define an image based on available image types. The functions
10022`put-image' and `insert-image' can be used to insert an image into a
10023buffer.
10024
10025** Display margins.
10026
10027Windows can now have margins which are used for special text
10028and images.
10029
10030To 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
10033obtain the current settings. To make `left-margin-width' and
10034`right-margin-width' take effect, you must set them before displaying
10035the buffer in a window, or use `set-window-buffer' to force an update
10036of the display margins.
10037
10038You can put text in margins by giving it a `display' text property
10039containing a pair of the form `(LOCATION . VALUE)', where LOCATION is
10040one of `left-margin' or `right-margin' or nil. VALUE can be either a
10041string, an image specification or a stretch specification (see later
10042in this file).
10043
10044** Help display
10045
10046Emacs displays short help messages in the echo area, when the mouse
10047moves 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
10049that have a `help-echo' property.
10050
10051If the value of the `help-echo' property is a function, that function
10052is called with three arguments WINDOW, OBJECT and POSITION. WINDOW is
10053the window in which the help was found.
10054
10055If OBJECT is a buffer, POS is the position in the buffer where the
10056`help-echo' text property was found.
10057
10058If OBJECT is an overlay, that overlay has a `help-echo' property, and
10059POS is the position in the overlay's buffer under the mouse.
10060
10061If OBJECT is a string (an overlay string or a string displayed with
10062the `display' property), POS is the position in that string under the
10063mouse.
10064
10065If the value of the `help-echo' property is neither a function nor a
10066string, it is evaluated to obtain a help string.
10067
10068For tool-bar and menu-bar items, their key definition is used to
10069determine the help to display. If their definition contains a
10070property `:help FORM', FORM is evaluated to determine the help string.
10071For tool-bar items without a help form, the caption of the item is
10072used as help string.
10073
10074The hook `show-help-function' can be set to a function that displays
10075the help string differently. For example, enabling a tooltip window
10076causes the help display to appear there instead of in the echo area.
10077
10078** Vertical fractional scrolling.
10079
10080The display of text in windows can be scrolled smoothly in pixels.
10081This is useful, for example, for making parts of large images visible.
10082
10083The function `window-vscroll' returns the current value of vertical
10084scrolling, a non-negative fraction of the canonical character height.
10085The function `set-window-vscroll' can be used to set the vertical
10086scrolling value. Here is an example of how these function might be
10087used.
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
10102Functions from `fontification-functions' are called from redisplay
10103when it encounters a region of text that is not yet fontified. This
10104variable automatically becomes buffer-local when set. Each function
10105is called with one argument, POS.
10106
10107At least one of the hook functions should fontify one or more
10108characters starting at POS in the current buffer. It should mark them
10109as fontified by giving them a non-nil value of the `fontified' text
10110property. 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
10115Emacs supports a tool bar at the top of a frame under X. The frame
10116parameter `tool-bar-lines' (X resource "toolBar", class "ToolBar")
10117controls how may lines to reserve for the tool bar. A zero value
10118suppresses 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
10120automatically so that all tool bar items are visible.
10121
10122*** Tool bar item definitions
10123
10124Tool bar items are defined using `define-key' with a prefix-key
10125`tool-bar'. For example `(define-key global-map [tool-bar item1] ITEM)'
10126where ITEM is a list `(menu-item CAPTION BINDING PROPS...)'.
10127
10128CAPTION is the caption of the item, If it's not a string, it is
10129evaluated to get a string. The caption is currently not displayed in
10130the tool bar, but it is displayed if the item doesn't have a `:help'
10131property (see below).
10132
10133BINDING is the tool bar item's binding. Tool bar items with keymaps as
10134binding are currently ignored.
10135
10136The following properties are recognized:
10137
10138`:enable FORM'.
10139
10140FORM is evaluated and specifies whether the tool bar item is enabled
10141or disabled.
10142
10143`:visible FORM'
10144
10145FORM is evaluated and specifies whether the tool bar item is displayed.
10146
10147`:filter FUNCTION'
10148
10149FUNCTION is called with one parameter, the same list BINDING in which
10150FUNCTION is specified as the filter. The value FUNCTION returns is
10151used instead of BINDING to display this item.
10152
10153`:button (TYPE SELECTED)'
10154
10155TYPE must be one of `:radio' or `:toggle'. SELECTED is evaluated
10156and specifies whether the button is selected (pressed) or not.
10157
10158`:image IMAGES'
10159
10160IMAGES is either a single image specification or a vector of four
10161image specifications. If it is a vector, this table lists the
10162meaning 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
10171If IMAGE is a single image specification, a Laplace edge-detection
10172algorithm is used on that image to draw the image in disabled state.
10173
10174`:help HELP-STRING'.
10175
10176Gives a help string to display for the tool bar item. This help
10177is displayed when the mouse is moved over the item.
10178
10179The function `toolbar-add-item' is a convenience function for adding
10180toolbar items generally, and `tool-bar-add-item-from-menu' can be used
10181to define a toolbar item with a binding copied from an item on the
10182menu bar.
10183
10184The default bindings use a menu-item :filter to derive the tool-bar
10185dynamically from variable `tool-bar-map' which may be set
10186buffer-locally to override the global map.
10187
10188*** Tool-bar-related variables.
10189
10190If `auto-resize-tool-bar' is non-nil, the tool bar will automatically
10191resize to show all defined tool bar items. It will never grow larger
10192than 1/4 of the frame's size.
10193
10194If `auto-raise-tool-bar-buttons' is non-nil, tool bar buttons will be
10195raised when the mouse moves over them.
10196
10197You can add extra space between tool bar items by setting
10198`tool-bar-button-margin' to a positive integer specifying a number of
10199pixels, or a pair of integers (X . Y) specifying horizontal and
10200vertical margins . Default is 1.
10201
10202You 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
10207You can bind commands to clicks with control, shift, meta etc. on
10208a 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
10214is the original tool bar item definition, then
10215
10216 (define-key global-map [tool-bar S-shell] 'some-command)
10217
10218makes a binding to run `some-command' for a shifted click on the same
10219item.
10220
10221** Mode line changes.
10222
10223*** Mouse-sensitive mode line.
10224
10225The mode line can be made mouse-sensitive by displaying strings there
10226that have a `local-map' text property. There are three ways to display
10227a string with a `local-map' property in the mode line.
10228
102291. The mode line spec contains a variable whose string value has
10230a `local-map' text property.
10231
102322. The mode line spec contains a format specifier (e.g. `%12b'), and
10233that format specifier has a `local-map' property.
10234
102353. The mode line spec contains a list containing `:eval FORM'. FORM
10236is evaluated. If the result is a string, and that string has a
10237`local-map' property.
10238
10239The same mechanism is used to determine the `face' and `help-echo'
10240properties of strings in the mode line. See `bindings.el' for an
10241example.
10242
10243*** If a mode line element has the form `(:eval FORM)', FORM is
10244evaluated and the result is used as mode line element.
10245
10246*** You can suppress mode-line display by setting the buffer-local
10247variable mode-line-format to nil.
10248
10249*** A headerline can now be displayed at the top of a window.
10250
10251This mode line's contents are controlled by the new variable
10252`header-line-format' and `default-header-line-format' which are
10253completely analogous to `mode-line-format' and
10254`default-mode-line-format'. A value of nil means don't display a top
10255line.
10256
10257The appearance of top mode lines is controlled by the face
10258`header-line'.
10259
10260The function `coordinates-in-window-p' returns `header-line' for a
10261position in the header-line.
10262
10263** Text property `display'
10264
10265The `display' text property is used to insert images into text,
10266replace text with other text, display text in marginal area, and it is
10267also used to control other aspects of how text displays. The value of
10268the `display' property should be a display specification, as described
10269below, or a list or vector containing display specifications.
10270
10271*** Replacing text, displaying text in marginal areas
10272
10273To replace the text having the `display' property with some other
10274text, use a display specification of the form `(LOCATION STRING)'.
10275
10276If LOCATION is `(margin left-margin)', STRING is displayed in the left
10277marginal area, if it is `(margin right-margin)', it is displayed in
10278the right marginal area, and if LOCATION is `(margin nil)' STRING
10279is displayed in the text. In the latter case you can also use the
10280simpler form STRING as property value.
10281
10282*** Variable width and height spaces
10283
10284To display a space of fractional width or height, use a display
10285specification of the form `(LOCATION STRECH)'. If LOCATION is
10286`(margin left-margin)', the space is displayed in the left marginal
10287area, if it is `(margin right-margin)', it is displayed in the right
10288marginal area, and if LOCATION is `(margin nil)' the space is
10289displayed in the text. In the latter case you can also use the
10290simpler form STRETCH as property value.
10291
10292The stretch specification STRETCH itself is a list of the form `(space
10293PROPS)', where PROPS is a property list which can contain the
10294properties described below.
10295
10296The display of the fractional space replaces the display of the
10297characters having the `display' property.
10298
10299- :width WIDTH
10300
10301Specifies that the space width should be WIDTH times the normal
10302character width. WIDTH can be an integer or floating point number.
10303
10304- :relative-width FACTOR
10305
10306Specifies that the width of the stretch should be computed from the
10307first character in a group of consecutive characters that have the
10308same `display' property. The computation is done by multiplying the
10309width of that character by FACTOR.
10310
10311- :align-to HPOS
10312
10313Specifies that the space should be wide enough to reach HPOS. The
10314value HPOS is measured in units of the normal character width.
10315
10316Exactly one of the above properties should be used.
10317
10318- :height HEIGHT
10319
10320Specifies the height of the space, as HEIGHT, measured in terms of the
10321normal line height.
10322
10323- :relative-height FACTOR
10324
10325The height of the space is computed as the product of the height
10326of the text having the `display' property and FACTOR.
10327
10328- :ascent ASCENT
10329
10330Specifies that ASCENT percent of the height of the stretch should be
10331used for the ascent of the stretch, i.e. for the part above the
10332baseline. The value of ASCENT must be a non-negative number less or
10333equal to 100.
10334
10335You should not use both `:height' and `:relative-height' together.
10336
10337*** Images
10338
10339A display specification for an image has the form `(LOCATION
10340. IMAGE)', where IMAGE is an image specification. The image replaces,
10341in the display, the characters having this display specification in
10342their `display' text property. If LOCATION is `(margin left-margin)',
10343the image will be displayed in the left marginal area, if it is
10344`(margin right-margin)' it will be displayed in the right marginal
10345area, and if LOCATION is `(margin nil)' the image will be displayed in
10346the text. In the latter case you can also use the simpler form IMAGE
10347as display specification.
10348
10349*** Other display properties
10350
10351- (space-width FACTOR)
10352
10353Specifies that space characters in the text having that property
10354should be displayed FACTOR times as wide as normal; FACTOR must be an
10355integer or float.
10356
10357- (height HEIGHT)
10358
10359Display text having this property in a font that is smaller or larger.
10360
10361If HEIGHT is a list of the form `(+ N)', where N is an integer, that
10362means to use a font that is N steps larger. If HEIGHT is a list of
10363the 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
10365a font is available counts as a step.
10366
10367If HEIGHT is a number, that means to use a font that is HEIGHT times
10368as tall as the frame's default font.
10369
10370If HEIGHT is a symbol, it is called as a function with the current
10371height as argument. The function should return the new height to use.
10372
10373Otherwise, 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
10378FACTOR must be a number, specifying a multiple of the current
10379font's height. If it is positive, that means to display the characters
10380raised. If it is negative, that means to display them lower down. The
10381amount of raising or lowering is computed without taking account of the
10382`height' subproperty.
10383
10384*** Conditional display properties
10385
10386All display specifications can be conditionalized. If a specification
10387has the form `(when CONDITION . SPEC)', the specification SPEC applies
10388only when CONDITION yields a non-nil value when evaluated. During the
10389evaluation, `object' is bound to the string or buffer having the
10390conditional display property; `position' and `buffer-position' are
10391bound to the position within `object' and the buffer position where
10392the display property was found, respectively. Both positions can be
10393different when object is a string.
10394
10395The normal specification consisting of SPEC only is equivalent to
10396`(when t . SPEC)'.
10397
10398** New menu separator types.
10399
10400Emacs now supports more than one menu separator type. Menu items with
10401item names consisting of dashes only (including zero dashes) are
10402treated like before. In addition, the following item names are used
10403to specify other menu separator types.
10404
10405- `--no-line' or `--space', or `--:space', or `--:noLine'
10406
10407No separator lines are drawn, but a small space is inserted where the
10408separator occurs.
10409
10410- `--single-line' or `--:singleLine'
10411
10412A single line in the menu's foreground color.
10413
10414- `--double-line' or `--:doubleLine'
10415
10416A double line in the menu's foreground color.
10417
10418- `--single-dashed-line' or `--:singleDashedLine'
10419
10420A single dashed line in the menu's foreground color.
10421
10422- `--double-dashed-line' or `--:doubleDashedLine'
10423
10424A double dashed line in the menu's foreground color.
10425
10426- `--shadow-etched-in' or `--:shadowEtchedIn'
10427
10428A single line with 3D sunken appearance. This is the form
10429displayed for item names consisting of dashes only.
10430
10431- `--shadow-etched-out' or `--:shadowEtchedOut'
10432
10433A single line with 3D raised appearance.
10434
10435- `--shadow-etched-in-dash' or `--:shadowEtchedInDash'
10436
10437A single dashed line with 3D sunken appearance.
10438
10439- `--shadow-etched-out-dash' or `--:shadowEtchedOutDash'
10440
10441A single dashed line with 3D raise appearance.
10442
10443- `--shadow-double-etched-in' or `--:shadowDoubleEtchedIn'
10444
10445Two lines with 3D sunken appearance.
10446
10447- `--shadow-double-etched-out' or `--:shadowDoubleEtchedOut'
10448
10449Two lines with 3D raised appearance.
10450
10451- `--shadow-double-etched-in-dash' or `--:shadowDoubleEtchedInDash'
10452
10453Two dashed lines with 3D sunken appearance.
10454
10455- `--shadow-double-etched-out-dash' or `--:shadowDoubleEtchedOutDash'
10456
10457Two dashed lines with 3D raised appearance.
10458
10459Under LessTif/Motif, the last four separator types are displayed like
10460the corresponding single-line separators.
10461
10462** New frame parameters for scroll bar colors.
10463
10464The new frame parameters `scroll-bar-foreground' and
10465`scroll-bar-background' can be used to change scroll bar colors.
10466Their value must be either a color name, a string, or nil to specify
10467that scroll bars should use a default color. For toolkit scroll bars,
10468default colors are toolkit specific. For non-toolkit scroll bars, the
10469default background is the background color of the frame, and the
10470default foreground is black.
10471
10472The X resource name of these parameters are `scrollBarForeground'
10473(class ScrollBarForeground) and `scrollBarBackground' (class
10474`ScrollBarBackground').
10475
10476Setting these parameters overrides toolkit specific X resource
10477settings for scroll bar colors.
10478
10479** You can set `redisplay-dont-pause' to a non-nil value to prevent
10480display updates from being interrupted when input is pending.
10481
10482** Changing a window's width may now change its window start if it
10483starts on a continuation line. The new window start is computed based
10484on the window's new width, starting from the start of the continued
10485line as the start of the screen line with the minimum distance from
10486the original window start.
10487
10488** The variable `hscroll-step' and the functions
10489`hscroll-point-visible' and `hscroll-window-column' have been removed
10490now that proper horizontal scrolling is implemented.
10491
10492** Windows can now be made fixed-width and/or fixed-height.
10493
10494A 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
10496windows fixed-height, a value of `width' makes them fixed-width, any
10497other non-nil value makes them both fixed-width and fixed-height.
10498
10499The following code makes all windows displaying the current buffer
10500fixed-width and fixed-height.
10501
10502 (set (make-local-variable 'window-size-fixed) t)
10503
10504A call to enlarge-window on a window gives an error if that window is
10505fixed-width and it is tried to change the window's width, or if the
10506window is fixed-height, and it is tried to change its height. To
10507change the size of a fixed-size window, bind `window-size-fixed'
10508temporarily to nil, for example
10509
10510 (let ((window-size-fixed nil))
10511 (enlarge-window 10))
10512
10513Likewise, an attempt to split a fixed-height window vertically,
10514or a fixed-width window horizontally results in a error.
10515
10516** The cursor-type frame parameter is now supported on MS-DOS
10517terminals. When Emacs starts, it by default changes the cursor shape
10518to a solid box, as it does on Unix. The `cursor-type' frame parameter
10519overrides this as it does on Unix, except that the bar cursor is
10520horizontal rather than vertical (since the MS-DOS display doesn't
10521support 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
10528input.
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
10535only for character input, but also in incremental search. The
10536exceptions 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
10541been 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:
10553M-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
10559You can now call the Emacs init file `.emacs.el'.
10560Formerly 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
10563If both `.emacs' and `.emacs.el' exist, the latter file
10564is the one that is used.
10565
10566** shell-command, and shell-command-on-region, now return
10567the exit code of the command (unless it is asynchronous).
10568Also, you can specify a place to put the error output,
10569separate from the command's regular output.
10570Interactively, the variable shell-command-default-error-buffer
10571says where to put error output; set it to a buffer name.
10572In calls from Lisp, an optional argument ERROR-BUFFER specifies
10573the buffer name.
10574
10575When you specify a non-nil error buffer (or buffer name), any error
10576output is inserted before point in that buffer, with \f\n to separate
10577it from the previous batch of error output. The error buffer is not
10578cleared, so error output from successive commands accumulates there.
10579
10580** Setting the default value of enable-multibyte-characters to nil in
10581the .emacs file, either explicitly using setq-default, or via Custom,
10582is now essentially equivalent to using --unibyte: all buffers
10583created during startup will be made unibyte after loading .emacs.
10584
10585** C-x C-f now handles the wildcards * and ? in file names. For
10586example, typing C-x C-f c*.c RET visits all the files whose names
10587match c*.c. To visit a file whose name contains * or ?, add the
10588quoting sequence /: to the beginning of the file name.
10589
10590** The M-x commands keep-lines, flush-lines and count-matches
10591now have the same feature as occur and query-replace:
10592if the pattern contains any upper case letters, then
10593they never ignore case.
10594
10595** The end-of-line format conversion feature previously mentioned
10596under `* Emacs 20.1 changes for MS-DOS and MS-Windows' actually
10597applies to all operating systems. Emacs recognizes from the contents
10598of a file what convention it uses to separate lines--newline, CRLF, or
10599just CR--and automatically converts the contents to the normal Emacs
10600convention (using newline to separate lines) for editing. This is a
10601part of the general feature of coding system conversion.
10602
10603If you subsequently save the buffer, Emacs converts the text back to
10604the same format that was used in the file before.
10605
10606You 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
10610renamed to `preferred-coding-system', for the sake of correct spelling.
10611This is a fairly internal feature, so few programs should be affected.
10612
10613** Mode-line display of end-of-line format is changed.
10614The indication of the end-of-line format of the file visited by a
10615buffer is now more explicit when that format is not the usual one for
10616your operating system. For example, the DOS-style end-of-line format
10617is displayed as "(DOS)" on Unix and GNU/Linux systems. The usual
10618end-of-line format is still displayed as a single character (colon for
10619Unix, backslash for DOS and Windows, and forward slash for the Mac).
10620
10621The values of the variables eol-mnemonic-unix, eol-mnemonic-dos,
10622eol-mnemonic-mac, and eol-mnemonic-undecided, which are strings,
10623control what is displayed in the mode line for each end-of-line
10624format. You can now customize these variables.
10625
10626** In the previous version of Emacs, tar-mode didn't work well if a
10627filename contained non-ASCII characters. Now this is fixed. Such a
10628filename is decoded by file-name-coding-system if the default value of
10629enable-multibyte-characters is non-nil.
10630
10631** The command temp-buffer-resize-mode toggles a minor mode
10632in which temporary buffers (such as help buffers) are given
10633windows just big enough to hold the whole contents.
10634
10635** If you use completion.el, you must now run the function
10636dynamic-completion-mode to enable it. Just loading the file
10637doesn't have any effect.
10638
10639** In Flyspell mode, the default is now to make just one Ispell process,
10640not one per buffer.
10641
10642** If you use iswitchb but do not call (iswitchb-default-keybindings) to
10643use 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.
10647To 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
10651avoid redisplay problems. As a consequence, compared with previous
10652versions the line spacing and frame size now differ with some font
10653choices, typically increasing by a pixel per line. This change
10654occurred in version 20.3 but was not documented then.
10655
10656** If you select the bar cursor style, it uses the frame's
10657cursor-color, rather than the cursor foreground pixel.
10658
10659** In multibyte mode, Rmail decodes incoming MIME messages using the
10660character set specified in the message. If you want to disable this
10661feature, set the variable rmail-decode-mime-charset to nil.
10662
10663** Not new, but not mentioned previously in NEWS: when you use #! at
10664the beginning of a file to make it executable and specify an
10665interpreter program, Emacs looks on the second line for the -*- mode
10666and variable specification, as well as on the first line.
10667
10668** Support for IBM codepage encoding of non-ASCII characters.
10669
10670The new command M-x codepage-setup creates a special coding system
10671that can be used to convert text between a specific IBM codepage and
10672one of the character sets built into Emacs which matches that
10673codepage. For example, codepage 850 corresponds to Latin-1 character
10674set, codepage 855 corresponds to Cyrillic-ISO character set, etc.
10675
10676Windows codepages 1250, 1251 and some others, where Windows deviates
10677from the corresponding ISO character set, are also supported.
10678
10679IBM box-drawing characters and other glyphs which don't have
10680equivalents in the corresponding ISO character set, are converted to
10681a character defined by dos-unsupported-char-glyph on MS-DOS, and to
10682`?' on other systems.
10683
10684IBM codepages are widely used on MS-DOS and MS-Windows, so this
10685feature is most useful on those platforms, but it can also be used on
10686Unix.
10687
10688Emacs compiled for MS-DOS automatically loads the support for the
10689current 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',
10695appropriate MIME headers are added. The headers are added only if
10696non-ASCII characters are present in the body of the mail, and no other
10697MIME headers are already present. For example, the following three
10698headers are added if the coding system used in the *mail* buffer is
10699latin-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
10706default way to encode outgoing mail. This has higher priority than
10707default-buffer-file-coding-system but has lower priority than
10708sendmail-coding-system and the local value of
10709buffer-file-coding-system.
10710
10711You should not set this variable manually. Instead, set
10712sendmail-coding-system to specify a fixed encoding for all outgoing
10713mail.
10714
10715*** When you try to send a message that contains non-ASCII characters,
10716if the coding system specified by those variables doesn't handle them,
10717Emacs will ask you to select a suitable coding system while showing a
10718list of possible coding systems.
10719
10720** CC Mode changes
10721
10722*** c-default-style can now take an association list that maps major
10723modes to style names. When this variable is an alist, Java mode no
10724longer hardcodes a setting to "java" style. See the variable's
10725docstring for details.
10726
10727*** It's now possible to put a list as the offset on a syntactic
10728symbol. The list is evaluated recursively until a non-nil offset is
10729found. This is useful to combine several lineup functions to act in a
10730prioritized order on a single line. However, none of the supplied
10731lineup 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
10740from the braces of other classes in auto-newline mode. Two new
10741symbols inexpr-class-open and inexpr-class-close may be used on
10742c-hanging-braces-alist to control the automatic newlines used for
10743anonymous classes.
10744
10745*** Support for the Pike language added, along with new Pike specific
10746syntactic symbols: inlambda, lambda-intro-cont
10747
10748*** Support for Java anonymous classes via new syntactic symbol
10749inexpr-class. New syntactic symbol inexpr-statement for Pike
10750support and gcc-style statements inside expressions. New lineup
10751function 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
10755brace. These used to be recognized as brace-list-entry's.
10756c-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)
10764for 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
10769associated with it is now always relative to the class opening brace.
10770This means that the indentation behavior has changed in some
10771circumstances, but only if you've put anything besides 0 on the
10772class-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
10777added. A plethora of new commands and modes have been added. See the
10778Gnus manual for the full story.
10779
10780*** The nndraft backend has returned, but works differently than
10781before. All Message buffers are now also articles in the nndraft
10782group, which is created automatically.
10783
10784*** `gnus-alter-header-function' can now be used to alter header
10785values.
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
10790outside 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
10798re-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
10803Prefixes" 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
10809control 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
10814limit.
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.
10821If you used this function in your initialization files, you must
10822rewrite 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'
10831to a non-nil value.
10832
10833*** nntp now uses ~/.authinfo, a .netrc-like file, for controlling
10834where and how to send AUTHINFO to NNTP servers.
10835
10836*** A command for editing group parameters from the summary buffer
10837has 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
10852been 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
10858updated 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
10869options for the TeX run. The default value causes TeX to run in
10870nonstopmode. 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
10873TeX buffer it is bound to the keys C-RET, C-c RET, and C-c C-m (some
10874of these keys may not work on all systems). For instance, if you run
10875TeX interactively and if the TeX run stops because of an error, you
10876can continue it without leaving the TeX buffer by typing C-RET.
10877
10878*** The Tex Shell Buffer is now in `compilation-shell-minor-mode'.
10879All error-parsing commands of the Compilation major mode are available
10880but bound to keys that don't collide with the shell. Thus you can use
10881the Tex Shell for command line executions like a usual shell.
10882
10883*** The commands `tex-validate-region' and `tex-validate-buffer' check
10884the matching of braces and $'s. The errors are listed in a *Occur*
10885buffer and you can use C-c C-c or mouse-2 to go to a particular
10886mismatch.
10887
10888** Changes to RefTeX mode
10889
10890*** The table of contents buffer can now also display labels and
10891file boundaries in addition to sections. Use `l', `i', and `c' keys.
10892
10893*** Labels derived from context (the section heading) are now
10894lowercase by default. To make the label legal in LaTeX, latin-1
10895characters will lose their accent. All Mule characters will be
10896removed from the label.
10897
10898*** The automatic display of cross reference information can also use
10899a 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
10902customization 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
10906expressions.
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
10913SNMPv2 MIBs. It has entries on `auto-mode-alist'.
10914
10915*** The package sql.el provides a major mode, M-x sql-mode, for
10916editing SQL files, and M-x sql-interactive-mode for interacting with
10917SQL 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
10920this was hard to fix reliably. It has long been obsolete -- use
10921Ispell 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.
10926This includes support for display of all ISO 8859-N character sets,
10927conversion to and from IBM codepage encoding of non-ASCII characters,
10928and automatic setup of the MULE environment at startup. For details,
10929check out the section `MS-DOS and MULE' in the manual.
10930
10931The MS-DOS installation procedure automatically configures and builds
10932Emacs with input method support if it finds an unpacked Leim
10933distribution when the config.bat script is run.
10934
10935** Formerly, the value of lpr-command did not affect printing on
10936MS-DOS unless print-region-function was set to nil, but now it
10937controls whether an external program is invoked or output is written
10938directly to a printer port. Similarly, in the previous version of
10939Emacs, the value of ps-lpr-command did not affect PostScript printing
10940on MS-DOS unless ps-printer-name was set to something other than a
10941string (eg. t or `pipe'), but now it controls whether an external
10942program is used. (These changes were made so that configuration of
10943printing variables would be almost identical across all platforms.)
10944
10945** In the previous version of Emacs, PostScript and non-PostScript
10946output was piped to external programs, but because most print programs
10947available for MS-DOS and MS-Windows cannot read data from their standard
10948input, on those systems the data to be output is now written to a
10949temporary file whose name is passed as the last argument to the external
10950program.
10951
10952An exception is made for `print', a standard program on Windows NT,
10953and `nprint', a standard program on Novell Netware. For both of these
10954programs, the command line is constructed in the appropriate syntax
10955automatically, using only the value of printer-name or ps-printer-name
10956as appropriate--the value of the relevant `-switches' variable is
10957ignored, as both programs have no useful switches.
10958
10959** The value of the variable dos-printer (cf. dos-ps-printer), if it has
10960a value, overrides the value of printer-name (cf. ps-printer-name), on
10961MS-DOS and MS-Windows only. This has been true since version 20.3, but
10962was not documented clearly before.
10963
10964** All the Emacs games now work on MS-DOS terminals.
10965This includes Tetris and Snake.
10966
10967* Lisp changes in Emacs 20.4
10968
10969** New functions line-beginning-position and line-end-position
10970return the position of the beginning or end of the current line.
10971They both accept an optional argument, which has the same
10972meaning as the argument to beginning-of-line or end-of-line.
10973
10974** find-file and allied functions now have an optional argument
10975WILDCARD. If this is non-nil, they do wildcard processing,
10976and 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.
10981It 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
10984the number fits in a Lisp integer) or a cons cell containing two
10985integers.
10986
10987** The new function directory-files-and-attributes returns a list of
10988files in a directory and their attributes. It accepts the same
10989arguments as directory-files and has similar semantics, except that
10990file names and attributes are returned.
10991
10992** The new function file-attributes-lessp is a helper function for
10993sorting the list generated by directory-files-and-attributes. It
10994accepts two arguments, each a list of a file name and its attributes.
10995It compares the file names of each according to string-lessp and
10996returns the result.
10997
10998** The new function file-expand-wildcards expands a wildcard-pattern
10999to produce a list of existing files that match the pattern.
11000
11001** New functions for base64 conversion:
11002
11003The function base64-encode-region converts a part of the buffer
11004into the base64 code used in MIME. base64-decode-region
11005performs the opposite conversion. Line-breaking is supported
11006optionally.
11007
11008Functions base64-encode-string and base64-decode-string do a similar
11009job on the text in a string. They return the value as a new string.
11010
11011**
11012The new function process-running-child-p
11013will tell you if a subprocess has given control of its
11014terminal to its own child process.
11015
11016** interrupt-process and such functions have a new feature:
11017when the second argument is `lambda', they send a signal
11018to the running child of the subshell, if any, but if the shell
11019itself owns its terminal, no signal is sent.
11020
11021** There are new widget types `plist' and `alist' which can
11022be 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
11027easy-menu-add-item now understands the values returned by
11028easy-menu-remove-item and easy-menu-item-present-p. This can be used
11029to move or copy menu entries.
11030
11031** Multibyte editing changes
11032
11033*** The definitions of sref and char-bytes are changed. Now, sref is
11034an alias of aref and char-bytes always returns 1. This change is to
11035make some Emacs Lisp code which works on 20.2 and earlier also
11036work on the latest Emacs. Such code uses a combination of sref and
11037char-bytes in a loop typically as below:
11038 (setq char (sref str idx)
11039 idx (+ idx (char-bytes idx)))
11040The byte-compiler now warns that this is obsolete.
11041
11042If 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
11047region is preceded or followed by non-ASCII codes, inserting or
11048deleting 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
11052This is to avoid some bytes being combined together into a character
11053across 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
11063text properties of the target region. Ideally, they should correctly
11064preserve text properties, but for the moment, it's hard. Removing
11065text properties is better than preserving them in a less-than-correct
11066way.
11067
11068*** prefer-coding-system sets EOL conversion of default coding systems.
11069If the argument to prefer-coding-system specifies a certain type of
11070end of line conversion, the default coding systems set by
11071prefer-coding-system will specify that conversion type for end of line.
11072
11073*** The new function thai-compose-string can be used to properly
11074compose Thai characters in a string.
11075
11076** The primitive `define-prefix-command' now takes an optional third
11077argument NAME, which should be a string. It supplies the menu name
11078for the created keymap. Keymaps created in order to be displayed as
11079menus should always use the third argument.
11080
11081** The meanings of optional second arguments for read-char,
11082read-event, and read-char-exclusive are flipped. Now the second
11083arguments are INHERIT-INPUT-METHOD. These functions use the current
11084input 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
11087of the vector that (this-command-keys) returns. This is useful in
11088programs that read passwords, to prevent the passwords from echoing
11089inadvertently as part of the next command in certain cases.
11090
11091** The new macro `with-temp-message' displays a temporary message in
11092the echo area, while executing some Lisp code. Like `progn', it
11093returns the value of the last form, but it also restores the previous
11094echo area contents.
11095
11096 (with-temp-message MESSAGE &rest BODY)
11097
11098** The function `require' now takes an optional third argument
11099NOERROR. If it is non-nil, then there is no error if the
11100requested feature cannot be loaded.
11101
11102** In the function modify-face, an argument of (nil) for the
11103foreground color, background color or stipple pattern
11104means to clear out that attribute.
11105
11106** The `outer-window-id' frame property of an X frame
11107gives the window number of the outermost X window for the frame.
11108
11109** Temporary buffers made with with-output-to-temp-buffer are now
11110read-only by default, and normally use the major mode Help mode
11111unless you put them in some other non-Fundamental mode before the
11112end of with-output-to-temp-buffer.
11113
11114** The new functions gap-position and gap-size return information on
11115the gap of the current buffer.
11116
11117** The new functions position-bytes and byte-to-position provide a way
11118to convert between character positions and byte positions in the
11119current buffer.
11120
11121** vc.el defines two new macros, `edit-vc-file' and `with-vc-file', to
11122facilitate working with version-controlled files from Lisp programs.
11123These macros check out a given file automatically if needed, and check
11124it 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
11129the site-specific directories /usr/local/share/emacs/site-lisp and
11130/usr/local/share/emacs/VERSION/site-lisp, in addition to those
11131directories themselves. Both immediate subdirectories and
11132subdirectories multiple levels down are added to load-path.
11133
11134Not all subdirectories are included, though. Subdirectories whose
11135names do not start with a letter or digit are excluded.
11136Subdirectories named RCS or CVS are excluded. Also, a subdirectory
11137which contains a file named `.nosearch' is excluded. You can use
11138these methods to prevent certain subdirectories from being searched.
11139
11140Emacs finds these subdirectories and adds them to load-path when it
11141starts up. While it would be cleaner to find the subdirectories each
11142time Emacs loads a file, that would be much slower.
11143
11144This feature is an incompatible change. If you have stored some Emacs
11145Lisp files in a subdirectory of the site-lisp directory specifically
11146to prevent them from being used, you will need to rename the
11147subdirectory to start with a non-alphanumeric character, or create a
11148`.nosearch' file in it, in order to continue to achieve the desired
11149results.
11150
11151** Emacs no longer includes an old version of the C preprocessor from
11152GCC. This was formerly used to help compile Emacs with C compilers
11153that had limits on the significant length of an identifier, but in
11154fact 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
11159including its argument. If you repeat the z afterward,
11160it repeats the command additional times; thus, you can
11161perform many repetitions with one keystroke per repetition.
11162
11163** Emacs now supports "selective undo" which undoes only within a
11164specified region. To do this, set point and mark around the desired
11165region and type C-u C-x u (or C-u C-_). You can then continue undoing
11166further, within the same region, by repeating the ordinary undo
11167command C-x u or C-_. This will keep undoing changes that were made
11168within the region you originally specified, until either all of them
11169are undone, or it encounters a change which crosses the edge of that
11170region.
11171
11172In Transient Mark mode, undoing when a region is active requests
11173selective undo.
11174
11175** If you specify --unibyte when starting Emacs, then all buffers are
11176unibyte, except when a Lisp program specifically creates a multibyte
11177buffer. Setting the environment variable EMACS_UNIBYTE has the same
11178effect. The --no-unibyte option overrides EMACS_UNIBYTE and directs
11179Emacs to run normally in multibyte mode.
11180
11181The option --unibyte does not affect the reading of Emacs Lisp files,
11182though. 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
11184load that file in unibyte mode, regardless of how Emacs was started.
11185
11186** toggle-enable-multibyte-characters no longer has a key binding and
11187no longer appears in the menu bar. We've realized that changing the
11188enable-multibyte-characters variable in an existing buffer is
11189something that most users not do.
11190
11191** You can specify a coding system to use for the next cut or paste
11192operations through the window system with the command C-x RET X.
11193The coding system can make a difference for communication with other
11194applications.
11195
11196C-x RET x specifies a coding system for all subsequent cutting and
11197pasting operations.
11198
11199** You can specify the printer to use for commands that do printing by
11200setting the variable `printer-name'. Just what a printer name looks
11201like depends on your operating system. You can specify a different
11202printer 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
11206minor mode. It is called M-x flyspell-mode. You don't have to remember
11207any other special commands to use it, and you will hardly notice it
11208except when you make a spelling error. Flyspell works by highlighting
11209incorrect words as soon as they are completed or as soon as the cursor
11210hits a new word.
11211
11212Flyspell mode works with whichever dictionary you have selected for
11213Ispell in Emacs. In TeX mode, it understands TeX syntax so as not
11214to be confused by TeX commands.
11215
11216You can correct a misspelled word by editing it into something
11217correct. You can also correct it, or accept it as correct, by
11218clicking on the word with Mouse-2; that gives you a pop-up menu
11219of various alternative replacements and actions.
11220
11221Flyspell mode also proposes "automatic" corrections. M-TAB replaces
11222the current misspelled word with a possible correction. If several
11223corrections are made possible, M-TAB cycles through them in
11224alphabetical order, or in order of decreasing likelihood if
11225flyspell-sort-corrections is nil.
11226
11227Flyspell mode also flags an error when a word is repeated, if
11228flyspell-mark-duplications-flag is non-nil.
11229
11230** Changes in input method usage.
11231
11232Now you can use arrow keys (right, left, down, up) for selecting among
11233the alternatives just the same way as you do by C-f, C-b, C-n, and C-p
11234respectively.
11235
11236You can use the ENTER key to accept the current conversion.
11237
11238If you type TAB to display a list of alternatives, you can select one
11239of the alternatives with Mouse-2.
11240
11241The meaning of the variable `input-method-verbose-flag' is changed so
11242that 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
11256If you are using Emacs through a very slow line, setting
11257input-method-verbose-flag to nil or to complex-only is a good choice,
11258and if you are using an input method you are not familiar with,
11259setting it to t is helpful.
11260
11261The old command select-input-method is now called set-input-method.
11262
11263In the language environment "Korean", you can use the following
11264keys:
11265 Shift-SPC toggle-korean-input-method
11266 C-F9 quail-hangul-switch-symbol-ksc
11267 F9 quail-hangul-switch-hanja
11268These key bindings are canceled when you switch to another language
11269environment.
11270
11271** The minibuffer history of file names now records the specified file
11272names, not the entire minibuffer input. For example, if the
11273minibuffer starts out with /usr/foo/, you might type in /etc/passwd to
11274get
11275
11276 /usr/foo//etc/passwd
11277
11278which stands for the file /etc/passwd.
11279
11280Formerly, this used to put /usr/foo//etc/passwd in the history list.
11281Now this puts just /etc/passwd in the history list.
11282
11283** If you are root, Emacs sets backup-by-copying-when-mismatch to t
11284at startup, so that saving a file will be sure to preserve
11285its owner and group.
11286
11287** find-func.el can now also find the place of definition of Emacs
11288Lisp variables in user-loaded libraries.
11289
11290** C-x r t (string-rectangle) now deletes the existing rectangle
11291contents before inserting the specified string on each line.
11292
11293** There is a new command delete-whitespace-rectangle
11294which deletes whitespace starting from a particular column
11295in all the lines on a rectangle. The column is specified
11296by 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,
11299increment it by INC with C-u INC C-x r + REG (to increment by one, omit
11300C-u INC), and insert it in the buffer with C-x r g REG. This is useful
11301for writing keyboard macros.
11302
11303** The new command M-x speedbar displays a frame in which directories,
11304files, and tags can be displayed, manipulated, and jumped to. The
11305frame defaults to 20 characters in width, and is the same height as
11306the frame that it was started from. Some major modes define
11307additional commands for the speedbar, including Rmail, GUD/GDB, and
11308info.
11309
11310** query-replace-regexp is now bound to C-M-%.
11311
11312** In Transient Mark mode, when the region is active, M-x
11313query-replace and the other replace commands now operate on the region
11314contents only.
11315
11316** M-x write-region, when used interactively, now asks for
11317confirmation before overwriting an existing file. When you call
11318the function from a Lisp program, a new optional argument CONFIRM
11319says whether to ask for confirmation in this case.
11320
11321** If you use find-file-literally and the file is already visited
11322non-literally, the command asks you whether to revisit the file
11323literally. If you say no, it signals an error.
11324
11325** Major modes defined with the "derived mode" feature
11326now use the proper name for the mode hook: WHATEVER-mode-hook.
11327Formerly they used the name WHATEVER-mode-hooks, but that is
11328inconsistent with Emacs conventions.
11329
11330** shell-command-on-region (and shell-command) reports success or
11331failure if the command produces no output.
11332
11333** Set focus-follows-mouse to nil if your window system or window
11334manager does not transfer focus to another window when you just move
11335the mouse.
11336
11337** mouse-menu-buffer-maxlen has been renamed to
11338mouse-buffer-menu-maxlen to be consistent with the other related
11339function and variable names.
11340
11341** The new variable auto-coding-alist specifies coding systems for
11342reading specific files. This has higher priority than
11343file-coding-system-alist.
11344
11345** If you set the variable unibyte-display-via-language-environment to
11346t, then Emacs displays non-ASCII characters are displayed by
11347converting them to the equivalent multibyte characters according to
11348the current language environment. As a result, they are displayed
11349according to the current fontset.
11350
11351** C-q's handling of codes in the range 0200 through 0377 is changed.
11352
11353The codes in the range 0200 through 0237 are inserted as one byte of
11354that code regardless of the values of nonascii-translation-table and
11355nonascii-insert-offset.
11356
11357For the codes in the range 0240 through 0377, if
11358enable-multibyte-characters is non-nil and nonascii-translation-table
11359nor nonascii-insert-offset can't convert them to valid multibyte
11360characters, they are converted to Latin-1 characters.
11361
11362** If you try to find a file that is not read-accessible, you now get
11363an error, rather than an empty buffer and a warning.
11364
11365** In the minibuffer history commands M-r and M-s, an upper case
11366letter in the regular expression forces case-sensitive search.
11367
11368** In the *Help* buffer, cross-references to commands and variables
11369are inferred and hyperlinked. Use C-h m in Help mode for the relevant
11370command keys.
11371
11372** M-x apropos-command, with a prefix argument, no longer looks for
11373user option variables--instead it looks for noninteractive functions.
11374
11375Meanwhile, the command apropos-variable normally searches for
11376user option variables; with a prefix argument, it looks at
11377all variables that have documentation.
11378
11379** When you type a long line in the minibuffer, and the minibuffer
11380shows just one line, automatically scrolling works in a special way
11381that shows you overlap with the previous line of text. The variable
11382minibuffer-scroll-overlap controls how many characters of overlap
11383it should show; the default is 20.
11384
11385Meanwhile, Resize Minibuffer mode is still available; in that mode,
11386the minibuffer grows taller (up to a point) as needed to show the whole
11387of your input.
11388
11389** The new command M-x customize-changed-options lets you customize
11390all the options whose meanings or default values have changed in
11391recent Emacs versions. You specify a previous Emacs version number as
11392argument, and the command creates a customization buffer showing all
11393the customizable options which were changed since that version.
11394Newly added options are included as well.
11395
11396If you don't specify a particular version number argument,
11397then the customization buffer shows all the customizable options
11398for which Emacs versions of changes are recorded.
11399
11400This function is also bound to the Changed Options entry in the
11401Customize menu.
11402
11403** When you run M-x grep with a prefix argument, it figures out
11404the 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
11407buffer positions from which M-. or other tag-finding commands were
11408invoked.
11409
11410** The new variable comment-padding specifies the number of spaces
11411that `comment-region' will insert before the actual text of the comment.
11412The default is 1.
11413
11414** In Fortran mode the characters `.', `_' and `$' now have symbol
11415syntax, not word syntax. Fortran mode now supports `imenu' and has
11416new 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
11418sensibly.
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
11423value, the command `C-x 4 a' will automatically notice when you make
11424two 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
11427reminder about upcoming diary entries. See the documentation string
11428for a sample shell script for calling this function automatically
11429every night.
11430
11431** Desktop changes
11432
11433*** All you need to do to enable use of the Desktop package, is to set
11434the variable desktop-enable to t with Custom.
11435
11436*** Minor modes are now restored. Which minor modes are restored
11437and 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
11440read and post multi-lingual articles.
11441
11442** Outline mode has now support for showing hidden outlines when
11443doing an isearch. In order for this to happen search-invisible should
11444be set to open (the default). If an isearch match is inside a hidden
11445outline the outline is made visible. If you continue pressing C-s and
11446the match moves outside the formerly invisible outline, the outline is
11447made invisible again.
11448
11449** Mail reading and sending changes
11450
11451*** The Rmail e command now switches to displaying the whole header of
11452the message before it lets you edit the message. This is so that any
11453changes you make in the header will not be lost if you subsequently
11454toggle.
11455
11456*** The w command in Rmail, which writes the message body into a file,
11457now works in the summary buffer as well. (The command to delete the
11458summary buffer is now Q.) The default file name for the w command, if
11459the message has no subject, is stored in the variable
11460rmail-default-body-file.
11461
11462*** Most of the commands and modes that operate on mail and netnews no
11463longer depend on the value of mail-header-separator. Instead, they
11464handle 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,
11467it should be an expression. When you send a message, this expression
11468is evaluated to insert the signature.
11469
11470*** The new Lisp library feedmail.el (version 8) enhances processing of
11471outbound email messages. It works in coordination with other email
11472handling packages (e.g., rmail, VM, gnus) and is responsible for
11473putting final touches on messages and actually submitting them for
11474transmission. Users of the emacs program "fakemail" might be
11475especially interested in trying feedmail.
11476
11477feedmail is not enabled by default. See comments at the top of
11478feedmail.el for set-up instructions. Among the bigger features
11479provided by feedmail are:
11480
11481**** you can park outgoing messages into a disk-based queue and
11482stimulate sending some or all of them later (handy for laptop users);
11483there is also a queue for draft messages
11484
11485**** you can get one last look at the prepped outbound message and
11486be 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
11491the time the message was written or the time it is being sent; this
11492can make FCC copies more closely resemble copies that recipients get
11493
11494**** you can specify an arbitrary function for actually transmitting
11495the 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
11497function 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
11502files, is now bound to "t" instead of "T".
11503
11504*** dired-at-point has been added to ffap.el. It allows one to easily
11505run Dired on the directory name at point.
11506
11507*** Dired has a new command: %g. It searches the contents of
11508files in the directory and marks each file that contains a match
11509for a specified regexp.
11510
11511** VC Changes
11512
11513*** New option vc-ignore-vc-files lets you turn off version control
11514conveniently.
11515
11516*** VC Dired has been completely rewritten. It is now much
11517faster, especially for CVS, and works very similar to ordinary
11518Dired.
11519
11520VC Dired is invoked by typing C-x v d and entering the name of the
11521directory to display. By default, VC Dired gives you a recursive
11522listing of all files at or below the given directory which are
11523currently locked (for CVS, all files not up-to-date are shown).
11524
11525You can change the listing format by setting vc-dired-recurse to nil,
11526then it shows only the given directory, and you may also set
11527vc-dired-terse-display to nil, then it shows all files under version
11528control plus the names of any subdirectories, so that you can type `i'
11529on such lines to insert them manually, as in ordinary Dired.
11530
11531All Dired commands operate normally in VC Dired, except for `v', which
11532is 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
11534the 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
11537The new command `v t' (vc-dired-toggle-terse-mode) allows you to
11538toggle between terse display (only locked files) and full display (all
11539VC files plus subdirectories). There is also a special command,
11540`* l', to mark all files currently locked.
11541
11542Giving a prefix argument to C-x v d now does the same thing as in
11543ordinary Dired: it allows you to supply additional options for the ls
11544command in the minibuffer, to fine-tune VC Dired's output.
11545
11546*** Under CVS, if you merge changes from the repository into a working
11547file, and CVS detects conflicts, VC now offers to start an ediff
11548session to resolve them.
11549
11550Alternatively, you can use the new command `vc-resolve-conflicts' to
11551resolve conflicts in a file at any time. It works in any buffer that
11552contains conflict markers as generated by rcsmerge (which is what CVS
11553uses as well).
11554
11555*** You can now transfer changes between branches, using the new
11556command vc-merge (C-x v m). It is implemented for RCS and CVS. When
11557you invoke it in a buffer under version-control, you can specify
11558either an entire branch or a pair of versions, and the changes on that
11559branch or between the two versions are merged into the working file.
11560If this results in any conflicts, they may be resolved interactively,
11561using ediff.
11562
11563** Changes in Font Lock
11564
11565*** The face and variable previously known as font-lock-reference-face
11566are now called font-lock-constant-face to better reflect their typical
11567use for highlighting constants and labels. (Its face properties are
11568unchanged.) The variable font-lock-reference-face remains for now for
11569compatibility 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
11574frame. You can use the new command select-frame-by-name to select and
11575raise a frame; this is mostly useful on character-only terminals, or
11576when many frames are invisible or iconified.
11577
11578*** On character-only terminal (not a window system), changing the
11579frame name is now reflected on the mode line and in the Buffers/Frames
11580menu.
11581
11582** Comint (subshell) changes
11583
11584*** In Comint modes, the commands to kill, stop or interrupt a
11585subjob now also kill pending input. This is for compatibility
11586with ordinary shells, where the signal characters do this.
11587
11588*** There are new commands in Comint mode.
11589
11590C-c C-x fetches the "next" line from the input history;
11591that is, the line after the last line you got.
11592You can use this command to fetch successive lines, one by one.
11593
11594C-c SPC accumulates lines of input. More precisely, it arranges to
11595send the current line together with the following line, when you send
11596the following line.
11597
11598C-c C-a if repeated twice consecutively now moves to the process mark,
11599which separates the pending input from the subprocess output and the
11600previously sent input.
11601
11602C-c M-r now runs comint-previous-matching-input-from-input;
11603it searches for a previous command, using the current pending input
11604as the search string.
11605
11606*** New option compilation-scroll-output can be set to scroll
11607automatically in compilation-mode windows.
11608
11609** C mode changes
11610
11611*** Multiline macros are now handled, both as they affect indentation,
11612and as recognized syntax. New syntactic symbol cpp-macro-cont is
11613assigned to second and subsequent lines of a multiline macro
11614definition.
11615
11616*** A new style "user" which captures all non-hook-ified
11617(i.e. top-level) .emacs file variable settings and customizations.
11618Style "cc-mode" is an alias for "user" and is deprecated. "gnu"
11619style 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
11624are alternatives which you could bind to C-M-a and C-M-e if you prefer
11625them. They do not have key bindings by default.
11626
11627*** New and improved implementations of M-a (c-beginning-of-statement)
11628and M-e (c-end-of-statement).
11629
11630*** C++ namespace blocks are supported, with new syntactic symbols
11631namespace-open, namespace-close, and innamespace.
11632
11633*** File local variable settings of c-file-style and c-file-offsets
11634makes the style variables local to that buffer only.
11635
11636*** New indentation functions c-lineup-close-paren,
11637c-indent-one-line-block, c-lineup-dont-change.
11638
11639*** Improvements (hopefully!) to the way CC Mode is loaded. You
11640should now be able to do a (require 'cc-mode) to get the entire
11641package loaded properly for customization in your .emacs file. A new
11642variable 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
11647non-nil, trailing spaces may be included in the abbreviation to search for,
11648which then gives the same behavior as the original `dabbrev-expand'.
11649
11650*** New customization variable `hippie-expand-dabbrev-as-symbol'. If
11651non-nil, characters of syntax '_' is considered part of the word when
11652expanding dynamically.
11653
11654*** New customization variable `hippie-expand-no-restriction'. If
11655non-nil, narrowed buffers are widened before they are searched.
11656
11657*** New customization variable `hippie-expand-only-buffers'. If
11658non-empty, buffers searched are restricted to the types specified in
11659this list. Useful for example when constructing new special-purpose
11660expansion 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
11667bibtex-autokey-titleword-ignore (case sensitive) is ignored during
11668automatic key generation. This replaces variable
11669bibtex-autokey-titleword-first-ignore, which only checked for matches
11670against the first word in the title.
11671
11672*** Autokey generation now uses all words from the title, not just
11673capitalized words. To avoid conflicts with existing customizations,
11674bibtex-autokey-titleword-ignore is set up such that words starting with
11675lowerkey characters will still be ignored. Thus, if you want to use
11676lowercase words from the title, you will have to overwrite the
11677bibtex-autokey-titleword-ignore standard setting.
11678
11679*** Case conversion of names and title words for automatic key
11680generation is more flexible. Variable bibtex-autokey-preserve-case is
11681replaced by bibtex-autokey-titleword-case-convert and
11682bibtex-autokey-name-case-convert.
11683
11684** Changes in vcursor.el.
11685
11686*** Support for character terminals is available: there is a new keymap
11687and the vcursor will appear as an arrow between buffer text. A
11688variable `vcursor-interpret-input' allows input from the vcursor to be
11689entered exactly as if typed. Numerous functions, including
11690`vcursor-compare-windows', have been rewritten to improve consistency
11691in the selection of windows and corresponding keymaps.
11692
11693*** vcursor options can now be altered with M-x customize under the
11694Editing group once the package is loaded.
11695
11696*** Loading vcursor now does not define keys by default, as this is
11697generally a bad side effect. Use M-x customize to set
11698vcursor-key-bindings to t to restore the old behavior.
11699
11700*** vcursor-auto-disable can be `copy', which turns off copying from the
11701vcursor, 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
11706buffer with M-x ispell-comments-and-strings. Comments and strings
11707are identified by syntax tables in effect.
11708
11709*** Generic region skipping implemented.
11710A single buffer can be broken into a number of regions where text will
11711and will not be checked. The definitions of the regions can be user
11712defined. New applications and improvements made available by this
11713include:
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
11722RefTeX has been updated in order to make it more usable with very
11723large projects (like a several volume math book). The parser has been
11724re-written from scratch. To get maximum speed from RefTeX, check the
11725section `Optimizations' in the manual.
11726
11727*** New recursive parser.
11728
11729The old version of RefTeX created a single large buffer containing the
11730entire multifile document in order to parse the document. The new
11731recursive parser scans the individual files.
11732
11733*** Parsing only part of a document.
11734
11735Reparsing of changed document parts can now be made faster by enabling
11736partial scans. To use this feature, read the documentation string of
11737the 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
11743This 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
11749If the creation of label selection buffers is too slow (this happens
11750for 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
11756The LaTeX package `xr' allows to cross-reference labels in external
11757documents. RefTeX can provide information about the external
11758documents as well. To use this feature, set up the \externaldocument
11759macros required by the `xr' package and rescan the document with
11760RefTeX. The external labels can then be accessed with the `x' key in
11761the selection buffer provided by `reftex-reference' (bound to `C-c )').
11762The `x' key also works in the table of contents buffer.
11763
11764*** Many more labeled LaTeX environments are recognized by default.
11765
11766The built-in command list now covers all the standard LaTeX commands,
11767and all of the major packages included in the LaTeX distribution.
11768
11769Also, RefTeX now understands the \appendix macro and changes
11770the enumeration of sections in the *toc* buffer accordingly.
11771
11772*** Mouse support for selection and *toc* buffers
11773
11774The mouse can now be used to select items in the selection and *toc*
11775buffers. See also the new option `reftex-highlight-selection'.
11776
11777*** New keymaps for selection and table of contents modes.
11778
11779The selection processes for labels and citation keys, and the table of
11780contents buffer now have their own keymaps: `reftex-select-label-map',
11781`reftex-select-bib-map', `reftex-toc-map'. The selection processes
11782have a number of new keys predefined. In particular, TAB lets you
11783enter a label with completion. Check the on-the-fly help (press `?'
11784at the selection prompt) or read the Info documentation to find out
11785more.
11786
11787*** Support for the varioref package
11788
11789The `v' key in the label selection buffer toggles \ref versus \vref.
11790
11791*** New hooks
11792
11793Three new hooks can be used to redefine the way labels, references,
11794and 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
11800The command `reftex-citation' may also be used outside LaTeX (e.g. in
11801a mail buffer). See the Info documentation for details.
11802
11803*** Short context is no longer fontified.
11804
11805The short context in the label menu no longer copies the
11806fontification from the text in the buffer. If you prefer it to be
11807fontified, use
11808
11809 (setq reftex-refontify-context t)
11810
11811** file-cache-minibuffer-complete now accepts a prefix argument.
11812With a prefix argument, it does not try to do completion of
11813the file name within its directory; it only checks for other
11814directories that contain the same file name.
11815
11816Thus, given the file name Makefile, and assuming that a file
11817Makefile.in exists in the same directory, ordinary
11818file-cache-minibuffer-complete will try to complete Makefile to
11819Makefile.in and will therefore never look for other directories that
11820have Makefile. A prefix argument tells it not to look for longer
11821names such as Makefile.in, so that instead it will look for other
11822directories--just as if the name were already complete in its present
11823directory.
11824
11825** New modes and packages
11826
11827*** There is a new alternative major mode for Perl, Cperl mode.
11828It has many more features than Perl mode, and some people prefer
11829it, but some do not.
11830
11831*** There is a new major mode, M-x vhdl-mode, for editing files of VHDL
11832code.
11833
11834*** M-x which-function-mode enables a minor mode that displays the
11835current function name continuously in the mode line, as you move
11836around in a buffer.
11837
11838Which Function mode is effective in major modes which support Imenu.
11839
11840*** Gametree is a major mode for editing game analysis trees. The author
11841uses it for keeping notes about his postal Chess games, but it should
11842be helpful for other two-player games as well, as long as they have an
11843established system of notation similar to Chess.
11844
11845*** The new minor mode checkdoc-minor-mode provides Emacs Lisp
11846documentation string checking for style and spelling. The style
11847guidelines are found in the Emacs Lisp programming manual.
11848
11849*** The net-utils package makes some common networking features
11850available in Emacs. Some of these functions are wrappers around
11851system utilities (ping, nslookup, etc.); others are implementations of
11852simple protocols (finger, whois) in Emacs Lisp. There are also
11853functions to make simple connections to TCP/IP ports for debugging and
11854the like.
11855
11856*** highlight-changes-mode is a minor mode that uses colors to
11857identify recently changed parts of the buffer text.
11858
11859*** The new package `midnight' lets you specify things to be done
11860within Emacs at midnight--by default, kill buffers that you have not
11861used in a considerable time. To use this feature, customize
11862the 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,
11893use -*-unibyte: t;-*- on its first line.
11894That will force Emacs to read that file in unibyte mode.
11895Otherwise, the file will be loaded and byte-compiled in multibyte mode.
11896
11897Thus, each lisp file is read in a consistent way regardless of whether
11898you started Emacs with --unibyte, so that a Lisp program gives
11899consistent results regardless of how Emacs was started.
11900
11901** The new function assoc-default is useful for searching an alist,
11902and using a default value if the key is not found there. You can
11903specify a comparison predicate, so this function is useful for
11904searching comparing a string against an alist of regular expressions.
11905
11906** The functions unibyte-char-to-multibyte and
11907multibyte-char-to-unibyte convert between unibyte and multibyte
11908character codes, in a way that is appropriate for the current language
11909environment.
11910
11911** The functions read-event, read-char and read-char-exclusive now
11912take two optional arguments. PROMPT, if non-nil, specifies a prompt
11913string. SUPPRESS-INPUT-METHOD, if non-nil, says to disable the
11914current input method for reading this one event.
11915
11916** Two new variables print-escape-nonascii and print-escape-multibyte
11917now control whether to output certain characters as
11918backslash-sequences. print-escape-nonascii applies to single-byte
11919non-ASCII characters; print-escape-multibyte applies to multibyte
11920characters. Both of these variables are used only when printing
11921in 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
11926of Emacs 20.2 do not work in Emacs 20.3.
11927
11928** Buffer positions are now measured in characters, as they were
11929in Emacs 19 and before. This means that (forward-char 1)
11930always increases point by 1.
11931
11932The function chars-in-region now just subtracts its arguments. It is
11933considered obsolete. The function char-boundary-p has been deleted.
11934
11935See below for additional changes relating to multibyte characters.
11936
11937** defcustom, defface and defgroup now accept the keyword `:version'.
11938Use this to specify in which version of Emacs a certain variable's
11939default 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
11949If an entire new group is added or the variables in it have the
11950default values changed, then just add a `:version' to that group. It
11951is recommended that new packages added to the distribution contain a
11952`:version' in the top level group.
11953
11954This 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
11957starts with a colon--if it is interned in the standard obarray.
11958
11959However, setting such a symbol to its proper value, which is that
11960symbol itself, is not an error. This is for the sake of programs that
11961support previous Emacs versions by explicitly setting these variables
11962to themselves.
11963
11964If you set the variable keyword-symbols-constant-flag to nil,
11965this error is suppressed, and you can set these symbols to any
11966values whatever.
11967
11968** There is a new debugger command, R.
11969It evaluates an expression like e, but saves the result
11970in the buffer *Debugger-record*.
11971
11972** Frame-local variables.
11973
11974You can now make a variable local to various frames. To do this, call
11975the function make-variable-frame-local; this enables frames to have
11976local bindings for that variable.
11977
11978These frame-local bindings are actually frame parameters: you create a
11979frame-local binding in a specific frame by calling
11980modify-frame-parameters and specifying the variable name as the
11981parameter name.
11982
11983Buffer-local bindings take precedence over frame-local bindings.
11984Thus, if the current buffer has a buffer-local binding, that binding is
11985active; otherwise, if the selected frame has a frame-local binding,
11986that binding is active; otherwise, the default binding is active.
11987
11988It would not be hard to implement window-local bindings, but it is not
11989clear that this would be very useful; windows tend to come and go in a
11990very transitory fashion, so that trying to produce any specific effect
11991through 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
11995evaluated, yield conventional string-based regexps. The symbolic form
11996makes it easier to construct, read, and maintain complex patterns.
11997See the documentation in sregex.el.
11998
11999** parse-partial-sexp's return value has an additional element which
12000is used to pass information along if you pass it to another call to
12001parse-partial-sexp, starting its scan where the first call ended.
12002The contents of this field are not yet finalized.
12003
12004** eval-region now accepts a fourth optional argument READ-FUNCTION.
12005If it is non-nil, that function is used instead of `read'.
12006
12007** unload-feature by default removes the feature's functions from
12008known hooks to avoid trouble, but a package providing FEATURE can
12009define a hook FEATURE-unload-hook to be run by unload-feature instead.
12010
12011** read-from-minibuffer no longer returns the argument DEFAULT-VALUE
12012when the user enters empty input. It now returns the null string, as
12013it did in Emacs 19. The default value is made available in the
12014history via M-n, but it is not applied here as a default.
12015
12016The other, more specialized minibuffer-reading functions continue to
12017return the default value (not the null string) when the user enters
12018empty input.
12019
12020** The new variable read-buffer-function controls which routine to use
12021for selecting buffers. For example, if you set this variable to
12022`iswitchb-read-buffer', iswitchb will be used to read buffer names.
12023Other 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,
12027echoing a period for each character typed. It takes three arguments:
12028a prompt string, a flag which says "read it twice to make sure", and a
12029default password to use if the user enters nothing.
12030
12031** The variable fill-nobreak-predicate gives major modes a way to
12032specify not to break a line at certain places. Its value is a
12033function which is called with no arguments, with point located at the
12034place where a break is being considered. If the function returns
12035non-nil, then the line won't be broken there.
12036
12037** window-end now takes an optional second argument, UPDATE.
12038If this is non-nil, then the function always returns an accurate
12039up-to-date value for the buffer position corresponding to the
12040end of the window, even if this requires computation.
12041
12042** other-buffer now takes an optional argument FRAME
12043which specifies which frame's buffer list to use.
12044If 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,
12047holds the value of (current-time) as of the last time that a window
12048was directed to display this buffer.
12049
12050** It is now meaningful to compare two window-configuration objects
12051with `equal'. Two window-configuration objects are equal if they
12052describe equivalent arrangements of windows, in the same frame--in
12053other words, if they would give the same results if passed to
12054set-window-configuration.
12055
12056** compare-window-configurations is a new function that compares two
12057window configurations loosely. It ignores differences in saved buffer
12058positions and scrolling, and considers only the structure and sizes of
12059windows and the choice of buffers to display.
12060
12061** The variable minor-mode-overriding-map-alist allows major modes to
12062override the key bindings of a minor mode. The elements of this alist
12063look like the elements of minor-mode-map-alist: (VARIABLE . KEYMAP).
12064
12065If the VARIABLE in an element of minor-mode-overriding-map-alist has a
12066non-nil value, the paired KEYMAP is active, and totally overrides the
12067map (if any) specified for the same variable in minor-mode-map-alist.
12068
12069minor-mode-overriding-map-alist is automatically local in all buffers,
12070and it is meant to be set by major modes.
12071
12072** The function match-string-no-properties is like match-string
12073except that it discards all text properties from the result.
12074
12075** The function load-average now accepts an optional argument
12076USE-FLOATS. If it is non-nil, the load average values are returned as
12077floating point numbers, rather than as integers to be divided by 100.
12078
12079** The new variable temporary-file-directory specifies the directory
12080to use for creating temporary files. The default value is determined
12081in a reasonable way for your operating system; on GNU and Unix systems
12082it 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
12087keywords :visible and :filter. The existing keyword :keys is now
12088better supported.
12089
12090The variable `easy-menu-precalculate-equivalent-keybindings' controls
12091a new feature which calculates keyboard equivalents for the menu when
12092you define the menu. The default is t. If you rarely use menus, you
12093can set the variable to nil to disable this precalculation feature;
12094then the calculation is done only if you use the menu bar.
12095
12096*** A new format for menu items is supported.
12097
12098In a keymap, a key binding that has the format
12099 (STRING . REAL-BINDING) or (STRING HELP-STRING . REAL-BINDING)
12100defines a menu item. Now a menu item definition may also be a list that
12101starts with the symbol `menu-item'.
12102
12103The format is:
12104 (menu-item ITEM-NAME) or
12105 (menu-item ITEM-NAME REAL-BINDING . ITEM-PROPERTY-LIST)
12106where ITEM-NAME is an expression which evaluates to the menu item
12107string, and ITEM-PROPERTY-LIST has the form of a property list.
12108The 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
12134Buttons are at the moment only simulated by prefixes in the menu.
12135Eventually 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
12142mouse (such as the MS Intellimouse). The event contains a delta that
12143corresponds to the amount and direction that the wheel is rotated,
12144which is typically used to implement a scroll or zoom. The format is:
12145
12146 (mouse-wheel POSITION DELTA)
12147
12148where POSITION is a list describing the position of the event in the
12149same format as a mouse-click event, and DELTA is a signed number
12150indicating the number of increments by which the wheel was rotated. A
12151negative DELTA indicates that the wheel was rotated backwards, towards
12152the user, and a positive DELTA indicates that the wheel was rotated
12153forward, away from the user.
12154
12155As 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
12158files is selected in an application outside of Emacs, and then dragged
12159and dropped onto an Emacs frame. The event contains a list of
12160filenames that were dragged and dropped, which are then typically
12161loaded into Emacs. The format is:
12162
12163 (drag-n-drop POSITION FILES)
12164
12165where POSITION is a list describing the position of the event in the
12166same format as a mouse-click event, and FILES is the list of filenames
12167that were dragged and dropped.
12168
12169As 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;
12174any attempt to set it directly signals an error. The only way
12175to 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
12178can use it to terminate a hex escape which is followed by a character
12179that could otherwise be read as part of the hex escape.
12180
12181*** String indices are now measured in characters, as they were
12182in Emacs 19 and before.
12183
12184The function chars-in-string has been deleted.
12185The function concat-chars has been renamed to `string'.
12186
12187*** The function set-buffer-multibyte sets the flag in the current
12188buffer that says whether the buffer uses multibyte representation or
12189unibyte representation. If the argument is nil, it selects unibyte
12190representation. Otherwise it selects multibyte representation.
12191
12192This function does not change the contents of the buffer, viewed
12193as a sequence of bytes. However, it does change the contents
12194viewed as characters; a sequence of two bytes which is treated as
12195one character when the buffer uses multibyte representation
12196will count as two characters using unibyte representation.
12197
12198This function sets enable-multibyte-characters to record which
12199representation is in use. It also adjusts various data in the buffer
12200(including its markers, overlays and text properties) so that they are
12201consistent with the new representation.
12202
12203*** string-make-multibyte takes a string and converts it to multibyte
12204representation. Most of the time, you don't need to care
12205about the representation, because Emacs converts when necessary;
12206however, it makes a difference when you compare strings.
12207
12208The conversion of non-ASCII characters works by adding the value of
12209nonascii-insert-offset to each character, or by translating them
12210using the table nonascii-translation-table.
12211
12212*** string-make-unibyte takes a string and converts it to unibyte
12213representation. Most of the time, you don't need to care about the
12214representation, but it makes a difference when you compare strings.
12215
12216The conversion from multibyte to unibyte representation
12217loses information; the only time Emacs performs it automatically
12218is when inserting a multibyte string into a unibyte buffer.
12219
12220*** string-as-multibyte takes a string, and returns another string
12221which contains the same bytes, but treats them as multibyte.
12222
12223*** string-as-unibyte takes a string, and returns another string
12224which contains the same bytes, but treats them as unibyte.
12225
12226*** The new function compare-strings lets you compare
12227portions of two strings. Unibyte strings are converted to multibyte,
12228so that a unibyte string can match a multibyte string.
12229You can specify whether to ignore case or not.
12230
12231*** assoc-ignore-case now uses compare-strings so that
12232it can treat unibyte and multibyte strings as equal.
12233
12234*** Regular expression operations and buffer string searches now
12235convert the search pattern to multibyte or unibyte to accord with the
12236buffer or string being searched.
12237
12238One consequence is that you cannot always use \200-\377 inside of
12239[...] to match all non-ASCII characters. This does still work when
12240searching or matching a unibyte buffer or string, but not when
12241searching or matching a multibyte string. Unfortunately, there is no
12242obvious choice of syntax to use within [...] for that job. But, what
12243you want is just to match all non-ASCII characters, the regular
12244expression [^\0-\177] works for it.
12245
12246*** Structure of coding system changed.
12247
12248All coding systems (including aliases and subsidiaries) are named
12249by symbols; the symbol's `coding-system' property is a vector
12250which defines the coding system. Aliases share the same vector
12251as the principal name, so that altering the contents of this
12252vector affects the principal name and its aliases. You can define
12253your own alias name of a coding system by the function
12254define-coding-system-alias.
12255
12256The coding system definition includes a property list of its own. Use
12257the new functions `coding-system-get' and `coding-system-put' to
12258access such coding system properties as post-read-conversion,
12259pre-write-conversion, character-translation-table-for-decode,
12260character-translation-table-for-encode, mime-charset, and
12261safe-charsets. For instance, (coding-system-get 'iso-latin-1
12262'mime-charset) gives the corresponding MIME-charset parameter
12263`iso-8859-1'.
12264
12265Among the coding system properties listed above, safe-charsets is new.
12266The value of this property is a list of character sets which this
12267coding system can correctly encode and decode. For instance:
12268(coding-system-get 'iso-latin-1 'safe-charsets) => (ascii latin-iso8859-1)
12269
12270Here, "correctly encode" means that the encoded character sets can
12271also be handled safely by systems other than Emacs as far as they
12272are capable of that coding system. Though, Emacs itself can encode
12273the other character sets and read it back correctly.
12274
12275*** The new function select-safe-coding-system can be used to find a
12276proper coding system for encoding the specified region or string.
12277This function requires a user interaction.
12278
12279*** The new functions find-coding-systems-region and
12280find-coding-systems-string are helper functions used by
12281select-safe-coding-system. They return a list of all proper coding
12282systems to encode a text in some region or string. If you don't want
12283a user interaction, use one of these functions instead of
12284select-safe-coding-system.
12285
12286*** The explicit encoding and decoding functions, such as
12287decode-coding-region and encode-coding-string, now set
12288last-coding-system-used to reflect the actual way encoding or decoding
12289was done.
12290
12291*** The new function detect-coding-with-language-environment can be
12292used to detect a coding system of text according to priorities of
12293coding systems used by some specific language environment.
12294
12295*** The functions detect-coding-region and detect-coding-string always
12296return a list if the arg HIGHEST is nil. Thus, if only ASCII
12297characters 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
12301coding-system-change-text-conversion can be used to get a different
12302coding system than what specified only in how end-of-line or text is
12303converted.
12304
12305*** The new function set-selection-coding-system can be used to set a
12306coding system for communicating with other X clients.
12307
12308*** The function `map-char-table' now passes as argument only valid
12309character codes, plus generic characters that stand for entire
12310character sets or entire subrows of a character set. In other words,
12311each time `map-char-table' calls its FUNCTION argument, the key value
12312either will be a valid individual character code, or will stand for a
12313range of characters.
12314
12315*** The new function `char-valid-p' can be used for checking whether a
12316Lisp object is a valid character code or not.
12317
12318*** The new function `charset-after' returns a charset of a character
12319in the current buffer at position POS.
12320
12321*** Input methods are now implemented using the variable
12322input-method-function. If this is non-nil, its value should be a
12323function; then, whenever Emacs reads an input event that is a printing
12324character with no modifier bits, it calls that function, passing the
12325event as an argument. Often this function will read more input, first
12326binding input-method-function to nil.
12327
12328The return value should be a list of the events resulting from input
12329method processing. These events will be processed sequentially as
12330input, before resorting to unread-command-events. Events returned by
12331the input method function are not passed to the input method function,
12332not even if they are printing characters with no modifier bits.
12333
12334The input method function is not called when reading the second and
12335subsequent events of a key sequence.
12336
12337*** You can customize any language environment by using
12338set-language-environment-hook and exit-language-environment-hook.
12339
12340The hook `exit-language-environment-hook' should be used to undo
12341customizations that you made with set-language-environment-hook. For
12342instance, if you set up a special key binding for a specific language
12343environment by set-language-environment-hook, you should set up
12344exit-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
12349options. It is called M-x customize. With this facility you can look
12350at the many user options in an organized way; they are grouped into a
12351tree structure.
12352
12353M-x customize also knows what sorts of values are legitimate for each
12354user option and ensures that you don't use invalid values.
12355
12356With M-x customize, you can set options either for the present Emacs
12357session or permanently. (Permanent settings are stored automatically
12358in your .emacs file.)
12359
12360** Scroll bars are now on the left side of the window.
12361You can change this with M-x customize-option scroll-bar-mode.
12362
12363** The mode line no longer includes the string `Emacs'.
12364This makes more space in the mode line for other information.
12365
12366** When you select a region with the mouse, it is highlighted
12367immediately afterward. At that time, if you type the DELETE key, it
12368kills the region.
12369
12370The BACKSPACE key, and the ASCII character DEL, do not do this; they
12371delete the character before point, as usual.
12372
12373** In an incremental search the whole current match is highlighted
12374on terminals which support this. (You can disable this feature
12375by setting search-highlight to nil.)
12376
12377** In the minibuffer, in some cases, you can now use M-n to
12378insert the default value into the minibuffer as text. In effect,
12379the default value (if the minibuffer routines know it) is tacked
12380onto the history "in the future". (The more normal use of the
12381history list is to use M-p to insert minibuffer input used in the
12382past.)
12383
12384** In Text mode, now only blank lines separate paragraphs.
12385This makes it possible to get the full benefit of Adaptive Fill mode
12386in Text mode, and other modes derived from it (such as Mail mode).
12387TAB in Text mode now runs the command indent-relative; this
12388makes a practical difference only when you use indented paragraphs.
12389
12390As a result, the old Indented Text mode is now identical to Text mode,
12391and is an alias for it.
12392
12393If you want spaces at the beginning of a line to start a paragraph,
12394use the new mode, Paragraph Indent Text mode.
12395
12396** Scrolling changes
12397
12398*** Scroll commands to scroll a whole screen now preserve the screen
12399position of the cursor, if scroll-preserve-screen-position is non-nil.
12400
12401In this mode, if you scroll several screens back and forth, finishing
12402on the same screen where you started, the cursor goes back to the line
12403where it started.
12404
12405*** If you set scroll-conservatively to a small number, then when you
12406move point a short distance off the screen, Emacs will scroll the
12407screen just far enough to bring point back on screen, provided that
12408does not exceed `scroll-conservatively' lines.
12409
12410*** The new variable scroll-margin says how close point can come to the
12411top or bottom of a window. It is a number of screen lines; if point
12412comes within that many lines of the top or bottom of the window, Emacs
12413recenters the window.
12414
12415** International character set support (MULE)
12416
12417Emacs now supports a wide variety of international character sets,
12418including European variants of the Latin alphabet, as well as Chinese,
12419Devanagari (Hindi and Marathi), Ethiopian, Greek, IPA, Japanese,
12420Korean, Lao, Russian, Thai, Tibetan, and Vietnamese scripts. These
12421features have been merged from the modified version of Emacs known as
12422MULE (for "MULti-lingual Enhancement to GNU Emacs")
12423
12424Users of these scripts have established many more-or-less standard
12425coding systems for storing files. Emacs uses a single multibyte
12426character encoding within Emacs buffers; it can translate from a wide
12427variety of coding systems when reading a file and can translate back
12428into any of these coding systems when saving a file.
12429
12430Keyboards, even in the countries where these character sets are used,
12431generally don't have keys for all the characters in them. So Emacs
12432supports various "input methods", typically one for each script or
12433language, to make it possible to type them.
12434
12435The Emacs internal multibyte encoding represents a non-ASCII
12436character as a sequence of bytes in the range 0200 through 0377.
12437
12438The new prefix key C-x RET is used for commands that pertain
12439to multibyte characters, coding systems, and input methods.
12440
12441You can disable multibyte character support as follows:
12442
12443 (setq-default enable-multibyte-characters nil)
12444
12445Calling the function standard-display-european turns off multibyte
12446characters, unless you specify a non-nil value for the second
12447argument, AUTO. This provides compatibility for people who are
12448already using standard-display-european to continue using unibyte
12449characters for their work until they want to change.
12450
12451*** Input methods
12452
12453An input method is a kind of character conversion which is designed
12454specifically for interactive input. In Emacs, typically each language
12455has its own input method (though sometimes several languages which use
12456the same characters can share one input method). Some languages
12457support several input methods.
12458
12459The simplest kind of input method works by mapping ASCII letters into
12460another alphabet. This is how the Greek and Russian input methods
12461work.
12462
12463A more powerful technique is composition: converting sequences of
12464characters into one letter. Many European input methods use
12465composition to produce a single non-ASCII letter from a sequence which
12466consists of a letter followed by diacritics. For example, a' is one
12467sequence of two characters that might be converted into a single
12468letter.
12469
12470The input methods for syllabic scripts typically use mapping followed
12471by conversion. The input methods for Thai and Korean work this way.
12472First, letters are mapped into symbols for particular sounds or tone
12473marks; then, sequences of these which make up a whole syllable are
12474mapped into one syllable sign--most often a "composite character".
12475
12476None of these methods works very well for Chinese and Japanese, so
12477they are handled specially. First you input a whole word using
12478phonetic spelling; then, after the word is in the buffer, Emacs
12479converts it into one or more characters using a large dictionary.
12480
12481Since there is more than one way to represent a phonetically spelled
12482word using Chinese characters, Emacs can only guess which one to use;
12483typically these input methods give you a way to say "guess again" if
12484the first guess is wrong.
12485
12486*** The command C-x RET m (toggle-enable-multibyte-characters)
12487turns multibyte character support on or off for the current buffer.
12488
12489If multibyte character support is turned off in a buffer, then each
12490byte is a single character, even codes 0200 through 0377--exactly as
12491they did in Emacs 19.34. This includes the features for support for
12492the European characters, ISO Latin-1 and ISO Latin-2.
12493
12494However, there is no need to turn off multibyte character support to
12495use ISO Latin-1 or ISO Latin-2; the Emacs multibyte character set
12496includes all the characters in these character sets, and Emacs can
12497translate automatically to and from either one.
12498
12499*** Visiting a file in unibyte mode.
12500
12501Turning off multibyte character support in the buffer after visiting a
12502file with multibyte code conversion will display the multibyte
12503sequences already in the buffer, byte by byte. This is probably not
12504what you want.
12505
12506If you want to edit a file of unibyte characters (Latin-1, for
12507example), you can do it by specifying `no-conversion' as the coding
12508system when reading the file. This coding system also turns off
12509multibyte characters in that buffer.
12510
12511If you turn off multibyte character support entirely, this turns off
12512character conversion as well.
12513
12514*** Displaying international characters on X Windows.
12515
12516A font for X typically displays just one alphabet or script.
12517Therefore, displaying the entire range of characters Emacs supports
12518requires using many fonts.
12519
12520Therefore, Emacs now supports "fontsets". Each fontset is a
12521collection of fonts, each assigned to a range of character codes.
12522
12523A fontset has a name, like a font. Individual fonts are defined by
12524the X server; fontsets are defined within Emacs itself. But once you
12525have defined a fontset, you can use it in a face or a frame just as
12526you would use a font.
12527
12528If a fontset specifies no font for a certain character, or if it
12529specifies a font that does not exist on your system, then it cannot
12530display that character. It will display an empty box instead.
12531
12532The fontset height and width are determined by the ASCII characters
12533(that is, by the font in the fontset which is used for ASCII
12534characters).
12535
12536*** Defining fontsets.
12537
12538Emacs does not use any fontset by default. Its default font is still
12539chosen as in previous versions. You can tell Emacs to use a fontset
12540with the `-fn' option or the `Font' X resource.
12541
12542Emacs creates a standard fontset automatically according to the value
12543of standard-fontset-spec. This fontset's short name is
12544`fontset-standard'. Bold, italic, and bold-italic variants of the
12545standard fontset are created automatically.
12546
12547If you specify a default ASCII font with the `Font' resource or `-fn'
12548argument, a fontset is generated from it. This works by replacing the
12549FOUNDARY, FAMILY, ADD_STYLE, and AVERAGE_WIDTH fields of the font name
12550with `*' then using this to specify a fontset. This fontset's short
12551name is `fontset-startup'.
12552
12553Emacs checks resources of the form Fontset-N where N is 0, 1, 2...
12554The resource value should have this form:
12555 FONTSET-NAME, [CHARSET-NAME:FONT-NAME]...
12556FONTSET-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.
12560The construct CHARSET-NAME:FONT-NAME can be repeated any number
12561of times; each time specifies the font for one character set.
12562CHARSET-NAME should be the name of a character set, and FONT-NAME
12563should specify an actual font to use for that character set.
12564
12565Each of these fontsets has an alias which is made from the
12566last two font name fields, CHARSET_REGISTRY and CHARSET_ENCODING.
12567You can refer to the fontset by that alias or by its full name.
12568
12569For any character sets that you don't mention, Emacs tries to choose a
12570font by substituting into FONTSET-NAME. For instance, with the
12571following resource,
12572 Emacs*Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24
12573the font for ASCII is generated as below:
12574 -*-fixed-medium-r-normal-*-24-*-ISO8859-1
12575Here 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
12582The function which processes the fontset resource value to create the
12583fontset is called create-fontset-from-fontset-spec. You can also call
12584that function explicitly to create a fontset.
12585
12586With the X resource Emacs.Font, you can specify a fontset name just
12587like an actual font name. But be careful not to specify a fontset
12588name in a wildcard resource like Emacs*Font--that tries to specify the
12589fontset for other purposes including menus, and they cannot handle
12590fontsets.
12591
12592*** The command M-x set-language-environment sets certain global Emacs
12593defaults for a particular choice of language.
12594
12595Selecting a language environment typically specifies a default input
12596method and which coding systems to recognize automatically when
12597visiting files. However, it does not try to reread files you have
12598already visited; the text in those buffers is not affected. The
12599language environment may also specify a default choice of coding
12600system for new files that you create.
12601
12602It makes no difference which buffer is current when you use
12603set-language-environment, because these defaults apply globally to the
12604whole Emacs session.
12605
12606For example, M-x set-language-environment RET Latin-1 RET
12607chooses the Latin-1 character set. In the .emacs file, you can do this
12608with (set-language-environment "Latin-1").
12609
12610*** The command C-x RET f (set-buffer-file-coding-system)
12611specifies the file coding system for the current buffer. This
12612specifies what sort of character code translation to do when saving
12613the file. As an argument, you must specify the name of one of the
12614coding systems that Emacs supports.
12615
12616*** The command C-x RET c (universal-coding-system-argument)
12617lets you specify a coding system when you read or write a file.
12618This command uses the minibuffer to read a coding system name.
12619After you exit the minibuffer, the specified coding system
12620is used for *the immediately following command*.
12621
12622So if the immediately following command is a command to read or
12623write a file, it uses the specified coding system for that file.
12624
12625If the immediately following command does not use the coding system,
12626then C-x RET c ultimately has no effect.
12627
12628For example, C-x RET c iso-8859-1 RET C-x C-f temp RET
12629visits the file `temp' treating it as ISO Latin-1.
12630
12631*** You can specify the coding system for a file using the -*-
12632construct. Include `coding: CODINGSYSTEM;' inside the -*-...-*-
12633to specify use of coding system CODINGSYSTEM. You can also
12634specify the coding system in a local variable list at the end
12635of the file.
12636
12637*** The command C-x RET t (set-terminal-coding-system) specifies
12638the coding system for terminal output. If you specify a character
12639code for terminal output, all characters output to the terminal are
12640translated into that character code.
12641
12642This feature is useful for certain character-only terminals built in
12643various countries to support the languages of those countries.
12644
12645By default, output to the terminal is not translated at all.
12646
12647*** The command C-x RET k (set-keyboard-coding-system) specifies
12648the coding system for keyboard input.
12649
12650Character code translation of keyboard input is useful for terminals
12651with keys that send non-ASCII graphic characters--for example,
12652some terminals designed for ISO Latin-1 or subsets of it.
12653
12654By default, keyboard input is not translated at all.
12655
12656Character code translation of keyboard input is similar to using an
12657input method, in that both define sequences of keyboard input that
12658translate into single characters. However, input methods are designed
12659to be convenient for interactive use, while the code translations are
12660designed to work with terminals.
12661
12662*** The command C-x RET p (set-buffer-process-coding-system)
12663specifies the coding system for input and output to a subprocess.
12664This command applies to the current buffer; normally, each subprocess
12665has its own buffer, and thus you can use this command to specify
12666translation to and from a particular subprocess by giving the command
12667in the corresponding buffer.
12668
12669By default, process input and output are not translated at all.
12670
12671*** The variable file-name-coding-system specifies the coding system
12672to use for encoding file names before operating on them.
12673It is also used for decoding file names obtained from the system.
12674
12675*** The command C-\ (toggle-input-method) activates or deactivates
12676an input method. If no input method has been selected before, the
12677command prompts for you to specify the language and input method you
12678want to use.
12679
12680C-u C-\ (select-input-method) lets you switch to a different input
12681method. C-h C-\ (or C-h I) describes the current input method.
12682
12683*** Some input methods remap the keyboard to emulate various keyboard
12684layouts commonly used for particular scripts. How to do this
12685remapping properly depends on your actual keyboard layout. To specify
12686which layout your keyboard has, use M-x quail-set-keyboard-layout.
12687
12688*** The command C-h C (describe-coding-system) displays
12689the coding systems currently selected for various purposes, plus
12690related information.
12691
12692*** The command C-h h (view-hello-file) displays a file called
12693HELLO, which has examples of text in many languages, using various
12694scripts.
12695
12696*** The command C-h L (describe-language-support) displays
12697information about the support for a particular language.
12698You specify the language as an argument.
12699
12700*** The mode line now contains a letter or character that identifies
12701the coding system used in the visited file. It normally follows the
12702first dash.
12703
12704A dash indicates the default state of affairs: no code conversion
12705(except CRLF => newline if appropriate). `=' means no conversion
12706whatsoever. The ISO 8859 coding systems are represented by digits
127071 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
12729When you are using a character-only terminal (not a window system),
12730two additional characters appear in between the dash and the file
12731coding system. These two characters describe the coding system for
12732keyboard input, and the coding system for terminal output.
12733
12734*** The new variable rmail-file-coding-system specifies the code
12735conversion to use for RMAIL files. The default value is nil.
12736
12737When you read mail with Rmail, each message is decoded automatically
12738into Emacs' internal format. This has nothing to do with
12739rmail-file-coding-system. That variable controls reading and writing
12740Rmail files themselves.
12741
12742*** The new variable sendmail-coding-system specifies the code
12743conversion for outgoing mail. The default value is nil.
12744
12745Actually, there are three different ways of specifying the coding system
12746for 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
12755to specify the language for the tutorial file. Currently, English,
12756Japanese, Korean and Thai are supported. We welcome additional
12757translations.
12758
12759** An easy new way to visit a file with no code or format conversion
12760of any kind: Use M-x find-file-literally. There is also a command
12761insert-file-literally which inserts a file into the current buffer
12762without any conversion.
12763
12764** C-q's handling of octal character codes is changed.
12765You can now specify any number of octal digits.
12766RET terminates the digits and is discarded;
12767any other non-digit terminates the digits and is then used as input.
12768
12769** There are new commands for looking up Info documentation for
12770functions, variables and file names used in your programs.
12771
12772Type M-x info-lookup-symbol to look up a symbol in the buffer at point.
12773Type M-x info-lookup-file to look up a file in the buffer at point.
12774
12775Precisely which Info files are used to look it up depends on the major
12776mode. For example, in C mode, the GNU libc manual is used.
12777
12778** M-TAB in most programming language modes now runs the command
12779complete-symbol. This command performs completion on the symbol name
12780in the buffer before point.
12781
12782With a numeric argument, it performs completion based on the set of
12783symbols documented in the Info files for the programming language that
12784you are using.
12785
12786With no argument, it does completion based on the current tags tables,
12787just like the old binding of M-TAB (complete-tag).
12788
12789** File locking works with NFS now.
12790
12791The lock file for FILENAME is now a symbolic link named .#FILENAME,
12792in the same directory as FILENAME.
12793
12794This means that collision detection between two different machines now
12795works reasonably well; it also means that no file server or directory
12796can become a bottleneck.
12797
12798The new method does have drawbacks. It means that collision detection
12799does not operate when you edit a file in a directory where you cannot
12800create new files. Collision detection also doesn't operate when the
12801file server does not support symbolic links. But these conditions are
12802rare, and the ability to have collision detection while using NFS is
12803so useful that the change is worth while.
12804
12805When Emacs or a system crashes, this may leave behind lock files which
12806are stale. So you may occasionally get warnings about spurious
12807collisions. When you determine that the collision is spurious, just
12808tell Emacs to go ahead anyway.
12809
12810** If you wish to use Show Paren mode to display matching parentheses,
12811it is no longer sufficient to load paren.el. Instead you must call
12812show-paren-mode.
12813
12814** If you wish to use Delete Selection mode to replace a highlighted
12815selection when you insert new text, it is no longer sufficient to load
12816delsel.el. Instead you must call the function delete-selection-mode.
12817
12818** If you wish to use Partial Completion mode to complete partial words
12819within symbols or filenames, it is no longer sufficient to load
12820complete.el. Instead you must call the function partial-completion-mode.
12821
12822** If you wish to use uniquify to rename buffers for you,
12823it is no longer sufficient to load uniquify.el. You must also
12824set 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.
12829Do H in view mode for a list of commands.
12830
12831*** There are two new commands for entering View mode:
12832view-file-other-frame and view-buffer-other-frame.
12833
12834*** Exiting View mode does a better job of restoring windows to their
12835previous state.
12836
12837*** New customization variable view-scroll-auto-exit. If non-nil,
12838scrolling past end of buffer makes view mode exit.
12839
12840*** New customization variable view-exits-all-viewing-windows. If
12841non-nil, view-mode will at exit restore all windows viewing buffer,
12842not just the selected window.
12843
12844*** New customization variable view-read-only. If non-nil, visiting a
12845read-only file automatically enters View mode, and toggle-read-only
12846turns View mode on or off.
12847
12848*** New customization variable view-remove-frame-by-deleting controls
12849how to remove a not needed frame at view mode exit. If non-nil,
12850delete 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,
12853now 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,
12856has a new feature. If the file is currently not locked, so that it is
12857presumably identical to the last checked-in version, the command now asks
12858which version to compare with.
12859
12860** When using hideshow.el, incremental search can temporarily show hidden
12861blocks if a match is inside the block.
12862
12863The block is hidden again if the search is continued and the next match
12864is outside the block. By customizing the variable
12865isearch-hide-immediately you can choose to hide all the temporarily
12866shown blocks only when exiting from incremental search.
12867
12868By customizing the variable hs-isearch-open you can choose what kind
12869of blocks to temporarily show during isearch: comment blocks, code
12870blocks, all of them or none.
12871
12872** The new command C-x 4 0 (kill-buffer-and-window) kills the
12873current buffer and deletes the selected window. It asks for
12874confirmation first.
12875
12876** C-x C-w, which saves the buffer into a specified file name,
12877now changes the major mode according to that file name.
12878However, 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
12884This applies to M-x set-visited-file-name as well.
12885
12886However, if you set change-major-mode-with-file-name to nil, then
12887these 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,
12892it performs a case-sensitive search.
12893
12894*** In the *Occur* buffer made by M-x occur,
12895if you type g or M-x revert-buffer, this repeats the search
12896using the same regular expression and the same buffer as before.
12897
12898** In Transient Mark mode, the region in any one buffer is highlighted
12899in just one window at a time. At first, it is highlighted in the
12900window where you set the mark. The buffer's highlighting remains in
12901that window unless you select to another window which shows the same
12902buffer--then the highlighting moves to that window.
12903
12904** The feature to suggest key bindings when you use M-x now operates
12905after the command finishes. The message suggesting key bindings
12906appears temporarily in the echo area. The previous echo area contents
12907come back after a few seconds, in case they contain useful information.
12908
12909** Each frame now independently records the order for recently
12910selected buffers, so that the default for C-x b is now based on the
12911buffers 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
12920you try to use the minibuffer, you used to get a nested minibuffer.
12921Now, this not only gives an error, it also cancels the minibuffer that
12922was already active.
12923
12924The motive for this change is so that beginning users do not
12925unknowingly move away from minibuffers, leaving them active, and then
12926get confused by it.
12927
12928If you want to be able to have recursive minibuffers, you must
12929set enable-recursive-minibuffers to non-nil.
12930
12931** Changes in dynamic abbrevs.
12932
12933*** Expanding dynamic abbrevs with M-/ is now smarter about case
12934conversion. If the expansion has mixed case not counting the first
12935character, and the abbreviation matches the beginning of the expansion
12936including case, then the expansion is copied verbatim.
12937
12938The expansion is also copied verbatim if the abbreviation itself has
12939mixed case. And using SPC M-/ to copy an additional word always
12940copies it verbatim except when the previous copied word is all caps.
12941
12942*** The values of `dabbrev-case-replace' and `dabbrev-case-fold-search'
12943are no longer Lisp expressions. They have simply three possible
12944values.
12945
12946`dabbrev-case-replace' has these three values: nil (don't preserve
12947case), t (do), or `case-replace' (do like M-x query-replace).
12948`dabbrev-case-fold-search' has these three values: nil (don't ignore
12949case), t (do), or `case-fold-search' (do like search).
12950
12951** Minibuffer history lists are truncated automatically now to a
12952certain length. The variable history-length specifies how long they
12953can 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.
12958Instead, it runs the command `compose-mail', which invokes the mail
12959composition 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
12962behavior.
12963
12964C-x 4 m now runs compose-mail-other-window, and C-x 5 m runs
12965compose-mail-other-frame.
12966
12967*** While composing a reply to a mail message, from Rmail, you can use
12968the command C-c C-r to cite just the region from the message you are
12969replying to. This copies the text which is the selected region in the
12970buffer that shows the original message.
12971
12972*** The command C-c C-i inserts a file at the end of the message,
12973with separator lines around the contents.
12974
12975*** The command M-x expand-mail-aliases expands all mail aliases
12976in suitable mail headers. Emacs automatically extracts mail alias
12977definitions from your mail alias file (e.g., ~/.mailrc). You do not
12978need 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,
12983for local users or if that is known. The variable mail-complete-style
12984controls the style to use, and whether to do this at all.
12985Its values are like those of mail-from-style.
12986
12987**** The variable mail-passwd-command lets you specify a shell command
12988to 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
12992to 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
12996special syntax, by adding `/:' to the beginning. Thus, if you have a
12997directory named `/foo:', you can prevent it from being treated as a
12998reference to a remote host named `foo' by writing it as `/:/foo:'.
12999
13000Emacs uses this new construct automatically when necessary, such as
13001when you start it with a working directory whose name might otherwise
13002be taken to be magic.
13003
13004** There is a new command M-x grep-find which uses find to select
13005files to search through, and grep to scan them. The output is
13006available in a Compile mode buffer, as with M-x grep.
13007
13008M-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
13012suggest they are probably not needed in the long run.
13013
13014In Dired, * is now a prefix key for mark-related commands.
13015
13016new 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
13034saves the new mail in the file RMAILOSE.n, where n is an integer
13035chosen to make a unique name. This way, Rmail will not keep crashing
13036each time you run it.
13037
13038*** In Rmail, the variable rmail-summary-line-count-flag now controls
13039whether 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
13042messages) now take repeat counts as arguments. A negative argument
13043means to move in the opposite direction.
13044
13045*** In Rmail, the t command now takes an optional argument which lets
13046you 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
13049just the body of the current message into a file, without the headers.
13050It takes the file name from the message subject, by default, but you
13051can edit that file name in the minibuffer before it is actually used
13052for 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
13059Gnus.
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
13065article 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
13074are 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.
13082See `gnus-signature-separator' and `gnus-signature-limit'.
13083
13084*** Summary pick mode has been made to look more nn-like.
13085Line numbers are displayed and the `.' command can be
13086used to pick articles.
13087
13088*** Commands for moving the .newsrc.eld from one server to
13089another have been added.
13090
13091 `M-x gnus-change-server'
13092
13093*** A way to specify that "uninteresting" fields be suppressed when
13094generating 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
13110Date is normalized to compact ISO 8601 format first.
13111
13112*** A new command has been added to remove all data on articles from
13113the 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
13123even 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
13132sorting 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
13151from 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
13158the following code, for instance, in your .emacs.
13159
13160 (add-hook 'gnus-startup-hook 'gnus-mule-initialize)
13161
13162Then, when you start Gnus, it will decode non-ASCII text automatically
13163and show appropriate characters. (Note: if you are using gnus-mime
13164from the SEMI package, formerly known as TM, you should NOT add this
13165hook to gnus-startup-hook; gnus-mime has its own method of handling
13166this issue.)
13167
13168Since it is impossible to distinguish all coding systems
13169automatically, you may need to specify a choice of coding system for a
13170particular news group. This can be done by:
13171
13172 (gnus-mule-add-group NEWSGROUP 'CODING-SYSTEM)
13173
13174Here NEWSGROUP should be a string which names a newsgroup or a tree
13175of newsgroups. If NEWSGROUP is "XXX.YYY", all news groups under
13176"XXX.YYY" (including "XXX.YYY.ZZZ") will use the specified coding
13177system. CODING-SYSTEM specifies which coding system to use (for both
13178for reading and posting).
13179
13180CODING-SYSTEM can also be a cons cell of the form
13181 (READ-CODING-SYSTEM . POST-CODING-SYSTEM)
13182Then READ-CODING-SYSTEM is used when you read messages from the
13183newsgroups, while POST-CODING-SYSTEM is used when you post messages
13184there.
13185
13186Emacs knows the right coding systems for certain newsgroups by
13187default. 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
13195When you reply by mail to an article, these settings are ignored;
13196the 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)
13201code, you may want to make the CC Mode style variables have global
13202values so that you can set them directly in your .emacs file. To do
13203this, set c-style-variables-are-local-p to nil in your .emacs file.
13204Note that this only takes effect if you do it *before* cc-mode.el is
13205loaded.
13206
13207If you typically edit more than one style of C (or C++, Objective-C,
13208Java) code in a single Emacs session, you may want to make the CC Mode
13209style variables have buffer local values. By default, all buffers
13210share the same style variable settings; to make them buffer local, set
13211c-style-variables-are-local-p to t in your .emacs file. Note that you
13212must do this *before* CC Mode is loaded.
13213
13214*** The new variable c-indentation-style holds the C style name
13215of the current buffer.
13216
13217*** The variable c-block-comments-indent-p has been deleted, because
13218it is no longer necessary. C mode now handles all the supported styles
13219of 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
13222style that the Python developers like.
13223
13224*** There is a new c-cleanup-list option: brace-elseif-brace.
13225This says to put ...} else if (...) {... on one line,
13226just 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
13231name, it retrieves the *latest* versions of all files in the current
13232directory and its subdirectories (aside from files already locked).
13233
13234This feature is useful if your RCS directory is a link to a common
13235master directory, and you want to pick up changes made by other
13236developers.
13237
13238You can do the same thing for an individual file by typing C-u C-x C-q
13239RET in a buffer visiting that file.
13240
13241*** VC can now handle files under CVS that are being "watched" by
13242other developers. Such files are made read-only by CVS. To get a
13243writable copy, type C-x C-q in a buffer visiting such a file. VC then
13244calls "cvs edit", which notifies the other developers of it.
13245
13246*** vc-version-diff (C-u C-x v =) now suggests reasonable defaults for
13247version 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
13252subclasses of holidays for ranges of years. Related menu items allow
13253you do this for the year of the selected date, or the
13254following/previous years.
13255
13256*** There is now support for the Baha'i calendar system. Use `pb' in
13257the *Calendar* buffer to display the current Baha'i date. The Baha'i
13258calendar, or "Badi calendar" is a system of 19 months with 19 days
13259each, and 4 intercalary days (5 during a Gregorian leap year). The
13260calendar begins May 23, 1844, with each of the months named after a
13261supposed attribute of God.
13262
13263** ps-print changes
13264
13265There are some new user variables and subgroups for customizing the page
13266layout.
13267
13268*** Headers & Footers (subgroup)
13269
13270Some printer systems print a header page and force the first page to
13271be printed on the back of the header page when using duplex. If your
13272printer system has this behavior, set variable
13273`ps-banner-page-when-duplexing' to t.
13274
13275If variable `ps-banner-page-when-duplexing' is non-nil, it prints a
13276blank page as the very first printed page. So, it behaves as if the
13277very first character of buffer (or region) were a form feed ^L (\014).
13278
13279The variable `ps-spool-config' specifies who is responsible for
13280setting 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
13292The variable `ps-spool-tumble' specifies how the page images on
13293opposite sides of a sheet are oriented with respect to each other. If
13294`ps-spool-tumble' is nil, ps-print produces output suitable for
13295bindings on the left or right. If `ps-spool-tumble' is non-nil,
13296ps-print produces output suitable for bindings at the top or bottom.
13297This variable takes effect only if `ps-spool-duplex' is non-nil.
13298The default value is nil.
13299
13300The variable `ps-header-frame-alist' specifies a header frame
13301properties 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
13323Any other property is ignored.
13324
13325Don't change this alist directly; instead use Custom, or the
13326`ps-value', `ps-get', `ps-put' and `ps-del' functions (see there for
13327documentation).
13328
13329Ps-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
13334controlling headers.
13335
13336*** Color management (subgroup)
13337
13338If `ps-print-color-p' is non-nil, the buffer's text will be printed in
13339color.
13340
13341*** Face Management (subgroup)
13342
13343If you need to print without worrying about face background colors,
13344set the variable `ps-use-face-background' which specifies if face
13345background 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
13353The variable `ps-n-up-printing' specifies the number of pages per
13354sheet of paper.
13355
13356The variable `ps-n-up-margin' specifies the margin in points (pt)
13357between the sheet border and the n-up printing.
13358
13359If variable `ps-n-up-border-p' is non-nil, a border is drawn around
13360each page.
13361
13362The variable `ps-n-up-filling' specifies how the page matrix is filled
13363on 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
13382Any other value is treated as `left-top'.
13383
13384*** Zebra stripes (subgroup)
13385
13386The variable `ps-zebra-color' controls the zebra stripes grayscale or
13387RGB color.
13388
13389The variable `ps-zebra-stripe-follow' specifies how zebra stripes
13390continue on next page. Visually, valid values are (the character `+'
13391to 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
13421Any other value is treated as `nil'.
13422
13423
13424*** Printer management (subgroup)
13425
13426The variable `ps-printer-name-option' determines the option used by
13427some 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
13429utility to print, for example, `ps-printer-name-option' should be set
13430to "-P".
13431
13432The variable `ps-manual-feed' indicates if the printer requires manual
13433paper feeding. If it's nil, automatic feeding takes place. If it's
13434non-nil, manual feeding takes place.
13435
13436The variable `ps-end-with-control-d' specifies whether C-d (\x04)
13437should be inserted at end of the generated PostScript. Non-nil means
13438do so.
13439
13440*** Page settings (subgroup)
13441
13442If variable `ps-warn-paper-type' is nil, it's *not* treated as an
13443error if the PostScript printer doesn't have a paper with the size
13444indicated by `ps-paper-type'; the default paper size will be used
13445instead. If `ps-warn-paper-type' is non-nil, an error is signaled if
13446the PostScript printer doesn't support a paper with the size indicated
13447by `ps-paper-type'. This is used when `ps-spool-config' is set to
13448`setpagedevice'.
13449
13450The variable `ps-print-upside-down' determines the orientation for
13451printing pages: nil means `normal' printing, non-nil means
13452`upside-down' printing (that is, the page is rotated by 180 degrees).
13453
13454The variable `ps-selected-pages' specifies which pages to print. If
13455it's nil, all pages are printed. If it's a list, list elements may be
13456integers specifying a single page to print, or cons cells (FROM . TO)
13457specifying to print from page FROM to TO. Invalid list elements, that
13458is integers smaller than one, or elements whose FROM is greater than
13459its TO, are ignored.
13460
13461The variable `ps-even-or-odd-pages' specifies how to print even/odd
13462pages. 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
13480Any other value is treated as nil.
13481
13482If you set `ps-selected-pages' (see there for documentation), pages
13483are 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
13488and 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
13509The variable `ps-error-handler-message' specifies where error handler
13510messages should be sent.
13511
13512It is also possible to add a user-defined PostScript prologue code in
13513front of all generated prologue code by setting the variable
13514`ps-user-defined-prologue'.
13515
13516The variable `ps-line-number-font' specifies the font for line numbers.
13517
13518The variable `ps-line-number-font-size' specifies the font size in
13519points for line numbers.
13520
13521The variable `ps-line-number-color' specifies the color for line
13522numbers. See `ps-zebra-color' for documentation.
13523
13524The variable `ps-line-number-step' specifies the interval in which
13525line numbers are printed. For example, if `ps-line-number-step' is set
13526to 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
13536Valid values are:
13537
13538integer 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
13545Any other value is treated as `zebra'.
13546
13547The variable `ps-line-number-start' specifies the starting point in
13548the 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
135503, 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
13564The variable `ps-postscript-code-directory' specifies the directory
13565where the PostScript prologue file used by ps-print is found.
13566
13567The variable `ps-line-spacing' determines the line spacing in points,
13568for ordinary text, when generating PostScript (similar to
13569`ps-font-size').
13570
13571The variable `ps-paragraph-spacing' determines the paragraph spacing,
13572in points, for ordinary text, when generating PostScript (similar to
13573`ps-font-size').
13574
13575The variable `ps-paragraph-regexp' specifies the paragraph delimiter.
13576
13577The variable `ps-begin-cut-regexp' and `ps-end-cut-regexp' specify the
13578start 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
13583C++, ; 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
13588in the file if `hs-hide-comments-when-hiding-all' is set.
13589
13590*** The new function `hs-hide-initial-comment' hides the comments at
13591the beginning of the files. Finally those huge RCS logs don't stay in your
13592way! This is run by default when entering the `hs-minor-mode'.
13593
13594*** Now uses overlays instead of `selective-display', so is more
13595robust 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
13600to show only the beginning of a block when it is hidden. See the
13601documentation 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
13606filled to the current fill-column. This behavior is now independent
13607of the size of the window. When you save the file, the fill-column in
13608use is stored as well, so that the whole buffer need not be refilled
13609the next time unless the fill-column is different.
13610
13611*** use-hard-newlines is now a minor mode. When it is enabled, Emacs
13612distinguishes between hard and soft newlines, and treats hard newlines
13613as paragraph boundaries. Otherwise all newlines inserted are marked
13614as soft, and paragraph boundaries are determined solely from the text.
13615
13616** Font Lock mode
13617
13618*** Custom support
13619
13620The variables font-lock-face-attributes, font-lock-display-type and
13621font-lock-background-mode are now obsolete; the recommended way to specify
13622the faces to use for Font Lock mode is with M-x customize-group on the new
13623custom 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
13625consider converting from setting that variable to using M-x customize.
13626
13627You can still use X resources to specify Font Lock face appearances.
13628
13629*** Maximum decoration
13630
13631Fontification now uses the maximum level of decoration supported by
13632default. Previously, fontification used a mode-specific default level
13633of decoration, which is typically the minimum level of decoration
13634supported. You can set font-lock-maximum-decoration to nil
13635to get the old behavior.
13636
13637*** New support
13638
13639Support is now provided for Java, Objective-C, AWK and SIMULA modes.
13640
13641Note that Font Lock mode can be turned on without knowing exactly what modes
13642support Font Lock mode, via the command global-font-lock-mode.
13643
13644*** Configurable support
13645
13646Support for C, C++, Objective-C and Java can be more easily configured for
13647additional types and classes via the new variables c-font-lock-extra-types,
13648c++-font-lock-extra-types, objc-font-lock-extra-types and, you guessed it,
13649java-font-lock-extra-types. These value of each of these variables should be a
13650list of regexps matching the extra type names. For example, the default value
13651of c-font-lock-extra-types is ("\\sw+_t") which means fontification follows the
13652convention that C type names end in _t. This results in slower fontification.
13653
13654Of course, you can change the variables that specify fontification in whatever
13655way you wish, typically by adding regexps. However, these new variables make
13656it easier to make specific and common changes for the fontification of types.
13657
13658*** Adding highlighting patterns to existing support
13659
13660You can use the new function font-lock-add-keywords to add your own
13661highlighting patterns, such as for project-local or user-specific constructs,
13662for any mode.
13663
13664For 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
13668in your ~/.emacs.
13669
13670*** New faces
13671
13672Font Lock now defines two new faces, font-lock-builtin-face and
13673font-lock-warning-face. These are intended to highlight builtin keywords,
13674distinct from a language's normal keywords, and objects that should be brought
13675to user attention, respectively. Various modes now use these new faces.
13676
13677*** Changes to fast-lock support mode
13678
13679The fast-lock package, one of the two Font Lock support modes, can now process
13680cache files silently. You can use the new variable fast-lock-verbose, in the
13681same way as font-lock-verbose, to control this feature.
13682
13683*** Changes to lazy-lock support mode
13684
13685The lazy-lock package, one of the two Font Lock support modes, can now fontify
13686according to the true syntactic context relative to other lines. You can use
13687the new variable lazy-lock-defer-contextually to control this feature. If
13688non-nil, changes to the buffer will cause subsequent lines in the buffer to be
13689refontified after lazy-lock-defer-time seconds of idle time. If nil, then only
13690the modified lines will be refontified; this is the same as the previous Lazy
13691Lock mode behavior and the behavior of Font Lock mode.
13692
13693This feature is useful in modes where strings or comments can span lines.
13694For example, if a string or comment terminating character is deleted, then if
13695this feature is enabled subsequent lines in the buffer will be correctly
13696refontified to reflect their new syntactic context. Previously, only the line
13697containing the deleted character would be refontified and you would have to use
13698the command M-o M-o (font-lock-fontify-block) to refontify some lines.
13699
13700As a consequence of this new feature, two other variables have changed:
13701
13702Variable `lazy-lock-defer-driven' is renamed `lazy-lock-defer-on-scrolling'.
13703Variable `lazy-lock-defer-time' can now only be a time, i.e., a number.
13704Buffer modes for which on-the-fly deferral applies can be specified via the
13705new variable `lazy-lock-defer-on-the-fly'.
13706
13707If you set these variables in your ~/.emacs, then you may have to change those
13708settings.
13709
13710** Ada mode changes.
13711
13712*** There is now better support for using find-file.el with Ada mode.
13713If you switch between spec and body, the cursor stays in the same
13714procedure (modulo overloading). If a spec has no body file yet, but
13715you try to switch to its body file, Ada mode now generates procedure
13716stubs.
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
13722The 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
13727is calculated from the indenting, not from syntactic constructs.
13728Outlining 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
13731formatting used in GNAT. It places two blanks after a comment start,
13732places one blank between a word end and an opening '(', and puts one
13733space 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
13738mode; therefore, the variables to customize it are the variables used
13739for Lisp mode which have names starting with `lisp-'. The variables
13740with names starting with `scheme-' which used to do this no longer
13741have any effect.
13742
13743If you want to use different indentation for Scheme and Lisp, this is
13744still possible, but now you must do it by adding a hook to
13745scheme-mode-hook, which could work by setting the `lisp-' indentation
13746variables as buffer-local variables.
13747
13748*** DSSSL mode is a variant of Scheme mode, for editing DSSSL scripts.
13749Use 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
13754USER are set, emacsclient now looks for a socket based on the UID
13755associated with the name. That is an emacsclient running as root
13756can connect to an Emacs server started by a non-root user.
13757
13758*** The emacsclient program now accepts an option --no-wait which tells
13759it to return immediately without waiting for you to "finish" the
13760buffer in Emacs.
13761
13762*** The new option --alternate-editor allows to specify an editor to
13763use if Emacs is not running. The environment variable
13764ALTERNATE_EDITOR can be used for the same effect; the command line
13765option takes precedence.
13766
13767** M-x eldoc-mode enables a minor mode in which the echo area
13768constantly 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,
13772which narrows the accessible parts of the buffer to just
13773the current defun.
13774
13775** Emacs now handles the `--' argument in the standard way; all
13776following arguments are treated as ordinary file names.
13777
13778** On MSDOS and Windows, the bookmark file is now called _emacs.bmk,
13779and the saved desktop file is now called _emacs.desktop (truncated if
13780necessary).
13781
13782** When you kill a buffer that visits a file,
13783if there are any registers that save positions in the file,
13784these register values no longer become completely useless.
13785If you try to go to such a register with C-x j, then you are
13786asked whether to visit the file again. If you say yes,
13787it visits the file and then goes to the same position.
13788
13789** When you visit a file that changes frequently outside Emacs--for
13790example, a log of output from a process that continues to run--it may
13791be useful for Emacs to revert the file without querying you whenever
13792you visit the file afresh with C-x C-f.
13793
13794You can request this behavior for certain files by setting the
13795variable revert-without-query to a list of regular expressions. If a
13796file's name matches any of these regular expressions, find-file and
13797revert-buffer revert the buffer without asking for permission--but
13798only if you have not edited the buffer text yourself.
13799
13800** set-default-font has been renamed to set-frame-font
13801since it applies only to the current frame.
13802
13803** In TeX mode, you can use the variable tex-main-file to specify the
13804file for tex-file to run TeX on. (By default, tex-main-file is nil,
13805and tex-file runs TeX on the current visited file.)
13806
13807This is useful when you are editing a document that consists of
13808multiple files. In each of the included files, you can set up a local
13809variable list which specifies the top-level file of your document for
13810tex-main-file. Then tex-file will run TeX on the whole document
13811instead of just the file you are editing.
13812
13813** RefTeX mode
13814
13815RefTeX mode is a new minor mode with special support for \label, \ref
13816and \cite macros in LaTeX documents. RefTeX distinguishes labels of
13817different environments (equation, figure, ...) and has full support for
13818multifile documents. To use it, select a buffer with a LaTeX document and
13819turn the mode on with M-x reftex-mode. Here are the main user commands:
13820
13821C-c ( reftex-label
13822 Creates a label semi-automatically. RefTeX is context sensitive and
13823 knows which kind of label is needed.
13824
13825C-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
13829C-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
13833C-c & reftex-view-crossref
13834 Views the cross reference of a \ref or \cite command near point.
13835
13836C-c = reftex-toc
13837 Shows a table of contents of the (multifile) document. From there you
13838 can quickly jump to every section.
13839
13840Under X, RefTeX installs a "Ref" menu in the menu bar, with additional
13841commands. Press `?' to get help when a prompt mentions this feature.
13842Full documentation and customization examples are in the file
13843reftex.el. You can use the finder to view the file documentation:
13844C-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
13851both the BibTeX program and Emacs BibTeX mode.
13852
13853*** Renamed variable bibtex-mode-user-optional-fields to
13854bibtex-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
13860entries to the BibTeX kill ring, from where they can be yanked back by
13861appropriate functions.
13862
13863*** New interactive functions for repositioning and marking of
13864entries. 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
13867been cleaned.
13868
13869*** New variable bibtex-field-delimiters, which replaces variables
13870bibtex-field-{left|right}-delimiter.
13871
13872*** New variable bibtex-entry-delimiters to determine how entries
13873shall be delimited.
13874
13875*** Allow preinitialization of fields. See documentation of
13876bibtex-user-optional-fields, bibtex-entry-field-alist, and
13877bibtex-include-OPTkey for details.
13878
13879*** Book and InBook entries require either an author or an editor
13880field. This is now supported by bibtex.el. Alternative fields are
13881prefixed with `ALT'.
13882
13883*** New variable bibtex-entry-format, which replaces variable
13884bibtex-clean-entry-zap-empty-opts and allows specification of many
13885formatting options performed on cleaning an entry (see variable
13886documentation).
13887
13888*** Even more control on how automatic keys are generated. See
13889documentation of bibtex-generate-autokey for details. Transcriptions
13890for foreign languages other than German are now handled, too.
13891
13892*** New boolean user option bibtex-comma-after-last-field to decide if
13893comma should be inserted at end of last field.
13894
13895*** New boolean user option bibtex-align-at-equal-sign to determine if
13896alignment should be made at left side of field contents or at equal
13897signs. 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
13904from alien sources.
13905
13906*** New function bibtex-complete-key (similar to bibtex-complete-string)
13907to complete prefix to a key defined in buffer. Mainly useful in
13908crossref entries.
13909
13910*** New function bibtex-count-entries to count entries in buffer or
13911region.
13912
13913*** Added support for imenu.
13914
13915*** The function `bibtex-validate' now checks current region instead
13916of 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
13921from `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
13928functions add-untranslated-filesystem and remove-untranslated-filesystem.
13929Each of these functions takes the name of a drive letter or directory
13930as an argument.
13931
13932When a filesystem is added as untranslated, all files on it are read
13933and 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),
13938Lynx 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
13940non-remote-controlled browsers (browse-url-generic) and associated
13941customization variables.
13942
13943*** New commands `browse-url-of-region' and `browse-url'.
13944
13945*** URLs marked up with <URL:...> (RFC1738) work if broken across
13946lines. 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
13952pops up the Info file for this command.
13953
13954*** There is now a variable, ediff-autostore-merges, which controls whether
13955the result of a merge is saved in a file. By default, this is done only when
13956merge is done from a session group (eg, when merging files in two different
13957directories).
13958
13959*** Since Emacs 19.31 (this hasn't been announced before), Ediff can compare
13960and merge groups of files residing in different directories, or revisions of
13961files in the same directory.
13962
13963*** Since Emacs 19.31, Ediff can apply multi-file patches interactively.
13964The patches must be in the context format or GNU unified format. (The bug
13965related 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
13974Viper 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
13978color when Viper is in insert state.
13979*** If search lands the cursor near the top or the bottom of the window,
13980Viper pulls the window up or down to expose more context. The variable
13981viper-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
13986default. The resulting tags files are inflated by 30% on average.
13987Use --no-globals to turn this feature off. Etags can also tag
13988variables which are members of structure-like constructs, but it does
13989not 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"
13994constructs are tagged. Files are recognized by the extension .java.
13995
13996*** Etags can now handle programs written in Postscript. Files are
13997recognized by the extensions .ps and .pdb (Postscript with C syntax).
13998In Postscript, tags are lines that start with a slash.
13999
14000*** Etags now handles Objective C and Objective C++ code. The usual C and
14001C++ tags are recognized in these languages; in addition, etags
14002recognizes special Objective C syntax for classes, class categories,
14003methods 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
14007column 8 and ends in a full stop, i.e. anything that could be a
14008paragraph name.
14009
14010*** Regexps in Etags now support intervals, as in ed or grep. The syntax of
14011an interval is \{M,N\}, and it means to match the preceding expression
14012at least M times and as many as N times.
14013
14014** The format for specifying a custom format for time-stamp to insert
14015in files has changed slightly.
14016
14017With the new enhancements to the functionality of format-time-string,
14018time-stamp-format will change to be eventually compatible with it.
14019This conversion is being done in two steps to maintain compatibility
14020with old time-stamp-format values.
14021
14022In the new scheme, alternate case is signified by the number-sign
14023(`#') modifier, rather than changing the case of the format character.
14024This feature is as yet incompletely implemented for compatibility
14025reasons.
14026
14027In the old time-stamp-format, all numeric fields defaulted to their
14028natural width. (With format-time-string, each format has a
14029fixed-width default.) In this version, you can specify the colon
14030(`:') modifier to a numeric conversion to mean "give me the historical
14031time-stamp-format width default." Do not use colon if you are
14032specifying an explicit width, as in "%02d".
14033
14034Numbers are no longer truncated to the requested width, except in the
14035case of "%02y", which continues to give a two-digit year. Digit
14036truncation probably wasn't being used for anything else anyway.
14037
14038The new formats will work with old versions of Emacs. New formats are
14039being recommended now to allow time-stamp-format to change in the
14040future to be compatible with format-time-string. The new forms being
14041recommended now will continue to work then.
14042
14043See the documentation string for the variable time-stamp-format for
14044details.
14045
14046** There are some additional major modes:
14047
14048dcl-mode, for editing VMS DCL files.
14049m4-mode, for editing files of m4 input.
14050meta-mode, for editing MetaFont and MetaPost source files.
14051
14052** In Shell mode, the command shell-copy-environment-variable lets you
14053copy the value of a specified environment variable from the subshell
14054into 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
14061be 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
14066in shell buffers.
14067
14068*** The new library elint.el provides for linting of Emacs Lisp code.
14069See the documentation for `elint-initialize', `elint-current-buffer'
14070and `elint-defun'.
14071
14072*** M-x expand-add-abbrevs defines a special kind of abbrev which is
14073meant for programming constructs. These abbrevs expand like ordinary
14074ones, when you type SPC, but only at the end of a line and not within
14075strings or comments.
14076
14077These abbrevs can act as templates: you can define places within an
14078abbrev for insertion of additional text. Once you expand the abbrev,
14079you can then use C-x a p and C-x a n to move back and forth to these
14080insertion points. Thus you can conveniently insert additional text
14081at these points.
14082
14083*** filecache.el remembers the location of files so that you
14084can visit them by short forms of their names.
14085
14086*** find-func.el lets you find the definition of the user-loaded
14087Emacs 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
14092switch-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
14101from the GCC error messages which indicate which instantiations are needed.
14102
14103*** mouse-copy.el provides a one-click copy and move feature.
14104You can drag a region with M-mouse-1, and it is automatically
14105inserted at point. M-Shift-mouse-1 deletes the text from its
14106original place after inserting the copy.
14107
14108*** mouse-drag.el lets you do scrolling by dragging Mouse-2
14109on the buffer.
14110
14111You click the mouse and move; that distance either translates into the
14112velocity to scroll (with mouse-drag-throw) or the distance to scroll
14113(with mouse-drag-drag). Horizontal scrolling is enabled when needed.
14114
14115Enable 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
14121mail 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.
14124It comes with a facility for communicating with an Octave subprocess.
14125
14126*** ogonek
14127
14128The ogonek package provides functions for changing the coding of
14129Polish diacritic characters in buffers. Codings known from various
14130platforms are supported such as ISO8859-2, Mazovia, IBM Latin2, and
14131TeX. For example, you can change the coding from Mazovia to
14132ISO8859-2. Another example is a change of coding from ISO8859-2 to
14133prefix notation (in which `/a' stands for the aogonek character, for
14134instance) and vice versa.
14135
14136To use this package load it using
14137 M-x load-library [enter] ogonek
14138Then, you may get an explanation by calling one of
14139 M-x ogonek-jak -- in Polish
14140 M-x ogonek-how -- in English
14141The info specifies the commands and variables provided as well as the
14142ways of customization in `.emacs'.
14143
14144*** Interface to ph.
14145
14146Emacs provides a client interface to CCSO Nameservers (ph/qi)
14147
14148The CCSO nameserver is used in many universities to provide directory
14149services about people. ph.el provides a convenient Emacs interface to
14150these servers.
14151
14152*** uce.el is useful for replying to unsolicited commercial email.
14153
14154*** vcursor.el implements a "virtual cursor" feature.
14155You can move the virtual cursor with special commands
14156while the real cursor does not move.
14157
14158*** webjump.el is a "hot list" package which you can set up
14159for visiting your favorite web sites.
14160
14161*** M-x winner-mode is a minor mode which saves window configurations,
14162so you can move back to other configurations that you have recently used.
14163
14164** movemail change
14165
14166Movemail no longer needs to be installed setuid root in order for POP
14167mail retrieval to function properly. This is because it no longer
14168supports the RPOP (reserved-port POP) protocol; instead, it uses the
14169user's POP password to authenticate to the mail server.
14170
14171This 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
14177Emacs handles three different conventions for representing
14178end-of-line: CRLF for MSDOS, LF for Unix and GNU, and CR (used on the
14179Macintosh). Emacs determines which convention is used in a specific
14180file based on the contents of that file (except for certain special
14181file names), and when it saves the file, it uses the same convention.
14182
14183To save the file and change the end-of-line convention, you can use
14184C-x RET f (set-buffer-file-coding-system) to specify a different
14185coding system for the buffer. Then, when you save the file, the newly
14186specified coding system will take effect. For example, to save with
14187LF, specify undecided-unix (or some other ...-unix coding system); to
14188save 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
14193Emacs 19 as well, as long as the source code runs in Emacs 19. And
14194vice versa: byte-compiled files made with Emacs 19 should also run in
14195Emacs 20, as long as the program itself works in Emacs 20.
14196
14197** Windows-specific functions and variables have been renamed
14198to start with w32- instead of win32-.
14199
14200In hacker language, calling something a "win" is a form of praise. We
14201don'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
14207evaluates 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
14210be used only for values that should not be changed whether by a program
14211or by the user.
14212
14213The 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
14221usual Lisp meanings. For example, caar returns the car of the car of
14222its 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
14231error if the integer is not a valid character code. These primitives
14232include 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
14236or .elc, to the file name. Thus, (require 'foo) will not use a file
14237whose name is just foo. It insists on foo.el or foo.elc.
14238
14239*** The `autoload' function, when the file name does not contain
14240either a directory name or the suffix .el or .elc, insists on
14241adding one of these suffixes.
14242
14243*** string-to-number now takes an optional second argument BASE
14244which specifies the base to use when converting an integer.
14245If BASE is omitted, base 10 is used.
14246
14247We have not implemented other radices for floating point numbers,
14248because 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.
14253You must load the `cl' library to define it.
14254
14255*** The new macro `with-current-buffer' lets you evaluate an expression
14256conveniently with a different current buffer. It looks like this:
14257
14258 (with-current-buffer BUFFER BODY-FORMS...)
14259
14260BUFFER is the expression that says which buffer to use.
14261BODY-FORMS say what to do in that buffer.
14262
14263*** The new primitive `save-current-buffer' saves and restores the
14264choice of current buffer, like `save-excursion', but without saving or
14265restoring the value of point or the mark. `with-current-buffer'
14266works using `save-current-buffer'.
14267
14268*** The new macro `with-temp-file' lets you do some work in a new buffer and
14269write the output to a specified file. Like `progn', it returns the value
14270of the last form.
14271
14272*** The new macro `with-temp-buffer' lets you do some work in a new buffer,
14273which is discarded after use. Like `progn', it returns the value of the
14274last form. If you wish to return the buffer contents, use (buffer-string)
14275as the last form.
14276
14277*** The new function split-string takes a string, splits it at certain
14278characters, and returns a list of the substrings in between the
14279matches.
14280
14281For example, (split-string "foo bar lose" " +") returns ("foo" "bar" "lose").
14282
14283*** The new macro with-output-to-string executes some Lisp expressions
14284with standard-output set up so that all output feeds into a string.
14285Then it returns that string.
14286
14287For example, if the current buffer name is `foo',
14288
14289(with-output-to-string
14290 (princ "The buffer is ")
14291 (princ (buffer-name)))
14292
14293returns "The buffer is foo".
14294
14295** Non-ASCII characters are now supported, if enable-multibyte-characters
14296is non-nil.
14297
14298These characters have character codes above 256. When inserted in the
14299buffer or stored in a string, they are represented as multibyte
14300characters that occupy several buffer positions each.
14301
14302*** When enable-multibyte-characters is non-nil, a single character in
14303a buffer or string can be two or more bytes (as many as four).
14304
14305Buffers and strings are still made up of unibyte elements;
14306character positions and string indices are always measured in bytes.
14307Therefore, moving forward one character can increase the buffer
14308position by 2, 3 or 4. The function forward-char moves by whole
14309characters, and therefore is no longer equivalent to
14310 (lambda (n) (goto-char (+ (point) n))).
14311
14312ASCII characters (codes 0 through 127) are still single bytes, always.
14313Sequences of byte values 128 through 255 are used to represent
14314non-ASCII characters. These sequences are called "multibyte
14315characters".
14316
14317The first byte of a multibyte character is always in the range 128
14318through 159 (octal 0200 through 0237). These values are called
14319"leading codes". The second and subsequent bytes are always in the
14320range 160 through 255 (octal 0240 through 0377). The first byte, the
14321leading 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
14325multibyte character. Likewise, delete-char always deletes a
14326character, which may be more than one buffer position.
14327
14328This means that some Lisp programs, which assume that a character is
14329always one buffer position, need to be changed.
14330
14331However, all ASCII characters are always one buffer position.
14332
14333*** The regexp [\200-\377] no longer matches all non-ASCII characters,
14334because when enable-multibyte-characters is non-nil, these characters
14335have codes that are not in the range octal 200 to octal 377. However,
14336the regexp [^\000-\177] does match all non-ASCII characters,
14337guaranteed.
14338
14339*** The function char-boundary-p returns non-nil if position POS is
14340between two characters in the buffer (not in the middle of a
14341character).
14342
14343When 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
14355more than the number of characters.
14356
14357You can include a multibyte character in a string constant by writing
14358it literally. You can also represent it with a hex escape,
14359\xNNNNNNN..., using as many digits as necessary. Any character which
14360is not a valid hex digit terminates this construct. If you want to
14361follow it with a character that is a hex digit, write backslash and
14362newline in between; that will terminate the hex escape.
14363
14364*** The function concat-chars takes arguments which are characters
14365and 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
14369counts from zero. If INDEX is at a position in the middle of a
14370character, sref signals an error.
14371
14372*** The function chars-in-string returns the number of characters
14373in a string. This is less than the length of the string, if the
14374string contains multibyte characters (the length counts bytes).
14375
14376*** The function chars-in-region returns the number of characters
14377in a region from BEG to END. This is less than (- END BEG) if the
14378region contains multibyte characters (the length counts bytes).
14379
14380*** The function string-to-list converts a string to a list of
14381the characters in it. string-to-vector converts a string
14382to a vector of the characters in it.
14383
14384*** The function store-substring alters part of the contents
14385of a string. You call it as follows:
14386
14387 (store-substring STRING IDX OBJ)
14388
14389This says to alter STRING, by storing OBJ starting at index IDX in
14390STRING. OBJ may be either a character or a (smaller) string.
14391This function really does alter the contents of STRING.
14392Since it is impossible to change the length of an existing string,
14393it 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,
14396if 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,
14399if it were displayed in the current buffer and the selected window.
14400
14401*** truncate-string-to-width shortens a string, if necessary,
14402to fit within a certain number of columns. (Of course, it does
14403not alter the string that you give it; it returns a new string
14404which contains all or just part of the existing string.)
14405
14406(truncate-string-to-width STR END-COLUMN &optional START-COLUMN PADDING)
14407
14408This returns the part of STR up to column END-COLUMN.
14409
14410The optional argument START-COLUMN specifies the starting column.
14411If this is non-nil, then the first START-COLUMN columns of the string
14412are not included in the resulting value.
14413
14414The optional argument PADDING, if non-nil, is a padding character to be added
14415at the beginning and end the resulting string, to extend it to exactly
14416WIDTH columns. If PADDING is nil, that means do not pad; then, if STRING
14417is narrower than WIDTH, the value is equal to STRING.
14418
14419If PADDING and START-COLUMN are both non-nil, and if there is no clean
14420place in STRING that corresponds to START-COLUMN (because one
14421character extends across that column), then the padding character
14422PADDING is added one or more times at the beginning of the result
14423string, so that its columns line up as if it really did start at
14424column START-COLUMN.
14425
14426*** When the functions in the list after-change-functions are called,
14427the third argument is the number of bytes in the pre-change text, not
14428necessarily the number of characters. It is, in effect, the
14429difference in buffer position between the beginning and the end of the
14430changed text, before the change.
14431
14432*** The characters Emacs uses are classified in various character
14433sets, each of which has a name which is a symbol. In general there is
14434one 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
14441set that the character belongs to. (The value is a symbol.)
14442
14443**** split-char, given a character code, returns a list containing the
14444name of the character set, followed by one or two byte-values
14445which identify the character within that character set.
14446
14447**** make-char, given a character set name and one or two subsequent
14448byte-values, constructs a character code. This is roughly the
14449opposite of split-char.
14450
14451**** find-charset-region returns a list of the character sets
14452of all the characters between BEG and END.
14453
14454**** find-charset-string returns a list of the character sets
14455of all the characters in a string.
14456
14457*** Here are the Lisp facilities for working with coding systems
14458and specifying coding systems.
14459
14460**** The function coding-system-list returns a list of all coding
14461system names (symbols). With optional argument t, it returns a list
14462of all distinct base coding systems, not including variants.
14463(Variant coding systems are those like latin-1-dos, latin-1-unix
14464and latin-1-mac which specify the end-of-line conversion as well
14465as what to do about code conversion.)
14466
14467**** coding-system-p tests a symbol to see if it is a coding system
14468name. It returns t if so, nil if not.
14469
14470**** file-coding-system-alist specifies which coding systems to use
14471for certain file names. It works like network-coding-system-alist,
14472except that the PATTERN is matched against the file name.
14473
14474Each element has the format (PATTERN . VAL), where PATTERN determines
14475which file names the element applies to. PATTERN should be a regexp
14476to match against a file name.
14477
14478VAL is a coding system, a cons cell containing two coding systems, or
14479a function symbol. If VAL is a coding system, it is used for both
14480decoding what received from the network stream and encoding what sent
14481to the network stream. If VAL is a cons cell containing two coding
14482systems, the car specifies the coding system for decoding, and the cdr
14483specifies the coding system for encoding.
14484
14485If VAL is a function symbol, the function must return a coding system
14486or a cons cell containing two coding systems, which is used as above.
14487
14488**** The variable network-coding-system-alist specifies
14489the coding system to use for network sockets.
14490
14491Each element has the format (PATTERN . VAL), where PATTERN determines
14492which network sockets the element applies to. PATTERN should be
14493either a port number or a regular expression matching some network
14494service names.
14495
14496VAL is a coding system, a cons cell containing two coding systems, or
14497a function symbol. If VAL is a coding system, it is used for both
14498decoding what received from the network stream and encoding what sent
14499to the network stream. If VAL is a cons cell containing two coding
14500systems, the car specifies the coding system for decoding, and the cdr
14501specifies the coding system for encoding.
14502
14503If VAL is a function symbol, the function must return a coding system
14504or a cons cell containing two coding systems, which is used as above.
14505
14506**** process-coding-system-alist specifies which coding systems to use
14507for certain subprocess. It works like network-coding-system-alist,
14508except that the PATTERN is matched against the program name used to
14509start the subprocess.
14510
14511**** The variable default-process-coding-system specifies the coding
14512systems to use for subprocess (and net connection) input and output,
14513when nothing else specifies what to do. The value is a cons cell
14514(OUTPUT-CODING . INPUT-CODING). OUTPUT-CODING applies to output
14515to the subprocess, and INPUT-CODING applies to input from it.
14516
14517**** The variable coding-system-for-write, if non-nil, specifies the
14518coding system to use for writing a file, or for output to a synchronous
14519subprocess.
14520
14521It also applies to any asynchronous subprocess or network connection,
14522but in a different way: the value of coding-system-for-write when you
14523start the subprocess or connection affects that subprocess or
14524connection permanently or until overridden.
14525
14526The variable coding-system-for-write takes precedence over
14527file-coding-system-alist, process-coding-system-alist and
14528network-coding-system-alist, and all other methods of specifying a
14529coding system for output. But most of the time this variable is nil.
14530It exists so that Lisp programs can bind it to a specific coding
14531system for one operation at a time.
14532
14533**** coding-system-for-read applies similarly to input from
14534files, subprocesses or network connections.
14535
14536**** The function process-coding-system tells you what
14537coding systems(s) an existing subprocess is using.
14538The value is a cons cell,
14539 (DECODING-CODING-SYSTEM . ENCODING-CODING-SYSTEM)
14540where DECODING-CODING-SYSTEM is used for decoding output from
14541the subprocess, and ENCODING-CODING-SYSTEM is used for encoding
14542input to the subprocess.
14543
14544**** The function set-process-coding-system can be used to
14545change the coding systems in use for an existing subprocess.
14546
14547** Emacs has a new facility to help users manage the many
14548customization options. To make a Lisp program work with this facility,
14549you need to use the new macros defgroup and defcustom.
14550
14551You use defcustom instead of defvar, for defining a user option
14552variable. The difference is that you specify two additional pieces of
14553information (usually): the "type" which says what values are
14554legitimate, and the "group" which specifies the hierarchy for
14555customization.
14556
14557Thus, instead of writing
14558
14559 (defvar foo-blurgoze nil
14560 "*Non-nil means that foo will act very blurgozely.")
14561
14562you 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
14569The type `boolean' means that this variable has only
14570two meaningful states: nil and non-nil. Other type values
14571describe other possibilities; see the manual for Custom
14572for a description of them.
14573
14574The "group" argument is used to specify a group which the option
14575should belong to. You define a new group like this:
14576
14577 (defgroup ispell nil
14578 "Spell checking using Ispell."
14579 :group 'processes)
14580
14581The "group" argument in defgroup specifies the parent group. The root
14582group is called `emacs'; it should not contain any variables itself,
14583but only other groups. The immediate subgroups of `emacs' correspond
14584to the keywords used by C-h p. Under these subgroups come
14585second-level subgroups that belong to individual packages.
14586
14587Each Emacs package should have its own set of groups. A simple
14588package should have just one group; a more complex package should
14589have a hierarchy of its own groups. The sole or root group of a
14590package should be a subgroup of one or more of the "keyword"
14591first-level subgroups.
14592
14593** New `widget' library for inserting UI components in buffers.
14594
14595This library, used by the new custom library, is documented in a
14596separate manual that accompanies Emacs.
14597
14598** easy-mmode
14599
14600The easy-mmode package provides macros and functions that make
14601developing minor modes easier. Roughly, the programmer has to code
14602only the functionality of the minor mode. All the rest--toggles,
14603predicate, 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
14610text property.
14611
14612*** The new functions next-char-property-change and
14613previous-char-property-change scan through the buffer looking for a
14614place where either a text property or an overlay might change. The
14615functions take two arguments, POSITION and LIMIT. POSITION is the
14616starting position for the scan. LIMIT says where to stop the scan.
14617
14618If no property change is found before LIMIT, the value is LIMIT. If
14619LIMIT is nil, scan goes to the beginning or end of the accessible part
14620of the buffer. If no property change is found, the value is the
14621position of the beginning or end of the buffer.
14622
14623*** In the `local-map' text property or overlay property, the property
14624value can now be a symbol whose function definition is a keymap. This
14625is 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
14630hidden by an overlay with a invisible property, when the search match
14631is inside that portion of the buffer. To enable this the overlay
14632should have a isearch-open-invisible property which is a function that
14633would be called having the overlay as an argument, the function should
14634make the overlay visible.
14635
14636During incremental search the overlays are shown by modifying the
14637invisible and intangible properties, if beside this more actions are
14638needed the overlay should have a isearch-open-invisible-temporary
14639which is a function. The function is called with 2 arguments: one is
14640the overlay and the second is nil when it should show the overlay and
14641t when it should hide it.
14642
14643*** add-to-invisibility-spec, remove-from-invisibility-spec
14644
14645Modes that use overlays to hide portions of a buffer should set the
14646invisible property of the overlay to the mode's name (or another symbol)
14647and modify the `buffer-invisibility-spec' to include that symbol.
14648Use `add-to-invisibility-spec' and `remove-from-invisibility-spec' to
14649manipulate the `buffer-invisibility-spec'.
14650Here 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
14670obey syntax information specified by text properties, if the variable
14671`parse-sexp-lookup-properties' is non-nil.
14672
14673If the value of `parse-sexp-lookup-properties' is nil, the behavior
14674is as before: the syntax-table of the current buffer is always
14675used to determine the syntax of the character at the position.
14676
14677When `parse-sexp-lookup-properties' is non-nil, the syntax of a
14678character 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
14696value of `parse-sexp-lookup-properties'. The details are the same as
14697for the syntax-directed buffer-scan functions.
14698
14699*** There are two new syntax-codes, `!' and `|' (numeric values 14
14700and 15). A character with a code `!' starts a comment which is ended
14701only by another character with the same code (unless quoted). A
14702character with a code `|' starts a string which is ended only by
14703another character with the same code (unless quoted).
14704
14705These codes are mainly meant for use as values of the `syntax-table'
14706text property.
14707
14708*** The function `parse-partial-sexp' has new semantics for the sixth
14709arg COMMENTSTOP. If it is `syntax-table', parse stops after the start
14710of 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
14714element: the character address of the start of last comment or string;
14715nil if none. The fourth and eighth elements have special values if the
14716string/comment is started by a "!" or "|" syntax-code.
14717
14718*** Since new features of `parse-partial-sexp' allow a complete
14719syntactic 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
14725if it does not support displaying on a device that supports faces.
14726
14727*** The function face-documentation returns the documentation string
14728of 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.
14731set-face-bold-p sets that flag.
14732
14733*** The function face-italic-p returns t if a face should be italic.
14734set-face-italic-p sets that flag.
14735
14736*** You can now specify foreground and background colors for text
14737by adding elements of the form (foreground-color . COLOR-NAME)
14738and (background-color . COLOR-NAME) to the list of faces in
14739the `face' property (either the character's text property or an
14740overlay property).
14741
14742This means that you no longer need to create named faces to use
14743arbitrary colors in a Lisp package.
14744
14745** Changes in file-handling functions
14746
14747*** File-access primitive functions no longer discard an extra redundant
14748directory name from the beginning of the file name. In other words,
14749they no longer do anything special with // or /~. That conversion
14750is now done only in substitute-in-file-name.
14751
14752This makes it possible for a Lisp program to open a file whose name
14753begins with ~.
14754
14755*** If copy-file is unable to set the date of the output file,
14756it now signals an error with the condition file-date-error.
14757
14758*** The inode number returned by file-attributes may be an integer (if
14759the number fits in a Lisp integer) or a list of integers.
14760
14761*** insert-file-contents can now read from a special file,
14762as long as the arguments VISIT and REPLACE are nil.
14763
14764*** The RAWFILE arg to find-file-noselect, if non-nil, now suppresses
14765character code conversion as well as other things.
14766
14767Meanwhile, 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
14771environment variable to decide which directory to put them in.
14772
14773*** interpreter-mode-alist elements now specify regexps
14774instead of constant strings.
14775
14776*** expand-file-name no longer treats `//' or `/~' specially. It used
14777to delete all the text of a file name up through the first slash of
14778any `//' or `/~' sequence. Now it passes them straight through.
14779
14780substitute-in-file-name continues to treat those sequences specially,
14781in the same way as before.
14782
14783*** The variable `format-alist' is more general now.
14784The FROM-FN and TO-FN in a format definition can now be strings
14785which 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
14788error if that fails. If the open succeeds, access-file does nothing
14789else, and returns nil.
14790
14791*** The function insert-directory now signals an error if the specified
14792directory cannot be listed.
14793
14794** Changes in minibuffer input
14795
14796*** The functions read-buffer, read-variable, read-command, read-string
14797read-file-name, read-from-minibuffer and completing-read now take an
14798additional argument which specifies the default value. If this
14799argument is non-nil, it should be a string; that string is used in two
14800ways:
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,
14806read-no-blanks-input and completing-read now take an additional
14807argument INHERIT-INPUT-METHOD. If this is non-nil, then the
14808minibuffer inherits the current input method and the setting of
14809enable-multibyte-characters from the previously current buffer.
14810
14811In an interactive spec, you can use M instead of s to read an
14812argument in this way.
14813
14814*** All minibuffer input functions discard text properties
14815from the text you enter in the minibuffer, unless the variable
14816minibuffer-allow-text-properties is non-nil.
14817
14818** Echo area features
14819
14820*** Clearing the echo area now runs the normal hook
14821echo-area-clear-hook. Note that the echo area can be used while the
14822minibuffer is active; in that case, the minibuffer is still active
14823after the echo area is cleared.
14824
14825*** The function current-message returns the message currently displayed
14826in 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
14831set 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
14834received so far from the terminal. It does not count those generated
14835by keyboard macros.
14836
14837** Frame-related changes
14838
14839*** make-frame runs the normal hook before-make-frame-hook just before
14840creating a frame, and just after creating a frame it runs the abnormal
14841hook after-make-frame-functions with the new frame as arg.
14842
14843*** The new hook window-configuration-change-hook is now run every time
14844the window configuration has changed. The frame whose configuration
14845has changed is the selected frame when the hook is run.
14846
14847*** Each frame now independently records the order for recently
14848selected buffers, in its buffer-list frame parameter, so that the
14849value of other-buffer is now based on the buffers recently displayed
14850in the selected frame.
14851
14852*** The value of the frame parameter vertical-scroll-bars
14853is now `left', `right' or nil. A non-nil value specifies
14854which 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
14859x-resource-class around a call to x-get-resource. The usual value of
14860x-resource-class is "Emacs", which is the correct value for Emacs.
14861
14862*** In menus, checkboxes and radio buttons now actually work.
14863The menu displays the current status of the box or button.
14864
14865*** The function x-list-fonts now takes an optional fourth argument
14866MAXIMUM which sets a limit on how many matching fonts to return.
14867A smaller value of MAXIMUM makes the function faster.
14868
14869If the only question is whether *any* font matches the pattern,
14870it is good to supply 1 for this argument.
14871
14872** Subprocess features
14873
14874*** A reminder: it is no longer necessary for subprocess filter
14875functions and sentinels to do save-match-data, because Emacs does this
14876automatically.
14877
14878*** The new function shell-command-to-string executes a shell command
14879and returns the output from the command as a string.
14880
14881*** The new function process-contact returns t for a child process,
14882and (HOSTNAME SERVICE) for a net connection.
14883
14884** An error in running pre-command-hook or post-command-hook
14885does 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
14888at the end of the keymap. If the keymap is a menu, this means it
14889goes after the other menu items.
14890
14891** If you have a program that makes several changes in the same area
14892of the buffer, you can use the macro combine-after-change-calls
14893around that Lisp code to make it faster when after-change hooks
14894are in use.
14895
14896The macro arranges to call the after-change functions just once for a
14897series of several changes--if that seems safe.
14898
14899Don't alter the variables after-change-functions and
14900after-change-function within the body of a combine-after-change-calls
14901form.
14902
14903** If you define an abbrev (with define-abbrev) whose EXPANSION
14904is not a string, then the abbrev does not expand in the usual sense,
14905but its hook is still run.
14906
14907** Normally, the Lisp debugger is not used (even if you have enabled it)
14908for errors that are handled by condition-case.
14909
14910If you set debug-on-signal to a non-nil value, then the debugger is called
14911regardless of whether there is a handler for the condition. This is
14912useful for debugging problems that happen inside of a condition-case.
14913
14914This mode of operation seems to be unreliable in other ways. Errors that
14915are normal and ought to be handled, perhaps in timers or process
14916filters, will instead invoke the debugger. So don't say you weren't
14917warned.
14918
14919** The new variable ring-bell-function lets you specify your own
14920way for Emacs to "ring the bell".
14921
14922** If run-at-time's TIME argument is t, the action is repeated at
14923integral multiples of REPEAT from the epoch; this is useful for
14924functions like display-time.
14925
14926** You can use the function locate-library to find the precise file
14927name 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
14930can be used from Lisp. Low-level entrance to and exit from view mode
14931is done by functions view-mode-enter and view-mode-exit.
14932
14933** batch-byte-compile-file now makes Emacs return a nonzero status code
14934if there is an error in compilation.
14935
14936** pop-to-buffer, switch-to-buffer-other-window and
14937switch-to-buffer-other-frame now accept an additional optional
14938argument NORECORD, much like switch-to-buffer. If it is non-nil,
14939they don't put the buffer at the front of the buffer list.
14940
14941** If your .emacs file leaves the *scratch* buffer non-empty,
14942Emacs does not display the startup message, so as to avoid changing
14943the *scratch* buffer.
14944
14945** The new function regexp-opt returns an efficient regexp to match a string.
14946The arguments are STRINGS and (optionally) PAREN. This function can be used
14947where regexp matching or searching is intensively used and speed is important,
14948e.g., in Font Lock mode.
14949
14950** The variable buffer-display-count is local to each buffer,
14951and is incremented each time the buffer is displayed in a window.
14952It starts at 0 when the buffer is created.
14953
14954** The new function compose-mail starts composing a mail message
14955using the user's chosen mail composition agent (specified with the
14956variable mail-user-agent). It has variants compose-mail-other-window
14957and compose-mail-other-frame.
14958
14959** The `user-full-name' function now takes an optional parameter which
14960can either be a number (the UID) or a string (the login name). The
14961full name of the specified user will be returned.
14962
14963** Lisp packages that load files of customizations, or any other sort
14964of user profile, should obey the variable init-file-user in deciding
14965where to find it. They should load the profile of the user name found
14966in that variable. If init-file-user is nil, meaning that the -q
14967option was used, then Lisp packages should not load the customization
14968files at all.
14969
14970** format-time-string now allows you to specify the field width
14971and type of padding. This works as in printf: you write the field
14972width as digits in the middle of a %-construct. If you start
14973the field width with 0, it means to pad with zeros.
14974
14975For example, %S normally specifies the number of seconds since the
14976minute; %03S means to pad this with zeros to 3 positions, %_3S to pad
14977with spaces to 3 positions. Plain %3S pads with zeros, because that
14978is 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
14984You can now specify a function to be run when selecting an
14985item from menu created by imenu.
14986
14987An 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
14989select one of those items.
14990
14991* For older news, see the file ONEWS
14992
14993---------------------------------------------------------------------- 5668----------------------------------------------------------------------
14994Copyright information: 5669Copyright information:
14995 5670
14996Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 5671Copyright (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 @@
1GNU Emacs NEWS -- history of user-visible changes. 26-Mar-1986 1GNU Emacs NEWS -- history of user-visible changes. 26-Mar-1986
2Copyright (C) 1986 Richard M. Stallman. 2Copyright (C) 1985, 1986, 2006 Richard M. Stallman.
3See the end for copying conditions. 3See the end for copying conditions.
4 4
5For older news, see the file ONEWS.1. 5This file is about changes in emacs versions 1 through 17.
6
7
6 8
7Changes in Emacs 17 9Changes in Emacs 17
8 10
@@ -407,6 +409,7 @@ By default it is still "--text follows this line--".
407 409
408Just before each garbage collection, all but the last 30 elements 410Just before each garbage collection, all but the last 30 elements
409of the command history are discarded. 411of the command history are discarded.
412
410 413
411Incompatible Lisp Programming Changes in Emacs 17 414Incompatible 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'
485have been removed. Their definitions can be found in file 488have been removed. Their definitions can be found in file
486lisp/unused.el if you need them. 489lisp/unused.el if you need them.
490
487 491
488Upward Compatible Lisp Programming Changes in Emacs 17 492Upward Compatible Lisp Programming Changes in Emacs 17
489 493
@@ -804,6 +808,8 @@ a period in `modify-syntax-entry'.
804 808
805Backup suffixes of all kinds are now stripped from a file's name 809Backup suffixes of all kinds are now stripped from a file's name
806before searching `auto-mode-alist'. 810before searching `auto-mode-alist'.
811
812
807 813
808Changes in Emacs 16 814Changes 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
1327This is because -batch (see above) is now used in building Emacs. 1333This is because -batch (see above) is now used in building Emacs.
1334
1335
1336
1337Changes 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
1552Changes 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
1582Changes 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
1618Changes 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
1712This marks the process so that, when you kill Emacs,
1713you will not on its account be queried about active subprocesses.
1714
1715
1716
1717Changes 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
1745Changes 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
1789Changes 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
1884Changes in Emacs 1.8
1885
1886This 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
1914Changes in Emacs 1.7
1915
1916It'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
2015Changes 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
2149Changes 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
2178Changes 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
1329For older news, see the file ONEWS.1. 2238Changes 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
2293Changes 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
2348Changes 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
2456Lisp 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----------------------------------------------------------------------
1332Copyright information: 2512Copyright information:
1333 2513
1334Copyright (C) 1985 Richard M. Stallman 2514Copyright (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 @@
1GNU Emacs NEWS -- history of user-visible changes. 17-Aug-1988 1GNU Emacs NEWS -- history of user-visible changes. 17-Aug-1988
2Copyright (C) 1988 Free Software Foundation, Inc. 2Copyright (C) 1988, 2006 Free Software Foundation, Inc.
3See the end for copying conditions. 3See the end for copying conditions.
4 4
5For older news, see the file ONEWS.2. 5This file is about changes in emacs version 18.
6
7
6 8
7Changes in version 18.52. 9Changes 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
112job-wide logical names. The old function `define-dcl-symbol' has been 114job-wide logical names. The old function `define-dcl-symbol' has been
113removed. 115removed.
116
117
114 118
115Changes in version 18.50. 119Changes in version 18.50.
116 120
@@ -166,6 +170,8 @@ Emacs run. End of file causes Emacs to exit.
166These variables cannot really work because the 24-bit range of an 170These variables cannot really work because the 24-bit range of an
167integer in (most ports of) GNU Emacs is not large enough to hold their 171integer in (most ports of) GNU Emacs is not large enough to hold their
168values on many systems. 172values on many systems.
173
174
169 175
170Changes in version 18.45, since version 18.41. 176Changes 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
222This is a new name for the function formerly called 228This is a new name for the function formerly called
223`define-logical-name'. 229`define-logical-name'.
230
231
224 232
225Editing Changes in Emacs 18 233Editing Changes in Emacs 18
226 234
@@ -798,6 +806,7 @@ can put in requests at the same time.
798 806
799The client/server work only on Berkeley Unix, since they use the Berkeley 807The client/server work only on Berkeley Unix, since they use the Berkeley
800sockets mechanism for their communication. 808sockets mechanism for their communication.
809
801 810
802Changes in Lisp programming in Emacs version 18. 811Changes 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.
1586C_DEBUG_SWITCH defines the switches to give `cc' when debugging. Default `-g'. 1595C_DEBUG_SWITCH defines the switches to give `cc' when debugging. Default `-g'.
1587C_OPTIMIZE_SWITCH defines the switches to give `cc' to optimize. Default `-O'. 1596C_OPTIMIZE_SWITCH defines the switches to give `cc' to optimize. Default `-O'.
1588C_SWITCH_MACHINE can be defined by the m- file to specify extra `cc' switches. 1597C_SWITCH_MACHINE can be defined by the m- file to specify extra `cc' switches.
1589
1590For older news, see the file ONEWS.2.
1591 1598
1599
1600
1592---------------------------------------------------------------------- 1601----------------------------------------------------------------------
1593Copyright information: 1602Copyright information:
1594 1603
1595Copyright (C) 1988 Free Software Foundation, Inc. 1604Copyright (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 @@
1GNU Emacs NEWS -- history of user-visible changes. 1992. 1GNU Emacs NEWS -- history of user-visible changes. 1992.
2Copyright (C) 1995, 2001 Free Software Foundation, Inc. 2Copyright (C) 1993, 1994, 1995, 2001, 2006 Free Software Foundation, Inc.
3See the end for copying conditions. 3See the end for copying conditions.
4 4
5For older news, see the file ONEWS.4. 5This 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
15use for auto-fill-function, if and when Auto Fill is turned on. 19use for auto-fill-function, if and when Auto Fill is turned on.
16Major modes can set this locally to alter how Auto Fill works. 20Major 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
256The Gnus manual has been expanded. It explains all these new features 262The Gnus manual has been expanded. It explains all these new features
257in greater detail. 263in 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
279menu-alias property. That property tells the menu system to look for 286menu-alias property. That property tells the menu system to look for
280equivalent keys for the real name instead of equivalent keys for the 287equivalent keys for the real name instead of equivalent keys for the
281alias. 288alias.
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
1031There is a new variable vc-consult-headers. If it is t (the default), 1041There is a new variable vc-consult-headers. If it is t (the default),
1032VC searches for RCS headers in working files (like `$Id: ONEWS,v 1.8 2003/02/04 14:30:40 lektu Exp $') and 1042VC searches for RCS headers in working files (like `$Id$') and
1033determines the state of the file from them, not from the master file. 1043determines the state of the file from them, not from the master file.
1034This is fast and more reliable when you use branches. (The variable 1044This is fast and more reliable when you use branches. (The variable
1035was already present in Emacs 19.29, but didn't get mentioned in the 1045was 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.
1290This new file is under active development as part of the ncurses 1300This new file is under active development as part of the ncurses
1291project. If you have any questions about this file, or problems with 1301project. If you have any questions about this file, or problems with
1292an entry in it, email terminfo@ccil.org. 1302an 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.
2155used reference types are now on control-modified keys, mediocre used 2168used reference types are now on control-modified keys, mediocre used
2156types are on unmodified keys, seldom used types are on shift-modified 2169types are on unmodified keys, seldom used types are on shift-modified
2157keys and almost never used types on meta-modified keys. 2170keys 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.)
2171mail-host-address to a string in the dumped Emacs, that string becomes 2185mail-host-address to a string in the dumped Emacs, that string becomes
2172the default host address for initializing user-mail-address. 2186the default host address for initializing user-mail-address.
2173It is used instead of the value of (system-name). 2187It 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
2907information--the second, minute, hour, day, month, year, and time 2922information--the second, minute, hour, day, month, year, and time
2908zone--into a time value. 2923zone--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
2921on. 2938on.
2922 2939
2923DEL more or less scrolls through the same text in reverse order. 2940DEL 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.
2998setting just one variable, user-mail-address. This currently applies 3017setting just one variable, user-mail-address. This currently applies
2999to posting news with GNUS and to making change log entries. It may 3018to posting news with GNUS and to making change log entries. It may
3000apply to additional Emacs features in the future. 3019apply 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.
3044other window for C-M-v to scroll. 3064other 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
3087The variable x-cross-pointer-shape (which didn't really exist) has 3110The variable x-cross-pointer-shape (which didn't really exist) has
3088been renamed to x-sensitive-text-pointer-shape, and now does exist. 3111been 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.
3110skeleton.el Templates for statement insertion. 3135skeleton.el Templates for statement insertion.
3111soundex.el Classifying words by how they sound. 3136soundex.el Classifying words by how they sound.
3112tempo.el Template insertion with hotspots. 3137tempo.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,
3409as top-level would. 3436as 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.
3977The third component is now determined on the basis of the names of the 4006The third component is now determined on the basis of the names of the
3978existing executable files. This means that version.el is not altered 4007existing executable files. This means that version.el is not altered
3979by building Emacs. 4008by 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
4039characters whose properties differ, which is one greater than the 4070characters whose properties differ, which is one greater than the
4040position of the first character found (while scanning back) with 4071position of the first character found (while scanning back) with
4041different properties. 4072different 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:
4046A-with-ring (entered as /A), AE ligature (entered as /E), 4079A-with-ring (entered as /A), AE ligature (entered as /E),
4047and their lower-case equivalents. 4080and 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
4266stack if they are not already on it (`shell-pushd-dunique'). The 4301stack if they are not already on it (`shell-pushd-dunique'). The
4267configuration you choose should match the underlying shell, of course. 4302configuration 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
4443The input history retrieval commands still wrap-around the input ring, unlike 4479The input history retrieval commands still wrap-around the input ring, unlike
4444Emacs command history. 4480Emacs 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
4476inconsistent with integer `%'. 4514inconsistent 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
4616minibuffer window, and returns t if the window is currently active. 4656minibuffer 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
4927insert the prefix when processing events whose PLACE-SYMBOLs are 4970insert the prefix when processing events whose PLACE-SYMBOLs are
4928already thus enclosed. 4971already 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
4975and thus didn't document it.) 5019and 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
50170 (the beginning of the file), and END defaults to the end of the file. 50630 (the beginning of the file), and END defaults to the end of the file.
5018 5064
5019If you specify BEG or END, then the argument VISIT must be nil. 5065If 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.
5035C-c LETTER, since those keys are reserved for users. 5083C-c LETTER, since those keys are reserved for users.
5036Those commands have been moved to C-c M-LETTER. 5084Those commands have been moved to C-c M-LETTER.
5037We may move them again for greater consistency with other modes. 5085We 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
5057it writes a file in the usual way. 5109it 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.
5069the region is highlighted in windows other than the selected window 5123the 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
5071using X). 5125using 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,
6458old file versions, executables, DOC files, and other 6514old file versions, executables, DOC files, and other
6459architecture-specific or easy-to-recreate files are not included in 6515architecture-specific or easy-to-recreate files are not included in
6460the tar file. 6516the 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----------------------------------------------------------------------
6466Copyright information: 6521Copyright information:
6467 6522
6468Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc. 6523Copyright (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 @@
1GNU Emacs NEWS -- history of user-visible changes. 2006-05-31
2Copyright (C) 1999, 2000, 2001, 2006
3 Free Software Foundation, Inc.
4See the end for copying conditions.
5
6Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
7If possible, use M-x report-emacs-bug.
8
9This 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
16input.
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
23only for character input, but also in incremental search. The
24exceptions 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
29been 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:
42M-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
50You can now call the Emacs init file `.emacs.el'.
51Formerly 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
54If both `.emacs' and `.emacs.el' exist, the latter file
55is the one that is used.
56
57** shell-command, and shell-command-on-region, now return
58the exit code of the command (unless it is asynchronous).
59Also, you can specify a place to put the error output,
60separate from the command's regular output.
61Interactively, the variable shell-command-default-error-buffer
62says where to put error output; set it to a buffer name.
63In calls from Lisp, an optional argument ERROR-BUFFER specifies
64the buffer name.
65
66When you specify a non-nil error buffer (or buffer name), any error
67output is inserted before point in that buffer, with \f\n to separate
68it from the previous batch of error output. The error buffer is not
69cleared, so error output from successive commands accumulates there.
70
71** Setting the default value of enable-multibyte-characters to nil in
72the .emacs file, either explicitly using setq-default, or via Custom,
73is now essentially equivalent to using --unibyte: all buffers
74created during startup will be made unibyte after loading .emacs.
75
76** C-x C-f now handles the wildcards * and ? in file names. For
77example, typing C-x C-f c*.c RET visits all the files whose names
78match c*.c. To visit a file whose name contains * or ?, add the
79quoting sequence /: to the beginning of the file name.
80
81** The M-x commands keep-lines, flush-lines and count-matches
82now have the same feature as occur and query-replace:
83if the pattern contains any upper case letters, then
84they never ignore case.
85
86** The end-of-line format conversion feature previously mentioned
87under `* Emacs 20.1 changes for MS-DOS and MS-Windows' actually
88applies to all operating systems. Emacs recognizes from the contents
89of a file what convention it uses to separate lines--newline, CRLF, or
90just CR--and automatically converts the contents to the normal Emacs
91convention (using newline to separate lines) for editing. This is a
92part of the general feature of coding system conversion.
93
94If you subsequently save the buffer, Emacs converts the text back to
95the same format that was used in the file before.
96
97You 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
101renamed to `preferred-coding-system', for the sake of correct spelling.
102This is a fairly internal feature, so few programs should be affected.
103
104** Mode-line display of end-of-line format is changed.
105The indication of the end-of-line format of the file visited by a
106buffer is now more explicit when that format is not the usual one for
107your operating system. For example, the DOS-style end-of-line format
108is displayed as "(DOS)" on Unix and GNU/Linux systems. The usual
109end-of-line format is still displayed as a single character (colon for
110Unix, backslash for DOS and Windows, and forward slash for the Mac).
111
112The values of the variables eol-mnemonic-unix, eol-mnemonic-dos,
113eol-mnemonic-mac, and eol-mnemonic-undecided, which are strings,
114control what is displayed in the mode line for each end-of-line
115format. You can now customize these variables.
116
117** In the previous version of Emacs, tar-mode didn't work well if a
118filename contained non-ASCII characters. Now this is fixed. Such a
119filename is decoded by file-name-coding-system if the default value of
120enable-multibyte-characters is non-nil.
121
122** The command temp-buffer-resize-mode toggles a minor mode
123in which temporary buffers (such as help buffers) are given
124windows just big enough to hold the whole contents.
125
126** If you use completion.el, you must now run the function
127dynamic-completion-mode to enable it. Just loading the file
128doesn't have any effect.
129
130** In Flyspell mode, the default is now to make just one Ispell process,
131not one per buffer.
132
133** If you use iswitchb but do not call (iswitchb-default-keybindings) to
134use 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.
138To 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
142avoid redisplay problems. As a consequence, compared with previous
143versions the line spacing and frame size now differ with some font
144choices, typically increasing by a pixel per line. This change
145occurred in version 20.3 but was not documented then.
146
147** If you select the bar cursor style, it uses the frame's
148cursor-color, rather than the cursor foreground pixel.
149
150** In multibyte mode, Rmail decodes incoming MIME messages using the
151character set specified in the message. If you want to disable this
152feature, set the variable rmail-decode-mime-charset to nil.
153
154** Not new, but not mentioned previously in NEWS: when you use #! at
155the beginning of a file to make it executable and specify an
156interpreter program, Emacs looks on the second line for the -*- mode
157and variable specification, as well as on the first line.
158
159** Support for IBM codepage encoding of non-ASCII characters.
160
161The new command M-x codepage-setup creates a special coding system
162that can be used to convert text between a specific IBM codepage and
163one of the character sets built into Emacs which matches that
164codepage. For example, codepage 850 corresponds to Latin-1 character
165set, codepage 855 corresponds to Cyrillic-ISO character set, etc.
166
167Windows codepages 1250, 1251 and some others, where Windows deviates
168from the corresponding ISO character set, are also supported.
169
170IBM box-drawing characters and other glyphs which don't have
171equivalents in the corresponding ISO character set, are converted to
172a character defined by dos-unsupported-char-glyph on MS-DOS, and to
173`?' on other systems.
174
175IBM codepages are widely used on MS-DOS and MS-Windows, so this
176feature is most useful on those platforms, but it can also be used on
177Unix.
178
179Emacs compiled for MS-DOS automatically loads the support for the
180current 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',
186appropriate MIME headers are added. The headers are added only if
187non-ASCII characters are present in the body of the mail, and no other
188MIME headers are already present. For example, the following three
189headers are added if the coding system used in the *mail* buffer is
190latin-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
197default way to encode outgoing mail. This has higher priority than
198default-buffer-file-coding-system but has lower priority than
199sendmail-coding-system and the local value of
200buffer-file-coding-system.
201
202You should not set this variable manually. Instead, set
203sendmail-coding-system to specify a fixed encoding for all outgoing
204mail.
205
206*** When you try to send a message that contains non-ASCII characters,
207if the coding system specified by those variables doesn't handle them,
208Emacs will ask you to select a suitable coding system while showing a
209list of possible coding systems.
210
211** CC Mode changes
212
213*** c-default-style can now take an association list that maps major
214modes to style names. When this variable is an alist, Java mode no
215longer hardcodes a setting to "java" style. See the variable's
216docstring for details.
217
218*** It's now possible to put a list as the offset on a syntactic
219symbol. The list is evaluated recursively until a non-nil offset is
220found. This is useful to combine several lineup functions to act in a
221prioritized order on a single line. However, none of the supplied
222lineup 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
231from the braces of other classes in auto-newline mode. Two new
232symbols inexpr-class-open and inexpr-class-close may be used on
233c-hanging-braces-alist to control the automatic newlines used for
234anonymous classes.
235
236*** Support for the Pike language added, along with new Pike specific
237syntactic symbols: inlambda, lambda-intro-cont
238
239*** Support for Java anonymous classes via new syntactic symbol
240inexpr-class. New syntactic symbol inexpr-statement for Pike
241support and gcc-style statements inside expressions. New lineup
242function 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
246brace. These used to be recognized as brace-list-entry's.
247c-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)
255for 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
260associated with it is now always relative to the class opening brace.
261This means that the indentation behavior has changed in some
262circumstances, but only if you've put anything besides 0 on the
263class-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
268added. A plethora of new commands and modes have been added. See the
269Gnus manual for the full story.
270
271*** The nndraft backend has returned, but works differently than
272before. All Message buffers are now also articles in the nndraft
273group, which is created automatically.
274
275*** `gnus-alter-header-function' can now be used to alter header
276values.
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
281outside 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
289re-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
294Prefixes" 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
300control 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
305limit.
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.
312If you used this function in your initialization files, you must
313rewrite 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'
322to a non-nil value.
323
324*** nntp now uses ~/.authinfo, a .netrc-like file, for controlling
325where and how to send AUTHINFO to NNTP servers.
326
327*** A command for editing group parameters from the summary buffer
328has 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
343been 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
349updated 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
360options for the TeX run. The default value causes TeX to run in
361nonstopmode. 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
364TeX buffer it is bound to the keys C-RET, C-c RET, and C-c C-m (some
365of these keys may not work on all systems). For instance, if you run
366TeX interactively and if the TeX run stops because of an error, you
367can continue it without leaving the TeX buffer by typing C-RET.
368
369*** The Tex Shell Buffer is now in `compilation-shell-minor-mode'.
370All error-parsing commands of the Compilation major mode are available
371but bound to keys that don't collide with the shell. Thus you can use
372the Tex Shell for command line executions like a usual shell.
373
374*** The commands `tex-validate-region' and `tex-validate-buffer' check
375the matching of braces and $'s. The errors are listed in a *Occur*
376buffer and you can use C-c C-c or mouse-2 to go to a particular
377mismatch.
378
379** Changes to RefTeX mode
380
381*** The table of contents buffer can now also display labels and
382file boundaries in addition to sections. Use `l', `i', and `c' keys.
383
384*** Labels derived from context (the section heading) are now
385lowercase by default. To make the label legal in LaTeX, latin-1
386characters will lose their accent. All Mule characters will be
387removed from the label.
388
389*** The automatic display of cross reference information can also use
390a 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
393customization 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
397expressions.
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
404SNMPv2 MIBs. It has entries on `auto-mode-alist'.
405
406*** The package sql.el provides a major mode, M-x sql-mode, for
407editing SQL files, and M-x sql-interactive-mode for interacting with
408SQL 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
411this was hard to fix reliably. It has long been obsolete -- use
412Ispell 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.
418This includes support for display of all ISO 8859-N character sets,
419conversion to and from IBM codepage encoding of non-ASCII characters,
420and automatic setup of the MULE environment at startup. For details,
421check out the section `MS-DOS and MULE' in the manual.
422
423The MS-DOS installation procedure automatically configures and builds
424Emacs with input method support if it finds an unpacked Leim
425distribution when the config.bat script is run.
426
427** Formerly, the value of lpr-command did not affect printing on
428MS-DOS unless print-region-function was set to nil, but now it
429controls whether an external program is invoked or output is written
430directly to a printer port. Similarly, in the previous version of
431Emacs, the value of ps-lpr-command did not affect PostScript printing
432on MS-DOS unless ps-printer-name was set to something other than a
433string (eg. t or `pipe'), but now it controls whether an external
434program is used. (These changes were made so that configuration of
435printing variables would be almost identical across all platforms.)
436
437** In the previous version of Emacs, PostScript and non-PostScript
438output was piped to external programs, but because most print programs
439available for MS-DOS and MS-Windows cannot read data from their standard
440input, on those systems the data to be output is now written to a
441temporary file whose name is passed as the last argument to the external
442program.
443
444An exception is made for `print', a standard program on Windows NT,
445and `nprint', a standard program on Novell Netware. For both of these
446programs, the command line is constructed in the appropriate syntax
447automatically, using only the value of printer-name or ps-printer-name
448as appropriate--the value of the relevant `-switches' variable is
449ignored, as both programs have no useful switches.
450
451** The value of the variable dos-printer (cf. dos-ps-printer), if it has
452a value, overrides the value of printer-name (cf. ps-printer-name), on
453MS-DOS and MS-Windows only. This has been true since version 20.3, but
454was not documented clearly before.
455
456** All the Emacs games now work on MS-DOS terminals.
457This includes Tetris and Snake.
458
459
460* Lisp changes in Emacs 20.4
461
462** New functions line-beginning-position and line-end-position
463return the position of the beginning or end of the current line.
464They both accept an optional argument, which has the same
465meaning as the argument to beginning-of-line or end-of-line.
466
467** find-file and allied functions now have an optional argument
468WILDCARD. If this is non-nil, they do wildcard processing,
469and 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.
474It 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
477the number fits in a Lisp integer) or a cons cell containing two
478integers.
479
480** The new function directory-files-and-attributes returns a list of
481files in a directory and their attributes. It accepts the same
482arguments as directory-files and has similar semantics, except that
483file names and attributes are returned.
484
485** The new function file-attributes-lessp is a helper function for
486sorting the list generated by directory-files-and-attributes. It
487accepts two arguments, each a list of a file name and its attributes.
488It compares the file names of each according to string-lessp and
489returns the result.
490
491** The new function file-expand-wildcards expands a wildcard-pattern
492to produce a list of existing files that match the pattern.
493
494** New functions for base64 conversion:
495
496The function base64-encode-region converts a part of the buffer
497into the base64 code used in MIME. base64-decode-region
498performs the opposite conversion. Line-breaking is supported
499optionally.
500
501Functions base64-encode-string and base64-decode-string do a similar
502job on the text in a string. They return the value as a new string.
503
504**
505The new function process-running-child-p
506will tell you if a subprocess has given control of its
507terminal to its own child process.
508
509** interrupt-process and such functions have a new feature:
510when the second argument is `lambda', they send a signal
511to the running child of the subshell, if any, but if the shell
512itself owns its terminal, no signal is sent.
513
514** There are new widget types `plist' and `alist' which can
515be 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
520easy-menu-add-item now understands the values returned by
521easy-menu-remove-item and easy-menu-item-present-p. This can be used
522to move or copy menu entries.
523
524** Multibyte editing changes
525
526*** The definitions of sref and char-bytes are changed. Now, sref is
527an alias of aref and char-bytes always returns 1. This change is to
528make some Emacs Lisp code which works on 20.2 and earlier also
529work on the latest Emacs. Such code uses a combination of sref and
530char-bytes in a loop typically as below:
531 (setq char (sref str idx)
532 idx (+ idx (char-bytes idx)))
533The byte-compiler now warns that this is obsolete.
534
535If 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
540region is preceded or followed by non-ASCII codes, inserting or
541deleting 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
545This is to avoid some bytes being combined together into a character
546across 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
556text properties of the target region. Ideally, they should correctly
557preserve text properties, but for the moment, it's hard. Removing
558text properties is better than preserving them in a less-than-correct
559way.
560
561*** prefer-coding-system sets EOL conversion of default coding systems.
562If the argument to prefer-coding-system specifies a certain type of
563end of line conversion, the default coding systems set by
564prefer-coding-system will specify that conversion type for end of line.
565
566*** The new function thai-compose-string can be used to properly
567compose Thai characters in a string.
568
569** The primitive `define-prefix-command' now takes an optional third
570argument NAME, which should be a string. It supplies the menu name
571for the created keymap. Keymaps created in order to be displayed as
572menus should always use the third argument.
573
574** The meanings of optional second arguments for read-char,
575read-event, and read-char-exclusive are flipped. Now the second
576arguments are INHERIT-INPUT-METHOD. These functions use the current
577input 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
580of the vector that (this-command-keys) returns. This is useful in
581programs that read passwords, to prevent the passwords from echoing
582inadvertently as part of the next command in certain cases.
583
584** The new macro `with-temp-message' displays a temporary message in
585the echo area, while executing some Lisp code. Like `progn', it
586returns the value of the last form, but it also restores the previous
587echo area contents.
588
589 (with-temp-message MESSAGE &rest BODY)
590
591** The function `require' now takes an optional third argument
592NOERROR. If it is non-nil, then there is no error if the
593requested feature cannot be loaded.
594
595** In the function modify-face, an argument of (nil) for the
596foreground color, background color or stipple pattern
597means to clear out that attribute.
598
599** The `outer-window-id' frame property of an X frame
600gives the window number of the outermost X window for the frame.
601
602** Temporary buffers made with with-output-to-temp-buffer are now
603read-only by default, and normally use the major mode Help mode
604unless you put them in some other non-Fundamental mode before the
605end of with-output-to-temp-buffer.
606
607** The new functions gap-position and gap-size return information on
608the gap of the current buffer.
609
610** The new functions position-bytes and byte-to-position provide a way
611to convert between character positions and byte positions in the
612current buffer.
613
614** vc.el defines two new macros, `edit-vc-file' and `with-vc-file', to
615facilitate working with version-controlled files from Lisp programs.
616These macros check out a given file automatically if needed, and check
617it 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
624the site-specific directories /usr/local/share/emacs/site-lisp and
625/usr/local/share/emacs/VERSION/site-lisp, in addition to those
626directories themselves. Both immediate subdirectories and
627subdirectories multiple levels down are added to load-path.
628
629Not all subdirectories are included, though. Subdirectories whose
630names do not start with a letter or digit are excluded.
631Subdirectories named RCS or CVS are excluded. Also, a subdirectory
632which contains a file named `.nosearch' is excluded. You can use
633these methods to prevent certain subdirectories from being searched.
634
635Emacs finds these subdirectories and adds them to load-path when it
636starts up. While it would be cleaner to find the subdirectories each
637time Emacs loads a file, that would be much slower.
638
639This feature is an incompatible change. If you have stored some Emacs
640Lisp files in a subdirectory of the site-lisp directory specifically
641to prevent them from being used, you will need to rename the
642subdirectory to start with a non-alphanumeric character, or create a
643`.nosearch' file in it, in order to continue to achieve the desired
644results.
645
646** Emacs no longer includes an old version of the C preprocessor from
647GCC. This was formerly used to help compile Emacs with C compilers
648that had limits on the significant length of an identifier, but in
649fact 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
655including its argument. If you repeat the z afterward,
656it repeats the command additional times; thus, you can
657perform many repetitions with one keystroke per repetition.
658
659** Emacs now supports "selective undo" which undoes only within a
660specified region. To do this, set point and mark around the desired
661region and type C-u C-x u (or C-u C-_). You can then continue undoing
662further, within the same region, by repeating the ordinary undo
663command C-x u or C-_. This will keep undoing changes that were made
664within the region you originally specified, until either all of them
665are undone, or it encounters a change which crosses the edge of that
666region.
667
668In Transient Mark mode, undoing when a region is active requests
669selective undo.
670
671** If you specify --unibyte when starting Emacs, then all buffers are
672unibyte, except when a Lisp program specifically creates a multibyte
673buffer. Setting the environment variable EMACS_UNIBYTE has the same
674effect. The --no-unibyte option overrides EMACS_UNIBYTE and directs
675Emacs to run normally in multibyte mode.
676
677The option --unibyte does not affect the reading of Emacs Lisp files,
678though. 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
680load that file in unibyte mode, regardless of how Emacs was started.
681
682** toggle-enable-multibyte-characters no longer has a key binding and
683no longer appears in the menu bar. We've realized that changing the
684enable-multibyte-characters variable in an existing buffer is
685something that most users not do.
686
687** You can specify a coding system to use for the next cut or paste
688operations through the window system with the command C-x RET X.
689The coding system can make a difference for communication with other
690applications.
691
692C-x RET x specifies a coding system for all subsequent cutting and
693pasting operations.
694
695** You can specify the printer to use for commands that do printing by
696setting the variable `printer-name'. Just what a printer name looks
697like depends on your operating system. You can specify a different
698printer 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
702minor mode. It is called M-x flyspell-mode. You don't have to remember
703any other special commands to use it, and you will hardly notice it
704except when you make a spelling error. Flyspell works by highlighting
705incorrect words as soon as they are completed or as soon as the cursor
706hits a new word.
707
708Flyspell mode works with whichever dictionary you have selected for
709Ispell in Emacs. In TeX mode, it understands TeX syntax so as not
710to be confused by TeX commands.
711
712You can correct a misspelled word by editing it into something
713correct. You can also correct it, or accept it as correct, by
714clicking on the word with Mouse-2; that gives you a pop-up menu
715of various alternative replacements and actions.
716
717Flyspell mode also proposes "automatic" corrections. M-TAB replaces
718the current misspelled word with a possible correction. If several
719corrections are made possible, M-TAB cycles through them in
720alphabetical order, or in order of decreasing likelihood if
721flyspell-sort-corrections is nil.
722
723Flyspell mode also flags an error when a word is repeated, if
724flyspell-mark-duplications-flag is non-nil.
725
726** Changes in input method usage.
727
728Now you can use arrow keys (right, left, down, up) for selecting among
729the alternatives just the same way as you do by C-f, C-b, C-n, and C-p
730respectively.
731
732You can use the ENTER key to accept the current conversion.
733
734If you type TAB to display a list of alternatives, you can select one
735of the alternatives with Mouse-2.
736
737The meaning of the variable `input-method-verbose-flag' is changed so
738that 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
752If you are using Emacs through a very slow line, setting
753input-method-verbose-flag to nil or to complex-only is a good choice,
754and if you are using an input method you are not familiar with,
755setting it to t is helpful.
756
757The old command select-input-method is now called set-input-method.
758
759In the language environment "Korean", you can use the following
760keys:
761 Shift-SPC toggle-korean-input-method
762 C-F9 quail-hangul-switch-symbol-ksc
763 F9 quail-hangul-switch-hanja
764These key bindings are canceled when you switch to another language
765environment.
766
767** The minibuffer history of file names now records the specified file
768names, not the entire minibuffer input. For example, if the
769minibuffer starts out with /usr/foo/, you might type in /etc/passwd to
770get
771
772 /usr/foo//etc/passwd
773
774which stands for the file /etc/passwd.
775
776Formerly, this used to put /usr/foo//etc/passwd in the history list.
777Now this puts just /etc/passwd in the history list.
778
779** If you are root, Emacs sets backup-by-copying-when-mismatch to t
780at startup, so that saving a file will be sure to preserve
781its owner and group.
782
783** find-func.el can now also find the place of definition of Emacs
784Lisp variables in user-loaded libraries.
785
786** C-x r t (string-rectangle) now deletes the existing rectangle
787contents before inserting the specified string on each line.
788
789** There is a new command delete-whitespace-rectangle
790which deletes whitespace starting from a particular column
791in all the lines on a rectangle. The column is specified
792by 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,
795increment it by INC with C-u INC C-x r + REG (to increment by one, omit
796C-u INC), and insert it in the buffer with C-x r g REG. This is useful
797for writing keyboard macros.
798
799** The new command M-x speedbar displays a frame in which directories,
800files, and tags can be displayed, manipulated, and jumped to. The
801frame defaults to 20 characters in width, and is the same height as
802the frame that it was started from. Some major modes define
803additional commands for the speedbar, including Rmail, GUD/GDB, and
804info.
805
806** query-replace-regexp is now bound to C-M-%.
807
808** In Transient Mark mode, when the region is active, M-x
809query-replace and the other replace commands now operate on the region
810contents only.
811
812** M-x write-region, when used interactively, now asks for
813confirmation before overwriting an existing file. When you call
814the function from a Lisp program, a new optional argument CONFIRM
815says whether to ask for confirmation in this case.
816
817** If you use find-file-literally and the file is already visited
818non-literally, the command asks you whether to revisit the file
819literally. If you say no, it signals an error.
820
821** Major modes defined with the "derived mode" feature
822now use the proper name for the mode hook: WHATEVER-mode-hook.
823Formerly they used the name WHATEVER-mode-hooks, but that is
824inconsistent with Emacs conventions.
825
826** shell-command-on-region (and shell-command) reports success or
827failure if the command produces no output.
828
829** Set focus-follows-mouse to nil if your window system or window
830manager does not transfer focus to another window when you just move
831the mouse.
832
833** mouse-menu-buffer-maxlen has been renamed to
834mouse-buffer-menu-maxlen to be consistent with the other related
835function and variable names.
836
837** The new variable auto-coding-alist specifies coding systems for
838reading specific files. This has higher priority than
839file-coding-system-alist.
840
841** If you set the variable unibyte-display-via-language-environment to
842t, then Emacs displays non-ASCII characters are displayed by
843converting them to the equivalent multibyte characters according to
844the current language environment. As a result, they are displayed
845according to the current fontset.
846
847** C-q's handling of codes in the range 0200 through 0377 is changed.
848
849The codes in the range 0200 through 0237 are inserted as one byte of
850that code regardless of the values of nonascii-translation-table and
851nonascii-insert-offset.
852
853For the codes in the range 0240 through 0377, if
854enable-multibyte-characters is non-nil and nonascii-translation-table
855nor nonascii-insert-offset can't convert them to valid multibyte
856characters, they are converted to Latin-1 characters.
857
858** If you try to find a file that is not read-accessible, you now get
859an error, rather than an empty buffer and a warning.
860
861** In the minibuffer history commands M-r and M-s, an upper case
862letter in the regular expression forces case-sensitive search.
863
864** In the *Help* buffer, cross-references to commands and variables
865are inferred and hyperlinked. Use C-h m in Help mode for the relevant
866command keys.
867
868** M-x apropos-command, with a prefix argument, no longer looks for
869user option variables--instead it looks for noninteractive functions.
870
871Meanwhile, the command apropos-variable normally searches for
872user option variables; with a prefix argument, it looks at
873all variables that have documentation.
874
875** When you type a long line in the minibuffer, and the minibuffer
876shows just one line, automatically scrolling works in a special way
877that shows you overlap with the previous line of text. The variable
878minibuffer-scroll-overlap controls how many characters of overlap
879it should show; the default is 20.
880
881Meanwhile, Resize Minibuffer mode is still available; in that mode,
882the minibuffer grows taller (up to a point) as needed to show the whole
883of your input.
884
885** The new command M-x customize-changed-options lets you customize
886all the options whose meanings or default values have changed in
887recent Emacs versions. You specify a previous Emacs version number as
888argument, and the command creates a customization buffer showing all
889the customizable options which were changed since that version.
890Newly added options are included as well.
891
892If you don't specify a particular version number argument,
893then the customization buffer shows all the customizable options
894for which Emacs versions of changes are recorded.
895
896This function is also bound to the Changed Options entry in the
897Customize menu.
898
899** When you run M-x grep with a prefix argument, it figures out
900the 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
903buffer positions from which M-. or other tag-finding commands were
904invoked.
905
906** The new variable comment-padding specifies the number of spaces
907that `comment-region' will insert before the actual text of the comment.
908The default is 1.
909
910** In Fortran mode the characters `.', `_' and `$' now have symbol
911syntax, not word syntax. Fortran mode now supports `imenu' and has
912new 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
914sensibly.
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
919value, the command `C-x 4 a' will automatically notice when you make
920two 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
923reminder about upcoming diary entries. See the documentation string
924for a sample shell script for calling this function automatically
925every night.
926
927** Desktop changes
928
929*** All you need to do to enable use of the Desktop package, is to set
930the variable desktop-enable to t with Custom.
931
932*** Minor modes are now restored. Which minor modes are restored
933and 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
936read and post multi-lingual articles.
937
938** Outline mode has now support for showing hidden outlines when
939doing an isearch. In order for this to happen search-invisible should
940be set to open (the default). If an isearch match is inside a hidden
941outline the outline is made visible. If you continue pressing C-s and
942the match moves outside the formerly invisible outline, the outline is
943made invisible again.
944
945** Mail reading and sending changes
946
947*** The Rmail e command now switches to displaying the whole header of
948the message before it lets you edit the message. This is so that any
949changes you make in the header will not be lost if you subsequently
950toggle.
951
952*** The w command in Rmail, which writes the message body into a file,
953now works in the summary buffer as well. (The command to delete the
954summary buffer is now Q.) The default file name for the w command, if
955the message has no subject, is stored in the variable
956rmail-default-body-file.
957
958*** Most of the commands and modes that operate on mail and netnews no
959longer depend on the value of mail-header-separator. Instead, they
960handle 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,
963it should be an expression. When you send a message, this expression
964is evaluated to insert the signature.
965
966*** The new Lisp library feedmail.el (version 8) enhances processing of
967outbound email messages. It works in coordination with other email
968handling packages (e.g., rmail, VM, gnus) and is responsible for
969putting final touches on messages and actually submitting them for
970transmission. Users of the emacs program "fakemail" might be
971especially interested in trying feedmail.
972
973feedmail is not enabled by default. See comments at the top of
974feedmail.el for set-up instructions. Among the bigger features
975provided by feedmail are:
976
977**** you can park outgoing messages into a disk-based queue and
978stimulate sending some or all of them later (handy for laptop users);
979there is also a queue for draft messages
980
981**** you can get one last look at the prepped outbound message and
982be 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
987the time the message was written or the time it is being sent; this
988can make FCC copies more closely resemble copies that recipients get
989
990**** you can specify an arbitrary function for actually transmitting
991the 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
993function 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
998files, is now bound to "t" instead of "T".
999
1000*** dired-at-point has been added to ffap.el. It allows one to easily
1001run Dired on the directory name at point.
1002
1003*** Dired has a new command: %g. It searches the contents of
1004files in the directory and marks each file that contains a match
1005for a specified regexp.
1006
1007** VC Changes
1008
1009*** New option vc-ignore-vc-files lets you turn off version control
1010conveniently.
1011
1012*** VC Dired has been completely rewritten. It is now much
1013faster, especially for CVS, and works very similar to ordinary
1014Dired.
1015
1016VC Dired is invoked by typing C-x v d and entering the name of the
1017directory to display. By default, VC Dired gives you a recursive
1018listing of all files at or below the given directory which are
1019currently locked (for CVS, all files not up-to-date are shown).
1020
1021You can change the listing format by setting vc-dired-recurse to nil,
1022then it shows only the given directory, and you may also set
1023vc-dired-terse-display to nil, then it shows all files under version
1024control plus the names of any subdirectories, so that you can type `i'
1025on such lines to insert them manually, as in ordinary Dired.
1026
1027All Dired commands operate normally in VC Dired, except for `v', which
1028is 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
1030the 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
1033The new command `v t' (vc-dired-toggle-terse-mode) allows you to
1034toggle between terse display (only locked files) and full display (all
1035VC files plus subdirectories). There is also a special command,
1036`* l', to mark all files currently locked.
1037
1038Giving a prefix argument to C-x v d now does the same thing as in
1039ordinary Dired: it allows you to supply additional options for the ls
1040command in the minibuffer, to fine-tune VC Dired's output.
1041
1042*** Under CVS, if you merge changes from the repository into a working
1043file, and CVS detects conflicts, VC now offers to start an ediff
1044session to resolve them.
1045
1046Alternatively, you can use the new command `vc-resolve-conflicts' to
1047resolve conflicts in a file at any time. It works in any buffer that
1048contains conflict markers as generated by rcsmerge (which is what CVS
1049uses as well).
1050
1051*** You can now transfer changes between branches, using the new
1052command vc-merge (C-x v m). It is implemented for RCS and CVS. When
1053you invoke it in a buffer under version-control, you can specify
1054either an entire branch or a pair of versions, and the changes on that
1055branch or between the two versions are merged into the working file.
1056If this results in any conflicts, they may be resolved interactively,
1057using ediff.
1058
1059** Changes in Font Lock
1060
1061*** The face and variable previously known as font-lock-reference-face
1062are now called font-lock-constant-face to better reflect their typical
1063use for highlighting constants and labels. (Its face properties are
1064unchanged.) The variable font-lock-reference-face remains for now for
1065compatibility 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
1070frame. You can use the new command select-frame-by-name to select and
1071raise a frame; this is mostly useful on character-only terminals, or
1072when many frames are invisible or iconified.
1073
1074*** On character-only terminal (not a window system), changing the
1075frame name is now reflected on the mode line and in the Buffers/Frames
1076menu.
1077
1078** Comint (subshell) changes
1079
1080*** In Comint modes, the commands to kill, stop or interrupt a
1081subjob now also kill pending input. This is for compatibility
1082with ordinary shells, where the signal characters do this.
1083
1084*** There are new commands in Comint mode.
1085
1086C-c C-x fetches the "next" line from the input history;
1087that is, the line after the last line you got.
1088You can use this command to fetch successive lines, one by one.
1089
1090C-c SPC accumulates lines of input. More precisely, it arranges to
1091send the current line together with the following line, when you send
1092the following line.
1093
1094C-c C-a if repeated twice consecutively now moves to the process mark,
1095which separates the pending input from the subprocess output and the
1096previously sent input.
1097
1098C-c M-r now runs comint-previous-matching-input-from-input;
1099it searches for a previous command, using the current pending input
1100as the search string.
1101
1102*** New option compilation-scroll-output can be set to scroll
1103automatically in compilation-mode windows.
1104
1105** C mode changes
1106
1107*** Multiline macros are now handled, both as they affect indentation,
1108and as recognized syntax. New syntactic symbol cpp-macro-cont is
1109assigned to second and subsequent lines of a multiline macro
1110definition.
1111
1112*** A new style "user" which captures all non-hook-ified
1113(i.e. top-level) .emacs file variable settings and customizations.
1114Style "cc-mode" is an alias for "user" and is deprecated. "gnu"
1115style 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
1120are alternatives which you could bind to C-M-a and C-M-e if you prefer
1121them. They do not have key bindings by default.
1122
1123*** New and improved implementations of M-a (c-beginning-of-statement)
1124and M-e (c-end-of-statement).
1125
1126*** C++ namespace blocks are supported, with new syntactic symbols
1127namespace-open, namespace-close, and innamespace.
1128
1129*** File local variable settings of c-file-style and c-file-offsets
1130makes the style variables local to that buffer only.
1131
1132*** New indentation functions c-lineup-close-paren,
1133c-indent-one-line-block, c-lineup-dont-change.
1134
1135*** Improvements (hopefully!) to the way CC Mode is loaded. You
1136should now be able to do a (require 'cc-mode) to get the entire
1137package loaded properly for customization in your .emacs file. A new
1138variable 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
1143non-nil, trailing spaces may be included in the abbreviation to search for,
1144which then gives the same behavior as the original `dabbrev-expand'.
1145
1146*** New customization variable `hippie-expand-dabbrev-as-symbol'. If
1147non-nil, characters of syntax '_' is considered part of the word when
1148expanding dynamically.
1149
1150*** New customization variable `hippie-expand-no-restriction'. If
1151non-nil, narrowed buffers are widened before they are searched.
1152
1153*** New customization variable `hippie-expand-only-buffers'. If
1154non-empty, buffers searched are restricted to the types specified in
1155this list. Useful for example when constructing new special-purpose
1156expansion 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
1163bibtex-autokey-titleword-ignore (case sensitive) is ignored during
1164automatic key generation. This replaces variable
1165bibtex-autokey-titleword-first-ignore, which only checked for matches
1166against the first word in the title.
1167
1168*** Autokey generation now uses all words from the title, not just
1169capitalized words. To avoid conflicts with existing customizations,
1170bibtex-autokey-titleword-ignore is set up such that words starting with
1171lowerkey characters will still be ignored. Thus, if you want to use
1172lowercase words from the title, you will have to overwrite the
1173bibtex-autokey-titleword-ignore standard setting.
1174
1175*** Case conversion of names and title words for automatic key
1176generation is more flexible. Variable bibtex-autokey-preserve-case is
1177replaced by bibtex-autokey-titleword-case-convert and
1178bibtex-autokey-name-case-convert.
1179
1180** Changes in vcursor.el.
1181
1182*** Support for character terminals is available: there is a new keymap
1183and the vcursor will appear as an arrow between buffer text. A
1184variable `vcursor-interpret-input' allows input from the vcursor to be
1185entered exactly as if typed. Numerous functions, including
1186`vcursor-compare-windows', have been rewritten to improve consistency
1187in the selection of windows and corresponding keymaps.
1188
1189*** vcursor options can now be altered with M-x customize under the
1190Editing group once the package is loaded.
1191
1192*** Loading vcursor now does not define keys by default, as this is
1193generally a bad side effect. Use M-x customize to set
1194vcursor-key-bindings to t to restore the old behavior.
1195
1196*** vcursor-auto-disable can be `copy', which turns off copying from the
1197vcursor, 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
1202buffer with M-x ispell-comments-and-strings. Comments and strings
1203are identified by syntax tables in effect.
1204
1205*** Generic region skipping implemented.
1206A single buffer can be broken into a number of regions where text will
1207and will not be checked. The definitions of the regions can be user
1208defined. New applications and improvements made available by this
1209include:
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
1218RefTeX has been updated in order to make it more usable with very
1219large projects (like a several volume math book). The parser has been
1220re-written from scratch. To get maximum speed from RefTeX, check the
1221section `Optimizations' in the manual.
1222
1223*** New recursive parser.
1224
1225The old version of RefTeX created a single large buffer containing the
1226entire multifile document in order to parse the document. The new
1227recursive parser scans the individual files.
1228
1229*** Parsing only part of a document.
1230
1231Reparsing of changed document parts can now be made faster by enabling
1232partial scans. To use this feature, read the documentation string of
1233the 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
1239This 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
1245If the creation of label selection buffers is too slow (this happens
1246for 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
1252The LaTeX package `xr' allows to cross-reference labels in external
1253documents. RefTeX can provide information about the external
1254documents as well. To use this feature, set up the \externaldocument
1255macros required by the `xr' package and rescan the document with
1256RefTeX. The external labels can then be accessed with the `x' key in
1257the selection buffer provided by `reftex-reference' (bound to `C-c )').
1258The `x' key also works in the table of contents buffer.
1259
1260*** Many more labeled LaTeX environments are recognized by default.
1261
1262The built-in command list now covers all the standard LaTeX commands,
1263and all of the major packages included in the LaTeX distribution.
1264
1265Also, RefTeX now understands the \appendix macro and changes
1266the enumeration of sections in the *toc* buffer accordingly.
1267
1268*** Mouse support for selection and *toc* buffers
1269
1270The mouse can now be used to select items in the selection and *toc*
1271buffers. See also the new option `reftex-highlight-selection'.
1272
1273*** New keymaps for selection and table of contents modes.
1274
1275The selection processes for labels and citation keys, and the table of
1276contents buffer now have their own keymaps: `reftex-select-label-map',
1277`reftex-select-bib-map', `reftex-toc-map'. The selection processes
1278have a number of new keys predefined. In particular, TAB lets you
1279enter a label with completion. Check the on-the-fly help (press `?'
1280at the selection prompt) or read the Info documentation to find out
1281more.
1282
1283*** Support for the varioref package
1284
1285The `v' key in the label selection buffer toggles \ref versus \vref.
1286
1287*** New hooks
1288
1289Three new hooks can be used to redefine the way labels, references,
1290and 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
1296The command `reftex-citation' may also be used outside LaTeX (e.g. in
1297a mail buffer). See the Info documentation for details.
1298
1299*** Short context is no longer fontified.
1300
1301The short context in the label menu no longer copies the
1302fontification from the text in the buffer. If you prefer it to be
1303fontified, use
1304
1305 (setq reftex-refontify-context t)
1306
1307** file-cache-minibuffer-complete now accepts a prefix argument.
1308With a prefix argument, it does not try to do completion of
1309the file name within its directory; it only checks for other
1310directories that contain the same file name.
1311
1312Thus, given the file name Makefile, and assuming that a file
1313Makefile.in exists in the same directory, ordinary
1314file-cache-minibuffer-complete will try to complete Makefile to
1315Makefile.in and will therefore never look for other directories that
1316have Makefile. A prefix argument tells it not to look for longer
1317names such as Makefile.in, so that instead it will look for other
1318directories--just as if the name were already complete in its present
1319directory.
1320
1321** New modes and packages
1322
1323*** There is a new alternative major mode for Perl, Cperl mode.
1324It has many more features than Perl mode, and some people prefer
1325it, but some do not.
1326
1327*** There is a new major mode, M-x vhdl-mode, for editing files of VHDL
1328code.
1329
1330*** M-x which-function-mode enables a minor mode that displays the
1331current function name continuously in the mode line, as you move
1332around in a buffer.
1333
1334Which Function mode is effective in major modes which support Imenu.
1335
1336*** Gametree is a major mode for editing game analysis trees. The author
1337uses it for keeping notes about his postal Chess games, but it should
1338be helpful for other two-player games as well, as long as they have an
1339established system of notation similar to Chess.
1340
1341*** The new minor mode checkdoc-minor-mode provides Emacs Lisp
1342documentation string checking for style and spelling. The style
1343guidelines are found in the Emacs Lisp programming manual.
1344
1345*** The net-utils package makes some common networking features
1346available in Emacs. Some of these functions are wrappers around
1347system utilities (ping, nslookup, etc.); others are implementations of
1348simple protocols (finger, whois) in Emacs Lisp. There are also
1349functions to make simple connections to TCP/IP ports for debugging and
1350the like.
1351
1352*** highlight-changes-mode is a minor mode that uses colors to
1353identify recently changed parts of the buffer text.
1354
1355*** The new package `midnight' lets you specify things to be done
1356within Emacs at midnight--by default, kill buffers that you have not
1357used in a considerable time. To use this feature, customize
1358the 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,
1390use -*-unibyte: t;-*- on its first line.
1391That will force Emacs to read that file in unibyte mode.
1392Otherwise, the file will be loaded and byte-compiled in multibyte mode.
1393
1394Thus, each lisp file is read in a consistent way regardless of whether
1395you started Emacs with --unibyte, so that a Lisp program gives
1396consistent results regardless of how Emacs was started.
1397
1398** The new function assoc-default is useful for searching an alist,
1399and using a default value if the key is not found there. You can
1400specify a comparison predicate, so this function is useful for
1401searching comparing a string against an alist of regular expressions.
1402
1403** The functions unibyte-char-to-multibyte and
1404multibyte-char-to-unibyte convert between unibyte and multibyte
1405character codes, in a way that is appropriate for the current language
1406environment.
1407
1408** The functions read-event, read-char and read-char-exclusive now
1409take two optional arguments. PROMPT, if non-nil, specifies a prompt
1410string. SUPPRESS-INPUT-METHOD, if non-nil, says to disable the
1411current input method for reading this one event.
1412
1413** Two new variables print-escape-nonascii and print-escape-multibyte
1414now control whether to output certain characters as
1415backslash-sequences. print-escape-nonascii applies to single-byte
1416non-ASCII characters; print-escape-multibyte applies to multibyte
1417characters. Both of these variables are used only when printing
1418in 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
1424of Emacs 20.2 do not work in Emacs 20.3.
1425
1426** Buffer positions are now measured in characters, as they were
1427in Emacs 19 and before. This means that (forward-char 1)
1428always increases point by 1.
1429
1430The function chars-in-region now just subtracts its arguments. It is
1431considered obsolete. The function char-boundary-p has been deleted.
1432
1433See below for additional changes relating to multibyte characters.
1434
1435** defcustom, defface and defgroup now accept the keyword `:version'.
1436Use this to specify in which version of Emacs a certain variable's
1437default 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
1447If an entire new group is added or the variables in it have the
1448default values changed, then just add a `:version' to that group. It
1449is recommended that new packages added to the distribution contain a
1450`:version' in the top level group.
1451
1452This 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
1455starts with a colon--if it is interned in the standard obarray.
1456
1457However, setting such a symbol to its proper value, which is that
1458symbol itself, is not an error. This is for the sake of programs that
1459support previous Emacs versions by explicitly setting these variables
1460to themselves.
1461
1462If you set the variable keyword-symbols-constant-flag to nil,
1463this error is suppressed, and you can set these symbols to any
1464values whatever.
1465
1466** There is a new debugger command, R.
1467It evaluates an expression like e, but saves the result
1468in the buffer *Debugger-record*.
1469
1470** Frame-local variables.
1471
1472You can now make a variable local to various frames. To do this, call
1473the function make-variable-frame-local; this enables frames to have
1474local bindings for that variable.
1475
1476These frame-local bindings are actually frame parameters: you create a
1477frame-local binding in a specific frame by calling
1478modify-frame-parameters and specifying the variable name as the
1479parameter name.
1480
1481Buffer-local bindings take precedence over frame-local bindings.
1482Thus, if the current buffer has a buffer-local binding, that binding is
1483active; otherwise, if the selected frame has a frame-local binding,
1484that binding is active; otherwise, the default binding is active.
1485
1486It would not be hard to implement window-local bindings, but it is not
1487clear that this would be very useful; windows tend to come and go in a
1488very transitory fashion, so that trying to produce any specific effect
1489through 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
1493evaluated, yield conventional string-based regexps. The symbolic form
1494makes it easier to construct, read, and maintain complex patterns.
1495See the documentation in sregex.el.
1496
1497** parse-partial-sexp's return value has an additional element which
1498is used to pass information along if you pass it to another call to
1499parse-partial-sexp, starting its scan where the first call ended.
1500The contents of this field are not yet finalized.
1501
1502** eval-region now accepts a fourth optional argument READ-FUNCTION.
1503If it is non-nil, that function is used instead of `read'.
1504
1505** unload-feature by default removes the feature's functions from
1506known hooks to avoid trouble, but a package providing FEATURE can
1507define a hook FEATURE-unload-hook to be run by unload-feature instead.
1508
1509** read-from-minibuffer no longer returns the argument DEFAULT-VALUE
1510when the user enters empty input. It now returns the null string, as
1511it did in Emacs 19. The default value is made available in the
1512history via M-n, but it is not applied here as a default.
1513
1514The other, more specialized minibuffer-reading functions continue to
1515return the default value (not the null string) when the user enters
1516empty input.
1517
1518** The new variable read-buffer-function controls which routine to use
1519for selecting buffers. For example, if you set this variable to
1520`iswitchb-read-buffer', iswitchb will be used to read buffer names.
1521Other 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,
1525echoing a period for each character typed. It takes three arguments:
1526a prompt string, a flag which says "read it twice to make sure", and a
1527default password to use if the user enters nothing.
1528
1529** The variable fill-nobreak-predicate gives major modes a way to
1530specify not to break a line at certain places. Its value is a
1531function which is called with no arguments, with point located at the
1532place where a break is being considered. If the function returns
1533non-nil, then the line won't be broken there.
1534
1535** window-end now takes an optional second argument, UPDATE.
1536If this is non-nil, then the function always returns an accurate
1537up-to-date value for the buffer position corresponding to the
1538end of the window, even if this requires computation.
1539
1540** other-buffer now takes an optional argument FRAME
1541which specifies which frame's buffer list to use.
1542If 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,
1545holds the value of (current-time) as of the last time that a window
1546was directed to display this buffer.
1547
1548** It is now meaningful to compare two window-configuration objects
1549with `equal'. Two window-configuration objects are equal if they
1550describe equivalent arrangements of windows, in the same frame--in
1551other words, if they would give the same results if passed to
1552set-window-configuration.
1553
1554** compare-window-configurations is a new function that compares two
1555window configurations loosely. It ignores differences in saved buffer
1556positions and scrolling, and considers only the structure and sizes of
1557windows and the choice of buffers to display.
1558
1559** The variable minor-mode-overriding-map-alist allows major modes to
1560override the key bindings of a minor mode. The elements of this alist
1561look like the elements of minor-mode-map-alist: (VARIABLE . KEYMAP).
1562
1563If the VARIABLE in an element of minor-mode-overriding-map-alist has a
1564non-nil value, the paired KEYMAP is active, and totally overrides the
1565map (if any) specified for the same variable in minor-mode-map-alist.
1566
1567minor-mode-overriding-map-alist is automatically local in all buffers,
1568and it is meant to be set by major modes.
1569
1570** The function match-string-no-properties is like match-string
1571except that it discards all text properties from the result.
1572
1573** The function load-average now accepts an optional argument
1574USE-FLOATS. If it is non-nil, the load average values are returned as
1575floating point numbers, rather than as integers to be divided by 100.
1576
1577** The new variable temporary-file-directory specifies the directory
1578to use for creating temporary files. The default value is determined
1579in a reasonable way for your operating system; on GNU and Unix systems
1580it 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
1585keywords :visible and :filter. The existing keyword :keys is now
1586better supported.
1587
1588The variable `easy-menu-precalculate-equivalent-keybindings' controls
1589a new feature which calculates keyboard equivalents for the menu when
1590you define the menu. The default is t. If you rarely use menus, you
1591can set the variable to nil to disable this precalculation feature;
1592then the calculation is done only if you use the menu bar.
1593
1594*** A new format for menu items is supported.
1595
1596In a keymap, a key binding that has the format
1597 (STRING . REAL-BINDING) or (STRING HELP-STRING . REAL-BINDING)
1598defines a menu item. Now a menu item definition may also be a list that
1599starts with the symbol `menu-item'.
1600
1601The format is:
1602 (menu-item ITEM-NAME) or
1603 (menu-item ITEM-NAME REAL-BINDING . ITEM-PROPERTY-LIST)
1604where ITEM-NAME is an expression which evaluates to the menu item
1605string, and ITEM-PROPERTY-LIST has the form of a property list.
1606The 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
1632Buttons are at the moment only simulated by prefixes in the menu.
1633Eventually 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
1640mouse (such as the MS Intellimouse). The event contains a delta that
1641corresponds to the amount and direction that the wheel is rotated,
1642which is typically used to implement a scroll or zoom. The format is:
1643
1644 (mouse-wheel POSITION DELTA)
1645
1646where POSITION is a list describing the position of the event in the
1647same format as a mouse-click event, and DELTA is a signed number
1648indicating the number of increments by which the wheel was rotated. A
1649negative DELTA indicates that the wheel was rotated backwards, towards
1650the user, and a positive DELTA indicates that the wheel was rotated
1651forward, away from the user.
1652
1653As 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
1656files is selected in an application outside of Emacs, and then dragged
1657and dropped onto an Emacs frame. The event contains a list of
1658filenames that were dragged and dropped, which are then typically
1659loaded into Emacs. The format is:
1660
1661 (drag-n-drop POSITION FILES)
1662
1663where POSITION is a list describing the position of the event in the
1664same format as a mouse-click event, and FILES is the list of filenames
1665that were dragged and dropped.
1666
1667As 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;
1672any attempt to set it directly signals an error. The only way
1673to 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
1676can use it to terminate a hex escape which is followed by a character
1677that could otherwise be read as part of the hex escape.
1678
1679*** String indices are now measured in characters, as they were
1680in Emacs 19 and before.
1681
1682The function chars-in-string has been deleted.
1683The function concat-chars has been renamed to `string'.
1684
1685*** The function set-buffer-multibyte sets the flag in the current
1686buffer that says whether the buffer uses multibyte representation or
1687unibyte representation. If the argument is nil, it selects unibyte
1688representation. Otherwise it selects multibyte representation.
1689
1690This function does not change the contents of the buffer, viewed
1691as a sequence of bytes. However, it does change the contents
1692viewed as characters; a sequence of two bytes which is treated as
1693one character when the buffer uses multibyte representation
1694will count as two characters using unibyte representation.
1695
1696This function sets enable-multibyte-characters to record which
1697representation is in use. It also adjusts various data in the buffer
1698(including its markers, overlays and text properties) so that they are
1699consistent with the new representation.
1700
1701*** string-make-multibyte takes a string and converts it to multibyte
1702representation. Most of the time, you don't need to care
1703about the representation, because Emacs converts when necessary;
1704however, it makes a difference when you compare strings.
1705
1706The conversion of non-ASCII characters works by adding the value of
1707nonascii-insert-offset to each character, or by translating them
1708using the table nonascii-translation-table.
1709
1710*** string-make-unibyte takes a string and converts it to unibyte
1711representation. Most of the time, you don't need to care about the
1712representation, but it makes a difference when you compare strings.
1713
1714The conversion from multibyte to unibyte representation
1715loses information; the only time Emacs performs it automatically
1716is when inserting a multibyte string into a unibyte buffer.
1717
1718*** string-as-multibyte takes a string, and returns another string
1719which contains the same bytes, but treats them as multibyte.
1720
1721*** string-as-unibyte takes a string, and returns another string
1722which contains the same bytes, but treats them as unibyte.
1723
1724*** The new function compare-strings lets you compare
1725portions of two strings. Unibyte strings are converted to multibyte,
1726so that a unibyte string can match a multibyte string.
1727You can specify whether to ignore case or not.
1728
1729*** assoc-ignore-case now uses compare-strings so that
1730it can treat unibyte and multibyte strings as equal.
1731
1732*** Regular expression operations and buffer string searches now
1733convert the search pattern to multibyte or unibyte to accord with the
1734buffer or string being searched.
1735
1736One consequence is that you cannot always use \200-\377 inside of
1737[...] to match all non-ASCII characters. This does still work when
1738searching or matching a unibyte buffer or string, but not when
1739searching or matching a multibyte string. Unfortunately, there is no
1740obvious choice of syntax to use within [...] for that job. But, what
1741you want is just to match all non-ASCII characters, the regular
1742expression [^\0-\177] works for it.
1743
1744*** Structure of coding system changed.
1745
1746All coding systems (including aliases and subsidiaries) are named
1747by symbols; the symbol's `coding-system' property is a vector
1748which defines the coding system. Aliases share the same vector
1749as the principal name, so that altering the contents of this
1750vector affects the principal name and its aliases. You can define
1751your own alias name of a coding system by the function
1752define-coding-system-alias.
1753
1754The coding system definition includes a property list of its own. Use
1755the new functions `coding-system-get' and `coding-system-put' to
1756access such coding system properties as post-read-conversion,
1757pre-write-conversion, character-translation-table-for-decode,
1758character-translation-table-for-encode, mime-charset, and
1759safe-charsets. For instance, (coding-system-get 'iso-latin-1
1760'mime-charset) gives the corresponding MIME-charset parameter
1761`iso-8859-1'.
1762
1763Among the coding system properties listed above, safe-charsets is new.
1764The value of this property is a list of character sets which this
1765coding system can correctly encode and decode. For instance:
1766(coding-system-get 'iso-latin-1 'safe-charsets) => (ascii latin-iso8859-1)
1767
1768Here, "correctly encode" means that the encoded character sets can
1769also be handled safely by systems other than Emacs as far as they
1770are capable of that coding system. Though, Emacs itself can encode
1771the other character sets and read it back correctly.
1772
1773*** The new function select-safe-coding-system can be used to find a
1774proper coding system for encoding the specified region or string.
1775This function requires a user interaction.
1776
1777*** The new functions find-coding-systems-region and
1778find-coding-systems-string are helper functions used by
1779select-safe-coding-system. They return a list of all proper coding
1780systems to encode a text in some region or string. If you don't want
1781a user interaction, use one of these functions instead of
1782select-safe-coding-system.
1783
1784*** The explicit encoding and decoding functions, such as
1785decode-coding-region and encode-coding-string, now set
1786last-coding-system-used to reflect the actual way encoding or decoding
1787was done.
1788
1789*** The new function detect-coding-with-language-environment can be
1790used to detect a coding system of text according to priorities of
1791coding systems used by some specific language environment.
1792
1793*** The functions detect-coding-region and detect-coding-string always
1794return a list if the arg HIGHEST is nil. Thus, if only ASCII
1795characters 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
1799coding-system-change-text-conversion can be used to get a different
1800coding system than what specified only in how end-of-line or text is
1801converted.
1802
1803*** The new function set-selection-coding-system can be used to set a
1804coding system for communicating with other X clients.
1805
1806*** The function `map-char-table' now passes as argument only valid
1807character codes, plus generic characters that stand for entire
1808character sets or entire subrows of a character set. In other words,
1809each time `map-char-table' calls its FUNCTION argument, the key value
1810either will be a valid individual character code, or will stand for a
1811range of characters.
1812
1813*** The new function `char-valid-p' can be used for checking whether a
1814Lisp object is a valid character code or not.
1815
1816*** The new function `charset-after' returns a charset of a character
1817in the current buffer at position POS.
1818
1819*** Input methods are now implemented using the variable
1820input-method-function. If this is non-nil, its value should be a
1821function; then, whenever Emacs reads an input event that is a printing
1822character with no modifier bits, it calls that function, passing the
1823event as an argument. Often this function will read more input, first
1824binding input-method-function to nil.
1825
1826The return value should be a list of the events resulting from input
1827method processing. These events will be processed sequentially as
1828input, before resorting to unread-command-events. Events returned by
1829the input method function are not passed to the input method function,
1830not even if they are printing characters with no modifier bits.
1831
1832The input method function is not called when reading the second and
1833subsequent events of a key sequence.
1834
1835*** You can customize any language environment by using
1836set-language-environment-hook and exit-language-environment-hook.
1837
1838The hook `exit-language-environment-hook' should be used to undo
1839customizations that you made with set-language-environment-hook. For
1840instance, if you set up a special key binding for a specific language
1841environment by set-language-environment-hook, you should set up
1842exit-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
1849options. It is called M-x customize. With this facility you can look
1850at the many user options in an organized way; they are grouped into a
1851tree structure.
1852
1853M-x customize also knows what sorts of values are legitimate for each
1854user option and ensures that you don't use invalid values.
1855
1856With M-x customize, you can set options either for the present Emacs
1857session or permanently. (Permanent settings are stored automatically
1858in your .emacs file.)
1859
1860** Scroll bars are now on the left side of the window.
1861You can change this with M-x customize-option scroll-bar-mode.
1862
1863** The mode line no longer includes the string `Emacs'.
1864This makes more space in the mode line for other information.
1865
1866** When you select a region with the mouse, it is highlighted
1867immediately afterward. At that time, if you type the DELETE key, it
1868kills the region.
1869
1870The BACKSPACE key, and the ASCII character DEL, do not do this; they
1871delete the character before point, as usual.
1872
1873** In an incremental search the whole current match is highlighted
1874on terminals which support this. (You can disable this feature
1875by setting search-highlight to nil.)
1876
1877** In the minibuffer, in some cases, you can now use M-n to
1878insert the default value into the minibuffer as text. In effect,
1879the default value (if the minibuffer routines know it) is tacked
1880onto the history "in the future". (The more normal use of the
1881history list is to use M-p to insert minibuffer input used in the
1882past.)
1883
1884** In Text mode, now only blank lines separate paragraphs.
1885This makes it possible to get the full benefit of Adaptive Fill mode
1886in Text mode, and other modes derived from it (such as Mail mode).
1887TAB in Text mode now runs the command indent-relative; this
1888makes a practical difference only when you use indented paragraphs.
1889
1890As a result, the old Indented Text mode is now identical to Text mode,
1891and is an alias for it.
1892
1893If you want spaces at the beginning of a line to start a paragraph,
1894use the new mode, Paragraph Indent Text mode.
1895
1896** Scrolling changes
1897
1898*** Scroll commands to scroll a whole screen now preserve the screen
1899position of the cursor, if scroll-preserve-screen-position is non-nil.
1900
1901In this mode, if you scroll several screens back and forth, finishing
1902on the same screen where you started, the cursor goes back to the line
1903where it started.
1904
1905*** If you set scroll-conservatively to a small number, then when you
1906move point a short distance off the screen, Emacs will scroll the
1907screen just far enough to bring point back on screen, provided that
1908does not exceed `scroll-conservatively' lines.
1909
1910*** The new variable scroll-margin says how close point can come to the
1911top or bottom of a window. It is a number of screen lines; if point
1912comes within that many lines of the top or bottom of the window, Emacs
1913recenters the window.
1914
1915** International character set support (MULE)
1916
1917Emacs now supports a wide variety of international character sets,
1918including European variants of the Latin alphabet, as well as Chinese,
1919Devanagari (Hindi and Marathi), Ethiopian, Greek, IPA, Japanese,
1920Korean, Lao, Russian, Thai, Tibetan, and Vietnamese scripts. These
1921features have been merged from the modified version of Emacs known as
1922MULE (for "MULti-lingual Enhancement to GNU Emacs")
1923
1924Users of these scripts have established many more-or-less standard
1925coding systems for storing files. Emacs uses a single multibyte
1926character encoding within Emacs buffers; it can translate from a wide
1927variety of coding systems when reading a file and can translate back
1928into any of these coding systems when saving a file.
1929
1930Keyboards, even in the countries where these character sets are used,
1931generally don't have keys for all the characters in them. So Emacs
1932supports various "input methods", typically one for each script or
1933language, to make it possible to type them.
1934
1935The Emacs internal multibyte encoding represents a non-ASCII
1936character as a sequence of bytes in the range 0200 through 0377.
1937
1938The new prefix key C-x RET is used for commands that pertain
1939to multibyte characters, coding systems, and input methods.
1940
1941You can disable multibyte character support as follows:
1942
1943 (setq-default enable-multibyte-characters nil)
1944
1945Calling the function standard-display-european turns off multibyte
1946characters, unless you specify a non-nil value for the second
1947argument, AUTO. This provides compatibility for people who are
1948already using standard-display-european to continue using unibyte
1949characters for their work until they want to change.
1950
1951*** Input methods
1952
1953An input method is a kind of character conversion which is designed
1954specifically for interactive input. In Emacs, typically each language
1955has its own input method (though sometimes several languages which use
1956the same characters can share one input method). Some languages
1957support several input methods.
1958
1959The simplest kind of input method works by mapping ASCII letters into
1960another alphabet. This is how the Greek and Russian input methods
1961work.
1962
1963A more powerful technique is composition: converting sequences of
1964characters into one letter. Many European input methods use
1965composition to produce a single non-ASCII letter from a sequence which
1966consists of a letter followed by diacritics. For example, a' is one
1967sequence of two characters that might be converted into a single
1968letter.
1969
1970The input methods for syllabic scripts typically use mapping followed
1971by conversion. The input methods for Thai and Korean work this way.
1972First, letters are mapped into symbols for particular sounds or tone
1973marks; then, sequences of these which make up a whole syllable are
1974mapped into one syllable sign--most often a "composite character".
1975
1976None of these methods works very well for Chinese and Japanese, so
1977they are handled specially. First you input a whole word using
1978phonetic spelling; then, after the word is in the buffer, Emacs
1979converts it into one or more characters using a large dictionary.
1980
1981Since there is more than one way to represent a phonetically spelled
1982word using Chinese characters, Emacs can only guess which one to use;
1983typically these input methods give you a way to say "guess again" if
1984the first guess is wrong.
1985
1986*** The command C-x RET m (toggle-enable-multibyte-characters)
1987turns multibyte character support on or off for the current buffer.
1988
1989If multibyte character support is turned off in a buffer, then each
1990byte is a single character, even codes 0200 through 0377--exactly as
1991they did in Emacs 19.34. This includes the features for support for
1992the European characters, ISO Latin-1 and ISO Latin-2.
1993
1994However, there is no need to turn off multibyte character support to
1995use ISO Latin-1 or ISO Latin-2; the Emacs multibyte character set
1996includes all the characters in these character sets, and Emacs can
1997translate automatically to and from either one.
1998
1999*** Visiting a file in unibyte mode.
2000
2001Turning off multibyte character support in the buffer after visiting a
2002file with multibyte code conversion will display the multibyte
2003sequences already in the buffer, byte by byte. This is probably not
2004what you want.
2005
2006If you want to edit a file of unibyte characters (Latin-1, for
2007example), you can do it by specifying `no-conversion' as the coding
2008system when reading the file. This coding system also turns off
2009multibyte characters in that buffer.
2010
2011If you turn off multibyte character support entirely, this turns off
2012character conversion as well.
2013
2014*** Displaying international characters on X Windows.
2015
2016A font for X typically displays just one alphabet or script.
2017Therefore, displaying the entire range of characters Emacs supports
2018requires using many fonts.
2019
2020Therefore, Emacs now supports "fontsets". Each fontset is a
2021collection of fonts, each assigned to a range of character codes.
2022
2023A fontset has a name, like a font. Individual fonts are defined by
2024the X server; fontsets are defined within Emacs itself. But once you
2025have defined a fontset, you can use it in a face or a frame just as
2026you would use a font.
2027
2028If a fontset specifies no font for a certain character, or if it
2029specifies a font that does not exist on your system, then it cannot
2030display that character. It will display an empty box instead.
2031
2032The fontset height and width are determined by the ASCII characters
2033(that is, by the font in the fontset which is used for ASCII
2034characters).
2035
2036*** Defining fontsets.
2037
2038Emacs does not use any fontset by default. Its default font is still
2039chosen as in previous versions. You can tell Emacs to use a fontset
2040with the `-fn' option or the `Font' X resource.
2041
2042Emacs creates a standard fontset automatically according to the value
2043of standard-fontset-spec. This fontset's short name is
2044`fontset-standard'. Bold, italic, and bold-italic variants of the
2045standard fontset are created automatically.
2046
2047If you specify a default ASCII font with the `Font' resource or `-fn'
2048argument, a fontset is generated from it. This works by replacing the
2049FOUNDARY, FAMILY, ADD_STYLE, and AVERAGE_WIDTH fields of the font name
2050with `*' then using this to specify a fontset. This fontset's short
2051name is `fontset-startup'.
2052
2053Emacs checks resources of the form Fontset-N where N is 0, 1, 2...
2054The resource value should have this form:
2055 FONTSET-NAME, [CHARSET-NAME:FONT-NAME]...
2056FONTSET-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.
2060The construct CHARSET-NAME:FONT-NAME can be repeated any number
2061of times; each time specifies the font for one character set.
2062CHARSET-NAME should be the name of a character set, and FONT-NAME
2063should specify an actual font to use for that character set.
2064
2065Each of these fontsets has an alias which is made from the
2066last two font name fields, CHARSET_REGISTRY and CHARSET_ENCODING.
2067You can refer to the fontset by that alias or by its full name.
2068
2069For any character sets that you don't mention, Emacs tries to choose a
2070font by substituting into FONTSET-NAME. For instance, with the
2071following resource,
2072 Emacs*Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24
2073the font for ASCII is generated as below:
2074 -*-fixed-medium-r-normal-*-24-*-ISO8859-1
2075Here 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
2082The function which processes the fontset resource value to create the
2083fontset is called create-fontset-from-fontset-spec. You can also call
2084that function explicitly to create a fontset.
2085
2086With the X resource Emacs.Font, you can specify a fontset name just
2087like an actual font name. But be careful not to specify a fontset
2088name in a wildcard resource like Emacs*Font--that tries to specify the
2089fontset for other purposes including menus, and they cannot handle
2090fontsets.
2091
2092*** The command M-x set-language-environment sets certain global Emacs
2093defaults for a particular choice of language.
2094
2095Selecting a language environment typically specifies a default input
2096method and which coding systems to recognize automatically when
2097visiting files. However, it does not try to reread files you have
2098already visited; the text in those buffers is not affected. The
2099language environment may also specify a default choice of coding
2100system for new files that you create.
2101
2102It makes no difference which buffer is current when you use
2103set-language-environment, because these defaults apply globally to the
2104whole Emacs session.
2105
2106For example, M-x set-language-environment RET Latin-1 RET
2107chooses the Latin-1 character set. In the .emacs file, you can do this
2108with (set-language-environment "Latin-1").
2109
2110*** The command C-x RET f (set-buffer-file-coding-system)
2111specifies the file coding system for the current buffer. This
2112specifies what sort of character code translation to do when saving
2113the file. As an argument, you must specify the name of one of the
2114coding systems that Emacs supports.
2115
2116*** The command C-x RET c (universal-coding-system-argument)
2117lets you specify a coding system when you read or write a file.
2118This command uses the minibuffer to read a coding system name.
2119After you exit the minibuffer, the specified coding system
2120is used for *the immediately following command*.
2121
2122So if the immediately following command is a command to read or
2123write a file, it uses the specified coding system for that file.
2124
2125If the immediately following command does not use the coding system,
2126then C-x RET c ultimately has no effect.
2127
2128For example, C-x RET c iso-8859-1 RET C-x C-f temp RET
2129visits the file `temp' treating it as ISO Latin-1.
2130
2131*** You can specify the coding system for a file using the -*-
2132construct. Include `coding: CODINGSYSTEM;' inside the -*-...-*-
2133to specify use of coding system CODINGSYSTEM. You can also
2134specify the coding system in a local variable list at the end
2135of the file.
2136
2137*** The command C-x RET t (set-terminal-coding-system) specifies
2138the coding system for terminal output. If you specify a character
2139code for terminal output, all characters output to the terminal are
2140translated into that character code.
2141
2142This feature is useful for certain character-only terminals built in
2143various countries to support the languages of those countries.
2144
2145By default, output to the terminal is not translated at all.
2146
2147*** The command C-x RET k (set-keyboard-coding-system) specifies
2148the coding system for keyboard input.
2149
2150Character code translation of keyboard input is useful for terminals
2151with keys that send non-ASCII graphic characters--for example,
2152some terminals designed for ISO Latin-1 or subsets of it.
2153
2154By default, keyboard input is not translated at all.
2155
2156Character code translation of keyboard input is similar to using an
2157input method, in that both define sequences of keyboard input that
2158translate into single characters. However, input methods are designed
2159to be convenient for interactive use, while the code translations are
2160designed to work with terminals.
2161
2162*** The command C-x RET p (set-buffer-process-coding-system)
2163specifies the coding system for input and output to a subprocess.
2164This command applies to the current buffer; normally, each subprocess
2165has its own buffer, and thus you can use this command to specify
2166translation to and from a particular subprocess by giving the command
2167in the corresponding buffer.
2168
2169By default, process input and output are not translated at all.
2170
2171*** The variable file-name-coding-system specifies the coding system
2172to use for encoding file names before operating on them.
2173It is also used for decoding file names obtained from the system.
2174
2175*** The command C-\ (toggle-input-method) activates or deactivates
2176an input method. If no input method has been selected before, the
2177command prompts for you to specify the language and input method you
2178want to use.
2179
2180C-u C-\ (select-input-method) lets you switch to a different input
2181method. C-h C-\ (or C-h I) describes the current input method.
2182
2183*** Some input methods remap the keyboard to emulate various keyboard
2184layouts commonly used for particular scripts. How to do this
2185remapping properly depends on your actual keyboard layout. To specify
2186which layout your keyboard has, use M-x quail-set-keyboard-layout.
2187
2188*** The command C-h C (describe-coding-system) displays
2189the coding systems currently selected for various purposes, plus
2190related information.
2191
2192*** The command C-h h (view-hello-file) displays a file called
2193HELLO, which has examples of text in many languages, using various
2194scripts.
2195
2196*** The command C-h L (describe-language-support) displays
2197information about the support for a particular language.
2198You specify the language as an argument.
2199
2200*** The mode line now contains a letter or character that identifies
2201the coding system used in the visited file. It normally follows the
2202first dash.
2203
2204A dash indicates the default state of affairs: no code conversion
2205(except CRLF => newline if appropriate). `=' means no conversion
2206whatsoever. The ISO 8859 coding systems are represented by digits
22071 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
2229When you are using a character-only terminal (not a window system),
2230two additional characters appear in between the dash and the file
2231coding system. These two characters describe the coding system for
2232keyboard input, and the coding system for terminal output.
2233
2234*** The new variable rmail-file-coding-system specifies the code
2235conversion to use for RMAIL files. The default value is nil.
2236
2237When you read mail with Rmail, each message is decoded automatically
2238into Emacs' internal format. This has nothing to do with
2239rmail-file-coding-system. That variable controls reading and writing
2240Rmail files themselves.
2241
2242*** The new variable sendmail-coding-system specifies the code
2243conversion for outgoing mail. The default value is nil.
2244
2245Actually, there are three different ways of specifying the coding system
2246for 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
2255to specify the language for the tutorial file. Currently, English,
2256Japanese, Korean and Thai are supported. We welcome additional
2257translations.
2258
2259** An easy new way to visit a file with no code or format conversion
2260of any kind: Use M-x find-file-literally. There is also a command
2261insert-file-literally which inserts a file into the current buffer
2262without any conversion.
2263
2264** C-q's handling of octal character codes is changed.
2265You can now specify any number of octal digits.
2266RET terminates the digits and is discarded;
2267any other non-digit terminates the digits and is then used as input.
2268
2269** There are new commands for looking up Info documentation for
2270functions, variables and file names used in your programs.
2271
2272Type M-x info-lookup-symbol to look up a symbol in the buffer at point.
2273Type M-x info-lookup-file to look up a file in the buffer at point.
2274
2275Precisely which Info files are used to look it up depends on the major
2276mode. For example, in C mode, the GNU libc manual is used.
2277
2278** M-TAB in most programming language modes now runs the command
2279complete-symbol. This command performs completion on the symbol name
2280in the buffer before point.
2281
2282With a numeric argument, it performs completion based on the set of
2283symbols documented in the Info files for the programming language that
2284you are using.
2285
2286With no argument, it does completion based on the current tags tables,
2287just like the old binding of M-TAB (complete-tag).
2288
2289** File locking works with NFS now.
2290
2291The lock file for FILENAME is now a symbolic link named .#FILENAME,
2292in the same directory as FILENAME.
2293
2294This means that collision detection between two different machines now
2295works reasonably well; it also means that no file server or directory
2296can become a bottleneck.
2297
2298The new method does have drawbacks. It means that collision detection
2299does not operate when you edit a file in a directory where you cannot
2300create new files. Collision detection also doesn't operate when the
2301file server does not support symbolic links. But these conditions are
2302rare, and the ability to have collision detection while using NFS is
2303so useful that the change is worth while.
2304
2305When Emacs or a system crashes, this may leave behind lock files which
2306are stale. So you may occasionally get warnings about spurious
2307collisions. When you determine that the collision is spurious, just
2308tell Emacs to go ahead anyway.
2309
2310** If you wish to use Show Paren mode to display matching parentheses,
2311it is no longer sufficient to load paren.el. Instead you must call
2312show-paren-mode.
2313
2314** If you wish to use Delete Selection mode to replace a highlighted
2315selection when you insert new text, it is no longer sufficient to load
2316delsel.el. Instead you must call the function delete-selection-mode.
2317
2318** If you wish to use Partial Completion mode to complete partial words
2319within symbols or filenames, it is no longer sufficient to load
2320complete.el. Instead you must call the function partial-completion-mode.
2321
2322** If you wish to use uniquify to rename buffers for you,
2323it is no longer sufficient to load uniquify.el. You must also
2324set 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.
2329Do H in view mode for a list of commands.
2330
2331*** There are two new commands for entering View mode:
2332view-file-other-frame and view-buffer-other-frame.
2333
2334*** Exiting View mode does a better job of restoring windows to their
2335previous state.
2336
2337*** New customization variable view-scroll-auto-exit. If non-nil,
2338scrolling past end of buffer makes view mode exit.
2339
2340*** New customization variable view-exits-all-viewing-windows. If
2341non-nil, view-mode will at exit restore all windows viewing buffer,
2342not just the selected window.
2343
2344*** New customization variable view-read-only. If non-nil, visiting a
2345read-only file automatically enters View mode, and toggle-read-only
2346turns View mode on or off.
2347
2348*** New customization variable view-remove-frame-by-deleting controls
2349how to remove a not needed frame at view mode exit. If non-nil,
2350delete 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,
2353now 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,
2356has a new feature. If the file is currently not locked, so that it is
2357presumably identical to the last checked-in version, the command now asks
2358which version to compare with.
2359
2360** When using hideshow.el, incremental search can temporarily show hidden
2361blocks if a match is inside the block.
2362
2363The block is hidden again if the search is continued and the next match
2364is outside the block. By customizing the variable
2365isearch-hide-immediately you can choose to hide all the temporarily
2366shown blocks only when exiting from incremental search.
2367
2368By customizing the variable hs-isearch-open you can choose what kind
2369of blocks to temporarily show during isearch: comment blocks, code
2370blocks, all of them or none.
2371
2372** The new command C-x 4 0 (kill-buffer-and-window) kills the
2373current buffer and deletes the selected window. It asks for
2374confirmation first.
2375
2376** C-x C-w, which saves the buffer into a specified file name,
2377now changes the major mode according to that file name.
2378However, 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
2384This applies to M-x set-visited-file-name as well.
2385
2386However, if you set change-major-mode-with-file-name to nil, then
2387these 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,
2392it performs a case-sensitive search.
2393
2394*** In the *Occur* buffer made by M-x occur,
2395if you type g or M-x revert-buffer, this repeats the search
2396using the same regular expression and the same buffer as before.
2397
2398** In Transient Mark mode, the region in any one buffer is highlighted
2399in just one window at a time. At first, it is highlighted in the
2400window where you set the mark. The buffer's highlighting remains in
2401that window unless you select to another window which shows the same
2402buffer--then the highlighting moves to that window.
2403
2404** The feature to suggest key bindings when you use M-x now operates
2405after the command finishes. The message suggesting key bindings
2406appears temporarily in the echo area. The previous echo area contents
2407come back after a few seconds, in case they contain useful information.
2408
2409** Each frame now independently records the order for recently
2410selected buffers, so that the default for C-x b is now based on the
2411buffers 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
2420you try to use the minibuffer, you used to get a nested minibuffer.
2421Now, this not only gives an error, it also cancels the minibuffer that
2422was already active.
2423
2424The motive for this change is so that beginning users do not
2425unknowingly move away from minibuffers, leaving them active, and then
2426get confused by it.
2427
2428If you want to be able to have recursive minibuffers, you must
2429set enable-recursive-minibuffers to non-nil.
2430
2431** Changes in dynamic abbrevs.
2432
2433*** Expanding dynamic abbrevs with M-/ is now smarter about case
2434conversion. If the expansion has mixed case not counting the first
2435character, and the abbreviation matches the beginning of the expansion
2436including case, then the expansion is copied verbatim.
2437
2438The expansion is also copied verbatim if the abbreviation itself has
2439mixed case. And using SPC M-/ to copy an additional word always
2440copies it verbatim except when the previous copied word is all caps.
2441
2442*** The values of `dabbrev-case-replace' and `dabbrev-case-fold-search'
2443are no longer Lisp expressions. They have simply three possible
2444values.
2445
2446`dabbrev-case-replace' has these three values: nil (don't preserve
2447case), t (do), or `case-replace' (do like M-x query-replace).
2448`dabbrev-case-fold-search' has these three values: nil (don't ignore
2449case), t (do), or `case-fold-search' (do like search).
2450
2451** Minibuffer history lists are truncated automatically now to a
2452certain length. The variable history-length specifies how long they
2453can 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.
2458Instead, it runs the command `compose-mail', which invokes the mail
2459composition 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
2462behavior.
2463
2464C-x 4 m now runs compose-mail-other-window, and C-x 5 m runs
2465compose-mail-other-frame.
2466
2467*** While composing a reply to a mail message, from Rmail, you can use
2468the command C-c C-r to cite just the region from the message you are
2469replying to. This copies the text which is the selected region in the
2470buffer that shows the original message.
2471
2472*** The command C-c C-i inserts a file at the end of the message,
2473with separator lines around the contents.
2474
2475*** The command M-x expand-mail-aliases expands all mail aliases
2476in suitable mail headers. Emacs automatically extracts mail alias
2477definitions from your mail alias file (e.g., ~/.mailrc). You do not
2478need 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,
2483for local users or if that is known. The variable mail-complete-style
2484controls the style to use, and whether to do this at all.
2485Its values are like those of mail-from-style.
2486
2487**** The variable mail-passwd-command lets you specify a shell command
2488to 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
2492to 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
2496special syntax, by adding `/:' to the beginning. Thus, if you have a
2497directory named `/foo:', you can prevent it from being treated as a
2498reference to a remote host named `foo' by writing it as `/:/foo:'.
2499
2500Emacs uses this new construct automatically when necessary, such as
2501when you start it with a working directory whose name might otherwise
2502be taken to be magic.
2503
2504** There is a new command M-x grep-find which uses find to select
2505files to search through, and grep to scan them. The output is
2506available in a Compile mode buffer, as with M-x grep.
2507
2508M-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
2512suggest they are probably not needed in the long run.
2513
2514In Dired, * is now a prefix key for mark-related commands.
2515
2516new 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
2534saves the new mail in the file RMAILOSE.n, where n is an integer
2535chosen to make a unique name. This way, Rmail will not keep crashing
2536each time you run it.
2537
2538*** In Rmail, the variable rmail-summary-line-count-flag now controls
2539whether 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
2542messages) now take repeat counts as arguments. A negative argument
2543means to move in the opposite direction.
2544
2545*** In Rmail, the t command now takes an optional argument which lets
2546you 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
2549just the body of the current message into a file, without the headers.
2550It takes the file name from the message subject, by default, but you
2551can edit that file name in the minibuffer before it is actually used
2552for 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
2559Gnus.
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
2565article 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
2574are 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.
2582See `gnus-signature-separator' and `gnus-signature-limit'.
2583
2584*** Summary pick mode has been made to look more nn-like.
2585Line numbers are displayed and the `.' command can be
2586used to pick articles.
2587
2588*** Commands for moving the .newsrc.eld from one server to
2589another have been added.
2590
2591 `M-x gnus-change-server'
2592
2593*** A way to specify that "uninteresting" fields be suppressed when
2594generating 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
2610Date is normalized to compact ISO 8601 format first.
2611
2612*** A new command has been added to remove all data on articles from
2613the 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
2623even 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
2632sorting 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
2651from 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
2658the following code, for instance, in your .emacs.
2659
2660 (add-hook 'gnus-startup-hook 'gnus-mule-initialize)
2661
2662Then, when you start Gnus, it will decode non-ASCII text automatically
2663and show appropriate characters. (Note: if you are using gnus-mime
2664from the SEMI package, formerly known as TM, you should NOT add this
2665hook to gnus-startup-hook; gnus-mime has its own method of handling
2666this issue.)
2667
2668Since it is impossible to distinguish all coding systems
2669automatically, you may need to specify a choice of coding system for a
2670particular news group. This can be done by:
2671
2672 (gnus-mule-add-group NEWSGROUP 'CODING-SYSTEM)
2673
2674Here NEWSGROUP should be a string which names a newsgroup or a tree
2675of newsgroups. If NEWSGROUP is "XXX.YYY", all news groups under
2676"XXX.YYY" (including "XXX.YYY.ZZZ") will use the specified coding
2677system. CODING-SYSTEM specifies which coding system to use (for both
2678for reading and posting).
2679
2680CODING-SYSTEM can also be a cons cell of the form
2681 (READ-CODING-SYSTEM . POST-CODING-SYSTEM)
2682Then READ-CODING-SYSTEM is used when you read messages from the
2683newsgroups, while POST-CODING-SYSTEM is used when you post messages
2684there.
2685
2686Emacs knows the right coding systems for certain newsgroups by
2687default. 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
2695When you reply by mail to an article, these settings are ignored;
2696the 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)
2701code, you may want to make the CC Mode style variables have global
2702values so that you can set them directly in your .emacs file. To do
2703this, set c-style-variables-are-local-p to nil in your .emacs file.
2704Note that this only takes effect if you do it *before* cc-mode.el is
2705loaded.
2706
2707If you typically edit more than one style of C (or C++, Objective-C,
2708Java) code in a single Emacs session, you may want to make the CC Mode
2709style variables have buffer local values. By default, all buffers
2710share the same style variable settings; to make them buffer local, set
2711c-style-variables-are-local-p to t in your .emacs file. Note that you
2712must do this *before* CC Mode is loaded.
2713
2714*** The new variable c-indentation-style holds the C style name
2715of the current buffer.
2716
2717*** The variable c-block-comments-indent-p has been deleted, because
2718it is no longer necessary. C mode now handles all the supported styles
2719of 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
2722style that the Python developers like.
2723
2724*** There is a new c-cleanup-list option: brace-elseif-brace.
2725This says to put ...} else if (...) {... on one line,
2726just 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
2731name, it retrieves the *latest* versions of all files in the current
2732directory and its subdirectories (aside from files already locked).
2733
2734This feature is useful if your RCS directory is a link to a common
2735master directory, and you want to pick up changes made by other
2736developers.
2737
2738You can do the same thing for an individual file by typing C-u C-x C-q
2739RET in a buffer visiting that file.
2740
2741*** VC can now handle files under CVS that are being "watched" by
2742other developers. Such files are made read-only by CVS. To get a
2743writable copy, type C-x C-q in a buffer visiting such a file. VC then
2744calls "cvs edit", which notifies the other developers of it.
2745
2746*** vc-version-diff (C-u C-x v =) now suggests reasonable defaults for
2747version 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
2752subclasses of holidays for ranges of years. Related menu items allow
2753you do this for the year of the selected date, or the
2754following/previous years.
2755
2756*** There is now support for the Baha'i calendar system. Use `pb' in
2757the *Calendar* buffer to display the current Baha'i date. The Baha'i
2758calendar, or "Badi calendar" is a system of 19 months with 19 days
2759each, and 4 intercalary days (5 during a Gregorian leap year). The
2760calendar begins May 23, 1844, with each of the months named after a
2761supposed attribute of God.
2762
2763** ps-print changes
2764
2765There are some new user variables and subgroups for customizing the page
2766layout.
2767
2768*** Headers & Footers (subgroup)
2769
2770Some printer systems print a header page and force the first page to
2771be printed on the back of the header page when using duplex. If your
2772printer system has this behavior, set variable
2773`ps-banner-page-when-duplexing' to t.
2774
2775If variable `ps-banner-page-when-duplexing' is non-nil, it prints a
2776blank page as the very first printed page. So, it behaves as if the
2777very first character of buffer (or region) were a form feed ^L (\014).
2778
2779The variable `ps-spool-config' specifies who is responsible for
2780setting 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
2792The variable `ps-spool-tumble' specifies how the page images on
2793opposite sides of a sheet are oriented with respect to each other. If
2794`ps-spool-tumble' is nil, ps-print produces output suitable for
2795bindings on the left or right. If `ps-spool-tumble' is non-nil,
2796ps-print produces output suitable for bindings at the top or bottom.
2797This variable takes effect only if `ps-spool-duplex' is non-nil.
2798The default value is nil.
2799
2800The variable `ps-header-frame-alist' specifies a header frame
2801properties 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
2823Any other property is ignored.
2824
2825Don't change this alist directly; instead use Custom, or the
2826`ps-value', `ps-get', `ps-put' and `ps-del' functions (see there for
2827documentation).
2828
2829Ps-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
2834controlling headers.
2835
2836*** Color management (subgroup)
2837
2838If `ps-print-color-p' is non-nil, the buffer's text will be printed in
2839color.
2840
2841*** Face Management (subgroup)
2842
2843If you need to print without worrying about face background colors,
2844set the variable `ps-use-face-background' which specifies if face
2845background 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
2853The variable `ps-n-up-printing' specifies the number of pages per
2854sheet of paper.
2855
2856The variable `ps-n-up-margin' specifies the margin in points (pt)
2857between the sheet border and the n-up printing.
2858
2859If variable `ps-n-up-border-p' is non-nil, a border is drawn around
2860each page.
2861
2862The variable `ps-n-up-filling' specifies how the page matrix is filled
2863on 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
2882Any other value is treated as `left-top'.
2883
2884*** Zebra stripes (subgroup)
2885
2886The variable `ps-zebra-color' controls the zebra stripes grayscale or
2887RGB color.
2888
2889The variable `ps-zebra-stripe-follow' specifies how zebra stripes
2890continue on next page. Visually, valid values are (the character `+'
2891to 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
2921Any other value is treated as `nil'.
2922
2923
2924*** Printer management (subgroup)
2925
2926The variable `ps-printer-name-option' determines the option used by
2927some 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
2929utility to print, for example, `ps-printer-name-option' should be set
2930to "-P".
2931
2932The variable `ps-manual-feed' indicates if the printer requires manual
2933paper feeding. If it's nil, automatic feeding takes place. If it's
2934non-nil, manual feeding takes place.
2935
2936The variable `ps-end-with-control-d' specifies whether C-d (\x04)
2937should be inserted at end of the generated PostScript. Non-nil means
2938do so.
2939
2940*** Page settings (subgroup)
2941
2942If variable `ps-warn-paper-type' is nil, it's *not* treated as an
2943error if the PostScript printer doesn't have a paper with the size
2944indicated by `ps-paper-type'; the default paper size will be used
2945instead. If `ps-warn-paper-type' is non-nil, an error is signaled if
2946the PostScript printer doesn't support a paper with the size indicated
2947by `ps-paper-type'. This is used when `ps-spool-config' is set to
2948`setpagedevice'.
2949
2950The variable `ps-print-upside-down' determines the orientation for
2951printing pages: nil means `normal' printing, non-nil means
2952`upside-down' printing (that is, the page is rotated by 180 degrees).
2953
2954The variable `ps-selected-pages' specifies which pages to print. If
2955it's nil, all pages are printed. If it's a list, list elements may be
2956integers specifying a single page to print, or cons cells (FROM . TO)
2957specifying to print from page FROM to TO. Invalid list elements, that
2958is integers smaller than one, or elements whose FROM is greater than
2959its TO, are ignored.
2960
2961The variable `ps-even-or-odd-pages' specifies how to print even/odd
2962pages. 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
2980Any other value is treated as nil.
2981
2982If you set `ps-selected-pages' (see there for documentation), pages
2983are 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
2988and 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
3009The variable `ps-error-handler-message' specifies where error handler
3010messages should be sent.
3011
3012It is also possible to add a user-defined PostScript prologue code in
3013front of all generated prologue code by setting the variable
3014`ps-user-defined-prologue'.
3015
3016The variable `ps-line-number-font' specifies the font for line numbers.
3017
3018The variable `ps-line-number-font-size' specifies the font size in
3019points for line numbers.
3020
3021The variable `ps-line-number-color' specifies the color for line
3022numbers. See `ps-zebra-color' for documentation.
3023
3024The variable `ps-line-number-step' specifies the interval in which
3025line numbers are printed. For example, if `ps-line-number-step' is set
3026to 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
3036Valid values are:
3037
3038integer 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
3045Any other value is treated as `zebra'.
3046
3047The variable `ps-line-number-start' specifies the starting point in
3048the 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
30503, 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
3064The variable `ps-postscript-code-directory' specifies the directory
3065where the PostScript prologue file used by ps-print is found.
3066
3067The variable `ps-line-spacing' determines the line spacing in points,
3068for ordinary text, when generating PostScript (similar to
3069`ps-font-size').
3070
3071The variable `ps-paragraph-spacing' determines the paragraph spacing,
3072in points, for ordinary text, when generating PostScript (similar to
3073`ps-font-size').
3074
3075The variable `ps-paragraph-regexp' specifies the paragraph delimiter.
3076
3077The variable `ps-begin-cut-regexp' and `ps-end-cut-regexp' specify the
3078start 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
3083C++, ; 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
3088in the file if `hs-hide-comments-when-hiding-all' is set.
3089
3090*** The new function `hs-hide-initial-comment' hides the comments at
3091the beginning of the files. Finally those huge RCS logs don't stay in your
3092way! This is run by default when entering the `hs-minor-mode'.
3093
3094*** Now uses overlays instead of `selective-display', so is more
3095robust 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
3100to show only the beginning of a block when it is hidden. See the
3101documentation 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
3106filled to the current fill-column. This behavior is now independent
3107of the size of the window. When you save the file, the fill-column in
3108use is stored as well, so that the whole buffer need not be refilled
3109the next time unless the fill-column is different.
3110
3111*** use-hard-newlines is now a minor mode. When it is enabled, Emacs
3112distinguishes between hard and soft newlines, and treats hard newlines
3113as paragraph boundaries. Otherwise all newlines inserted are marked
3114as soft, and paragraph boundaries are determined solely from the text.
3115
3116** Font Lock mode
3117
3118*** Custom support
3119
3120The variables font-lock-face-attributes, font-lock-display-type and
3121font-lock-background-mode are now obsolete; the recommended way to specify
3122the faces to use for Font Lock mode is with M-x customize-group on the new
3123custom 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
3125consider converting from setting that variable to using M-x customize.
3126
3127You can still use X resources to specify Font Lock face appearances.
3128
3129*** Maximum decoration
3130
3131Fontification now uses the maximum level of decoration supported by
3132default. Previously, fontification used a mode-specific default level
3133of decoration, which is typically the minimum level of decoration
3134supported. You can set font-lock-maximum-decoration to nil
3135to get the old behavior.
3136
3137*** New support
3138
3139Support is now provided for Java, Objective-C, AWK and SIMULA modes.
3140
3141Note that Font Lock mode can be turned on without knowing exactly what modes
3142support Font Lock mode, via the command global-font-lock-mode.
3143
3144*** Configurable support
3145
3146Support for C, C++, Objective-C and Java can be more easily configured for
3147additional types and classes via the new variables c-font-lock-extra-types,
3148c++-font-lock-extra-types, objc-font-lock-extra-types and, you guessed it,
3149java-font-lock-extra-types. These value of each of these variables should be a
3150list of regexps matching the extra type names. For example, the default value
3151of c-font-lock-extra-types is ("\\sw+_t") which means fontification follows the
3152convention that C type names end in _t. This results in slower fontification.
3153
3154Of course, you can change the variables that specify fontification in whatever
3155way you wish, typically by adding regexps. However, these new variables make
3156it easier to make specific and common changes for the fontification of types.
3157
3158*** Adding highlighting patterns to existing support
3159
3160You can use the new function font-lock-add-keywords to add your own
3161highlighting patterns, such as for project-local or user-specific constructs,
3162for any mode.
3163
3164For 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
3168in your ~/.emacs.
3169
3170*** New faces
3171
3172Font Lock now defines two new faces, font-lock-builtin-face and
3173font-lock-warning-face. These are intended to highlight builtin keywords,
3174distinct from a language's normal keywords, and objects that should be brought
3175to user attention, respectively. Various modes now use these new faces.
3176
3177*** Changes to fast-lock support mode
3178
3179The fast-lock package, one of the two Font Lock support modes, can now process
3180cache files silently. You can use the new variable fast-lock-verbose, in the
3181same way as font-lock-verbose, to control this feature.
3182
3183*** Changes to lazy-lock support mode
3184
3185The lazy-lock package, one of the two Font Lock support modes, can now fontify
3186according to the true syntactic context relative to other lines. You can use
3187the new variable lazy-lock-defer-contextually to control this feature. If
3188non-nil, changes to the buffer will cause subsequent lines in the buffer to be
3189refontified after lazy-lock-defer-time seconds of idle time. If nil, then only
3190the modified lines will be refontified; this is the same as the previous Lazy
3191Lock mode behavior and the behavior of Font Lock mode.
3192
3193This feature is useful in modes where strings or comments can span lines.
3194For example, if a string or comment terminating character is deleted, then if
3195this feature is enabled subsequent lines in the buffer will be correctly
3196refontified to reflect their new syntactic context. Previously, only the line
3197containing the deleted character would be refontified and you would have to use
3198the command M-o M-o (font-lock-fontify-block) to refontify some lines.
3199
3200As a consequence of this new feature, two other variables have changed:
3201
3202Variable `lazy-lock-defer-driven' is renamed `lazy-lock-defer-on-scrolling'.
3203Variable `lazy-lock-defer-time' can now only be a time, i.e., a number.
3204Buffer modes for which on-the-fly deferral applies can be specified via the
3205new variable `lazy-lock-defer-on-the-fly'.
3206
3207If you set these variables in your ~/.emacs, then you may have to change those
3208settings.
3209
3210** Ada mode changes.
3211
3212*** There is now better support for using find-file.el with Ada mode.
3213If you switch between spec and body, the cursor stays in the same
3214procedure (modulo overloading). If a spec has no body file yet, but
3215you try to switch to its body file, Ada mode now generates procedure
3216stubs.
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
3222The 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
3227is calculated from the indenting, not from syntactic constructs.
3228Outlining 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
3231formatting used in GNAT. It places two blanks after a comment start,
3232places one blank between a word end and an opening '(', and puts one
3233space 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
3238mode; therefore, the variables to customize it are the variables used
3239for Lisp mode which have names starting with `lisp-'. The variables
3240with names starting with `scheme-' which used to do this no longer
3241have any effect.
3242
3243If you want to use different indentation for Scheme and Lisp, this is
3244still possible, but now you must do it by adding a hook to
3245scheme-mode-hook, which could work by setting the `lisp-' indentation
3246variables as buffer-local variables.
3247
3248*** DSSSL mode is a variant of Scheme mode, for editing DSSSL scripts.
3249Use 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
3254USER are set, emacsclient now looks for a socket based on the UID
3255associated with the name. That is an emacsclient running as root
3256can connect to an Emacs server started by a non-root user.
3257
3258*** The emacsclient program now accepts an option --no-wait which tells
3259it to return immediately without waiting for you to "finish" the
3260buffer in Emacs.
3261
3262*** The new option --alternate-editor allows to specify an editor to
3263use if Emacs is not running. The environment variable
3264ALTERNATE_EDITOR can be used for the same effect; the command line
3265option takes precedence.
3266
3267** M-x eldoc-mode enables a minor mode in which the echo area
3268constantly 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,
3272which narrows the accessible parts of the buffer to just
3273the current defun.
3274
3275** Emacs now handles the `--' argument in the standard way; all
3276following arguments are treated as ordinary file names.
3277
3278** On MSDOS and Windows, the bookmark file is now called _emacs.bmk,
3279and the saved desktop file is now called _emacs.desktop (truncated if
3280necessary).
3281
3282** When you kill a buffer that visits a file,
3283if there are any registers that save positions in the file,
3284these register values no longer become completely useless.
3285If you try to go to such a register with C-x j, then you are
3286asked whether to visit the file again. If you say yes,
3287it visits the file and then goes to the same position.
3288
3289** When you visit a file that changes frequently outside Emacs--for
3290example, a log of output from a process that continues to run--it may
3291be useful for Emacs to revert the file without querying you whenever
3292you visit the file afresh with C-x C-f.
3293
3294You can request this behavior for certain files by setting the
3295variable revert-without-query to a list of regular expressions. If a
3296file's name matches any of these regular expressions, find-file and
3297revert-buffer revert the buffer without asking for permission--but
3298only if you have not edited the buffer text yourself.
3299
3300** set-default-font has been renamed to set-frame-font
3301since it applies only to the current frame.
3302
3303** In TeX mode, you can use the variable tex-main-file to specify the
3304file for tex-file to run TeX on. (By default, tex-main-file is nil,
3305and tex-file runs TeX on the current visited file.)
3306
3307This is useful when you are editing a document that consists of
3308multiple files. In each of the included files, you can set up a local
3309variable list which specifies the top-level file of your document for
3310tex-main-file. Then tex-file will run TeX on the whole document
3311instead of just the file you are editing.
3312
3313** RefTeX mode
3314
3315RefTeX mode is a new minor mode with special support for \label, \ref
3316and \cite macros in LaTeX documents. RefTeX distinguishes labels of
3317different environments (equation, figure, ...) and has full support for
3318multifile documents. To use it, select a buffer with a LaTeX document and
3319turn the mode on with M-x reftex-mode. Here are the main user commands:
3320
3321C-c ( reftex-label
3322 Creates a label semi-automatically. RefTeX is context sensitive and
3323 knows which kind of label is needed.
3324
3325C-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
3329C-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
3333C-c & reftex-view-crossref
3334 Views the cross reference of a \ref or \cite command near point.
3335
3336C-c = reftex-toc
3337 Shows a table of contents of the (multifile) document. From there you
3338 can quickly jump to every section.
3339
3340Under X, RefTeX installs a "Ref" menu in the menu bar, with additional
3341commands. Press `?' to get help when a prompt mentions this feature.
3342Full documentation and customization examples are in the file
3343reftex.el. You can use the finder to view the file documentation:
3344C-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
3351both the BibTeX program and Emacs BibTeX mode.
3352
3353*** Renamed variable bibtex-mode-user-optional-fields to
3354bibtex-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
3360entries to the BibTeX kill ring, from where they can be yanked back by
3361appropriate functions.
3362
3363*** New interactive functions for repositioning and marking of
3364entries. 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
3367been cleaned.
3368
3369*** New variable bibtex-field-delimiters, which replaces variables
3370bibtex-field-{left|right}-delimiter.
3371
3372*** New variable bibtex-entry-delimiters to determine how entries
3373shall be delimited.
3374
3375*** Allow preinitialization of fields. See documentation of
3376bibtex-user-optional-fields, bibtex-entry-field-alist, and
3377bibtex-include-OPTkey for details.
3378
3379*** Book and InBook entries require either an author or an editor
3380field. This is now supported by bibtex.el. Alternative fields are
3381prefixed with `ALT'.
3382
3383*** New variable bibtex-entry-format, which replaces variable
3384bibtex-clean-entry-zap-empty-opts and allows specification of many
3385formatting options performed on cleaning an entry (see variable
3386documentation).
3387
3388*** Even more control on how automatic keys are generated. See
3389documentation of bibtex-generate-autokey for details. Transcriptions
3390for foreign languages other than German are now handled, too.
3391
3392*** New boolean user option bibtex-comma-after-last-field to decide if
3393comma should be inserted at end of last field.
3394
3395*** New boolean user option bibtex-align-at-equal-sign to determine if
3396alignment should be made at left side of field contents or at equal
3397signs. 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
3404from alien sources.
3405
3406*** New function bibtex-complete-key (similar to bibtex-complete-string)
3407to complete prefix to a key defined in buffer. Mainly useful in
3408crossref entries.
3409
3410*** New function bibtex-count-entries to count entries in buffer or
3411region.
3412
3413*** Added support for imenu.
3414
3415*** The function `bibtex-validate' now checks current region instead
3416of 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
3421from `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
3428functions add-untranslated-filesystem and remove-untranslated-filesystem.
3429Each of these functions takes the name of a drive letter or directory
3430as an argument.
3431
3432When a filesystem is added as untranslated, all files on it are read
3433and 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),
3438Lynx 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
3440non-remote-controlled browsers (browse-url-generic) and associated
3441customization variables.
3442
3443*** New commands `browse-url-of-region' and `browse-url'.
3444
3445*** URLs marked up with <URL:...> (RFC1738) work if broken across
3446lines. 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
3452pops up the Info file for this command.
3453
3454*** There is now a variable, ediff-autostore-merges, which controls whether
3455the result of a merge is saved in a file. By default, this is done only when
3456merge is done from a session group (eg, when merging files in two different
3457directories).
3458
3459*** Since Emacs 19.31 (this hasn't been announced before), Ediff can compare
3460and merge groups of files residing in different directories, or revisions of
3461files in the same directory.
3462
3463*** Since Emacs 19.31, Ediff can apply multi-file patches interactively.
3464The patches must be in the context format or GNU unified format. (The bug
3465related 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
3474Viper 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
3478color when Viper is in insert state.
3479*** If search lands the cursor near the top or the bottom of the window,
3480Viper pulls the window up or down to expose more context. The variable
3481viper-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
3486default. The resulting tags files are inflated by 30% on average.
3487Use --no-globals to turn this feature off. Etags can also tag
3488variables which are members of structure-like constructs, but it does
3489not 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"
3494constructs are tagged. Files are recognized by the extension .java.
3495
3496*** Etags can now handle programs written in Postscript. Files are
3497recognized by the extensions .ps and .pdb (Postscript with C syntax).
3498In Postscript, tags are lines that start with a slash.
3499
3500*** Etags now handles Objective C and Objective C++ code. The usual C and
3501C++ tags are recognized in these languages; in addition, etags
3502recognizes special Objective C syntax for classes, class categories,
3503methods 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
3507column 8 and ends in a full stop, i.e. anything that could be a
3508paragraph name.
3509
3510*** Regexps in Etags now support intervals, as in ed or grep. The syntax of
3511an interval is \{M,N\}, and it means to match the preceding expression
3512at least M times and as many as N times.
3513
3514** The format for specifying a custom format for time-stamp to insert
3515in files has changed slightly.
3516
3517With the new enhancements to the functionality of format-time-string,
3518time-stamp-format will change to be eventually compatible with it.
3519This conversion is being done in two steps to maintain compatibility
3520with old time-stamp-format values.
3521
3522In the new scheme, alternate case is signified by the number-sign
3523(`#') modifier, rather than changing the case of the format character.
3524This feature is as yet incompletely implemented for compatibility
3525reasons.
3526
3527In the old time-stamp-format, all numeric fields defaulted to their
3528natural width. (With format-time-string, each format has a
3529fixed-width default.) In this version, you can specify the colon
3530(`:') modifier to a numeric conversion to mean "give me the historical
3531time-stamp-format width default." Do not use colon if you are
3532specifying an explicit width, as in "%02d".
3533
3534Numbers are no longer truncated to the requested width, except in the
3535case of "%02y", which continues to give a two-digit year. Digit
3536truncation probably wasn't being used for anything else anyway.
3537
3538The new formats will work with old versions of Emacs. New formats are
3539being recommended now to allow time-stamp-format to change in the
3540future to be compatible with format-time-string. The new forms being
3541recommended now will continue to work then.
3542
3543See the documentation string for the variable time-stamp-format for
3544details.
3545
3546** There are some additional major modes:
3547
3548dcl-mode, for editing VMS DCL files.
3549m4-mode, for editing files of m4 input.
3550meta-mode, for editing MetaFont and MetaPost source files.
3551
3552** In Shell mode, the command shell-copy-environment-variable lets you
3553copy the value of a specified environment variable from the subshell
3554into 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
3561be 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
3566in shell buffers.
3567
3568*** The new library elint.el provides for linting of Emacs Lisp code.
3569See the documentation for `elint-initialize', `elint-current-buffer'
3570and `elint-defun'.
3571
3572*** M-x expand-add-abbrevs defines a special kind of abbrev which is
3573meant for programming constructs. These abbrevs expand like ordinary
3574ones, when you type SPC, but only at the end of a line and not within
3575strings or comments.
3576
3577These abbrevs can act as templates: you can define places within an
3578abbrev for insertion of additional text. Once you expand the abbrev,
3579you can then use C-x a p and C-x a n to move back and forth to these
3580insertion points. Thus you can conveniently insert additional text
3581at these points.
3582
3583*** filecache.el remembers the location of files so that you
3584can visit them by short forms of their names.
3585
3586*** find-func.el lets you find the definition of the user-loaded
3587Emacs 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
3592switch-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
3601from the GCC error messages which indicate which instantiations are needed.
3602
3603*** mouse-copy.el provides a one-click copy and move feature.
3604You can drag a region with M-mouse-1, and it is automatically
3605inserted at point. M-Shift-mouse-1 deletes the text from its
3606original place after inserting the copy.
3607
3608*** mouse-drag.el lets you do scrolling by dragging Mouse-2
3609on the buffer.
3610
3611You click the mouse and move; that distance either translates into the
3612velocity to scroll (with mouse-drag-throw) or the distance to scroll
3613(with mouse-drag-drag). Horizontal scrolling is enabled when needed.
3614
3615Enable 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
3621mail 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.
3624It comes with a facility for communicating with an Octave subprocess.
3625
3626*** ogonek
3627
3628The ogonek package provides functions for changing the coding of
3629Polish diacritic characters in buffers. Codings known from various
3630platforms are supported such as ISO8859-2, Mazovia, IBM Latin2, and
3631TeX. For example, you can change the coding from Mazovia to
3632ISO8859-2. Another example is a change of coding from ISO8859-2 to
3633prefix notation (in which `/a' stands for the aogonek character, for
3634instance) and vice versa.
3635
3636To use this package load it using
3637 M-x load-library [enter] ogonek
3638Then, you may get an explanation by calling one of
3639 M-x ogonek-jak -- in Polish
3640 M-x ogonek-how -- in English
3641The info specifies the commands and variables provided as well as the
3642ways of customization in `.emacs'.
3643
3644*** Interface to ph.
3645
3646Emacs provides a client interface to CCSO Nameservers (ph/qi)
3647
3648The CCSO nameserver is used in many universities to provide directory
3649services about people. ph.el provides a convenient Emacs interface to
3650these servers.
3651
3652*** uce.el is useful for replying to unsolicited commercial email.
3653
3654*** vcursor.el implements a "virtual cursor" feature.
3655You can move the virtual cursor with special commands
3656while the real cursor does not move.
3657
3658*** webjump.el is a "hot list" package which you can set up
3659for visiting your favorite web sites.
3660
3661*** M-x winner-mode is a minor mode which saves window configurations,
3662so you can move back to other configurations that you have recently used.
3663
3664** movemail change
3665
3666Movemail no longer needs to be installed setuid root in order for POP
3667mail retrieval to function properly. This is because it no longer
3668supports the RPOP (reserved-port POP) protocol; instead, it uses the
3669user's POP password to authenticate to the mail server.
3670
3671This 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
3678Emacs handles three different conventions for representing
3679end-of-line: CRLF for MSDOS, LF for Unix and GNU, and CR (used on the
3680Macintosh). Emacs determines which convention is used in a specific
3681file based on the contents of that file (except for certain special
3682file names), and when it saves the file, it uses the same convention.
3683
3684To save the file and change the end-of-line convention, you can use
3685C-x RET f (set-buffer-file-coding-system) to specify a different
3686coding system for the buffer. Then, when you save the file, the newly
3687specified coding system will take effect. For example, to save with
3688LF, specify undecided-unix (or some other ...-unix coding system); to
3689save 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
3695Emacs 19 as well, as long as the source code runs in Emacs 19. And
3696vice versa: byte-compiled files made with Emacs 19 should also run in
3697Emacs 20, as long as the program itself works in Emacs 20.
3698
3699** Windows-specific functions and variables have been renamed
3700to start with w32- instead of win32-.
3701
3702In hacker language, calling something a "win" is a form of praise. We
3703don'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
3709evaluates 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
3712be used only for values that should not be changed whether by a program
3713or by the user.
3714
3715The 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
3723usual Lisp meanings. For example, caar returns the car of the car of
3724its 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
3733error if the integer is not a valid character code. These primitives
3734include 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
3738or .elc, to the file name. Thus, (require 'foo) will not use a file
3739whose name is just foo. It insists on foo.el or foo.elc.
3740
3741*** The `autoload' function, when the file name does not contain
3742either a directory name or the suffix .el or .elc, insists on
3743adding one of these suffixes.
3744
3745*** string-to-number now takes an optional second argument BASE
3746which specifies the base to use when converting an integer.
3747If BASE is omitted, base 10 is used.
3748
3749We have not implemented other radices for floating point numbers,
3750because 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.
3755You must load the `cl' library to define it.
3756
3757*** The new macro `with-current-buffer' lets you evaluate an expression
3758conveniently with a different current buffer. It looks like this:
3759
3760 (with-current-buffer BUFFER BODY-FORMS...)
3761
3762BUFFER is the expression that says which buffer to use.
3763BODY-FORMS say what to do in that buffer.
3764
3765*** The new primitive `save-current-buffer' saves and restores the
3766choice of current buffer, like `save-excursion', but without saving or
3767restoring the value of point or the mark. `with-current-buffer'
3768works using `save-current-buffer'.
3769
3770*** The new macro `with-temp-file' lets you do some work in a new buffer and
3771write the output to a specified file. Like `progn', it returns the value
3772of the last form.
3773
3774*** The new macro `with-temp-buffer' lets you do some work in a new buffer,
3775which is discarded after use. Like `progn', it returns the value of the
3776last form. If you wish to return the buffer contents, use (buffer-string)
3777as the last form.
3778
3779*** The new function split-string takes a string, splits it at certain
3780characters, and returns a list of the substrings in between the
3781matches.
3782
3783For example, (split-string "foo bar lose" " +") returns ("foo" "bar" "lose").
3784
3785*** The new macro with-output-to-string executes some Lisp expressions
3786with standard-output set up so that all output feeds into a string.
3787Then it returns that string.
3788
3789For example, if the current buffer name is `foo',
3790
3791(with-output-to-string
3792 (princ "The buffer is ")
3793 (princ (buffer-name)))
3794
3795returns "The buffer is foo".
3796
3797** Non-ASCII characters are now supported, if enable-multibyte-characters
3798is non-nil.
3799
3800These characters have character codes above 256. When inserted in the
3801buffer or stored in a string, they are represented as multibyte
3802characters that occupy several buffer positions each.
3803
3804*** When enable-multibyte-characters is non-nil, a single character in
3805a buffer or string can be two or more bytes (as many as four).
3806
3807Buffers and strings are still made up of unibyte elements;
3808character positions and string indices are always measured in bytes.
3809Therefore, moving forward one character can increase the buffer
3810position by 2, 3 or 4. The function forward-char moves by whole
3811characters, and therefore is no longer equivalent to
3812 (lambda (n) (goto-char (+ (point) n))).
3813
3814ASCII characters (codes 0 through 127) are still single bytes, always.
3815Sequences of byte values 128 through 255 are used to represent
3816non-ASCII characters. These sequences are called "multibyte
3817characters".
3818
3819The first byte of a multibyte character is always in the range 128
3820through 159 (octal 0200 through 0237). These values are called
3821"leading codes". The second and subsequent bytes are always in the
3822range 160 through 255 (octal 0240 through 0377). The first byte, the
3823leading 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
3827multibyte character. Likewise, delete-char always deletes a
3828character, which may be more than one buffer position.
3829
3830This means that some Lisp programs, which assume that a character is
3831always one buffer position, need to be changed.
3832
3833However, all ASCII characters are always one buffer position.
3834
3835*** The regexp [\200-\377] no longer matches all non-ASCII characters,
3836because when enable-multibyte-characters is non-nil, these characters
3837have codes that are not in the range octal 200 to octal 377. However,
3838the regexp [^\000-\177] does match all non-ASCII characters,
3839guaranteed.
3840
3841*** The function char-boundary-p returns non-nil if position POS is
3842between two characters in the buffer (not in the middle of a
3843character).
3844
3845When 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
3857more than the number of characters.
3858
3859You can include a multibyte character in a string constant by writing
3860it literally. You can also represent it with a hex escape,
3861\xNNNNNNN..., using as many digits as necessary. Any character which
3862is not a valid hex digit terminates this construct. If you want to
3863follow it with a character that is a hex digit, write backslash and
3864newline in between; that will terminate the hex escape.
3865
3866*** The function concat-chars takes arguments which are characters
3867and 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
3871counts from zero. If INDEX is at a position in the middle of a
3872character, sref signals an error.
3873
3874*** The function chars-in-string returns the number of characters
3875in a string. This is less than the length of the string, if the
3876string contains multibyte characters (the length counts bytes).
3877
3878*** The function chars-in-region returns the number of characters
3879in a region from BEG to END. This is less than (- END BEG) if the
3880region contains multibyte characters (the length counts bytes).
3881
3882*** The function string-to-list converts a string to a list of
3883the characters in it. string-to-vector converts a string
3884to a vector of the characters in it.
3885
3886*** The function store-substring alters part of the contents
3887of a string. You call it as follows:
3888
3889 (store-substring STRING IDX OBJ)
3890
3891This says to alter STRING, by storing OBJ starting at index IDX in
3892STRING. OBJ may be either a character or a (smaller) string.
3893This function really does alter the contents of STRING.
3894Since it is impossible to change the length of an existing string,
3895it 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,
3898if 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,
3901if it were displayed in the current buffer and the selected window.
3902
3903*** truncate-string-to-width shortens a string, if necessary,
3904to fit within a certain number of columns. (Of course, it does
3905not alter the string that you give it; it returns a new string
3906which contains all or just part of the existing string.)
3907
3908(truncate-string-to-width STR END-COLUMN &optional START-COLUMN PADDING)
3909
3910This returns the part of STR up to column END-COLUMN.
3911
3912The optional argument START-COLUMN specifies the starting column.
3913If this is non-nil, then the first START-COLUMN columns of the string
3914are not included in the resulting value.
3915
3916The optional argument PADDING, if non-nil, is a padding character to be added
3917at the beginning and end the resulting string, to extend it to exactly
3918WIDTH columns. If PADDING is nil, that means do not pad; then, if STRING
3919is narrower than WIDTH, the value is equal to STRING.
3920
3921If PADDING and START-COLUMN are both non-nil, and if there is no clean
3922place in STRING that corresponds to START-COLUMN (because one
3923character extends across that column), then the padding character
3924PADDING is added one or more times at the beginning of the result
3925string, so that its columns line up as if it really did start at
3926column START-COLUMN.
3927
3928*** When the functions in the list after-change-functions are called,
3929the third argument is the number of bytes in the pre-change text, not
3930necessarily the number of characters. It is, in effect, the
3931difference in buffer position between the beginning and the end of the
3932changed text, before the change.
3933
3934*** The characters Emacs uses are classified in various character
3935sets, each of which has a name which is a symbol. In general there is
3936one 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
3943set that the character belongs to. (The value is a symbol.)
3944
3945**** split-char, given a character code, returns a list containing the
3946name of the character set, followed by one or two byte-values
3947which identify the character within that character set.
3948
3949**** make-char, given a character set name and one or two subsequent
3950byte-values, constructs a character code. This is roughly the
3951opposite of split-char.
3952
3953**** find-charset-region returns a list of the character sets
3954of all the characters between BEG and END.
3955
3956**** find-charset-string returns a list of the character sets
3957of all the characters in a string.
3958
3959*** Here are the Lisp facilities for working with coding systems
3960and specifying coding systems.
3961
3962**** The function coding-system-list returns a list of all coding
3963system names (symbols). With optional argument t, it returns a list
3964of all distinct base coding systems, not including variants.
3965(Variant coding systems are those like latin-1-dos, latin-1-unix
3966and latin-1-mac which specify the end-of-line conversion as well
3967as what to do about code conversion.)
3968
3969**** coding-system-p tests a symbol to see if it is a coding system
3970name. It returns t if so, nil if not.
3971
3972**** file-coding-system-alist specifies which coding systems to use
3973for certain file names. It works like network-coding-system-alist,
3974except that the PATTERN is matched against the file name.
3975
3976Each element has the format (PATTERN . VAL), where PATTERN determines
3977which file names the element applies to. PATTERN should be a regexp
3978to match against a file name.
3979
3980VAL is a coding system, a cons cell containing two coding systems, or
3981a function symbol. If VAL is a coding system, it is used for both
3982decoding what received from the network stream and encoding what sent
3983to the network stream. If VAL is a cons cell containing two coding
3984systems, the car specifies the coding system for decoding, and the cdr
3985specifies the coding system for encoding.
3986
3987If VAL is a function symbol, the function must return a coding system
3988or a cons cell containing two coding systems, which is used as above.
3989
3990**** The variable network-coding-system-alist specifies
3991the coding system to use for network sockets.
3992
3993Each element has the format (PATTERN . VAL), where PATTERN determines
3994which network sockets the element applies to. PATTERN should be
3995either a port number or a regular expression matching some network
3996service names.
3997
3998VAL is a coding system, a cons cell containing two coding systems, or
3999a function symbol. If VAL is a coding system, it is used for both
4000decoding what received from the network stream and encoding what sent
4001to the network stream. If VAL is a cons cell containing two coding
4002systems, the car specifies the coding system for decoding, and the cdr
4003specifies the coding system for encoding.
4004
4005If VAL is a function symbol, the function must return a coding system
4006or a cons cell containing two coding systems, which is used as above.
4007
4008**** process-coding-system-alist specifies which coding systems to use
4009for certain subprocess. It works like network-coding-system-alist,
4010except that the PATTERN is matched against the program name used to
4011start the subprocess.
4012
4013**** The variable default-process-coding-system specifies the coding
4014systems to use for subprocess (and net connection) input and output,
4015when nothing else specifies what to do. The value is a cons cell
4016(OUTPUT-CODING . INPUT-CODING). OUTPUT-CODING applies to output
4017to the subprocess, and INPUT-CODING applies to input from it.
4018
4019**** The variable coding-system-for-write, if non-nil, specifies the
4020coding system to use for writing a file, or for output to a synchronous
4021subprocess.
4022
4023It also applies to any asynchronous subprocess or network connection,
4024but in a different way: the value of coding-system-for-write when you
4025start the subprocess or connection affects that subprocess or
4026connection permanently or until overridden.
4027
4028The variable coding-system-for-write takes precedence over
4029file-coding-system-alist, process-coding-system-alist and
4030network-coding-system-alist, and all other methods of specifying a
4031coding system for output. But most of the time this variable is nil.
4032It exists so that Lisp programs can bind it to a specific coding
4033system for one operation at a time.
4034
4035**** coding-system-for-read applies similarly to input from
4036files, subprocesses or network connections.
4037
4038**** The function process-coding-system tells you what
4039coding systems(s) an existing subprocess is using.
4040The value is a cons cell,
4041 (DECODING-CODING-SYSTEM . ENCODING-CODING-SYSTEM)
4042where DECODING-CODING-SYSTEM is used for decoding output from
4043the subprocess, and ENCODING-CODING-SYSTEM is used for encoding
4044input to the subprocess.
4045
4046**** The function set-process-coding-system can be used to
4047change the coding systems in use for an existing subprocess.
4048
4049** Emacs has a new facility to help users manage the many
4050customization options. To make a Lisp program work with this facility,
4051you need to use the new macros defgroup and defcustom.
4052
4053You use defcustom instead of defvar, for defining a user option
4054variable. The difference is that you specify two additional pieces of
4055information (usually): the "type" which says what values are
4056legitimate, and the "group" which specifies the hierarchy for
4057customization.
4058
4059Thus, instead of writing
4060
4061 (defvar foo-blurgoze nil
4062 "*Non-nil means that foo will act very blurgozely.")
4063
4064you 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
4071The type `boolean' means that this variable has only
4072two meaningful states: nil and non-nil. Other type values
4073describe other possibilities; see the manual for Custom
4074for a description of them.
4075
4076The "group" argument is used to specify a group which the option
4077should belong to. You define a new group like this:
4078
4079 (defgroup ispell nil
4080 "Spell checking using Ispell."
4081 :group 'processes)
4082
4083The "group" argument in defgroup specifies the parent group. The root
4084group is called `emacs'; it should not contain any variables itself,
4085but only other groups. The immediate subgroups of `emacs' correspond
4086to the keywords used by C-h p. Under these subgroups come
4087second-level subgroups that belong to individual packages.
4088
4089Each Emacs package should have its own set of groups. A simple
4090package should have just one group; a more complex package should
4091have a hierarchy of its own groups. The sole or root group of a
4092package should be a subgroup of one or more of the "keyword"
4093first-level subgroups.
4094
4095** New `widget' library for inserting UI components in buffers.
4096
4097This library, used by the new custom library, is documented in a
4098separate manual that accompanies Emacs.
4099
4100** easy-mmode
4101
4102The easy-mmode package provides macros and functions that make
4103developing minor modes easier. Roughly, the programmer has to code
4104only the functionality of the minor mode. All the rest--toggles,
4105predicate, 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
4112text property.
4113
4114*** The new functions next-char-property-change and
4115previous-char-property-change scan through the buffer looking for a
4116place where either a text property or an overlay might change. The
4117functions take two arguments, POSITION and LIMIT. POSITION is the
4118starting position for the scan. LIMIT says where to stop the scan.
4119
4120If no property change is found before LIMIT, the value is LIMIT. If
4121LIMIT is nil, scan goes to the beginning or end of the accessible part
4122of the buffer. If no property change is found, the value is the
4123position of the beginning or end of the buffer.
4124
4125*** In the `local-map' text property or overlay property, the property
4126value can now be a symbol whose function definition is a keymap. This
4127is 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
4132hidden by an overlay with a invisible property, when the search match
4133is inside that portion of the buffer. To enable this the overlay
4134should have a isearch-open-invisible property which is a function that
4135would be called having the overlay as an argument, the function should
4136make the overlay visible.
4137
4138During incremental search the overlays are shown by modifying the
4139invisible and intangible properties, if beside this more actions are
4140needed the overlay should have a isearch-open-invisible-temporary
4141which is a function. The function is called with 2 arguments: one is
4142the overlay and the second is nil when it should show the overlay and
4143t when it should hide it.
4144
4145*** add-to-invisibility-spec, remove-from-invisibility-spec
4146
4147Modes that use overlays to hide portions of a buffer should set the
4148invisible property of the overlay to the mode's name (or another symbol)
4149and modify the `buffer-invisibility-spec' to include that symbol.
4150Use `add-to-invisibility-spec' and `remove-from-invisibility-spec' to
4151manipulate the `buffer-invisibility-spec'.
4152Here 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
4172obey syntax information specified by text properties, if the variable
4173`parse-sexp-lookup-properties' is non-nil.
4174
4175If the value of `parse-sexp-lookup-properties' is nil, the behavior
4176is as before: the syntax-table of the current buffer is always
4177used to determine the syntax of the character at the position.
4178
4179When `parse-sexp-lookup-properties' is non-nil, the syntax of a
4180character 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
4198value of `parse-sexp-lookup-properties'. The details are the same as
4199for the syntax-directed buffer-scan functions.
4200
4201*** There are two new syntax-codes, `!' and `|' (numeric values 14
4202and 15). A character with a code `!' starts a comment which is ended
4203only by another character with the same code (unless quoted). A
4204character with a code `|' starts a string which is ended only by
4205another character with the same code (unless quoted).
4206
4207These codes are mainly meant for use as values of the `syntax-table'
4208text property.
4209
4210*** The function `parse-partial-sexp' has new semantics for the sixth
4211arg COMMENTSTOP. If it is `syntax-table', parse stops after the start
4212of 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
4216element: the character address of the start of last comment or string;
4217nil if none. The fourth and eighth elements have special values if the
4218string/comment is started by a "!" or "|" syntax-code.
4219
4220*** Since new features of `parse-partial-sexp' allow a complete
4221syntactic 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
4227if it does not support displaying on a device that supports faces.
4228
4229*** The function face-documentation returns the documentation string
4230of 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.
4233set-face-bold-p sets that flag.
4234
4235*** The function face-italic-p returns t if a face should be italic.
4236set-face-italic-p sets that flag.
4237
4238*** You can now specify foreground and background colors for text
4239by adding elements of the form (foreground-color . COLOR-NAME)
4240and (background-color . COLOR-NAME) to the list of faces in
4241the `face' property (either the character's text property or an
4242overlay property).
4243
4244This means that you no longer need to create named faces to use
4245arbitrary colors in a Lisp package.
4246
4247** Changes in file-handling functions
4248
4249*** File-access primitive functions no longer discard an extra redundant
4250directory name from the beginning of the file name. In other words,
4251they no longer do anything special with // or /~. That conversion
4252is now done only in substitute-in-file-name.
4253
4254This makes it possible for a Lisp program to open a file whose name
4255begins with ~.
4256
4257*** If copy-file is unable to set the date of the output file,
4258it now signals an error with the condition file-date-error.
4259
4260*** The inode number returned by file-attributes may be an integer (if
4261the number fits in a Lisp integer) or a list of integers.
4262
4263*** insert-file-contents can now read from a special file,
4264as long as the arguments VISIT and REPLACE are nil.
4265
4266*** The RAWFILE arg to find-file-noselect, if non-nil, now suppresses
4267character code conversion as well as other things.
4268
4269Meanwhile, 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
4273environment variable to decide which directory to put them in.
4274
4275*** interpreter-mode-alist elements now specify regexps
4276instead of constant strings.
4277
4278*** expand-file-name no longer treats `//' or `/~' specially. It used
4279to delete all the text of a file name up through the first slash of
4280any `//' or `/~' sequence. Now it passes them straight through.
4281
4282substitute-in-file-name continues to treat those sequences specially,
4283in the same way as before.
4284
4285*** The variable `format-alist' is more general now.
4286The FROM-FN and TO-FN in a format definition can now be strings
4287which 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
4290error if that fails. If the open succeeds, access-file does nothing
4291else, and returns nil.
4292
4293*** The function insert-directory now signals an error if the specified
4294directory cannot be listed.
4295
4296** Changes in minibuffer input
4297
4298*** The functions read-buffer, read-variable, read-command, read-string
4299read-file-name, read-from-minibuffer and completing-read now take an
4300additional argument which specifies the default value. If this
4301argument is non-nil, it should be a string; that string is used in two
4302ways:
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,
4308read-no-blanks-input and completing-read now take an additional
4309argument INHERIT-INPUT-METHOD. If this is non-nil, then the
4310minibuffer inherits the current input method and the setting of
4311enable-multibyte-characters from the previously current buffer.
4312
4313In an interactive spec, you can use M instead of s to read an
4314argument in this way.
4315
4316*** All minibuffer input functions discard text properties
4317from the text you enter in the minibuffer, unless the variable
4318minibuffer-allow-text-properties is non-nil.
4319
4320** Echo area features
4321
4322*** Clearing the echo area now runs the normal hook
4323echo-area-clear-hook. Note that the echo area can be used while the
4324minibuffer is active; in that case, the minibuffer is still active
4325after the echo area is cleared.
4326
4327*** The function current-message returns the message currently displayed
4328in 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
4333set 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
4336received so far from the terminal. It does not count those generated
4337by keyboard macros.
4338
4339** Frame-related changes
4340
4341*** make-frame runs the normal hook before-make-frame-hook just before
4342creating a frame, and just after creating a frame it runs the abnormal
4343hook after-make-frame-functions with the new frame as arg.
4344
4345*** The new hook window-configuration-change-hook is now run every time
4346the window configuration has changed. The frame whose configuration
4347has changed is the selected frame when the hook is run.
4348
4349*** Each frame now independently records the order for recently
4350selected buffers, in its buffer-list frame parameter, so that the
4351value of other-buffer is now based on the buffers recently displayed
4352in the selected frame.
4353
4354*** The value of the frame parameter vertical-scroll-bars
4355is now `left', `right' or nil. A non-nil value specifies
4356which 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
4361x-resource-class around a call to x-get-resource. The usual value of
4362x-resource-class is "Emacs", which is the correct value for Emacs.
4363
4364*** In menus, checkboxes and radio buttons now actually work.
4365The menu displays the current status of the box or button.
4366
4367*** The function x-list-fonts now takes an optional fourth argument
4368MAXIMUM which sets a limit on how many matching fonts to return.
4369A smaller value of MAXIMUM makes the function faster.
4370
4371If the only question is whether *any* font matches the pattern,
4372it is good to supply 1 for this argument.
4373
4374** Subprocess features
4375
4376*** A reminder: it is no longer necessary for subprocess filter
4377functions and sentinels to do save-match-data, because Emacs does this
4378automatically.
4379
4380*** The new function shell-command-to-string executes a shell command
4381and returns the output from the command as a string.
4382
4383*** The new function process-contact returns t for a child process,
4384and (HOSTNAME SERVICE) for a net connection.
4385
4386** An error in running pre-command-hook or post-command-hook
4387does 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
4390at the end of the keymap. If the keymap is a menu, this means it
4391goes after the other menu items.
4392
4393** If you have a program that makes several changes in the same area
4394of the buffer, you can use the macro combine-after-change-calls
4395around that Lisp code to make it faster when after-change hooks
4396are in use.
4397
4398The macro arranges to call the after-change functions just once for a
4399series of several changes--if that seems safe.
4400
4401Don't alter the variables after-change-functions and
4402after-change-function within the body of a combine-after-change-calls
4403form.
4404
4405** If you define an abbrev (with define-abbrev) whose EXPANSION
4406is not a string, then the abbrev does not expand in the usual sense,
4407but its hook is still run.
4408
4409** Normally, the Lisp debugger is not used (even if you have enabled it)
4410for errors that are handled by condition-case.
4411
4412If you set debug-on-signal to a non-nil value, then the debugger is called
4413regardless of whether there is a handler for the condition. This is
4414useful for debugging problems that happen inside of a condition-case.
4415
4416This mode of operation seems to be unreliable in other ways. Errors that
4417are normal and ought to be handled, perhaps in timers or process
4418filters, will instead invoke the debugger. So don't say you weren't
4419warned.
4420
4421** The new variable ring-bell-function lets you specify your own
4422way for Emacs to "ring the bell".
4423
4424** If run-at-time's TIME argument is t, the action is repeated at
4425integral multiples of REPEAT from the epoch; this is useful for
4426functions like display-time.
4427
4428** You can use the function locate-library to find the precise file
4429name 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
4432can be used from Lisp. Low-level entrance to and exit from view mode
4433is done by functions view-mode-enter and view-mode-exit.
4434
4435** batch-byte-compile-file now makes Emacs return a nonzero status code
4436if there is an error in compilation.
4437
4438** pop-to-buffer, switch-to-buffer-other-window and
4439switch-to-buffer-other-frame now accept an additional optional
4440argument NORECORD, much like switch-to-buffer. If it is non-nil,
4441they don't put the buffer at the front of the buffer list.
4442
4443** If your .emacs file leaves the *scratch* buffer non-empty,
4444Emacs does not display the startup message, so as to avoid changing
4445the *scratch* buffer.
4446
4447** The new function regexp-opt returns an efficient regexp to match a string.
4448The arguments are STRINGS and (optionally) PAREN. This function can be used
4449where regexp matching or searching is intensively used and speed is important,
4450e.g., in Font Lock mode.
4451
4452** The variable buffer-display-count is local to each buffer,
4453and is incremented each time the buffer is displayed in a window.
4454It starts at 0 when the buffer is created.
4455
4456** The new function compose-mail starts composing a mail message
4457using the user's chosen mail composition agent (specified with the
4458variable mail-user-agent). It has variants compose-mail-other-window
4459and compose-mail-other-frame.
4460
4461** The `user-full-name' function now takes an optional parameter which
4462can either be a number (the UID) or a string (the login name). The
4463full name of the specified user will be returned.
4464
4465** Lisp packages that load files of customizations, or any other sort
4466of user profile, should obey the variable init-file-user in deciding
4467where to find it. They should load the profile of the user name found
4468in that variable. If init-file-user is nil, meaning that the -q
4469option was used, then Lisp packages should not load the customization
4470files at all.
4471
4472** format-time-string now allows you to specify the field width
4473and type of padding. This works as in printf: you write the field
4474width as digits in the middle of a %-construct. If you start
4475the field width with 0, it means to pad with zeros.
4476
4477For example, %S normally specifies the number of seconds since the
4478minute; %03S means to pad this with zeros to 3 positions, %_3S to pad
4479with spaces to 3 positions. Plain %3S pads with zeros, because that
4480is 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
4486You can now specify a function to be run when selecting an
4487item from menu created by imenu.
4488
4489An 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
4491select one of those items.
4492
4493
4494----------------------------------------------------------------------
4495Copyright information:
4496
4497Copyright (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
4510Local variables:
4511mode: outline
4512paragraph-separate: "[ ]*$"
4513end:
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 @@
1GNU Emacs NEWS -- history of user-visible changes. 2006-05-31
2Copyright (C) 2000, 2001, 2002, 2003, 2006
3 Free Software Foundation, Inc.
4See the end for copying conditions.
5
6This 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
17been added.
18
19
20* Changes in Emacs 21.3
21
22** The obsolete C mode (c-mode.el) has been removed to avoid problems
23with Custom.
24
25** UTF-16 coding systems are available, encoding the same characters
26as mule-utf-8.
27
28** There is a new language environment for UTF-8 (set up automatically
29in UTF-8 locales).
30
31** Translation tables are available between equivalent characters in
32different Emacs charsets -- for instance `e with acute' coming from the
33Latin-1 and Latin-2 charsets. User options `unify-8859-on-encoding-mode'
34and `unify-8859-on-decoding-mode' respectively turn on translation
35between 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
39it and write it out again without edits, so it is not generally advisable.
40By 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
45If you want the old behavior, set selection-coding-system to
46compound-text, which may be significantly more efficient. Using
47compound-text-with-extensions seems to be necessary only for decoding
48text from applications under XFree86 4.2, whose behavior is actually
49contrary 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
64X applications can use `extended segments' to encode characters in
65compound text that belong to character sets which are not part of the
66list of approved standard encodings for X, e.g. Big5. To paste
67selections with such characters into Emacs, use the new coding system
68compound-text-with-extensions as the value of selection-coding-system.
69
70** The default values of `tooltip-delay' and `tooltip-hide-delay'
71were changed.
72
73** On terminals whose erase-char is ^H (Backspace), Emacs
74now uses normal-erase-is-backspace-mode.
75
76** When the *scratch* buffer is recreated, its mode is set from
77initial-major-mode, which normally is lisp-interaction-mode,
78instead of using default-major-mode.
79
80** The new option `Info-scroll-prefer-subnodes' causes Info to behave
81like the stand-alone Info reader (from the GNU Texinfo package) as far
82as 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
84visits the subnode pointed to by the first menu entry. If this option
85is nil, SPC scrolls to the end of the current node, and only then goes
86to the first menu item, like the stand-alone reader does.
87
88This change was already in Emacs 21.1, but wasn't advertised in the
89NEWS.
90
91
92* Lisp Changes in Emacs 21.2
93
94** The meanings of scroll-up-aggressively and scroll-down-aggressively
95have been interchanged, so that the former now controls scrolling up,
96and the latter now controls scrolling down.
97
98** The variable `compilation-parse-errors-filename-function' can
99be used to transform filenames found in compilation output.
100
101
102
103* Installation Changes in Emacs 21.1
104
105See the INSTALL file for information on installing extra libraries and
106fonts to take advantage of the new graphical features and extra
107charsets 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
114images and toolkit scrollbars. Use the --help option in `configure'
115to list them.
116
117** You can build a 64-bit Emacs for SPARC/Solaris systems which
118support 64-bit executables and also on Irix 6.5. This increases the
119maximum buffer size. See etc/MACHINES for instructions. Changes to
120build on other 64-bit systems should be straightforward modulo any
121necessary changes to unexec.
122
123** There is a new configure option `--disable-largefile' to omit
124Unix-98-style support for large files if that is available.
125
126** There is a new configure option `--without-xim' that instructs
127Emacs to not use X Input Methods (XIM), if these are available.
128
129** `movemail' defaults to supporting POP. You can turn this off using
130the --without-pop configure option, should that be necessary.
131
132** This version can be built for the Macintosh, but does not implement
133all of the new display features described below. The port currently
134lacks unexec, asynchronous processes, and networking support. See the
135"Emacs and the Mac OS" appendix in the Emacs manual, for the
136description of aspects specific to the Mac.
137
138** Note that the MS-Windows port does not yet implement various of the
139new display features described below.
140
141
142* Changes in Emacs 21.1
143
144** Emacs has a new redisplay engine.
145
146The new redisplay handles characters of variable width and height.
147Italic text can be used without redisplay problems. Fonts containing
148oversized characters, i.e. characters larger than the logical height
149of a font can be used. Images of various formats can be displayed in
150the text.
151
152** Emacs has a new face implementation.
153
154The new faces no longer fundamentally use X font names to specify the
155font. Instead, each face has several independent attributes--family,
156height, width, weight and slant--that it may or may not specify.
157These attributes can be merged from various faces, and then together
158specify a font.
159
160Faces are supported on terminals that can display color or fonts.
161These terminal capabilities are auto-detected. Details can be found
162under Lisp changes, below.
163
164** Emacs can display faces on TTY frames.
165
166Emacs automatically detects terminals that are able to display colors.
167Faces with a weight greater than normal are displayed extra-bright, if
168the terminal supports it. Faces with a weight less than normal and
169italic faces are displayed dimmed, if the terminal supports it.
170Underlined faces are displayed underlined if possible. Other face
171attributes such as `overline', `strike-through', and `box' are ignored
172on terminals.
173
174The command-line options `-fg COLOR', `-bg COLOR', and `-rv' are now
175supported on character terminals.
176
177Emacs automatically remaps all X-style color specifications to one of
178the colors supported by the terminal. This means you could have the
179same color customizations that work both on a windowed display and on
180a 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
186Emacs supports playing sound files on GNU/Linux and FreeBSD (Voxware
187driver and native BSD driver, a.k.a. Luigi's driver). Currently
188supported file formats are RIFF-WAVE (*.wav) and Sun Audio (*.au).
189You must configure Emacs with the option `--with-sound=yes' to enable
190sound support.
191
192** Emacs now resizes mini-windows if appropriate.
193
194If a message is longer than one line, or minibuffer contents are
195longer than one line, Emacs can resize the minibuffer window unless it
196is on a frame of its own. You can control resizing and the maximum
197minibuffer window size by setting the following variables:
198
199- User option: max-mini-window-height
200
201Maximum height for resizing mini-windows. If a float, it specifies a
202fraction of the mini-window frame's height. If an integer, it
203specifies a number of lines.
204
205Default is 0.25.
206
207- User option: resize-mini-windows
208
209How to resize mini-windows. If nil, don't resize. If t, always
210resize to fit the size of the text. If `grow-only', let mini-windows
211grow only, until they become empty, at which point they are shrunk
212again.
213
214Default is `grow-only'.
215
216** LessTif support.
217
218Emacs 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
223When Emacs is configured to use LessTif or Motif, reading a file name
224from a menu will pop up a file selection dialog if `use-dialog-box' is
225non-nil.
226
227** File selection dialog on MS-Windows is supported.
228
229When a file is visited by clicking File->Open, the MS-Windows version
230now pops up a standard file selection dialog where you can select a
231file to visit. File->Save As also pops up that dialog.
232
233** Toolkit scroll bars.
234
235Emacs now uses toolkit scroll bars if available. When configured for
236LessTif/Motif, it will use that toolkit's scroll bar. Otherwise, when
237configured for Lucid and Athena widgets, it will use the Xaw3d scroll
238bar if Xaw3d is available. You can turn off the use of toolkit scroll
239bars by specifying `--with-toolkit-scroll-bars=no' when configuring
240Emacs.
241
242When you encounter problems with the Xaw3d scroll bar, watch out how
243Xaw3d is compiled on your system. If the Makefile generated from
244Xaw3d's Imakefile contains a `-DNARROWPROTO' compiler option, and your
245Emacs system configuration file `s/your-system.h' does not contain a
246define for NARROWPROTO, you might consider adding it. Take
247`s/freebsd.h' as an example.
248
249Alternatively, if you don't have access to the Xaw3d source code, take
250a look at your system's imake configuration file, for example in the
251directory `/usr/X11R6/lib/X11/config' (paths are different on
252different systems). You will find files `*.cf' there. If your
253system's cf-file contains a line like `#define NeedWidePrototypes NO',
254add a `#define NARROWPROTO' to your Emacs system configuration file.
255
256The reason for this is that one Xaw3d function uses `double' or
257`float' function parameters depending on the setting of NARROWPROTO.
258This is not a problem when Imakefiles are used because each system's
259imake configuration file contains the necessary information. Since
260Emacs doesn't use imake, this has do be done manually.
261
262** Tool bar support.
263
264Emacs supports a tool bar at the top of a frame under X. For details
265of how to define a tool bar, see the page describing Lisp-level
266changes. Tool-bar global minor mode controls whether or not it is
267displayed and is on by default. The appearance of the bar is improved
268if Emacs has been built with XPM image support. Otherwise monochrome
269icons will be used.
270
271To make the tool bar more useful, we need contributions of extra icons
272for specific modes (with copyright assignments).
273
274** Tooltips.
275
276Tooltips are small X windows displaying a help string at the current
277mouse position. The Lisp package `tooltip' implements them. You can
278turn them off via the user option `tooltip-mode'.
279
280Tooltips also provides support for GUD debugging. If activated,
281variable values can be displayed in tooltips by pointing at them with
282the mouse in source buffers. You can customize various aspects of the
283tooltip display in the group `tooltip'.
284
285** Automatic Hscrolling
286
287Horizontal scrolling now happens automatically if
288`automatic-hscrolling' is set (the default). This setting can be
289customized.
290
291If a window is scrolled horizontally with set-window-hscroll, or
292scroll-left/scroll-right (C-x <, C-x >), this serves as a lower bound
293for automatic horizontal scrolling. Automatic scrolling will scroll
294the text more to the left if necessary, but won't scroll the text more
295to 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
298of its own. By default, when a window is selected, the cursor is
299solid; otherwise, it is hollow. The user-option
300`cursor-in-non-selected-windows' controls how to display the
301cursor in non-selected windows. If nil, no cursor is shown, if
302non-nil a hollow box cursor is shown.
303
304** Fringes to the left and right of windows are used to display
305truncation marks, continuation marks, overlay arrows and alike. The
306foreground, background, and stipple of these areas can be changed by
307customizing face `fringe'.
308
309** The mode line under X is now drawn with shadows by default.
310You can change its appearance by modifying the face `mode-line'.
311In particular, setting the `:box' attribute to nil turns off the 3D
312appearance of the mode line. (The 3D appearance makes the mode line
313occupy more space, and thus might cause the first or the last line of
314the window to be partially obscured.)
315
316The variable `mode-line-inverse-video', which was used in older
317versions of emacs to make the mode-line stand out, is now deprecated.
318However, setting it to nil will cause the `mode-line' face to be
319ignored, and mode-lines to be drawn using the default text face.
320
321** Mouse-sensitive mode line.
322
323Different parts of the mode line have been made mouse-sensitive on all
324systems which support the mouse. Moving the mouse to a
325mouse-sensitive part in the mode line changes the appearance of the
326mouse pointer to an arrow, and help about available mouse actions is
327displayed either in the echo area, or in the tooltip window if you
328have enabled one.
329
330Currently, 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
345Emacs can optionally display an hourglass pointer under X. You can
346turn the display on or off by customizing group `cursor'.
347
348** Blinking cursor
349
350M-x blink-cursor-mode toggles a blinking cursor under X and on
351terminals having terminal capabilities `vi', `vs', and `ve'. Blinking
352and related parameters like frequency and delay can be customized in
353the group `cursor'.
354
355** New font-lock support mode `jit-lock-mode'.
356
357This support mode is roughly equivalent to `lazy-lock' but is
358generally faster. It supports stealth and deferred fontification.
359See the documentation of the function `jit-lock-mode' for more
360details.
361
362Font-lock uses jit-lock-mode as default support mode, so you don't
363have to do anything to activate it.
364
365** The default binding of the Delete key has changed.
366
367The new user-option `normal-erase-is-backspace' can be set to
368determine the effect of the Delete and Backspace function keys.
369
370On window systems, the default value of this option is chosen
371according to the keyboard used. If the keyboard has both a Backspace
372key and a Delete key, and both are mapped to their usual meanings, the
373option's default value is set to t, so that Backspace can be used to
374delete backward, and Delete can be used to delete forward. On
375keyboards which either have only one key (usually labeled DEL), or two
376keys DEL and BS which produce the same effect, the option's value is
377set to nil, and these keys delete backward.
378
379If not running under a window system, setting this option accomplishes
380a similar effect by mapping C-h, which is usually generated by the
381Backspace key, to DEL, and by mapping DEL to C-d via
382`keyboard-translate'. The former functionality of C-h is available on
383the F1 key. You should probably not use this setting on a text-only
384terminal if you don't have both Backspace, Delete and F1 keys.
385
386Programmatically, you can call function normal-erase-is-backspace-mode
387to toggle the behavior of the Delete and Backspace keys.
388
389** The default for user-option `next-line-add-newlines' has been
390changed to nil, i.e. C-n will no longer add newlines at the end of a
391buffer by default.
392
393** The <home> and <end> keys now move to the beginning or end of the
394current line, respectively. C-<home> and C-<end> move to the
395beginning and end of the buffer.
396
397** Emacs now checks for recursive loads of Lisp files. If the
398recursion depth exceeds `recursive-load-depth-limit', an error is
399signaled.
400
401** When an error is signaled during the loading of the user's init
402file, Emacs now pops up the *Messages* buffer.
403
404** Emacs now refuses to load compiled Lisp files which weren't
405compiled with Emacs. Set `load-dangerous-libraries' to t to change
406this behavior.
407
408The reason for this change is an incompatible change in XEmacs's byte
409compiler. Files compiled with XEmacs can contain byte codes that let
410Emacs dump core.
411
412** Toggle buttons and radio buttons in menus.
413
414When compiled with LessTif (or Motif) support, Emacs uses toolkit
415widgets for radio and toggle buttons in menus. When configured for
416Lucid, Emacs draws radio buttons and toggle buttons similar to Motif.
417
418** The menu bar configuration has changed. The new configuration is
419more CUA-compliant. The most significant change is that Options is
420now 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
423using that menu.
424
425** Highlighting of trailing whitespace.
426
427When `show-trailing-whitespace' is non-nil, Emacs displays trailing
428whitespace in the face `trailing-whitespace'. Trailing whitespace is
429defined as spaces or tabs at the end of a line. To avoid busy
430highlighting when entering new text, trailing whitespace is not
431displayed if point is at the end of the line containing the
432whitespace.
433
434** C-x 5 1 runs the new command delete-other-frames which deletes
435all frames except the selected one.
436
437** The new user-option `confirm-kill-emacs' can be customized to
438let Emacs ask for confirmation before exiting.
439
440** The header line in an Info buffer is now displayed as an emacs
441header-line (which is like a mode-line, but at the top of the window),
442so that it remains visible even when the buffer has been scrolled.
443This 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
447have 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
457displayed it pops up a menu containing the items which would be on the
458menu bar. If the menu bar is displayed, it pops up the major mode
459menu or the Edit menu if there is no major mode menu.
460
461** Variable `load-path' is no longer customizable through Customize.
462
463You can no longer use `M-x customize-variable' to customize `load-path'
464because it now contains a version-dependent component. You can still
465use `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
469point in a pop-up window.
470
471** Emacs can now support 'wheeled' mice (such as the MS IntelliMouse)
472under XFree86. To enable this, use the `mouse-wheel-mode' command, or
473customize the variable `mouse-wheel-mode'.
474
475The variables `mouse-wheel-follow-mouse' and `mouse-wheel-scroll-amount'
476determine where and by how much buffers are scrolled.
477
478** Emacs' auto-save list files are now by default stored in a
479sub-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/'.)
481You 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
486to prevent `display-buffer' from evening out window heights.
487
488** The new command M-x delete-trailing-whitespace RET will delete the
489trailing whitespace within the current restriction. You can also add
490this 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
493be added to the end of the buffer even if `require-final-newline' is
494non-nil.
495
496** The new user-option `find-file-suppress-same-file-warnings' can be
497set to suppress warnings ``X and Y are the same file'' when visiting a
498file that is already visited under a different name.
499
500** The new user-option `electric-help-shrink-window' can be set to
501nil 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
504and displays information about that.
505
506** The new variable `auto-mode-interpreter-regexp' contains a regular
507expression matching interpreters, for file mode determination.
508
509This regular expression is matched against the first line of a file to
510determine the file's mode in `set-auto-mode' when Emacs can't deduce a
511mode from the file's name. If it matches, the file is assumed to be
512interpreted by the interpreter matched by the second group of the
513regular expression. The mode is then determined as the mode
514associated with that interpreter in `interpreter-mode-alist'.
515
516** New function executable-make-buffer-file-executable-if-script-p is
517suitable 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
520buffer-file-coding-system is `undecided' and it is safe for the buffer
521contents. (The most preferred is set by set-language-environment or
522by M-x prefer-coding-system.) Thus if you visit an ASCII file and
523insert a non-ASCII character from your current language environment,
524the file will be saved silently with the appropriate coding.
525Previously you would be prompted for a safe coding system.
526
527** The many obsolete language `setup-...-environment' commands have
528been removed -- use `set-language-environment'.
529
530** The new Custom option `keyboard-coding-system' specifies a coding
531system for keyboard input.
532
533** New variable `inhibit-iso-escape-detection' determines if Emacs'
534coding system detection algorithm should pay attention to ISO2022's
535escape sequences. If this variable is non-nil, the algorithm ignores
536such escape sequences. The default value is nil, and it is
537recommended not to change it except for the special case that you
538always want to read any escape code verbatim. If you just want to
539read 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
541RET C-x C-f filename RET.
542
543** Variable `default-korean-keyboard' is initialized properly from the
544environment variable `HANGUL_KEYBOARD_TYPE'.
545
546** New command M-x list-charset-chars reads a character set name and
547displays all characters in that character set.
548
549** M-x set-terminal-coding-system (C-x RET t) now allows CCL-based
550coding systems such as cpXXX and cyrillic-koi8.
551
552** Emacs now attempts to determine the initial language environment
553and preferred and locale coding systems systematically from the
554LC_ALL, LC_CTYPE, and LANG environment variables during startup.
555
556** New language environments `Polish', `Latin-8' and `Latin-9'.
557Latin-8 and Latin-9 correspond respectively to the ISO character sets
5588859-14 (Celtic) and 8859-15 (updated Latin-1, with the Euro sign).
559GNU Intlfonts doesn't support these yet but recent X releases have
5608859-15. See etc/INSTALL for information on obtaining extra fonts.
561There are new Leim input methods for Latin-8 and Latin-9 prefix (only)
562and Polish `slash'.
563
564** New language environments `Dutch' and `Spanish'.
565These new environments mainly select appropriate translations
566of the tutorial.
567
568** In Ethiopic language environment, special key bindings for
569function keys are changed as follows. This is to conform to "Emacs
570Lisp 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.
590New input methods "turkish-postfix", "turkish-alt-postfix",
591"greek-mizuochi", "TeX", and "greek-babel" are now part of the Leim
592package.
593
594** The rule of input method "slovak" is slightly changed. Now the
595rules for translating "q" and "Q" to "`" (backquote) are deleted, thus
596typing 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
6018859 character sets but can display Latin-1, you can display
602more-or-less mnemonic sequences of ASCII/Latin-1 characters instead of
603empty boxes (under a window system) or question marks (not under a
604window system). Customize the option `latin1-display' to turn this
605on.
606
607** M-; now calls comment-dwim which tries to do something clever based
608on the context. M-x kill-comment is now an alias to comment-kill,
609defined in newcomment.el. You can choose different styles of region
610commenting 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
614indicator used by the display-time package. On a suitable display the
615indicator can be an icon and is mouse-sensitive.
616
617** On window-systems, additional space can be put between text lines
618on the display using several methods
619
620- By setting frame parameter `line-spacing' to PIXELS. PIXELS must be
621a positive integer, and specifies that PIXELS number of pixels should
622be put below text lines on the affected frame or frames.
623
624- By setting X resource `lineSpacing', class `LineSpacing'. This is
625equivalent 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
630the same, but applies to the a particular buffer only.
631
632** The new command `clone-indirect-buffer' can be used to create
633an indirect buffer that is a twin copy of the current buffer. The
634command `clone-indirect-buffer-other-window', bound to C-x 4 c,
635does 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,
639typically in a single directory or in an invisible sub-directory.
640
641** New commands iso-iso2sgml and iso-sgml2iso convert between Latin-1
642characters and the corresponding SGML (HTML) entities.
643
644** New X resources recognized
645
646*** The X resource `synchronous', class `Synchronous', specifies
647whether Emacs should run in synchronous mode. Synchronous mode
648is useful for debugging X problems.
649
650Example:
651
652 emacs.synchronous: true
653
654*** The X resource `visualClass, class `VisualClass', specifies the
655visual Emacs should use. The resource's value should be a string of
656the form `CLASS-DEPTH', where CLASS is the name of the visual class,
657and DEPTH is the requested color depth as a decimal number. Valid
658visual class names are
659
660 TrueColor
661 PseudoColor
662 DirectColor
663 StaticColor
664 GrayScale
665 StaticGray
666
667Visual class names specified as X resource are case-insensitive, i.e.
668`pseudocolor', `Pseudocolor' and `PseudoColor' all have the same
669meaning.
670
671The program `xdpyinfo' can be used to list the visual classes
672supported on your display, and which depths they have. If
673`visualClass' is not specified, Emacs uses the display's default
674visual.
675
676Example:
677
678 emacs.visualClass: TrueColor-8
679
680*** The X resource `privateColormap', class `PrivateColormap',
681specifies that Emacs should use a private colormap if it is using the
682default visual, and that visual is of class PseudoColor. Recognized
683resource values are `true' or `on'.
684
685Example:
686
687 emacs.privateColormap: true
688
689** Faces and frame parameters.
690
691There are four new faces `scroll-bar', `border', `cursor' and `mouse'.
692Setting 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'
695sets the background color of face `border' and vice versa. Likewise
696for frame parameters `cursor-color' and face `cursor', and frame
697parameter `mouse-color' and face `mouse'.
698
699Changing 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
706The face `menu' can be used to change colors and font of Emacs' menus.
707
708** New frame parameter `screen-gamma' for gamma correction.
709
710The new frame parameter `screen-gamma' specifies gamma-correction for
711colors. Its value may be nil, the default, in which case no gamma
712correction occurs, or a number > 0, usually a float, that specifies
713the screen gamma of a frame's display.
714
715PC monitors usually have a screen gamma of 2.2. smaller values result
716in darker colors. You might want to try a screen gamma of 1.5 for LCD
717color displays. The viewing gamma Emacs uses is 0.4545. (1/2.2).
718
719The X resource name of this parameter is `screenGamma', class
720`ScreenGamma'.
721
722** Tabs and variable-width text.
723
724Tabs are now displayed with stretch properties; the width of a tab is
725defined as a multiple of the normal character width of a frame, and is
726independent of the fonts used in the text where the tab appears.
727Thus, 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
735The default margin is 4 which makes the menu bar appear like the
736LessTif/Motif one.
737
738*** Arrows that indicate sub-menus are now drawn with shadows, as in
739LessTif and Motif.
740
741** A block cursor can be drawn as wide as the glyph under it under X.
742
743As an example: if a block cursor is over a tab character, it will be
744drawn 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
748bitmap (this is similar to the tilde displayed by vi and Less).
749
750This behavior is activated by setting the buffer-local variable
751`indicate-empty-lines' to a non-nil value. The default value of this
752variable is found in `default-indicate-empty-lines'.
753
754** There is a new "aggressive" scrolling method.
755
756When scrolling up because point is above the window start, if the
757value of the buffer-local variable `scroll-up-aggressively' is a
758number, Emacs chooses a new window start so that point ends up that
759fraction of the window's height from the top of the window.
760
761When scrolling down because point is below the window end, if the
762value of the buffer-local variable `scroll-down-aggressively' is a
763number, Emacs chooses a new window start so that point ends up that
764fraction of the window's height from the bottom of the window.
765
766** You can now easily create new *Info* buffers using either
767M-x clone-buffer, C-u m <entry> RET or C-u g <entry> RET.
768M-x clone-buffer can also be used on *Help* and several other special
769buffers.
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
774abbreviated file names. Abbreviations can be customized by changing
775`directory-abbrev-alist'.
776
777** A new variable, backup-by-copying-when-privileged-mismatch, gives
778the highest file uid for which backup-by-copying-when-mismatch will be
779forced on. The assumption is that uids less than or equal to this
780value are special uids (root, bin, daemon, etc.--not real system
781users) and that files owned by these users should not change ownership,
782even if your system policy allows users other than root to edit them.
783
784The default is 200; set the variable to nil to disable the feature.
785
786** The rectangle commands now avoid inserting undesirable spaces,
787notably at the end of lines.
788
789All these functions have been rewritten to avoid inserting unwanted
790spaces, 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',
795but inserts text instead of replacing it.
796
797** The new command M-x query-replace-regexp-eval acts like
798query-replace-regexp, but takes a Lisp expression which is evaluated
799after each match to get the replacement text.
800
801** M-x query-replace recognizes a new command `e' (or `E') that lets
802you 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
806in 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
811to the source name (.emacs.el), if that exists, after loading it.
812
813** The help string specified for a menu-item whose definition contains
814the property `:help HELP' is now displayed under X, on MS-Windows, and
815MS-DOS, either in the echo area or with tooltips. Many standard menus
816displayed by Emacs now have help strings.
817
818--
819** New user option `read-mail-command' specifies a command to use to
820read mail from the menu etc.
821
822** The environment variable `EMACSLOCKDIR' is no longer used on MS-Windows.
823This environment variable was used when creating lock files. Emacs on
824MS-Windows does not use this variable anymore. This change was made
825before Emacs 21.1, but wasn't documented until now.
826
827** Highlighting of mouse-sensitive regions is now supported in the
828MS-DOS version of Emacs.
829
830** The new command `msdos-set-mouse-buttons' forces the MS-DOS version
831of Emacs to behave as if the mouse had a specified number of buttons.
832This comes handy with mice that don't report their number of buttons
833correctly. One example is the wheeled mice, which report 3 buttons,
834but clicks on the middle button are not passed to the MS-DOS version
835of 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
841M-x customize-set-variable or M-x customize-set-value. Note that
842customization comments will cause the customizations to fail in
843earlier versions of Emacs.
844
845*** The new option `custom-buffer-done-function' says whether to kill
846Custom buffers when you've done with them or just bury them (the
847default).
848
849*** If Emacs was invoked with the `-q' or `--no-init-file' options, it
850does not allow you to save customizations in your `~/.emacs' init
851file. This is because saving customizations from such a session would
852wipe out all the other customizationss you might have on your init
853file.
854
855** If Emacs was invoked with the `-q' or `--no-init-file' options, it
856does not save disabled and enabled commands for future sessions, to
857avoid overwriting existing customizations of this kind that are
858already 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
863modes, C-j in Lisp Interaction mode, and M-:, now bind the variables
864print-level, print-length, and debug-on-error based on the new
865customizable variables eval-expression-print-level,
866eval-expression-print-length, and eval-expression-debug-on-error.
867
868The default values for the first two of these variables are 12 and 4
869respectively, which means that `eval-expression' now prints at most
870the first 12 members of a list and at most 4 nesting levels deep (if
871the list is longer or deeper than that, an ellipsis `...' is
872printed).
873
874<RET> or <mouse-2> on the printed text toggles between an abbreviated
875printed representation and an unabbreviated one.
876
877The default value of eval-expression-debug-on-error is t, so any error
878during evaluation produces a backtrace.
879
880*** The function `eval-defun' (C-M-x) now loads Edebug and instruments
881code when called with a prefix argument.
882
883** CC mode changes.
884
885Note: This release contains changes that might not be compatible with
886current user setups (although it's believed that these
887incompatibilities will only show in very uncommon circumstances).
888However, since the impact is uncertain, these changes may be rolled
889back depending on user feedback. Therefore there's no forward
890compatibility guarantee wrt the new features introduced in this
891release.
892
893*** The hardcoded switch to "java" style in Java mode is gone.
894CC Mode used to automatically set the style to "java" when Java mode
895is entered. This has now been removed since it caused too much
896confusion.
897
898However, to keep backward compatibility to a certain extent, the
899default value for c-default-style now specifies the "java" style for
900java-mode, but "gnu" for all other modes (as before). So you won't
901notice the change if you haven't touched that variable.
902
903*** New cleanups, space-before-funcall and compact-empty-funcall.
904Two new cleanups have been added to c-cleanup-list:
905
906space-before-funcall causes a space to be inserted before the opening
907parenthesis of a function call, which gives the style "foo (bar)".
908
909compact-empty-funcall causes any space before a function call opening
910parenthesis to be removed if there are no arguments to the function.
911It's typically useful together with space-before-funcall to get the
912style "foo (bar)" and "foo()".
913
914*** Some keywords now automatically trigger reindentation.
915Keywords like "else", "while", "catch" and "finally" have been made
916"electric" to make them reindent automatically when they continue an
917earlier statement. An example:
918
919for (i = 0; i < 17; i++)
920 if (a[i])
921 res += a[i]->offset;
922else
923
924Here, the "else" should be indented like the preceding "if", since it
925continues that statement. CC Mode will automatically reindent it after
926the "else" has been typed in full, since it's not until then it's
927possible to decide whether it's a new statement or a continuation of
928the preceding "if".
929
930CC Mode uses Abbrev mode to achieve this, which is therefore turned on
931by default.
932
933*** M-a and M-e now moves by sentence in multiline strings.
934Previously these two keys only moved by sentence in comments, which
935meant that sentence movement didn't work in strings containing
936documentation or other natural language text.
937
938The reason it's only activated in multiline strings (i.e. strings that
939contain a newline, even when escaped by a '\') is to avoid stopping in
940the short strings that often reside inside statements. Multiline
941strings almost always contain text in a natural language, as opposed
942to other strings that typically contain format specifications,
943commands, etc. Also, it's not that bothersome that M-a and M-e misses
944sentences in single line strings, since they're short anyway.
945
946*** Support for autodoc comments in Pike mode.
947Autodoc comments for Pike are used to extract documentation from the
948source, like Javadoc in Java. Pike mode now recognize this markup in
949comment prefixes and paragraph starts.
950
951*** The comment prefix regexps on c-comment-prefix may be mode specific.
952When c-comment-prefix is an association list, it specifies the comment
953line prefix on a per-mode basis, like c-default-style does. This
954change came about to support the special autodoc comment prefix in
955Pike mode only.
956
957*** Better handling of syntactic errors.
958The recovery after unbalanced parens earlier in the buffer has been
959improved; CC Mode now reports them by dinging and giving a message
960stating the offending line, but still recovers and indent the
961following lines in a sane way (most of the time). An "else" with no
962matching "if" is handled similarly. If an error is discovered while
963indenting a region, the whole region is still indented and the error
964is reported afterwards.
965
966*** Lineup functions may now return absolute columns.
967A lineup function can give an absolute column to indent the line to by
968returning a vector with the desired column as the first element.
969
970*** More robust and warning-free byte compilation.
971Although this is strictly not a user visible change (well, depending
972on the view of a user), it's still worth mentioning that CC Mode now
973can be compiled in the standard ways without causing trouble. Some
974code have also been moved between the subpackages to enhance the
975modularity somewhat. Thanks to Martin Buchholz for doing the
976groundwork.
977
978*** c-style-variables-are-local-p now defaults to t.
979This is an incompatible change that has been made to make the behavior
980of the style system wrt global variable settings less confusing for
981non-advanced users. If you know what this variable does you might
982want to set it to nil in your .emacs, otherwise you probably don't
983have to bother.
984
985Defaulting c-style-variables-are-local-p to t avoids the confusing
986situation that occurs when a user sets some style variables globally
987and edits both a Java and a non-Java file in the same Emacs session.
988If the style variables aren't buffer local in this case, loading of
989the second file will cause the default style (either "gnu" or "java"
990by default) to override the global settings made by the user.
991
992*** New initialization procedure for the style system.
993When the initial style for a buffer is determined by CC Mode (from the
994variable c-default-style), the global values of style variables now
995take precedence over the values specified by the chosen style. This
996is different than the old behavior: previously, the style-specific
997settings would override the global settings. This change makes it
998possible to do simple configuration in the intuitive way with
999Customize or with setq lines in one's .emacs file.
1000
1001By default, the global value of every style variable is the new
1002special symbol set-from-style, which causes the value to be taken from
1003the style system. This means that in effect, only an explicit setting
1004of a style variable will cause the "overriding" behavior described
1005above.
1006
1007Also note that global settings override style-specific settings *only*
1008when the initial style of a buffer is chosen by a CC Mode major mode
1009function. When a style is chosen in other ways --- for example, by a
1010call like (c-set-style "gnu") in a hook, or via M-x c-set-style ---
1011then the style-specific values take precedence over any global style
1012values. In Lisp terms, global values override style-specific values
1013only when the new second argument to c-set-style is non-nil; see the
1014function documentation for more info.
1015
1016The purpose of these changes is to make it easier for users,
1017especially novice users, to do simple customizations with Customize or
1018with setq in their .emacs files. On the other hand, the new system is
1019intended to be compatible with advanced users' customizations as well,
1020such as those that choose styles in hooks or whatnot. This new system
1021is believed to be almost entirely compatible with current
1022configurations, in spite of the changed precedence between style and
1023global 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.
1028This became possible as a result of the new initialization behavior.
1029
1030This variable is treated slightly differently from the other style
1031variables; instead of using the symbol set-from-style, it will be
1032completed with the syntactic symbols it doesn't already contain when
1033the style is first initialized. This means it now defaults to the
1034empty list to make all syntactic elements get their values from the
1035style system.
1036
1037**** Compatibility variable to restore the old behavior.
1038In case your configuration doesn't work with this change, you can set
1039c-old-style-variable-behavior to non-nil to get the old behavior back
1040as far as possible.
1041
1042*** Improvements to line breaking and text filling.
1043CC Mode now handles this more intelligently and seamlessly wrt the
1044surrounding code, especially inside comments. For details see the new
1045chapter about this in the manual.
1046
1047**** New variable to recognize comment line prefix decorations.
1048The variable c-comment-prefix-regexp has been added to properly
1049recognize the line prefix in both block and line comments. It's
1050primarily used to initialize the various paragraph recognition and
1051adaptive filling variables that the text handling functions uses.
1052
1053**** New variable c-block-comment-prefix.
1054This is a generalization of the now obsolete variable
1055c-comment-continuation-stars to handle arbitrary strings.
1056
1057**** CC Mode now uses adaptive fill mode.
1058This to make it adapt better to the paragraph style inside comments.
1059
1060It's also possible to use other adaptive filling packages inside CC
1061Mode, notably Kyle E. Jones' Filladapt mode (http://wonderworks.com/).
1062A new convenience function c-setup-filladapt sets up Filladapt for use
1063inside CC Mode.
1064
1065Note though that the 2.12 version of Filladapt lacks a feature that
1066causes it to work suboptimally when c-comment-prefix-regexp can match
1067the empty string (which it commonly does). A patch for that is
1068available from the CC Mode web site (http://www.python.org/emacs/
1069cc-mode/).
1070
1071**** The variables `c-hanging-comment-starter-p' and
1072`c-hanging-comment-ender-p', which controlled how comment starters and
1073enders were filled, are not used anymore. The new version of the
1074function `c-fill-paragraph' keeps the comment starters and enders as
1075they were before the filling.
1076
1077**** It's now possible to selectively turn off auto filling.
1078The variable c-ignore-auto-fill is used to ignore auto fill mode in
1079specific contexts, e.g. in preprocessor directives and in string
1080literals.
1081
1082**** New context sensitive line break function c-context-line-break.
1083It works like newline-and-indent in normal code, and adapts the line
1084prefix according to the comment style when used inside comments. If
1085you're normally using newline-and-indent, you might want to switch to
1086this function.
1087
1088*** Fixes to IDL mode.
1089It now does a better job in recognizing only the constructs relevant
1090to IDL. E.g. it no longer matches "class" as the beginning of a
1091struct block, but it does match the CORBA 2.3 "valuetype" keyword.
1092Thanks to Eric Eide.
1093
1094*** Improvements to the Whitesmith style.
1095It now keeps the style consistently on all levels and both when
1096opening 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.
1101See their docstrings for details. c-lineup-template-args does a
1102better job of tracking the brackets used as parens in C++ templates,
1103and is used by default to line up continued template arguments.
1104
1105*** c-lineup-comment now preserves alignment with a comment on the
1106previous line. It used to instead preserve comments that started in
1107the column specified by comment-column.
1108
1109*** c-lineup-C-comments handles "free form" text comments.
1110In comments with a long delimiter line at the start, the indentation
1111is kept unchanged for lines that start with an empty comment line
1112prefix. This is intended for the type of large block comments that
1113contain documentation with its own formatting. In these you normally
1114don't want CC Mode to change the indentation.
1115
1116*** The `c' syntactic symbol is now relative to the comment start
1117instead of the previous line, to make integers usable as lineup
1118arguments.
1119
1120*** All lineup functions have gotten docstrings.
1121
1122*** More preprocessor directive movement functions.
1123c-down-conditional does the reverse of c-up-conditional.
1124c-up-conditional-with-else and c-down-conditional-with-else are
1125variants of these that also stops at "#else" lines (suggested by Don
1126Provan).
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
1133command will delete non-empty directories recursively. The default
1134is, delete only empty directories.
1135
1136*** New variable `dired-recursive-copies' determines if the copy
1137command will copy directories recursively. The default is, do not
1138copy directories recursively.
1139
1140*** In command `dired-do-shell-command' (usually bound to `!') a `?'
1141in the shell command has a special meaning similar to `*', but with
1142the difference that the command will be run on each file individually.
1143
1144*** The new command `dired-find-alternate-file' (usually bound to `a')
1145replaces the Dired buffer with the buffer for an alternate file or
1146directory.
1147
1148*** The new command `dired-show-file-type' (usually bound to `y') shows
1149a message in the echo area describing what type of file the point is on.
1150This command invokes the external program `file' do its work, and so
1151will only work on systems with that program, and will be only as
1152accurate or inaccurate as it is.
1153
1154*** Dired now properly handles undo changes of adding/removing `-R'
1155from ls switches.
1156
1157*** Dired commands that prompt for a destination file now allow the use
1158of the `M-n' command in the minibuffer to insert the source filename,
1159which the user can then edit. This only works if there is a single
1160source file, not when operating on multiple marked files.
1161
1162** Gnus changes.
1163
1164The Gnus NEWS entries are short, but they reflect sweeping changes in
1165four areas: Article display treatment, MIME treatment,
1166internationalization and mail-fetching.
1167
1168*** The mail-fetching functions have changed. See the manual for the
1169many details. In particular, all procmail fetching variables are gone.
1170
1171If 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
1178this now has changed to
1179
1180(setq mail-sources
1181 '((directory :path "~/mail/incoming/"
1182 :suffix ".in")))
1183
1184More information is available in the info doc at Select Methods ->
1185Getting Mail -> Mail Sources
1186
1187*** Gnus is now a MIME-capable reader. This affects many parts of
1188Gnus, and adds a slew of new commands. See the manual for details.
1189Separate MIME packages like RMIME, mime-compose etc., will probably no
1190longer work; remove them and use the native facilities.
1191
1192The FLIM/SEMI package still works with Emacs 21, but if you want to
1193use the native facilities, you must remove any mailcap.el[c] that was
1194installed by FLIM/SEMI version 1.13 or earlier.
1195
1196*** Gnus has also been multilingualized. This also affects too many
1197parts of Gnus to summarize here, and adds many new variables. There
1198are built-in facilities equivalent to those of gnus-mule.el, which is
1199now just a compatibility layer.
1200
1201*** gnus-mule.el is now just a compatibility layer over the built-in
1202Gnus facilities.
1203
1204*** gnus-auto-select-first can now be a function to be
1205called to position point.
1206
1207*** The user can now decide which extra headers should be included in
1208summary buffers and NOV files.
1209
1210*** `gnus-article-display-hook' has been removed. Instead, a number
1211of variables starting with `gnus-treat-' have been added.
1212
1213*** The Gnus posting styles have been redone again and now work in a
1214subtly different manner.
1215
1216*** New web-based backends have been added: nnslashdot, nnwarchive
1217and nnultimate. nnweb has been revamped, again, to keep up with
1218ever-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
1227macros
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
1243There is now support for Imenu to index headings. A new command
1244`outline-headers-as-kill' copies the visible headings in the region to
1245the 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
1250with buffers when done with them. If non-nil, the default, buffers
1251are killed, unless they were already present before visiting them with
1252Emacs Server. If nil, `server-temp-file-regexp' specifies which
1253buffers to kill, as before.
1254
1255Please note that only buffers are killed that still have a client,
1256i.e. buffers visited with `emacsclient --no-wait' are never killed in
1257this way.
1258
1259** Both emacsclient and Emacs itself now accept command line options
1260of 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.
1265The new user option show-paren-priority specifies the priority to
1266use. Default is 1000.
1267
1268** New command M-x check-parens can be used to find unbalanced paren
1269groups and strings in buffers in Lisp mode (or other modes).
1270
1271** Changes to hideshow.el
1272
1273*** Generalized block selection and traversal
1274
1275A block is now recognized by its start and end regexps (both strings),
1276and an integer specifying which sub-expression in the start regexp
1277serves as the place where a `forward-sexp'-like function can operate.
1278See the documentation of variable `hs-special-modes-alist'.
1279
1280*** During incremental search, if Hideshow minor mode is active,
1281hidden blocks are temporarily shown. The variable `hs-headline' can
1282be used in the mode line format to show the line at the beginning of
1283the open block.
1284
1285*** User option `hs-hide-all-non-comment-function' specifies a
1286function to be called at each top-level block beginning, instead of
1287the 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,
1292roughly imitating those of Outline minor mode. Notably, the prefix
1293for all bindings is now `C-c @'. For details, see the documentation
1294for `hs-minor-mode'.
1295
1296*** The variable `hs-show-hidden-short-form' has been removed, and
1297hideshow.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
1302an entry appropriate for the file's parent. This is useful for making
1303log entries by comparing a version with deleted functions.
1304
1305**** New command M-x change-log-merge merges another log into the
1306current buffer.
1307
1308*** New command M-x change-log-redate fixes any old-style date entries
1309in a log file.
1310
1311*** Change Log mode now adds a file's version number to change log
1312entries if user-option `change-log-version-info-enabled' is non-nil.
1313Unless the file is under version control the search for a file's
1314version number is performed based on regular expressions from
1315`change-log-version-number-regexp-list' which can be customized.
1316Version 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
1328font-lock keywords from the current buffer or from a specific major mode.
1329
1330*** Multi-line patterns are now supported. Modes using this, should
1331set font-lock-multiline to t in their font-lock-defaults.
1332
1333*** `font-lock-syntactic-face-function' allows major-modes to choose
1334the face used for each string/comment.
1335
1336*** A new standard face `font-lock-doc-face'.
1337Meant 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
1342to use, which defaults to "*shell*". When used interactively, a
1343non-default buffer may be specified by giving the `shell' command a
1344prefix argument (causing it to prompt for the buffer name).
1345
1346** Comint (subshell) changes
1347
1348These changes generally affect all modes derived from comint mode, which
1349include shell-mode, gdb-mode, scheme-interaction-mode, etc.
1350
1351*** Comint now by default interprets some carriage-control characters.
1352Comint now removes CRs from CR LF sequences, and treats single CRs and
1353BSs in the output in a way similar to a terminal (by deleting to the
1354beginning of the line, or deleting the previous character,
1355respectively). This is achieved by adding `comint-carriage-motion' to
1356the `comint-output-filter-functions' hook by default.
1357
1358*** By default, comint no longer uses the variable `comint-prompt-regexp'
1359to distinguish prompts from user-input. Instead, it notices which
1360parts of the text were output by the process, and which entered by the
1361user, and attaches `field' properties to allow emacs commands to use
1362this information. Common movement commands, notably beginning-of-line,
1363respect field boundaries in a fairly natural manner. To disable this
1364feature, 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
1368and redirect the output to a designated buffer or buffers.
1369
1370*** The command M-x comint-redirect-send-command reads a command and
1371buffer name from the mini-buffer. The command is sent to the current
1372buffer's process, and its output is inserted into the specified buffer.
1373
1374The command M-x comint-redirect-send-command-to-process acts like
1375M-x comint-redirect-send-command but additionally reads the name of
1376the buffer whose process should be used from the mini-buffer.
1377
1378*** Packages based on comint now highlight user input and program prompts,
1379and support choosing previous input with mouse-2. To control these features,
1380see 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')
1383saves the output from the most recent command to a file. With a prefix
1384argument, 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
1388compatibility.
1389
1390*** The new function `comint-add-to-input-history' adds commands to the input
1391ring (history).
1392
1393*** The new variable `comint-input-history-ignore' is a regexp for
1394identifying history lines that should be ignored, like tcsh time-stamp
1395strings, 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
1400set to fine tune the identification of the correspondent when
1401receiving new mail. If it matches the address of the sender, the
1402recipient is taken as correspondent of a mail. If nil, the default,
1403`user-login-name' and `user-mail-address' are used to exclude yourself
1404as correspondent.
1405
1406Usually you don't have to set this variable, except if you collect
1407mails sent by you under different user names. Then it should be a
1408regexp matching your mail addresses.
1409
1410*** The new user-option rmail-confirm-expunge controls whether and how
1411to ask for confirmation before expunging deleted messages from an
1412Rmail file. You can choose between no confirmation, confirmation
1413with y-or-n-p, or confirmation with yes-or-no-p. Default is to ask
1414for confirmation with yes-or-no-p.
1415
1416*** RET is now bound in the Rmail summary to rmail-summary-goto-msg,
1417like `j'.
1418
1419*** There is a new user option `rmail-digest-end-regexps' that
1420specifies the regular expressions to detect the line that ends a
1421digest message.
1422
1423*** The new user option `rmail-automatic-folder-directives' specifies
1424in which folder to put messages automatically.
1425
1426*** The new function `rmail-redecode-body' allows to fix a message
1427with non-ASCII characters if Emacs happens to decode it incorrectly
1428due to missing or malformed "charset=" header.
1429
1430** The new user-option `mail-envelope-from' can be used to specify
1431an envelope-from address different from user-mail-address.
1432
1433** The variable mail-specify-envelope-from controls whether to
1434use the -f option when sending mail.
1435
1436** The Rmail command `o' (`rmail-output-to-rmail-file') now writes the
1437current message in the internal `emacs-mule' encoding, rather than in
1438the encoding taken from the variable `buffer-file-coding-system'.
1439This allows to save messages whose characters cannot be safely encoded
1440by the buffer's coding system, and makes sure the message will be
1441displayed correctly when you later visit the target Rmail file.
1442
1443If you want your Rmail files be encoded in a specific coding system
1444other 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.
1480The level of a heading is determined from the number of leading
1481semicolons in a heading line. Toplevel forms starting with a `('
1482in column 1 are always made leaves.
1483
1484** The M-x time-stamp command (most commonly used on write-file-hooks)
1485has the following new features:
1486
1487*** The patterns for finding the time stamp and for updating a pattern
1488may match text spanning multiple lines. For example, some people like
1489to have the filename and date on separate lines. The new variable
1490time-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
1493feature is useful if you need separate time stamps in a program source
1494file to both include in formatted documentation and insert in the
1495compiled binary. The same time-stamp will be written at each matching
1496pattern. The variable time-stamp-count enables this new feature; it
1497defaults to 1.
1498
1499** Partial Completion mode now completes environment variables in
1500file names.
1501
1502** Ispell changes
1503
1504*** The command `ispell' now spell-checks a region if
1505transient-mark-mode is on, and the mark is active. Otherwise it
1506spell-checks the current buffer.
1507
1508*** Support for synchronous subprocesses - DOS/Windoze - has been
1509added.
1510
1511*** An "alignment error" bug was fixed when a manual spelling
1512correction 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
1517cases.
1518
1519*** Spell checking HTML buffers has been improved and isn't so strict
1520on syntax errors.
1521
1522*** The buffer-local words are now always placed on a new line at the
1523end 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
1529alias.
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
1536Fontlock mode is active.
1537
1538** Isearch changes
1539
1540*** Isearch now puts a call to `isearch-resume' in the command history,
1541so 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,
1544respectively, i.e. you can repeat a regexp isearch with the same keys
1545that started the search.
1546
1547*** In Isearch mode, mouse-2 in the echo area now yanks the current
1548selection into the search string rather than giving an error.
1549
1550*** There is a new lazy highlighting feature in incremental search.
1551
1552Lazy highlighting is switched on/off by customizing variable
1553`isearch-lazy-highlight'. When active, all matches for the current
1554search string are highlighted. The current match is highlighted as
1555before using face `isearch' or `region'. All other matches are
1556highlighted using face `isearch-lazy-highlight-face' which defaults to
1557`secondary-selection'.
1558
1559The extra highlighting makes it easier to anticipate where the cursor
1560will end up each time you press C-s or C-r to repeat a pending search.
1561Highlighting of these additional matches happens in a deferred fashion
1562using "idle timers," so the cycles needed do not rob isearch of its
1563usual snappy response.
1564
1565If `isearch-lazy-highlight-cleanup' is set to t, highlights for
1566matches are automatically cleared when you end the search. If it is
1567set to nil, you can remove the highlights manually with `M-x
1568isearch-lazy-highlight-cleanup'.
1569
1570** VC Changes
1571
1572VC has been overhauled internally. It is now modular, making it
1573easier to plug-in arbitrary version control backends. (See Lisp
1574Changes for details on the new structure.) As a result, the mechanism
1575to enable and disable support for particular version systems has
1576changed: everything is now controlled by the new variable
1577`vc-handled-backends'. Its value is a list of symbols that identify
1578version systems; the default is '(RCS CVS SCCS). When finding a file,
1579each of the backends in that list is tried in order to see whether the
1580file is registered in that backend.
1581
1582When registering a new file, VC first tries each of the listed
1583backends to see if any of them considers itself "responsible" for the
1584directory of the file (e.g. because a corresponding subdirectory for
1585master files exists). If none of the backends is responsible, then
1586the first backend in the list that could register the file is chosen.
1587As a consequence, the variable `vc-default-back-end' is now obsolete.
1588
1589The old variable `vc-master-templates' is also obsolete, although VC
1590still supports it for backward compatibility. To define templates for
1591RCS or SCCS, you should rather use the new variables
1592vc-{rcs,sccs}-master-templates. (There is no such feature under CVS
1593where it doesn't make sense.)
1594
1595The variables `vc-ignore-vc-files' and `vc-handle-cvs' are also
1596obsolete 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
1601The variable `vc-checkout-carefully' is obsolete: the corresponding
1602checks are always done now.
1603
1604VC Dired buffers are now kept up-to-date during all version control
1605operations.
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
1611The command C-x v m (vc-merge) now accepts an empty argument as the
1612first revision number. This means that any recent changes on the
1613current branch should be picked up from the repository and merged into
1614the working file (``merge news'').
1615
1616The 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
1618downwards.
1619
1620*** Multiple Backends
1621
1622VC now lets you register files in more than one backend. This is
1623useful, for example, if you are working with a slow remote CVS
1624repository. You can then use RCS for local editing, and occasionally
1625commit your changes back to CVS, or pick up changes from CVS into your
1626local RCS archives.
1627
1628To make this work, the ``more local'' backend (RCS in our example)
1629should come first in `vc-handled-backends', and the ``more remote''
1630backend (CVS) should come later. (The default value of
1631`vc-handled-backends' already has it that way.)
1632
1633You can then commit changes to another backend (say, RCS), by typing
1634C-u C-x v v RCS RET (i.e. vc-next-action now accepts a backend name as
1635a revision number). VC registers the file in the more local backend
1636if that hasn't already happened, and commits to a branch based on the
1637current revision number from the more remote backend.
1638
1639If a file is registered in multiple backends, you can switch to
1640another one using C-x v b (vc-switch-backend). This does not change
1641any files, it only changes VC's perspective on the file. Use this to
1642pick up changes from CVS while working under RCS locally.
1643
1644After you are done with your local RCS editing, you can commit your
1645changes back to CVS using C-u C-x v v CVS RET. In this case, the
1646local RCS archive is removed after the commit, and the log entry
1647buffer is initialized to contain the entire RCS change log of the file.
1648
1649*** Changes for CVS
1650
1651There is a new user option, `vc-cvs-stay-local'. If it is `t' (the
1652default), then VC avoids network queries for files registered in
1653remote repositories. The state of such files is then only determined
1654by heuristics and past information. `vc-cvs-stay-local' can also be a
1655regexp to match against repository hostnames; only files from hosts
1656that match it are treated locally. If the variable is nil, then VC
1657queries the repository just as often as it does for local files.
1658
1659If `vc-cvs-stay-local' is on, then VC also makes local backups of
1660repository versions. This means that ordinary diffs (C-x v =) and
1661revert operations (C-x v u) can be done completely locally, without
1662any repository interactions at all. The name of a local version
1663backup of FILE is FILE.~REV.~, where REV is the repository version
1664number. This format is similar to that used by C-x v ~
1665(vc-version-other-window), except for the trailing dot. As a matter
1666of fact, the two features can each use the files created by the other,
1667the only difference being that files with a trailing `.' are deleted
1668automatically after commit. (This feature doesn't work on MS-DOS,
1669since DOS disallows more than a single dot in the trunk of a file
1670name.)
1671
1672If `vc-cvs-stay-local' is on, and there have been changes in the
1673repository, VC notifies you about it when you actually try to commit.
1674If you want to check for updates from the repository without trying to
1675commit, you can either use C-x v m RET to perform an update on the
1676current file, or you can use C-x v r RET to get an update for an
1677entire directory tree.
1678
1679The 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
1681is only meaningful if the CVSREAD variable is set, or if files are
1682"watched" by other developers.)
1683
1684The 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
1686an empty snapshot name to the latter, that performs a `cvs update',
1687starting at the given directory.
1688
1689*** Lisp Changes in VC
1690
1691VC has been restructured internally to make it modular. You can now
1692add support for arbitrary version control backends by writing a
1693library that provides a certain set of backend-specific functions, and
1694then telling VC to use that library. For example, to add support for
1695a version system named SYS, you write a library named vc-sys.el, which
1696provides a number of functions vc-sys-... (see commentary at the top
1697of vc.el for a detailed list of them). To make VC use that library,
1698you 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
1702SUBS command and EDT scroll margins. It also works with more
1703terminal/keyboard configurations and it now works under XEmacs.
1704See etc/edt-user.doc for more information.
1705
1706** New modes and packages
1707
1708*** The new global minor mode `minibuffer-electric-default-mode'
1709automatically hides the `(default ...)' part of minibuffer prompts when
1710the default is not applicable.
1711
1712*** Artist is an Emacs lisp package that allows you to draw lines,
1713rectangles and ellipses by using your mouse and/or keyboard. The
1714shapes are made up with the ascii characters |, -, / and \.
1715
1716Features 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
1775implemented entirely in Emacs Lisp. Use `M-x eshell' to invoke it.
1776It functions similarly to bash and zsh, and allows running of Lisp
1777functions and external commands using the same syntax. It supports
1778history lists, aliases, extended globbing, smart scrolling, etc. It
1779will work on any platform Emacs has been ported to. And since most of
1780the basic commands -- ls, rm, mv, cp, ln, du, cat, etc. -- have been
1781rewritten in Lisp, it offers an operating-system independent shell,
1782all within the scope of your Emacs process.
1783
1784*** The new package timeclock.el is a mode is for keeping track of time
1785intervals. You can use it for whatever purpose you like, but the
1786typical scenario is to keep track of how much time you spend working
1787on certain projects.
1788
1789*** The new package hi-lock.el provides commands to highlight matches
1790of interactively entered regexps. For example,
1791
1792 M-x highlight-regexp RET clearly RET RET
1793
1794will highlight all occurrences of `clearly' using a yellow background
1795face. New occurrences of `clearly' will be highlighted as they are
1796typed. `M-x unhighlight-regexp RET' will remove the highlighting.
1797Any existing face can be used for highlighting and a set of
1798appropriate faces is provided. The regexps can be written into the
1799current buffer in a form that will be recognized the next time the
1800corresponding file is read. There are commands to highlight matches
1801to phrases and to highlight entire lines containing a match.
1802
1803*** The new package zone.el plays games with Emacs' display when
1804Emacs is idle.
1805
1806*** The new package tildify.el allows to add hard spaces or other text
1807fragments in accordance with the current major mode.
1808
1809*** The new package xml.el provides a simple but generic XML
1810parser. It doesn't parse the DTDs however.
1811
1812*** The comment operations are now provided by the newcomment.el
1813package which allows different styles of comment-region and should
1814be more robust while offering the same functionality.
1815`comment-region' now doesn't always comment a-line-at-a-time, but only
1816comments the region, breaking the line at point if necessary.
1817
1818*** The Ebrowse package implements a C++ class browser and tags
1819facilities tailored for use with C++. It is documented in a
1820separate Texinfo file.
1821
1822*** The PCL-CVS package available by either running M-x cvs-examine or
1823by visiting a CVS administrative directory (with a prefix argument)
1824provides 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
1826enter check-in log messages.
1827
1828*** The new package called `woman' allows to browse Unix man pages
1829without invoking external programs.
1830
1831The command `M-x woman' formats manual pages entirely in Emacs Lisp
1832and then displays them, like `M-x manual-entry' does. Unlike
1833`manual-entry', `woman' does not invoke any external programs, so it
1834is useful on systems such as MS-DOS/MS-Windows where the `man' and
1835Groff or `troff' commands are not readily available.
1836
1837The command `M-x woman-find-file' asks for the file name of a man
1838page, then formats and displays it like `M-x woman' does.
1839
1840*** The new command M-x re-builder offers a convenient interface for
1841authoring regular expressions with immediate visual feedback.
1842
1843The buffer from which the command was called becomes the target for
1844the regexp editor popping up in a separate window. Matching text in
1845the target buffer is immediately color marked during the editing.
1846Each sub-expression of the regexp will show up in a different face so
1847even complex regexps can be edited and verified on target data in a
1848single step.
1849
1850On displays not supporting faces the matches instead blink like
1851matching parens to make them stand out. On such a setup you will
1852probably also want to use the sub-expression mode when the regexp
1853contains such to get feedback about their respective limits.
1854
1855*** glasses-mode is a minor mode that makes
1856unreadableIdentifiersLikeThis readable. It works as glasses, without
1857actually modifying content of a buffer.
1858
1859*** The package ebnf2ps translates an EBNF to a syntactic chart in
1860PostScript.
1861
1862Currently accepts ad-hoc EBNF, ISO EBNF and Bison/Yacc.
1863
1864The 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
1889Please, 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
1892align. Its mode-specific rules, based on regular expressions,
1893determine where the columns should be split. In C and C++, for
1894example, it will align variable names in declaration lists, or the
1895equal signs of assignments.
1896
1897*** `paragraph-indent-minor-mode' is a new minor mode supporting
1898paragraphs in the same style as `paragraph-indent-text-mode'.
1899
1900*** bs.el is a new package for buffer selection similar to
1901list-buffers or electric-buffer-list. Use M-x bs-show to display a
1902buffer 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
1907replace desktop calculators such as xcalc and calc.exe. Actually, it
1908is not too small - it has more features than most desktop calculators,
1909and can be customized easily to get many more functions. It should
1910not be confused with "calc" which is a much bigger mathematical tool
1911which answers different needs.
1912
1913*** The minor modes cwarn-mode and global-cwarn-mode highlights
1914suspicious C and C++ constructions. Currently, assignments inside
1915expressions, semicolon following `if', `for' and `while' (except, of
1916course, after a `do .. while' statement), and C++ functions with
1917reference parameters are recognized. The modes require font-lock mode
1918to be enabled.
1919
1920*** smerge-mode.el provides `smerge-mode', a simple minor-mode for files
1921containing 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
1926current 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
1931Please note: if `ansi-color-for-comint-mode' and
1932`global-font-lock-mode' are non-nil, loading ansi-color.el will
1933disable font-lock and add `ansi-color-apply' to
1934`comint-preoutput-filter-functions' for all shell-mode buffers. This
1935displays the output of "ls --color=yes" using the correct foreground
1936and background colors.
1937
1938*** delphi.el provides a major mode for editing the Delphi (Object
1939Pascal) language.
1940
1941*** quickurl.el provides a simple method of inserting a URL based on
1942the 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
1949whitespace in a file.
1950
1951*** PostScript mode (ps-mode) is a new major mode for editing PostScript
1952files. It offers: interaction with a PostScript interpreter, including
1953(very basic) error handling; fontification, easily customizable for
1954interpreter messages; auto-indentation; insertion of EPSF templates and
1955often used code snippets; viewing of BoundingBox; commenting out /
1956uncommenting regions; conversion of 8bit characters to PostScript octal
1957codes. All functionality is accessible through a menu.
1958
1959*** delim-col helps to prettify columns in a text region or rectangle.
1960
1961Here is an example of columns:
1962
1963horse apple bus
1964dog pineapple car EXTRA
1965porcupine strawberry airplane
1966
1967Doing 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
1975Selecting the lines above and typing:
1976
1977 M-x delimit-columns-region
1978
1979It results:
1980
1981[ horse , apple , bus , ]
1982[ dog , pineapple , car , EXTRA ]
1983[ porcupine, strawberry, airplane, ]
1984
1985delim-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
1999delim-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
2005operated on recently. User option recentf-menu-filter specifies a
2006menu filter function to change the menu appearance. For example, the
2007recent 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
2013The `recentf-filter-changer' menu filter function allows to
2014dynamically change the menu appearance.
2015
2016*** elide-head.el provides a mechanism for eliding boilerplate header
2017text.
2018
2019*** footnote.el provides `footnote-mode', a minor mode supporting use
2020of footnotes. It is intended for use with Message mode, but isn't
2021specific to Message mode.
2022
2023*** diff-mode.el provides `diff-mode', a major mode for
2024viewing/editing context diffs (patches). It is selected for files
2025with extension `.diff', `.diffs', `.patch' and `.rej'.
2026
2027*** EUDC, the Emacs Unified Directory Client, provides a common user
2028interface to access directory servers using different directory
2029protocols. It has a separate manual.
2030
2031*** autoconf.el provides a major mode for editing configure.in files
2032for Autoconf, selected automatically.
2033
2034*** windmove.el provides moving between windows.
2035
2036*** crm.el provides a facility to read multiple strings from the
2037minibuffer with completion.
2038
2039*** todo-mode.el provides management of TODO lists and integration
2040with the diary features.
2041
2042*** autoarg.el provides a feature reported from Twenex Emacs whereby
2043numeric keys supply prefix args rather than self inserting.
2044
2045*** The function `turn-off-auto-fill' unconditionally turns off Auto
2046Fill mode.
2047
2048*** pcomplete.el is a library that provides programmable completion
2049facilities for Emacs, similar to what zsh and tcsh offer. The main
2050difference is that completion functions are written in Lisp, meaning
2051they can be profiled, debugged, etc.
2052
2053*** antlr-mode is a new major mode for editing ANTLR grammar files.
2054It is automatically turned on for files whose names have the extension
2055`.g'.
2056
2057** Changes in sort.el
2058
2059The function sort-numeric-fields interprets numbers starting with `0'
2060as octal and numbers starting with `0x' or `0X' as hexadecimal. The
2061new user-option sort-numeric-base can be used to specify a default
2062numeric base.
2063
2064** Changes to Ange-ftp
2065
2066*** Ange-ftp allows you to specify of a port number in remote file
2067names cleanly. It is appended to the host name, separated by a hash
2068sign, 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
2071ftp mode will be used if the ftp client supports that.
2072
2073*** Ange-ftp handles the output of the w32-style clients which
2074output ^M at the end of lines.
2075
2076** The recommended way of using Iswitchb is via the new global minor
2077mode `iswitchb-mode'.
2078
2079** Just loading the msb package doesn't switch on Msb mode anymore.
2080If 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
2086group.
2087
2088*** The variable `flyspell-generic-check-word-p' has been renamed
2089to `flyspell-generic-check-word-predicate'. The old name is still
2090available as alias.
2091
2092** The user option `backward-delete-char-untabify-method' controls the
2093behavior of `backward-delete-char-untabify'. The following values
2094are 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;
2099nil -- just delete one character.
2100
2101Default 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
2106symbol, not double-quoted.
2107
2108** Some packages are declared obsolete, to be removed in a future
2109version. They are: auto-show, c-mode, hilit19, hscroll, ooutline,
2110profile, rnews, rnewspost, and sc. Their implementations have been
2111moved to lisp/obsolete.
2112
2113** auto-compression mode is no longer enabled just by loading jka-compr.el.
2114To 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
2125operate on the active region in Transient Mark mode.
2126
2127** `gnus-user-agent' is a new possibility for `mail-user-agent'. It
2128is like `message-user-agent', but with all the Gnus paraphernalia.
2129
2130** The Strokes package has been updated. If your Emacs has XPM
2131support, you can use it for pictographic editing. In Strokes mode,
2132use C-mouse-2 to compose a complex stoke and insert it into the
2133buffer. You can encode or decode a strokes buffer with new commands
2134M-x strokes-encode-buffer and M-x strokes-decode-buffer. There is a
2135new command M-x strokes-list-strokes.
2136
2137** Hexl contains a new command `hexl-insert-hex-string' which inserts
2138a string of hexadecimal numbers read from the mini-buffer.
2139
2140** Hexl mode allows to insert non-ASCII characters.
2141
2142The non-ASCII characters are encoded using the same encoding as the
2143file you are visiting in Hexl mode.
2144
2145** Shell script mode changes.
2146
2147Shell script mode (sh-script) can now indent scripts for shells
2148derived from sh and rc. The indentation style is customizable, and
2149sh-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
2156possible 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.
2158This feature is useful especially for regex files, where each line contains
2159a regular expression. The manual contains details.
2160
2161*** In C and derived languages, etags creates tags for function
2162declarations 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
2168automatically 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
2172C-like languages. Previously, it was limited to one or two brace levels.
2173
2174*** New language Ada: tags are functions, procedures, packages, tasks, and
2175types.
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
2182are now tagged.
2183
2184*** In makefiles, tags the targets.
2185
2186*** In Perl, the --globals option tags global variables. my and local
2187variables 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
2192for PSWrap.
2193
2194** Changes in etags.el
2195
2196*** The new user-option tags-case-fold-search can be used to make
2197tags operations case-sensitive or case-insensitive. The default
2198is to use the same setting as case-fold-search.
2199
2200*** You can display additional output with M-x tags-apropos by setting
2201the new variable tags-apropos-additional-actions.
2202
2203If non-nil, the variable's value should be a list of triples (TITLE
2204FUNCTION TO-SEARCH). For each triple, M-x tags-apropos processes
2205TO-SEARCH and lists tags from it. TO-SEARCH should be an alist,
2206obarray, or symbol. If it is a symbol, the symbol's value is used.
2207
2208TITLE is a string to use to label the list of tags from TO-SEARCH.
2209
2210FUNCTION is a function to call when an entry is selected in the Tags
2211List buffer. It is called with one argument, the selected symbol.
2212
2213A 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
2220of tags in the output of M-x tags-apropos.
2221
2222*** Setting tags-apropos-verbose to a non-nil value displays the
2223names of tags files in the *Tags List* buffer.
2224
2225*** You can now search for tags that are part of the filename itself.
2226If 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,
2229point will go to the beginning of the file.
2230
2231*** Compressed files are now transparently supported if
2232auto-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
2236in buffers where no match is found. In buffers where a match is
2237found, the original value of point is pushed on the marker ring.
2238
2239** Fortran mode has a new command `fortran-strip-sequence-nos' to
2240remove text past column 72. The syntax class of `\' in Fortran is now
2241appropriate 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'
2248containing a list of regular expressions. Buffers matching a regular
2249expression from that list, are not checked.
2250
2251** Emacs can now figure out modification times of remote files.
2252When you do C-x C-f /user@host:/path/file RET and edit the file,
2253and someone else modifies the file, you will be prompted to revert
2254the 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
2259displays local abbrevs, only.
2260
2261** Refill minor mode provides preliminary support for keeping
2262paragraphs filled as you modify them.
2263
2264** The variable `double-click-fuzz' specifies how much the mouse
2265may be moved between clicks that are recognized as a pair. Its value
2266is measured in pixels.
2267
2268** The new global minor mode `auto-image-file-mode' allows image files
2269to be visited as images.
2270
2271** Two new user-options `grep-command' and `grep-find-command'
2272were added to compile.el.
2273
2274** Withdrawn packages
2275
2276*** mldrag.el has been removed. mouse.el provides the same
2277functionality 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
2286There are a few Lisp changes which are not backwards-compatible and
2287may require changes to existing code. Here is a list for reference.
2288See 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.
2292Use `copy-sequence' to copy the string, then use `set-text-properties'
2293to remove the properties of the copy.
2294
2295** Since the `keymap' text property now has significance, some code
2296which uses both `local-map' and `keymap' properties (for portability)
2297may, for instance, give rise to duplicate menus when the keymaps from
2298these properties are active.
2299
2300** The change in the treatment of non-ASCII characters in search
2301ranges may affect some code.
2302
2303** A non-nil value for the LOCAL arg of add-hook makes the hook
2304buffer-local even if `make-local-hook' hasn't been called, which might
2305make a difference to some code.
2306
2307** The new treatment of the minibuffer prompt might affect code which
2308operates on the minibuffer.
2309
2310** The new character sets `eight-bit-control' and `eight-bit-graphic'
2311cause `no-conversion' and `emacs-mule-unix' coding systems to produce
2312different results when reading files with non-ASCII characters
2313(previously, both coding systems would produce the same results).
2314Specifically, `no-conversion' interprets each 8-bit byte as a separate
2315character. This makes `no-conversion' inappropriate for reading
2316multibyte text, e.g. buffers written to disk in their internal MULE
2317encoding (auto-saving does that, for example). If a Lisp program
2318reads such files with `no-conversion', each byte of the multibyte
2319sequence, including the MULE leading codes such as \201, is treated as
2320a separate character, which prevents them from being interpreted in
2321the buffer as multibyte characters.
2322
2323Therefore, Lisp programs that read files which contain the internal
2324MULE encoding should use `emacs-mule-unix'. `no-conversion' is only
2325appropriate 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
2332long promised. So does any code that uses derivatives of `concat',
2333such as `mapconcat'.
2334
2335** The function base64-decode-string now always returns a unibyte
2336string.
2337
2338** Not a Lisp incompatibility as such but, with the introduction of
2339extra private charsets, there is now only one slot free for a new
2340dimension-2 private charset. User code which tries to add more than
2341one extra will fail unless you rebuild Emacs with some standard
2342charset(s) removed; that is probably inadvisable because it changes
2343the emacs-mule encoding. Also, files stored in the emacs-mule
2344encoding using Emacs 20 with additional private charsets defined will
2345probably not be read correctly by Emacs 21.
2346
2347** The variable `directory-sep-char' is slated for removal.
2348Not really a change (yet), but a projected one that you should be
2349aware of: The variable `directory-sep-char' is deprecated, and should
2350not be used. It was always ignored on GNU/Linux and Unix systems and
2351on MS-DOS, but the MS-Windows port tried to support it by adapting the
2352behavior of certain primitives to the value of this variable. It
2353turned out that such support cannot be reliable, so it was decided to
2354remove this variable in the near future. Lisp programs are well
2355advised not to set it to anything but '/', because any different value
2356will 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
2365allows the animated display of strings.
2366
2367** The new function `interactive-form' can be used to obtain the
2368interactive form of a function.
2369
2370** The keyword :set-after in defcustom allows to specify dependencies
2371between 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
2381This specifies that default-input-method should be set after
2382current-language-environment even if default-input-method appears
2383first in a custom-set-variables statement.
2384
2385** The new hook `kbd-macro-termination-hook' is run at the end of
2386function execute-kbd-macro. Functions on this hook are called with no
2387args. 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
2391from a list are now available without requiring the CL package.
2392
2393** The new user-option `even-window-heights' can be set to nil
2394to prevent `display-buffer' from evening out window heights.
2395
2396** The user-option `face-font-registry-alternatives' specifies
2397alternative 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
2402deleting the frame. The hook is called with one arg, the frame
2403being 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.
2408If a range in a regular expression or the arg of
2409skip-chars-forward/backward starts with a unibyte character C and ends
2410with a multibyte character C2, the range is divided into two: one is
2411C..?\377, the other is C1..C2, where C1 is the first character of C2's
2412charset.
2413
2414** The new function `display-message-or-buffer' displays a message in
2415the echo area or pops up a buffer, depending on the length of the
2416message.
2417
2418** The new macro `with-auto-compression-mode' allows evaluating an
2419expression with auto-compression-mode enabled.
2420
2421** In image specifications, `:heuristic-mask' has been replaced
2422with 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
2427backslash.
2428
2429** Reading from the mini-buffer now reads from standard input if Emacs
2430is running in batch mode. For example,
2431
2432 (message "%s" (read t))
2433
2434will read a Lisp expression from standard input and print the result
2435to 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'
2441will raise frames displaying a buffer, instead of creating a new
2442frame or window.
2443
2444** Two new functions for removing elements from lists/sequences
2445were added
2446
2447- Function: remove ELT SEQ
2448
2449Return a copy of SEQ with all occurrences of ELT removed. SEQ must be
2450a list, vector, or string. The comparison is done with `equal'.
2451
2452- Function: remq ELT LIST
2453
2454Return a copy of LIST with all occurrences of ELT removed. The
2455comparison 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
2460has 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
2464without signaling "Attempt to change char length of a string". It may
2465convert a unibyte string to multibyte if necessary.
2466
2467** The value of the `help-echo' text property is called as a function
2468or 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
2471function was declared obsolete.
2472
2473** Function `plist-member' is renamed from `widget-plist-member' (which is
2474retained as an alias).
2475
2476** Easy-menu's :filter now takes the unconverted form of the menu and
2477the 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
2483Return a list of windows on FRAME, starting with WINDOW. FRAME nil or
2484omitted means use the selected frame. WINDOW nil or omitted means use
2485the selected window. MINIBUF t means include the minibuffer window,
2486even if it isn't active. MINIBUF nil or omitted means include the
2487minibuffer window only if it's active. MINIBUF neither nil nor t
2488means 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
2494Return a window satisfying PREDICATE.
2495
2496This function cycles through all visible windows using `walk-windows',
2497calling PREDICATE on each one. PREDICATE is called with a window as
2498argument. The first window for which PREDICATE returns a non-nil
2499value is returned. If no window satisfies PREDICATE, DEFAULT is
2500returned.
2501
2502Optional second arg MINIBUF t means count the minibuffer window even
2503if not active. MINIBUF nil or omitted means count the minibuffer iff
2504it is active. MINIBUF neither t nor nil means not to count the
2505minibuffer even if it is active.
2506
2507Several frames may share a single minibuffer; if the minibuffer
2508counts, all windows on all frames that share that minibuffer count
2509too. Therefore, if you are using a separate minibuffer frame
2510and the minibuffer is active and MINIBUF says it counts,
2511`walk-windows' includes the windows in the frame from which you
2512entered the minibuffer, as well as the minibuffer window.
2513
2514ALL-FRAMES is the optional third argument.
2515ALL-FRAMES nil or omitted means cycle within the frames as specified above.
2516ALL-FRAMES = `visible' means include windows on all visible frames.
2517ALL-FRAMES = 0 means include windows on all visible and iconified frames.
2518ALL-FRAMES = t means include windows on all frames including invisible frames.
2519If ALL-FRAMES is a frame, it means include windows on that frame.
2520Anything else means restrict to the selected frame.
2521
2522** The function `single-key-description' now encloses function key and
2523event names in angle brackets. When called with a second optional
2524argument non-nil, angle brackets won't be printed.
2525
2526** If the variable `message-truncate-lines' is bound to t around a
2527call to `message', the echo area will not be resized to display that
2528message; it will be truncated instead, as it was done in 20.x.
2529Default value is nil.
2530
2531** The user option `line-number-display-limit' can now be set to nil,
2532meaning no limit.
2533
2534** The new user option `line-number-display-limit-width' controls
2535the maximum width of lines in a buffer for which Emacs displays line
2536numbers in the mode line. The default is 200.
2537
2538** `select-safe-coding-system' now also checks the most preferred
2539coding-system if buffer-file-coding-system is `undecided' and
2540DEFAULT-CODING-SYSTEM is not specified,
2541
2542** The function `subr-arity' provides information about the argument
2543list 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
2548buffer's local map and the map specified by the `local-map' property.
2549This is probably what most current uses of `local-map' want, rather
2550than 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
2554removed. Use `before-change-functions' and `after-change-functions'
2555instead.
2556
2557** The function `apropos-mode' runs the hook `apropos-mode-hook'.
2558
2559** `concat' no longer accepts individual integer arguments,
2560as 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
2565for reading specific files, analogous to auto-coding-alist, but
2566patterns 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
2572regular expressions.
2573
2574- Function: rx-to-string SEXP
2575
2576Translate SEXP into a regular expression in string notation.
2577
2578- Macro: rx SEXP
2579
2580Translate SEXP into a regular expression in string notation.
2581
2582The following are valid subforms of regular expressions in sexp
2583notation.
2584
2585STRING
2586 matches string STRING literally.
2587
2588CHAR
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
2841buffer is widened inside the save-restriction and changes made outside
2842the original restriction. Previously, doing this would cause the saved
2843restriction 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
2847when they find 8-bit characters. Previously, they included `ascii' in a
2848multibyte 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
2852if it contains a character from the `eight-bit-control' character set.
2853
2854*** The handling of multibyte sequences in a multibyte buffer is
2855changed. Previously, a byte sequence matching the pattern
2856[\200-\237][\240-\377]+ was interpreted as a single character
2857regardless of the length of the trailing bytes [\240-\377]+. Thus, if
2858the sequence was longer than what the leading byte indicated, the
2859extra trailing bytes were ignored by Lisp functions. Now such extra
2860bytes are independent 8-bit characters belonging to the charset
2861eight-bit-graphic.
2862
2863** Fontsets are now implemented using char-tables.
2864
2865A fontset can now be specified for each independent character, for
2866a group of characters or for a character set rather than just for a
2867character set as previously.
2868
2869*** The arguments of the function `set-fontset-font' are changed.
2870They are NAME, CHARACTER, FONTNAME, and optional FRAME. The function
2871modifies fontset NAME to use FONTNAME for CHARACTER.
2872
2873CHARACTER may be a cons (FROM . TO), where FROM and TO are non-generic
2874characters. In that case FONTNAME is used for all characters in the
2875range FROM and TO (inclusive). CHARACTER may be a charset. In that
2876case FONTNAME is used for all character in the charset.
2877
2878FONTNAME may be a cons (FAMILY . REGISTRY), where FAMILY is the family
2879name of a font and REGISTRY is a registry name of a font.
2880
2881*** Variable x-charset-registry has been deleted. The default charset
2882registries of character sets are set in the default fontset
2883"fontset-default".
2884
2885*** The function `create-fontset-from-fontset-spec' ignores the second
2886argument STYLE-VARIANT. It never creates style-variant fontsets.
2887
2888** The method of composing characters is changed. Now character
2889composition is done by a special text property `composition' in
2890buffers and strings.
2891
2892*** Charset composition is deleted. Emacs never creates a `composite
2893character' which is an independent character with a unique character
2894code. Thus the following functions handling `composite characters'
2895have been deleted: composite-char-component,
2896composite-char-component-count, composite-char-composition-rule,
2897composite-char-composition-rule and decompose-composite-char delete.
2898The variables leading-code-composition and min-composite-char have
2899also been deleted.
2900
2901*** Three more glyph reference points are added. They can be used to
2902specify 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
2906MODIFICATION-FUNC. With COMPONENTS, you can specify not only a
2907composition rule but also characters to be composed. Such characters
2908may differ between buffer and string text.
2909
2910*** The function `compose-string' takes new arguments START, END,
2911COMPONENTS, and MODIFICATION-FUNC.
2912
2913*** The function `compose-string' puts text property `composition'
2914directly on the argument STRING instead of returning a new string.
2915Likewise, the function `decompose-string' just removes text property
2916`composition' from STRING.
2917
2918*** The new function `find-composition' returns information about
2919a composition at a specified position in a buffer or a string.
2920
2921*** The function `decompose-composite-char' is now labeled as
2922obsolete.
2923
2924** The new coding system `mac-roman' is primarily intended for use on
2925the 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
2929introduced for Unicode characters in the range U+0100..U+24FF,
2930U+2500..U+33FF, U+E000..U+FFFF respectively.
2931
2932Note that the character sets are not yet unified in Emacs, so
2933characters which belong to charsets such as Latin-2, Greek, Hebrew,
2934etc. and the same characters in the `mule-unicode-*' charsets are
2935different characters, as far as Emacs is concerned. For example, text
2936which includes Unicode characters from the Latin-2 locale cannot be
2937encoded by Emacs with ISO 8859-2 coding system.
2938
2939** The new coding system `mule-utf-8' has been added.
2940It provides limited support for decoding/encoding UTF-8 text. For
2941details, 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
2945standard JIS X 0213 Plane 1 and Plane 2.
2946
2947** The new character sets `latin-iso8859-14' and `latin-iso8859-15'
2948have been introduced.
2949
2950** The new character sets `eight-bit-control' and `eight-bit-graphic'
2951have been introduced for 8-bit characters in the ranges 0x80..0x9F and
29520xA0..0xFF respectively. Note that the multibyte representation of
2953eight-bit-control is never exposed; this leads to an exception in the
2954emacs-mule coding system, which encodes everything else to the
2955buffer/string internal representation. Note that to search for
2956eight-bit-graphic characters in a multibyte buffer, the search string
2957must be multibyte, otherwise such characters will be converted to
2958their multibyte equivalent.
2959
2960** If the APPEND argument of `write-region' is an integer, it seeks to
2961that offset in the file before writing.
2962
2963** The function `add-minor-mode' has been added for convenience and
2964compatibility 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
2968from 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
2973additional optional arguments START and END that specify the region to
2974operate on.
2975
2976** The new function `count-screen-lines' is a more flexible alternative
2977to `window-buffer-height'.
2978
2979- Function: count-screen-lines &optional BEG END COUNT-FINAL-NEWLINE WINDOW
2980
2981Return the number of screen lines in the region between BEG and END.
2982The number of screen lines may be different from the number of actual
2983lines, due to line breaking, display table, etc.
2984
2985Optional arguments BEG and END default to `point-min' and `point-max'
2986respectively.
2987
2988If region ends with a newline, ignore it unless optional third argument
2989COUNT-FINAL-NEWLINE is non-nil.
2990
2991The optional fourth argument WINDOW specifies the window used for
2992obtaining parameters such as width, horizontal scrolling, and so
2993on. The default is to use the selected window's parameters.
2994
2995Like `vertical-motion', `count-screen-lines' always uses the current
2996buffer, regardless of which buffer is displayed in WINDOW. This makes
2997possible to use `count-screen-lines' in any buffer, whether or not it
2998is currently displayed in some window.
2999
3000** The new function `mapc' is like `mapcar' but doesn't collect the
3001argument function's results.
3002
3003** The functions base64-decode-region and base64-decode-string now
3004signal an error instead of returning nil if decoding fails. Also,
3005`base64-decode-string' now always returns a unibyte string (in Emacs
300620, it returned a multibyte string when the result was a valid multibyte
3007sequence).
3008
3009** The function sendmail-user-agent-compose now recognizes a `body'
3010header in the list of headers passed to it.
3011
3012** The new function member-ignore-case works like `member', but
3013ignores differences in case and text representation.
3014
3015** The buffer-local variable cursor-type can be used to specify the
3016cursor to use in windows displaying a buffer. Values are interpreted
3017as 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
3026an open parenthesis in column 0 is considered to be the start of a
3027defun. If set, the default, it is considered a defun start. If not
3028set, an open parenthesis in column 0 has no special meaning.
3029
3030** The new function `string-to-syntax' can be used to translate syntax
3031specifications in string form as accepted by `modify-syntax-entry' to
3032the cons-cell form that is used for the values of the `syntax-table'
3033text property, and in `font-lock-syntactic-keywords'.
3034
3035Example:
3036
3037 (string-to-syntax "()")
3038 => (4 . 41)
3039
3040** Emacs' reader supports CL read syntax for integers in bases
3041other than 10.
3042
3043*** `#BINTEGER' or `#bINTEGER' reads INTEGER in binary (radix 2).
3044INTEGER 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
3069the given property to obtain a string if it doesn't refer to etc/DOC
3070and isn't a string.
3071
3072** If called for a symbol, the function `documentation' now looks for
3073a `function-documentation' property of that symbol. If it has a non-nil
3074value, the documentation is taken from that value. If the value is
3075not 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
3080for 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
3086that don't fit into a Lisp integer.
3087
3088** The variable keyword-symbols-constants-flag has been removed.
3089Keywords are now always considered constants.
3090
3091** The new function `delete-and-extract-region' deletes text and
3092returns it.
3093
3094** The function `clear-this-command-keys' now also clears the vector
3095returned by function `recent-keys'.
3096
3097** Variables `beginning-of-defun-function' and `end-of-defun-function'
3098can be used to define handlers for the functions that find defuns.
3099Major modes can define these locally instead of rebinding C-M-a
3100etc. if the normal conventions for defuns are not appropriate for the
3101mode.
3102
3103** easy-mmode-define-minor-mode now takes an additional BODY argument
3104and is renamed `define-minor-mode'.
3105
3106** If an abbrev has a hook function which is a symbol, and that symbol
3107has a non-nil `no-self-insert' property, the return value of the hook
3108function specifies whether an expansion has been done or not. If it
3109returns nil, abbrev-expand also returns nil, meaning "no expansion has
3110been performed."
3111
3112When abbrev expansion is done by typing a self-inserting character,
3113and the abbrev has a hook with the `no-self-insert' property, and the
3114hook function returns non-nil meaning expansion has been done,
3115then the self-inserting character is not inserted.
3116
3117** The function `intern-soft' now accepts a symbol as first argument.
3118In this case, that exact symbol is looked up in the specified obarray,
3119and 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
3122with the syntax table of the current buffer temporarily set to a
3123specified table.
3124
3125 (with-syntax-table TABLE &rest BODY)
3126
3127Evaluate BODY with syntax table of current buffer set to a copy of
3128TABLE. The current syntax table is saved, BODY is evaluated, and the
3129saved table is restored, even in case of an abnormal exit. Value is
3130what BODY returns.
3131
3132** Regular expressions now support intervals \{n,m\} as well as
3133Perl's shy-groups \(?:...\) and non-greedy *? +? and ?? operators.
3134Also back-references like \2 are now considered as an error if the
3135corresponding subgroup does not exist (or is not closed yet).
3136Previously it would have been silently turned into `2' (ignoring the `\').
3137
3138** The optional argument BUFFER of function file-local-copy has been
3139removed since it wasn't used by anything.
3140
3141** The file name argument of function `file-locked-p' is now required
3142instead of being optional.
3143
3144** The new built-in error `text-read-only' is signaled when trying to
3145modify read-only text.
3146
3147** New functions and variables for locales.
3148
3149The new variable `locale-coding-system' specifies how to encode and
3150decode strings passed to low-level message functions like strerror and
3151time functions like strftime. The new variables
3152`system-messages-locale' and `system-time-locale' give the system
3153locales to be used when invoking these two types of functions.
3154
3155The new function `set-locale-environment' sets the language
3156environment, preferred coding system, and locale coding system from
3157the system locale as specified by the LC_ALL, LC_CTYPE, and LANG
3158environment variables. Normally, it is invoked during startup and need
3159not 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.
3164To declare a comment syntax as allowing nesting, just add an `n'
3165modifier to either of the characters of the comment end and the comment
3166start sequences.
3167
3168** The function `pixmap-spec-p' has been renamed `bitmap-spec-p'
3169because `bitmap' is more in line with the usual X terminology.
3170
3171** New function `propertize'
3172
3173The new function `propertize' can be used to conveniently construct
3174strings with text properties.
3175
3176- Function: propertize STRING &rest PROPERTIES
3177
3178Value is a copy of STRING with text properties assigned as specified
3179by PROPERTIES. PROPERTIES is a sequence of pairs PROPERTY VALUE, with
3180PROPERTY being the name of a text property and VALUE being the
3181specified value of that property. Example:
3182
3183 (propertize "foo" 'face 'bold 'read-only t)
3184
3185** push and pop macros.
3186
3187Simple versions of the push and pop macros of Common Lisp
3188are now defined in Emacs Lisp. These macros allow only symbols
3189as 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
3197Simple versions of the dolist and dotimes macros of Common Lisp
3198are 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
3212class--for instance, [-[:digit:].+] matches digits or a period
3213or 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
3241The following functions are defined for hash tables:
3242
3243- Function: make-hash-table ARGS
3244
3245The argument list ARGS consists of keyword/argument pairs. All arguments
3246are optional. The following arguments are defined:
3247
3248:test TEST
3249
3250TEST must be a symbol specifying how to compare keys. Default is `eql'.
3251Predefined are `eq', `eql' and `equal'. If TEST is not predefined,
3252it must have been defined with `define-hash-table-test'.
3253
3254:size SIZE
3255
3256SIZE must be an integer > 0 giving a hint to the implementation how
3257many elements will be put in the hash table. Default size is 65.
3258
3259:rehash-size REHASH-SIZE
3260
3261REHASH-SIZE specifies by how much to grow a hash table once it becomes
3262full. If REHASH-SIZE is an integer, add that to the hash table's old
3263size to get the new size. Otherwise, REHASH-SIZE must be a float >
32641.0, and the new size is computed by multiplying REHASH-SIZE with the
3265old size. Default rehash size is 1.5.
3266
3267:rehash-threshold THRESHOLD
3268
3269THRESHOLD must be a float > 0 and <= 1.0 specifying when to resize the
3270hash 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
3275WEAK 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
3278collection if their key and/or value are not referenced elsewhere
3279outside of the hash table. Default are non-weak hash tables.
3280
3281- Function: makehash &optional TEST
3282
3283Similar to make-hash-table, but only TEST can be specified.
3284
3285- Function: hash-table-p TABLE
3286
3287Returns non-nil if TABLE is a hash table object.
3288
3289- Function: copy-hash-table TABLE
3290
3291Returns a copy of TABLE. Only the table itself is copied, keys and
3292values are shared.
3293
3294- Function: hash-table-count TABLE
3295
3296Returns the number of entries in TABLE.
3297
3298- Function: hash-table-rehash-size TABLE
3299
3300Returns the rehash size of TABLE.
3301
3302- Function: hash-table-rehash-threshold TABLE
3303
3304Returns the rehash threshold of TABLE.
3305
3306- Function: hash-table-rehash-size TABLE
3307
3308Returns the size of TABLE.
3309
3310- Function: hash-table-test TABLE
3311
3312Returns the test TABLE uses to compare keys.
3313
3314- Function: hash-table-weakness TABLE
3315
3316Returns the weakness specified for TABLE.
3317
3318- Function: clrhash TABLE
3319
3320Clear TABLE.
3321
3322- Function: gethash KEY TABLE &optional DEFAULT
3323
3324Look up KEY in TABLE and return its associated VALUE or DEFAULT if
3325not found.
3326
3327- Function: puthash KEY VALUE TABLE
3328
3329Associate KEY with VALUE in TABLE. If KEY is already associated with
3330another value, replace the old value with VALUE.
3331
3332- Function: remhash KEY TABLE
3333
3334Remove KEY from TABLE if it is there.
3335
3336- Function: maphash FUNCTION TABLE
3337
3338Call FUNCTION for all elements in TABLE. FUNCTION must take two
3339arguments KEY and VALUE.
3340
3341- Function: sxhash OBJ
3342
3343Return a hash code for Lisp object OBJ.
3344
3345- Function: define-hash-table-test NAME TEST-FN HASH-FN
3346
3347Define a new hash table test named NAME. If NAME is specified as
3348a test in `make-hash-table', the table created will use TEST-FN for
3349comparing keys, and HASH-FN to compute hash codes for keys. Test
3350and hash function are stored as symbol property `hash-table-test'
3351of NAME with a value of (TEST-FN HASH-FN).
3352
3353TEST-FN must take two arguments and return non-nil if they are the same.
3354
3355HASH-FN must take one argument and return an integer that is the hash
3356code of the argument. The function should use the whole range of
3357integer values for hash code computation, including negative integers.
3358
3359Example: The following creates a hash table whose keys are supposed to
3360be 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
3375It now works to use the #N= and #N# constructs to represent
3376circular structures. For example, #1=(a . #1#) represents
3377a cons cell which is its own cdr.
3378
3379** The Lisp printer handles circular structure.
3380
3381If 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
3385t, that means replace a tab with spaces if necessary to reach the
3386specified column, but do not add spaces at the end of the line if it
3387is too short to reach that column.
3388
3389** perform-replace has a new feature: the REPLACEMENTS argument may
3390now be a cons cell (FUNCTION . DATA). This means to call FUNCTION
3391after each match to get the replacement text. FUNCTION is called with
3392two arguments: DATA, and the number of replacements already made.
3393
3394If the FROM-STRING contains any upper-case letters,
3395perform-replace also turns off `case-fold-search' temporarily
3396and inserts the replacement text without altering case in it.
3397
3398** The function buffer-size now accepts an optional argument
3399to specify which buffer to return the size of.
3400
3401** The calendar motion commands now run the normal hook
3402calendar-move-hook after moving point.
3403
3404** The new variable small-temporary-file-directory specifies a
3405directory to use for creating temporary files that are likely to be
3406small. (Certain Emacs features use this directory.) If
3407small-temporary-file-directory is nil, they use
3408temporary-file-directory instead.
3409
3410** The variable `inhibit-modification-hooks', if non-nil, inhibits all
3411the hooks that track changes in the buffer. This affects
3412`before-change-functions' and `after-change-functions', as well as
3413hooks attached to text properties and overlay properties.
3414
3415** assq-delete-all is a new function that deletes all the
3416elements 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
3420make-temp-file is used like make-temp-name, except that it actually
3421creates the file before it returns. This prevents a timing error,
3422ensuring that no other job can use the same name for a temporary file.
3423
3424** New exclusive-open feature in `write-region'
3425
3426The optional seventh arg is now called MUSTBENEW. If non-nil, it insists
3427on a check for an existing file with the same name. If MUSTBENEW
3428is `excl', that means to get an error if the file already exists;
3429never overwrite. If MUSTBENEW is neither nil nor `excl', that means
3430ask for confirmation before overwriting, but do go ahead and
3431overwrite the file if the user gives confirmation.
3432
3433If the MUSTBENEW argument in `write-region' is `excl',
3434that means to use a special feature in the `open' system call
3435to get an error if the file exists at that time.
3436The error reported is `file-already-exists'.
3437
3438** Function `format' now handles text properties.
3439
3440Text properties of the format string are applied to the result string.
3441If the result string is longer than the format string, text properties
3442ending at the end of the format string are extended to the end of the
3443result string.
3444
3445Text properties from string arguments are applied to the result
3446string where arguments appear in the result string.
3447
3448Example:
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
3456results in a bold-face string with an italic `world' at the end.
3457
3458** Messages can now be displayed with text properties.
3459
3460Text properties are handled as described above for function `format'.
3461The following example displays a bold-face message with an italic
3462argument 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
3472Emacs supports playing sound files on GNU/Linux and the free BSDs
3473(Voxware driver and native BSD driver, aka as Luigi's driver).
3474
3475Currently supported file formats are RIFF-WAVE (*.wav) and Sun Audio
3476(*.au). You must configure Emacs with the option `--with-sound=yes'
3477to enable sound support.
3478
3479Sound files can be played by calling (play-sound SOUND). SOUND is a
3480list of the form `(sound PROPERTY...)'. The function is only defined
3481when sound support is present for the system on which Emacs runs. The
3482functions runs `play-sound-functions' with one argument which is the
3483sound to play, before playing the sound.
3484
3485The following sound properties are supported:
3486
3487- `:file FILE'
3488
3489FILE is a file name. If FILE isn't an absolute name, it will be
3490searched relative to `data-directory'.
3491
3492- `:data DATA'
3493
3494DATA is a string containing sound data. Either :file or :data
3495may be present, but not both.
3496
3497- `:volume VOLUME'
3498
3499VOLUME must be an integer in the range 0..100 or a float in the range
35000..1. This property is optional.
3501
3502- `:device DEVICE'
3503
3504DEVICE is a string specifying the system device on which to play the
3505sound. The default device is system-dependent.
3506
3507Other properties are ignored.
3508
3509An 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
3515a keyword symbol.
3516
3517** Changes to garbage collection
3518
3519*** The function garbage-collect now additionally returns the number
3520of live and free strings.
3521
3522*** There is a new variable `strings-consed' holding the number of
3523strings that have been consed so far.
3524
3525
3526* Lisp-level Display features added after release 2.6 of the Emacs
3527Lisp Manual
3528
3529** The user-option `resize-mini-windows' controls how Emacs resizes
3530mini-windows.
3531
3532** The function `pos-visible-in-window-p' now has a third optional
3533argument, PARTIALLY. If a character is only partially visible, nil is
3534returned, 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
3541image.
3542
3543- Function: image-size SPEC &optional PIXELS FRAME
3544
3545Return the size of an image as a pair (WIDTH . HEIGHT).
3546
3547SPEC is an image specification. PIXELS non-nil means return sizes
3548measured in pixels, otherwise return sizes measured in canonical
3549character units (fractions of the width/height of the frame's default
3550font). FRAME is the frame on which the image will be displayed.
3551FRAME nil or omitted means use the selected frame.
3552
3553** The function `image-mask-p' can be used to determine if an image
3554has a mask bitmap.
3555
3556- Function: image-mask-p SPEC &optional FRAME
3557
3558Return t if image SPEC has a mask bitmap.
3559FRAME is the frame on which the image will be displayed. FRAME nil
3560or omitted means use the selected frame.
3561
3562** The function `find-image' can be used to find a usable image
3563satisfying one of a list of specifications.
3564
3565** The STRING argument of `put-image' and `insert-image' is now
3566optional.
3567
3568** Image specifications may contain the property `:ascent center' (see
3569below).
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
3575to make Emacs avoid displaying text with bold black foreground on TTYs.
3576
3577Some terminals, notably PC consoles, emulate bold text by displaying
3578text in brighter colors. On such a console, a bold black foreground
3579is displayed in a gray color. If this turns out to be hard to read on
3580your monitor---the problem occurred with the mode line on
3581laptops---you can instruct Emacs to ignore the text's boldness, and to
3582just display it black instead.
3583
3584This situation can't be detected automatically. You will have to put
3585a line like
3586
3587 (tty-suppress-bold-inverse-default-colors t)
3588
3589in your `.emacs'.
3590
3591** New face implementation.
3592
3593Emacs faces have been reimplemented from scratch. They don't use XLFD
3594font names anymore and face merging now works as expected.
3595
3596*** New faces.
3597
3598Each 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
3629Faces are frame-local by nature because Emacs allows to define the
3630same named face (face names are symbols) differently for different
3631frames. Each frame has an alist of face definitions for all named
3632faces. The value of a named face in such an alist is a Lisp vector
3633with the symbol `face' in slot 0, and a slot for each of the face
3634attributes mentioned above.
3635
3636There is also a global face alist `face-new-frame-defaults'. Face
3637definitions from this list are used to initialize faces of newly
3638created frames.
3639
3640A face doesn't have to specify all attributes. Those not specified
3641have a nil value. Faces specifying all attributes are called
3642`fully-specified'.
3643
3644*** Face merging.
3645
3646The display style of a given character in the text is determined by
3647combining several faces. This process is called `face merging'. Any
3648aspect of the display style that isn't specified by overlays or text
3649properties is taken from the `default' face. Since it is made sure
3650that the default face is always fully-specified, face merging always
3651results in a fully-specified face.
3652
3653*** Face realization.
3654
3655After all face attributes for a character have been determined by
3656merging faces of that character, that face is `realized'. The
3657realization process maps face attributes to what is physically
3658available on the system where Emacs runs. The result is a `realized
3659face' in form of an internal structure which is stored in the face
3660cache of the frame on which it was realized.
3661
3662Face realization is done in the context of the charset of the
3663character to display because different fonts and encodings are used
3664for different charsets. In other words, for characters of different
3665charsets, different realized faces are needed to display them.
3666
3667Except for composite characters, faces are always realized for a
3668specific character set and contain a specific font, even if the face
3669being realized specifies a fontset. The reason is that the result of
3670the new font selection stage is better than what can be done with
3671statically defined font name patterns in fontsets.
3672
3673In unibyte text, Emacs' charsets aren't applicable; function
3674`char-charset' reports ASCII for all characters, including those >
36750x7f. The X registry and encoding of fonts to use is determined from
3676the variable `face-default-registry' in this case. The variable is
3677initialized at Emacs startup time from the font the user specified for
3678Emacs.
3679
3680Currently all unibyte text, i.e. all buffers with
3681`enable-multibyte-characters' nil are displayed with fonts of the same
3682registry and encoding `face-default-registry'. This is consistent
3683with the fact that languages can also be set globally, only.
3684
3685**** Clearing face caches.
3686
3687The Lisp function `clear-face-cache' can be called to clear face caches
3688on all frames. If called with a non-nil argument, it will also unload
3689unused fonts.
3690
3691*** Font selection.
3692
3693Font selection tries to find the best available matching font for a
3694given (charset, face) combination. This is done slightly differently
3695for faces specifying a fontset, or a font family name.
3696
3697If the face specifies a fontset name, that fontset determines a
3698pattern for fonts of the given charset. If the face specifies a font
3699family, a font pattern is constructed. Charset symbols have a
3700property `x-charset-registry' for that purpose that maps a charset to
3701an XLFD registry and encoding in the font pattern constructed.
3702
3703Available fonts on the system on which Emacs runs are then matched
3704against the font pattern. The result of font selection is the best
3705match for the given face attributes in this font list.
3706
3707Font selection can be influenced by the user.
3708
3709The user can specify the relative importance he gives the face
3710attributes width, height, weight, and slant by setting
3711face-font-selection-order (faces.el) to a list of face attribute
3712names. The default is (:width :height :weight :slant), and means
3713that font selection first tries to find a good match for the font
3714width specified by a face, then---within fonts with that width---tries
3715to find a best match for the specified font height, etc.
3716
3717Setting `face-font-family-alternatives' allows the user to specify
3718alternative font families to try if a family specified by a face
3719doesn't exist.
3720
3721Setting `face-font-registry-alternatives' allows the user to specify
3722all alternative font registry names to try for a face specifying a
3723registry.
3724
3725Please note that the interpretations of the above two variables are
3726slightly different.
3727
3728Setting face-ignored-fonts allows the user to ignore specific fonts.
3729
3730
3731**** Scalable fonts
3732
3733Emacs can make use of scalable fonts but doesn't do so by default,
3734since the use of too many or too big scalable fonts may crash XFree86
3735servers.
3736
3737To enable scalable font use, set the variable
3738`scalable-fonts-allowed'. A value of nil, the default, means never use
3739scalable fonts. A value of t means any scalable font may be used.
3740Otherwise, the value must be a list of regular expressions. A
3741scalable font may then be used if it matches a regular expression from
3742that list. Example:
3743
3744 (setq scalable-fonts-allowed '("muleindian-2$"))
3745
3746allows 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
3752Return a list of available fonts of family FAMILY on FRAME. If FAMILY
3753is omitted or nil, list all families. Otherwise, FAMILY must be a
3754string, possibly containing wildcards `?' and `*'.
3755
3756If FRAME is omitted or nil, use the selected frame. Each element of
3757the result is a vector [FAMILY WIDTH POINT-SIZE WEIGHT SLANT FIXED-P
3758FULL REGISTRY-AND-ENCODING]. FAMILY is the font family name.
3759POINT-SIZE is the size of the font in 1/10 pt. WIDTH, WEIGHT, and
3760SLANT are symbols describing the width, weight and slant of the font.
3761These symbols are the same as for face attributes. FIXED-P is non-nil
3762if the font is fixed-pitch. FULL is the full name of the font, and
3763REGISTRY-AND-ENCODING is a string giving the registry and encoding of
3764the font. The result list is sorted according to the current setting
3765of the face font sort order.
3766
3767- Function: x-font-family-list
3768
3769Return a list of available font families on FRAME. If FRAME is
3770omitted 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
3772non-nil if fonts of that family are fixed-pitch.
3773
3774- Variable: font-list-limit
3775
3776Limit for font matching. If an integer > 0, font matching functions
3777won't load more than that number of fonts when searching for a
3778matching font. The default is currently 100.
3779
3780*** Setting face attributes.
3781
3782For the most part, the new face implementation is interface-compatible
3783with the old one. Old face attribute related functions are now
3784implemented in terms of the new functions `set-face-attribute' and
3785`face-attribute'.
3786
3787Face attributes are identified by their names which are keyword
3788symbols. All attributes can be set to `unspecified'.
3789
3790The following attributes are recognized:
3791
3792`:family'
3793
3794VALUE must be a string specifying the font family, e.g. ``courier'',
3795or a fontset alias name. If a font family is specified, wild-cards `*'
3796and `?' are allowed.
3797
3798`:width'
3799
3800VALUE specifies the relative proportionate width of the font to use.
3801It 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
3807VALUE must be either an integer specifying the height of the font to use
3808in 1/10 pt, a floating point number specifying the amount by which to
3809scale any underlying face, or a function, which is called with the old
3810height (from the underlying face), and should return the new height.
3811
3812`:weight'
3813
3814VALUE specifies the weight of the font to use. It must be one of the
3815symbols `ultra-bold', `extra-bold', `bold', `semi-bold', `normal',
3816`semi-light', `light', `extra-light', `ultra-light'.
3817
3818`:slant'
3819
3820VALUE specifies the slant of the font to use. It must be one of the
3821symbols `italic', `oblique', `normal', `reverse-italic', or
3822`reverse-oblique'.
3823
3824`:foreground', `:background'
3825
3826VALUE must be a color name, a string.
3827
3828`:underline'
3829
3830VALUE specifies whether characters in FACE should be underlined. If
3831VALUE is t, underline with foreground color of the face. If VALUE is
3832a string, underline with that color. If VALUE is nil, explicitly
3833don't underline.
3834
3835`:overline'
3836
3837VALUE specifies whether characters in FACE should be overlined. If
3838VALUE is t, overline with foreground color of the face. If VALUE is a
3839string, overline with that color. If VALUE is nil, explicitly don't
3840overline.
3841
3842`:strike-through'
3843
3844VALUE specifies whether characters in FACE should be drawn with a line
3845striking through them. If VALUE is t, use the foreground color of the
3846face. If VALUE is a string, strike-through with that color. If VALUE
3847is nil, explicitly don't strike through.
3848
3849`:box'
3850
3851VALUE specifies whether characters in FACE should have a box drawn
3852around them. If VALUE is nil, explicitly don't draw boxes. If
3853VALUE is t, draw a box with lines of width 1 in the foreground color
3854of the face. If VALUE is a string, the string must be a color name,
3855and the box is drawn in that color with a line width of 1. Otherwise,
3856VALUE must be a property list of the form `(:line-width WIDTH
3857:color COLOR :style STYLE)'. If a keyword/value pair is missing from
3858the property list, a default value will be used for the value, as
3859specified below. WIDTH specifies the width of the lines to draw; it
3860defaults to 1. COLOR is the name of the color to draw in, default is
3861the foreground color of the face for simple boxes, and the background
3862color of the face for 3D boxes. STYLE specifies whether a 3D box
3863should be draw. If STYLE is `released-button', draw a box looking
3864like a released 3D button. If STYLE is `pressed-button' draw a box
3865that appears like a pressed button. If STYLE is nil, the default if
3866the property list doesn't contain a style specification, draw a 2D
3867box.
3868
3869`:inverse-video'
3870
3871VALUE specifies whether characters in FACE should be displayed in
3872inverse video. VALUE must be one of t or nil.
3873
3874`:stipple'
3875
3876If VALUE is a string, it must be the name of a file of pixmap data.
3877The directories listed in the `x-bitmap-file-path' variable are
3878searched. Alternatively, VALUE may be a list of the form (WIDTH
3879HEIGHT DATA) where WIDTH and HEIGHT are the size in pixels, and DATA
3880is a string containing the raw bits of the bitmap. VALUE nil means
3881explicitly don't use a stipple pattern.
3882
3883For convenience, attributes `:family', `:width', `:height', `:weight',
3884and `:slant' may also be set in one step from an X font name:
3885
3886`:font'
3887
3888Set font-related face attributes from VALUE. VALUE must be a valid
3889XLFD font name. If it is a font name pattern, the first matching font
3890is used--this is for compatibility with the behavior of previous
3891versions of Emacs.
3892
3893For compatibility with Emacs 20, keywords `:bold' and `:italic' can
3894be used to specify that a bold or italic font should be used. VALUE
3895must be t or nil in that case. A value of `unspecified' is not allowed."
3896
3897Please see also the documentation of `set-face-attribute' and
3898`defface'.
3899
3900`:inherit'
3901
3902VALUE is the name of a face from which to inherit attributes, or a list
3903of face names. Attributes from inherited faces are merged into the face
3904like an underlying face would be, with higher priority than underlying faces.
3905
3906*** Face attributes and X resources
3907
3908The following X resource names can be used to set face attributes
3909from 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
3935The value of the `face' text property can now be a single face
3936specification or a list of such specifications. Each face
3937specification can be
3938
39391. A symbol or string naming a Lisp face.
3940
39412. 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
39463. 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
3952The function `tty-color-define' can be used to define colors for use
3953on TTY and MSDOS frames. It maps a color name to a color number on
3954the terminal. Emacs defines a couple of common color mappings by
3955default. You can get defined colors with a call to
3956`defined-colors'. The function `tty-color-clear' can be
3957used to clear the mapping table.
3958
3959** Unified support for colors independent of frame type.
3960
3961The new functions `defined-colors', `color-defined-p', `color-values',
3962and `display-color-p' work for any type of frame. On frames whose
3963type is neither x nor w32, these functions transparently map X-style
3964color specifications to the closest colors supported by the frame
3965display. Lisp programs should use these new functions instead of the
3966old `x-defined-colors', `x-color-defined-p', `x-color-values', and
3967`x-display-color-p'. (The old function names are still available for
3968compatibility; they are now aliases of the new names.) Lisp programs
3969should no more look at the value of the variable window-system to
3970modify their color-related behavior.
3971
3972The primitives `color-gray-p' and `color-supported-p' also work for
3973any frame type.
3974
3975** Platform-independent functions to describe display capabilities.
3976
3977The 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
3983display. Lisp programs should call these functions instead of testing
3984the value of the variables `window-system' or `system-type', or calling
3985platform-specific functions such as `x-display-pixel-width'.
3986
3987The new function `display-images-p' returns non-nil if a particular
3988display can display image files.
3989
3990** The minibuffer prompt is now actually inserted in the minibuffer.
3991
3992This makes it possible to scroll through the prompt, if you want to.
3993To disallow this completely (like previous versions of emacs), customize
3994the variable `minibuffer-prompt-properties', and turn on the
3995`Inviolable' option.
3996
3997The function `minibuffer-prompt-end' returns the current position of the
3998end of the minibuffer prompt, if the minibuffer is current.
3999Otherwise, it returns `(point-min)'.
4000
4001** New `field' abstraction in buffers.
4002
4003There is now code to support an abstraction called `fields' in emacs
4004buffers. A field is a contiguous region of text with the same `field'
4005property (which can be a text property or an overlay).
4006
4007Many emacs functions, such as forward-word, forward-sentence,
4008forward-paragraph, beginning-of-line, etc., stop moving when they come
4009to the boundary between fields; beginning-of-line and end-of-line will
4010not let the point move past the field boundary, but other movement
4011commands continue into the next field if repeated. Stopping at field
4012boundaries can be suppressed programmatically by binding
4013`inhibit-field-text-motion' to a non-nil value around calls to these
4014functions.
4015
4016Now that the minibuffer prompt is inserted into the minibuffer, it is in
4017a separate field from the user-input part of the buffer, so that common
4018editing commands treat the user's text separately from the prompt.
4019
4020The 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
4024Return the position closest to NEW-POS that is in the same field as OLD-POS.
4025
4026A field is a region of text with the same `field' property.
4027If NEW-POS is nil, then the current point is used instead, and set to the
4028constrained position if that is different.
4029
4030If OLD-POS is at the boundary of two fields, then the allowable
4031positions for NEW-POS depends on the value of the optional argument
4032ESCAPE-FROM-EDGE: If ESCAPE-FROM-EDGE is nil, then NEW-POS is
4033constrained to the field that has the same `field' char-property
4034as any new characters inserted at OLD-POS, whereas if ESCAPE-FROM-EDGE
4035is non-nil, NEW-POS is constrained to the union of the two adjacent
4036fields. Additionally, if two fields are separated by another field with
4037the special value `boundary', then any point within this special field is
4038also considered to be `on the boundary'.
4039
4040If the optional argument ONLY-IN-LINE is non-nil and constraining
4041NEW-POS would move it to a different line, NEW-POS is returned
4042unconstrained. This useful for commands that move by line, like
4043C-n or C-a, which should generally respect field boundaries
4044only in the case where they can still move to the right line.
4045
4046If the optional argument INHIBIT-CAPTURE-PROPERTY is non-nil, and OLD-POS has
4047a non-nil property of that name, then any field boundaries are ignored.
4048
4049Field boundaries are not noticed if `inhibit-field-text-motion' is non-nil.
4050
4051- Function: delete-field &optional POS
4052
4053Delete the field surrounding POS.
4054A field is a region of text with the same `field' property.
4055If POS is nil, the value of point is used for POS.
4056
4057- Function: field-beginning &optional POS ESCAPE-FROM-EDGE
4058
4059Return the beginning of the field surrounding POS.
4060A field is a region of text with the same `field' property.
4061If POS is nil, the value of point is used for POS.
4062If ESCAPE-FROM-EDGE is non-nil and POS is at the beginning of its
4063field, then the beginning of the *previous* field is returned.
4064
4065- Function: field-end &optional POS ESCAPE-FROM-EDGE
4066
4067Return the end of the field surrounding POS.
4068A field is a region of text with the same `field' property.
4069If POS is nil, the value of point is used for POS.
4070If ESCAPE-FROM-EDGE is non-nil and POS is at the end of its field,
4071then the end of the *following* field is returned.
4072
4073- Function: field-string &optional POS
4074
4075Return the contents of the field surrounding POS as a string.
4076A field is a region of text with the same `field' property.
4077If POS is nil, the value of point is used for POS.
4078
4079- Function: field-string-no-properties &optional POS
4080
4081Return the contents of the field around POS, without text-properties.
4082A field is a region of text with the same `field' property.
4083If POS is nil, the value of point is used for POS.
4084
4085** Image support.
4086
4087Emacs can now display images. Images are inserted into text by giving
4088strings or buffer text a `display' text property containing one of
4089(AREA IMAGE) or IMAGE. The display of the `display' property value
4090replaces the display of the characters having that property.
4091
4092If the property value has the form (AREA IMAGE), AREA must be one of
4093`(margin left-margin)', `(margin right-margin)' or `(margin nil)'. If
4094AREA is `(margin nil)', IMAGE will be displayed in the text area of a
4095window, otherwise it will be displayed in the left or right marginal
4096area.
4097
4098IMAGE is an image specification.
4099
4100*** Image specifications
4101
4102Image specifications are lists of the form `(image PROPS)' where PROPS
4103is a property list whose keys are keyword symbols. Each
4104specifications must contain a property `:type TYPE' with TYPE being a
4105symbol specifying the image type, e.g. `xbm'. Properties not
4106described below are ignored.
4107
4108The following is a list of properties all image types share.
4109
4110`:ascent ASCENT'
4111
4112ASCENT must be a number in the range 0..100, or the symbol `center'.
4113If it is a number, it specifies the percentage of the image's height
4114to use for its ascent.
4115
4116If not specified, ASCENT defaults to the value 50 which means that the
4117image will be centered with the base line of the row it appears in.
4118
4119If ASCENT is `center' the image is vertically centered around a
4120centerline which is the vertical center of text drawn at the position
4121of the image, in the manner specified by the text properties and
4122overlays that apply to the image.
4123
4124`:margin MARGIN'
4125
4126MARGIN must be either a number >= 0 specifying how many pixels to put
4127as margin around the image, or a pair (X . Y) with X specifying the
4128horizontal margin and Y specifying the vertical margin. Default is 0.
4129
4130`:relief RELIEF'
4131
4132RELIEF is analogous to the `:relief' attribute of faces. Puts a relief
4133around an image.
4134
4135`:conversion ALGO'
4136
4137Apply an image algorithm to the image before displaying it.
4138
4139ALGO `laplace' or `emboss' means apply a Laplace or ``emboss''
4140edge-detection algorithm to the image.
4141
4142ALGO `(edge-detection :matrix MATRIX :color-adjust ADJUST)' means
4143apply a general edge-detection algorithm. MATRIX must be either a
4144nine-element list or a nine-element vector of numbers. A pixel at
4145position x/y in the transformed image is computed from original pixels
4146around that position. MATRIX specifies, for each pixel in the
4147neighborhood of x/y, a factor with which that pixel will influence the
4148transformed pixel; element 0 specifies the factor for the pixel at
4149x-1/y-1, element 1 the factor for the pixel at x/y-1 etc. as shown
4150below.
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
4156The resulting pixel is computed from the color intensity of the color
4157resulting from summing up the RGB values of surrounding pixels,
4158multiplied by the specified factors, and dividing that sum by the sum
4159of the factors' absolute values.
4160
4161Laplace edge-detection currently uses a matrix of
4162
4163 (1 0 0
4164 0 0 0
4165 9 9 -1)
4166
4167Emboss edge-detection uses a matrix of
4168
4169 ( 2 -1 0
4170 -1 0 1
4171 0 1 -2)
4172
4173ALGO `disabled' means transform the image so that it looks
4174``disabled''.
4175
4176`:mask MASK'
4177
4178If MASK is `heuristic' or `(heuristic BG)', build a clipping mask for
4179the image, so that the background of a frame is visible behind the
4180image. If BG is not specified, or if BG is t, determine the
4181background color of the image by looking at the 4 corners of the
4182image, assuming the most frequently occurring color from the corners is
4183the background color of the image. Otherwise, BG must be a list `(RED
4184GREEN BLUE)' specifying the color to assume for the background of the
4185image.
4186
4187If MASK is nil, remove a mask from the image, if it has one. Images
4188in some formats include a mask which can be removed by specifying
4189`:mask nil'.
4190
4191`:file FILE'
4192
4193Load image from FILE. If FILE is not absolute after expanding it,
4194search for the image in `data-directory'. Some image types support
4195building images from data. When this is done, no `:file' property
4196may be present in the image specification.
4197
4198`:data DATA'
4199
4200Get image data from DATA. (As of this writing, this is not yet
4201supported for image type `postscript'). Either :file or :data may be
4202present in an image specification, but not both. All image types
4203support strings as DATA, some types allow additional types of DATA.
4204
4205*** Supported image types
4206
4207**** XBM, image type `xbm'.
4208
4209XBM images don't require an external library. Additional image
4210properties supported are:
4211
4212`:foreground FG'
4213
4214FG must be a string specifying the image foreground color, or nil
4215meaning to use the default. Default is the frame's foreground color.
4216
4217`:background BG'
4218
4219BG must be a string specifying the image background color, or nil
4220meaning to use the default. Default is the frame's background color.
4221
4222XBM images can be constructed from data instead of file. In this
4223case, the image specification must contain the following properties
4224instead of a `:file' property.
4225
4226`:width WIDTH'
4227
4228WIDTH specifies the width of the image in pixels.
4229
4230`:height HEIGHT'
4231
4232HEIGHT specifies the height of the image in pixels.
4233
4234`:data DATA'
4235
4236DATA 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
4252XPM images require the external library `libXpm', package
4253`xpm-3.4k.tar.gz', version 3.4k or later. Make sure the library is
4254found when Emacs is configured by supplying appropriate paths via
4255`--x-includes' and `--x-libraries'.
4256
4257Additional image properties supported are:
4258
4259`:color-symbols SYMBOLS'
4260
4261SYMBOLS must be a list of pairs (NAME . COLOR), with NAME being the
4262name of color as it appears in an XPM file, and COLOR being an X color
4263name.
4264
4265XPM images can be built from memory instead of files. In that case,
4266add a `:data' property instead of a `:file' property.
4267
4268The XPM library uses libz in its implementation so that it is able
4269to display compressed images.
4270
4271**** PBM, image type `pbm'
4272
4273PBM images don't require an external library. Color, gray-scale and
4274mono images are supported. Additional image properties supported for
4275mono images are:
4276
4277`:foreground FG'
4278
4279FG must be a string specifying the image foreground color, or nil
4280meaning to use the default. Default is the frame's foreground color.
4281
4282`:background FG'
4283
4284BG must be a string specifying the image background color, or nil
4285meaning to use the default. Default is the frame's background color.
4286
4287**** JPEG, image type `jpeg'
4288
4289Support for JPEG images requires the external library `libjpeg',
4290package `jpegsrc.v6a.tar.gz', or later. There are no additional image
4291properties defined.
4292
4293**** TIFF, image type `tiff'
4294
4295Support for TIFF images requires the external library `libtiff',
4296package `tiff-v3.4-tar.gz', or later. There are no additional image
4297properties defined.
4298
4299**** GIF, image type `gif'
4300
4301Support for GIF images requires the external library `libungif', package
4302`libungif-4.1.0', or later.
4303
4304Additional image properties supported are:
4305
4306`:index INDEX'
4307
4308INDEX must be an integer >= 0. Load image number INDEX from a
4309multi-image GIF file. If INDEX is too large, the image displays
4310as a hollow box.
4311
4312This could be used to implement limited support for animated GIFs.
4313For example, the following function displays a multi-image GIF file
4314at point-min in the current buffer, switching between sub-images
4315every 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
4334Support for PNG images requires the external library `libpng',
4335package `libpng-1.0.2.tar.gz', or later. There are no additional image
4336properties defined.
4337
4338**** Ghostscript, image type `postscript'.
4339
4340Additional image properties supported are:
4341
4342`:pt-width WIDTH'
4343
4344WIDTH is width of the image in pt (1/72 inch). WIDTH must be an
4345integer. This is a required property.
4346
4347`:pt-height HEIGHT'
4348
4349HEIGHT specifies the height of the image in pt (1/72 inch). HEIGHT
4350must be a integer. This is an required property.
4351
4352`:bounding-box BOX'
4353
4354BOX must be a list or vector of 4 integers giving the bounding box of
4355the PS image, analogous to the `BoundingBox' comment found in PS
4356files. This is an required property.
4357
4358Part of the Ghostscript interface is implemented in Lisp. See
4359lisp/gs.el.
4360
4361*** Lisp interface.
4362
4363The variable `image-types' contains a list of those image types
4364which are supported in the current configuration.
4365
4366Images are stored in an image cache and removed from the cache when
4367they haven't been displayed for `image-cache-eviction-delay seconds.
4368The function `clear-image-cache' can be used to clear the image cache
4369manually. Images in the cache are compared with `equal', i.e. all
4370images with `equal' specifications share the same image.
4371
4372*** Simplified image API, image.el
4373
4374The new Lisp package image.el contains functions that simplify image
4375creation and putting images into text. The function `create-image'
4376can be used to create images. The macro `defimage' can be used to
4377define an image based on available image types. The functions
4378`put-image' and `insert-image' can be used to insert an image into a
4379buffer.
4380
4381** Display margins.
4382
4383Windows can now have margins which are used for special text
4384and images.
4385
4386To 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
4389obtain the current settings. To make `left-margin-width' and
4390`right-margin-width' take effect, you must set them before displaying
4391the buffer in a window, or use `set-window-buffer' to force an update
4392of the display margins.
4393
4394You can put text in margins by giving it a `display' text property
4395containing a pair of the form `(LOCATION . VALUE)', where LOCATION is
4396one of `left-margin' or `right-margin' or nil. VALUE can be either a
4397string, an image specification or a stretch specification (see later
4398in this file).
4399
4400** Help display
4401
4402Emacs displays short help messages in the echo area, when the mouse
4403moves 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
4405that have a `help-echo' property.
4406
4407If the value of the `help-echo' property is a function, that function
4408is called with three arguments WINDOW, OBJECT and POSITION. WINDOW is
4409the window in which the help was found.
4410
4411If OBJECT is a buffer, POS is the position in the buffer where the
4412`help-echo' text property was found.
4413
4414If OBJECT is an overlay, that overlay has a `help-echo' property, and
4415POS is the position in the overlay's buffer under the mouse.
4416
4417If OBJECT is a string (an overlay string or a string displayed with
4418the `display' property), POS is the position in that string under the
4419mouse.
4420
4421If the value of the `help-echo' property is neither a function nor a
4422string, it is evaluated to obtain a help string.
4423
4424For tool-bar and menu-bar items, their key definition is used to
4425determine the help to display. If their definition contains a
4426property `:help FORM', FORM is evaluated to determine the help string.
4427For tool-bar items without a help form, the caption of the item is
4428used as help string.
4429
4430The hook `show-help-function' can be set to a function that displays
4431the help string differently. For example, enabling a tooltip window
4432causes the help display to appear there instead of in the echo area.
4433
4434** Vertical fractional scrolling.
4435
4436The display of text in windows can be scrolled smoothly in pixels.
4437This is useful, for example, for making parts of large images visible.
4438
4439The function `window-vscroll' returns the current value of vertical
4440scrolling, a non-negative fraction of the canonical character height.
4441The function `set-window-vscroll' can be used to set the vertical
4442scrolling value. Here is an example of how these function might be
4443used.
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
4458Functions from `fontification-functions' are called from redisplay
4459when it encounters a region of text that is not yet fontified. This
4460variable automatically becomes buffer-local when set. Each function
4461is called with one argument, POS.
4462
4463At least one of the hook functions should fontify one or more
4464characters starting at POS in the current buffer. It should mark them
4465as fontified by giving them a non-nil value of the `fontified' text
4466property. 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
4471Emacs supports a tool bar at the top of a frame under X. The frame
4472parameter `tool-bar-lines' (X resource "toolBar", class "ToolBar")
4473controls how may lines to reserve for the tool bar. A zero value
4474suppresses 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
4476automatically so that all tool bar items are visible.
4477
4478*** Tool bar item definitions
4479
4480Tool bar items are defined using `define-key' with a prefix-key
4481`tool-bar'. For example `(define-key global-map [tool-bar item1] ITEM)'
4482where ITEM is a list `(menu-item CAPTION BINDING PROPS...)'.
4483
4484CAPTION is the caption of the item, If it's not a string, it is
4485evaluated to get a string. The caption is currently not displayed in
4486the tool bar, but it is displayed if the item doesn't have a `:help'
4487property (see below).
4488
4489BINDING is the tool bar item's binding. Tool bar items with keymaps as
4490binding are currently ignored.
4491
4492The following properties are recognized:
4493
4494`:enable FORM'.
4495
4496FORM is evaluated and specifies whether the tool bar item is enabled
4497or disabled.
4498
4499`:visible FORM'
4500
4501FORM is evaluated and specifies whether the tool bar item is displayed.
4502
4503`:filter FUNCTION'
4504
4505FUNCTION is called with one parameter, the same list BINDING in which
4506FUNCTION is specified as the filter. The value FUNCTION returns is
4507used instead of BINDING to display this item.
4508
4509`:button (TYPE SELECTED)'
4510
4511TYPE must be one of `:radio' or `:toggle'. SELECTED is evaluated
4512and specifies whether the button is selected (pressed) or not.
4513
4514`:image IMAGES'
4515
4516IMAGES is either a single image specification or a vector of four
4517image specifications. If it is a vector, this table lists the
4518meaning 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
4527If IMAGE is a single image specification, a Laplace edge-detection
4528algorithm is used on that image to draw the image in disabled state.
4529
4530`:help HELP-STRING'.
4531
4532Gives a help string to display for the tool bar item. This help
4533is displayed when the mouse is moved over the item.
4534
4535The function `toolbar-add-item' is a convenience function for adding
4536toolbar items generally, and `tool-bar-add-item-from-menu' can be used
4537to define a toolbar item with a binding copied from an item on the
4538menu bar.
4539
4540The default bindings use a menu-item :filter to derive the tool-bar
4541dynamically from variable `tool-bar-map' which may be set
4542buffer-locally to override the global map.
4543
4544*** Tool-bar-related variables.
4545
4546If `auto-resize-tool-bar' is non-nil, the tool bar will automatically
4547resize to show all defined tool bar items. It will never grow larger
4548than 1/4 of the frame's size.
4549
4550If `auto-raise-tool-bar-buttons' is non-nil, tool bar buttons will be
4551raised when the mouse moves over them.
4552
4553You can add extra space between tool bar items by setting
4554`tool-bar-button-margin' to a positive integer specifying a number of
4555pixels, or a pair of integers (X . Y) specifying horizontal and
4556vertical margins . Default is 1.
4557
4558You 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
4563You can bind commands to clicks with control, shift, meta etc. on
4564a 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
4570is the original tool bar item definition, then
4571
4572 (define-key global-map [tool-bar S-shell] 'some-command)
4573
4574makes a binding to run `some-command' for a shifted click on the same
4575item.
4576
4577** Mode line changes.
4578
4579*** Mouse-sensitive mode line.
4580
4581The mode line can be made mouse-sensitive by displaying strings there
4582that have a `local-map' text property. There are three ways to display
4583a string with a `local-map' property in the mode line.
4584
45851. The mode line spec contains a variable whose string value has
4586a `local-map' text property.
4587
45882. The mode line spec contains a format specifier (e.g. `%12b'), and
4589that format specifier has a `local-map' property.
4590
45913. The mode line spec contains a list containing `:eval FORM'. FORM
4592is evaluated. If the result is a string, and that string has a
4593`local-map' property.
4594
4595The same mechanism is used to determine the `face' and `help-echo'
4596properties of strings in the mode line. See `bindings.el' for an
4597example.
4598
4599*** If a mode line element has the form `(:eval FORM)', FORM is
4600evaluated and the result is used as mode line element.
4601
4602*** You can suppress mode-line display by setting the buffer-local
4603variable mode-line-format to nil.
4604
4605*** A headerline can now be displayed at the top of a window.
4606
4607This mode line's contents are controlled by the new variable
4608`header-line-format' and `default-header-line-format' which are
4609completely analogous to `mode-line-format' and
4610`default-mode-line-format'. A value of nil means don't display a top
4611line.
4612
4613The appearance of top mode lines is controlled by the face
4614`header-line'.
4615
4616The function `coordinates-in-window-p' returns `header-line' for a
4617position in the header-line.
4618
4619** Text property `display'
4620
4621The `display' text property is used to insert images into text,
4622replace text with other text, display text in marginal area, and it is
4623also used to control other aspects of how text displays. The value of
4624the `display' property should be a display specification, as described
4625below, or a list or vector containing display specifications.
4626
4627*** Replacing text, displaying text in marginal areas
4628
4629To replace the text having the `display' property with some other
4630text, use a display specification of the form `(LOCATION STRING)'.
4631
4632If LOCATION is `(margin left-margin)', STRING is displayed in the left
4633marginal area, if it is `(margin right-margin)', it is displayed in
4634the right marginal area, and if LOCATION is `(margin nil)' STRING
4635is displayed in the text. In the latter case you can also use the
4636simpler form STRING as property value.
4637
4638*** Variable width and height spaces
4639
4640To display a space of fractional width or height, use a display
4641specification of the form `(LOCATION STRECH)'. If LOCATION is
4642`(margin left-margin)', the space is displayed in the left marginal
4643area, if it is `(margin right-margin)', it is displayed in the right
4644marginal area, and if LOCATION is `(margin nil)' the space is
4645displayed in the text. In the latter case you can also use the
4646simpler form STRETCH as property value.
4647
4648The stretch specification STRETCH itself is a list of the form `(space
4649PROPS)', where PROPS is a property list which can contain the
4650properties described below.
4651
4652The display of the fractional space replaces the display of the
4653characters having the `display' property.
4654
4655- :width WIDTH
4656
4657Specifies that the space width should be WIDTH times the normal
4658character width. WIDTH can be an integer or floating point number.
4659
4660- :relative-width FACTOR
4661
4662Specifies that the width of the stretch should be computed from the
4663first character in a group of consecutive characters that have the
4664same `display' property. The computation is done by multiplying the
4665width of that character by FACTOR.
4666
4667- :align-to HPOS
4668
4669Specifies that the space should be wide enough to reach HPOS. The
4670value HPOS is measured in units of the normal character width.
4671
4672Exactly one of the above properties should be used.
4673
4674- :height HEIGHT
4675
4676Specifies the height of the space, as HEIGHT, measured in terms of the
4677normal line height.
4678
4679- :relative-height FACTOR
4680
4681The height of the space is computed as the product of the height
4682of the text having the `display' property and FACTOR.
4683
4684- :ascent ASCENT
4685
4686Specifies that ASCENT percent of the height of the stretch should be
4687used for the ascent of the stretch, i.e. for the part above the
4688baseline. The value of ASCENT must be a non-negative number less or
4689equal to 100.
4690
4691You should not use both `:height' and `:relative-height' together.
4692
4693*** Images
4694
4695A display specification for an image has the form `(LOCATION
4696. IMAGE)', where IMAGE is an image specification. The image replaces,
4697in the display, the characters having this display specification in
4698their `display' text property. If LOCATION is `(margin left-margin)',
4699the image will be displayed in the left marginal area, if it is
4700`(margin right-margin)' it will be displayed in the right marginal
4701area, and if LOCATION is `(margin nil)' the image will be displayed in
4702the text. In the latter case you can also use the simpler form IMAGE
4703as display specification.
4704
4705*** Other display properties
4706
4707- (space-width FACTOR)
4708
4709Specifies that space characters in the text having that property
4710should be displayed FACTOR times as wide as normal; FACTOR must be an
4711integer or float.
4712
4713- (height HEIGHT)
4714
4715Display text having this property in a font that is smaller or larger.
4716
4717If HEIGHT is a list of the form `(+ N)', where N is an integer, that
4718means to use a font that is N steps larger. If HEIGHT is a list of
4719the 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
4721a font is available counts as a step.
4722
4723If HEIGHT is a number, that means to use a font that is HEIGHT times
4724as tall as the frame's default font.
4725
4726If HEIGHT is a symbol, it is called as a function with the current
4727height as argument. The function should return the new height to use.
4728
4729Otherwise, 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
4734FACTOR must be a number, specifying a multiple of the current
4735font's height. If it is positive, that means to display the characters
4736raised. If it is negative, that means to display them lower down. The
4737amount of raising or lowering is computed without taking account of the
4738`height' subproperty.
4739
4740*** Conditional display properties
4741
4742All display specifications can be conditionalized. If a specification
4743has the form `(when CONDITION . SPEC)', the specification SPEC applies
4744only when CONDITION yields a non-nil value when evaluated. During the
4745evaluation, `object' is bound to the string or buffer having the
4746conditional display property; `position' and `buffer-position' are
4747bound to the position within `object' and the buffer position where
4748the display property was found, respectively. Both positions can be
4749different when object is a string.
4750
4751The normal specification consisting of SPEC only is equivalent to
4752`(when t . SPEC)'.
4753
4754** New menu separator types.
4755
4756Emacs now supports more than one menu separator type. Menu items with
4757item names consisting of dashes only (including zero dashes) are
4758treated like before. In addition, the following item names are used
4759to specify other menu separator types.
4760
4761- `--no-line' or `--space', or `--:space', or `--:noLine'
4762
4763No separator lines are drawn, but a small space is inserted where the
4764separator occurs.
4765
4766- `--single-line' or `--:singleLine'
4767
4768A single line in the menu's foreground color.
4769
4770- `--double-line' or `--:doubleLine'
4771
4772A double line in the menu's foreground color.
4773
4774- `--single-dashed-line' or `--:singleDashedLine'
4775
4776A single dashed line in the menu's foreground color.
4777
4778- `--double-dashed-line' or `--:doubleDashedLine'
4779
4780A double dashed line in the menu's foreground color.
4781
4782- `--shadow-etched-in' or `--:shadowEtchedIn'
4783
4784A single line with 3D sunken appearance. This is the form
4785displayed for item names consisting of dashes only.
4786
4787- `--shadow-etched-out' or `--:shadowEtchedOut'
4788
4789A single line with 3D raised appearance.
4790
4791- `--shadow-etched-in-dash' or `--:shadowEtchedInDash'
4792
4793A single dashed line with 3D sunken appearance.
4794
4795- `--shadow-etched-out-dash' or `--:shadowEtchedOutDash'
4796
4797A single dashed line with 3D raise appearance.
4798
4799- `--shadow-double-etched-in' or `--:shadowDoubleEtchedIn'
4800
4801Two lines with 3D sunken appearance.
4802
4803- `--shadow-double-etched-out' or `--:shadowDoubleEtchedOut'
4804
4805Two lines with 3D raised appearance.
4806
4807- `--shadow-double-etched-in-dash' or `--:shadowDoubleEtchedInDash'
4808
4809Two dashed lines with 3D sunken appearance.
4810
4811- `--shadow-double-etched-out-dash' or `--:shadowDoubleEtchedOutDash'
4812
4813Two dashed lines with 3D raised appearance.
4814
4815Under LessTif/Motif, the last four separator types are displayed like
4816the corresponding single-line separators.
4817
4818** New frame parameters for scroll bar colors.
4819
4820The new frame parameters `scroll-bar-foreground' and
4821`scroll-bar-background' can be used to change scroll bar colors.
4822Their value must be either a color name, a string, or nil to specify
4823that scroll bars should use a default color. For toolkit scroll bars,
4824default colors are toolkit specific. For non-toolkit scroll bars, the
4825default background is the background color of the frame, and the
4826default foreground is black.
4827
4828The X resource name of these parameters are `scrollBarForeground'
4829(class ScrollBarForeground) and `scrollBarBackground' (class
4830`ScrollBarBackground').
4831
4832Setting these parameters overrides toolkit specific X resource
4833settings for scroll bar colors.
4834
4835** You can set `redisplay-dont-pause' to a non-nil value to prevent
4836display updates from being interrupted when input is pending.
4837
4838** Changing a window's width may now change its window start if it
4839starts on a continuation line. The new window start is computed based
4840on the window's new width, starting from the start of the continued
4841line as the start of the screen line with the minimum distance from
4842the original window start.
4843
4844** The variable `hscroll-step' and the functions
4845`hscroll-point-visible' and `hscroll-window-column' have been removed
4846now that proper horizontal scrolling is implemented.
4847
4848** Windows can now be made fixed-width and/or fixed-height.
4849
4850A 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
4852windows fixed-height, a value of `width' makes them fixed-width, any
4853other non-nil value makes them both fixed-width and fixed-height.
4854
4855The following code makes all windows displaying the current buffer
4856fixed-width and fixed-height.
4857
4858 (set (make-local-variable 'window-size-fixed) t)
4859
4860A call to enlarge-window on a window gives an error if that window is
4861fixed-width and it is tried to change the window's width, or if the
4862window is fixed-height, and it is tried to change its height. To
4863change the size of a fixed-size window, bind `window-size-fixed'
4864temporarily to nil, for example
4865
4866 (let ((window-size-fixed nil))
4867 (enlarge-window 10))
4868
4869Likewise, an attempt to split a fixed-height window vertically,
4870or a fixed-width window horizontally results in a error.
4871
4872** The cursor-type frame parameter is now supported on MS-DOS
4873terminals. When Emacs starts, it by default changes the cursor shape
4874to a solid box, as it does on Unix. The `cursor-type' frame parameter
4875overrides this as it does on Unix, except that the bar cursor is
4876horizontal rather than vertical (since the MS-DOS display doesn't
4877support a vertical-bar cursor).
4878
4879
4880
4881----------------------------------------------------------------------
4882Copyright information:
4883
4884Copyright (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
4897Local variables:
4898mode: outline
4899paragraph-separate: "[ ]*$"
4900end:
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 @@
1Old GNU Emacs NEWS -- history of user-visible changes thru version 15.
2Copyright (C) 1985 Richard M. Stallman.
3See the end for copying conditions.
4
5Changes 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
218Changes 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
246Changes 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
280Changes 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
374This marks the process so that, when you kill Emacs,
375you will not on its account be queried about active subprocesses.
376
377Changes 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
403Changes 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
445Changes 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
538Changes in Emacs 1.8
539
540This 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
566Changes in Emacs 1.7
567
568It'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
665Changes 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
797Changes 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
824Changes 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
882Changes 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
935Changes 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
988Changes 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
1095Lisp 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----------------------------------------------------------------------
1149Copyright information:
1150
1151Copyright (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
1163Local variables:
1164mode: text
1165end:
1166
1167arch-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 @@
1GNU Emacs NEWS -- history of user-visible changes. 1992.
2Copyright (C) 1992 Free Software Foundation, Inc.
3See the end for copying conditions.
4
5For older news, see the file ONEWS.3.
6
7Changes 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
12now flashes only 1/4 of the window's total area. This is because
13flashing the whole window is too slow on some systems.
14
15* `call-process' and `call-process-region' now return an indication
16of the exit status of the subprocess: either a numeric exit code
17or a string describing the signal which caused termination.
18
19* It is possible for regular expression matching to overflow the stack
20of failure points. In the past, such overflow was treated as simple
21failure 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
24to 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
29because they now work by "typing" signal characters such as C-c.
30
31* copy-keymap no longer recursively copies keymaps reached through
32symbols' function definitions (i.e., those that have names). It does
33copy nested keymaps that appear directly in the other copied keymaps.
34
35Changes in version 18.56.
36
37* C-g should now work to interrupt a running program
38on all kinds of systems even when using X windows.
39
40* Quitting is inhibited while a filter or sentinel is running.
41Those functions can run asynchronously while Emacs is waiting
42for keyboard input, and if they allow quitting, they
43make the behavior of C-g unpredictable.
44
45* Storing text into the X windows cut buffer
46now clears out any selection.
47
48* The undo facility is completely rewritten, and now
49uses Lisp data structures. It can record much more
50information. You can use the variables undo-threshold
51and undo-high-threshold to control how much.
52
53* There is no longer a maximum screen height or width.
54
55Changes 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
60both 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
65line number to go to in the file whose name follows. Thus,
66 emacsclient foo.c +45 bar.c
67will 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
72run, Emacs now tries the entire terminal type first. If that doesn't
73yield a file that exists, the last hyphen and what follows it is
74stripped. If that doesn't yield a file that exists, the previous
75hyphen is stripped, and so on until all hyphens are gone. For
76example, 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
79Underscores now receive the same treatment as hyphens.
80
81* Texinfo features: @defun, etc. texinfo-show-structure.
82New template commands. texinfo-format-region.
83
84* The special "local variable" `eval' is now ignored if you are running
85as root.
86
87* New command `c-macro-expand' shows the result of C macro expansion
88in the region. It works using the C preprocessor, so its results
89are 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.
98If the value of `spell-filter' is non-nil, it is called, with no arguments,
99looking at a temporary buffer containing a copy of the text to be checked.
100It 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
103you 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)
106as a function of no arguments before the actual posting.
107
108** Rmail now calls the value of `rmail-show-message-hook' (if not nil)
109as 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
112unless Emacs is running in batch mode.
113
114* New libraries.
115See 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
120library and run M-x life.
121
122** doctex.el: a library for converting the Emacs `etc/DOC' file of
123documentation strings into TeX input.
124
125** saveconf.el: a library which records the arrangement of windows and
126buffers when you exit Emacs, and automatically recreates the same
127setup the next time you start Emacs.
128
129** uncompress.el: a library that automatically uncompresses files
130when 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
137message you send.
138
139** hideif.el: a library for hiding parts of a C program based on preprocessor
140conditionals.
141
142** autoinsert.el: a library to put in some initial text when you visit
143a nonexistent file. The text used depends on the major mode, and
144comes 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
149of the window system you are using (if appropriate). When using X windows,
150its value is either 10 or 11.
151
152** (interactive "N") uses the prefix argument if any; otherwise, it reads
153a number using the minibuffer.
154
155** VMS: there are two new functions `vms-system-info' and `shrink-to-icon'.
156The former allows you to get many kinds of system status information.
157See its self-documentation for full details.
158The 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
161job-wide logical names. The old function `define-dcl-symbol' has been
162removed.
163
164Changes in version 18.50.
165
166* X windows version 11 is supported.
167
168Define 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.
171It asks for the filename of the executable you want to debug.
172
173GDB runs as an inferior with I/O through an Emacs buffer. All the
174facilities of Shell mode are available. In addition, each time your
175program stops, and each time you select a new stack frame, the source
176code is displayed in another window with an arrow added to the line
177where the program is executing.
178
179Special GDB-mode commands include M-s, M-n, M-i, M-u, M-d, and C-c C-f
180which send the GDB commands `step', `next', `stepi', `up', `down'
181and `finish'.
182
183In any source file, the commands C-x SPC tells GDB to set a breakpoint
184on 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
190This is a way you can explicitly request not to make a backup.
191
192* `term-setup-hook' is for users only.
193
194Emacs never uses this variable for internal purposes, so you can freely
195set it in your `.emacs' file to make Emacs do something special after
196loading any terminal-specific setup file from `lisp/term'.
197
198* `copy-keymap' now copies recursive submaps.
199
200* New overlay-arrow feature.
201
202If you set the variable `overlay-arrow-string' to a string
203and `overlay-arrow-position' to a marker, that string is displayed on
204the screen at the position of that marker, hiding whatever text would
205have appeared there. If that position isn't on the screen, or if
206the buffer the marker points into isn't displayed, there is no effect.
207
208* -batch mode can read from the terminal.
209
210It now works to use `read-char' to do terminal input in a noninteractive
211Emacs run. End of file causes Emacs to exit.
212
213* Variables `data-bytes-used' and `data-bytes-free' removed.
214
215These variables cannot really work because the 24-bit range of an
216integer in (most ports of) GNU Emacs is not large enough to hold their
217values on many systems.
218
219Changes in version 18.45, since version 18.41.
220
221* C indentation parameter `c-continued-brace-offset'.
222
223This parameter's value is added to the indentation of any
224line that is in a continuation context and starts with an open-brace.
225For example, it applies to the open brace shown here:
226
227 if (x)
228 {
229
230The default value is zero.
231
232* Dabbrev expansion (Meta-/) preserves case.
233
234When you use Meta-/ to search the buffer for an expansion of an
235abbreviation, if the expansion found is all lower case except perhaps
236for its first letter, then the case pattern of the abbreviation
237is 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
242has 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
247If the variable `mail-default-reply-to' is non-`nil', then each time
248you start to compose a message, a Reply-to field is inserted with
249its contents taken from the value of `mail-default-reply-to'.
250
251* Where is your .emacs file?
252
253If you run Emacs under `su', so your real and effective uids are
254different, Emacs uses the home directory associated with the real uid
255(the name you actually logged in under) to find the .emacs file.
256
257Otherwise, Emacs uses the environment variable HOME to find the .emacs
258file.
259
260The .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
266On VMS systems, all file names that you specify are converted to upper
267case. You can use either upper or lower case indiscriminately.
268
269* VMS-only function 'define-dcl-symbol'.
270
271This is a new name for the function formerly called
272`define-logical-name'.
273
274Editing Changes in Emacs 18
275
276* Additional systems and machines are supported.
277
278GNU Emacs now runs on Vax VMS. However, many facilities that are normally
279implemented by running subprocesses do not work yet. This includes listing
280a directory and sending mail. There are features for running subprocesses
281but they are incompatible with those on Unix. I hope that some of
282the VMS users can reimplement these features for VMS (compatibly for
283the user, if possible).
284
285VMS wizards are also asked to work on making the subprocess facilities
286more upward compatible with those on Unix, and also to rewrite their
287internals to use the same Lisp objects that are used on Unix to
288represent processes.
289
290In addition, the TI Nu machine running Unix system V, the AT&T 3b, and
291the Wicat, Masscomp, Integrated Solutions, Alliant, Amdahl uts, Mips,
292Altos 3068 and Gould Unix systems are now supported. The IBM PC-RT is
293supported under 4.2, but not yet under system V. The GEC 93 is close
294to working. The port for the Elxsi is partly merged. See the file
295MACHINES for full status information and machine-specific installation
296advice.
297
298* Searching is faster.
299
300Forward search for a text string, or for a regexp that is equivalent
301to a text string, is now several times faster. Motion by lines and
302counting lines is also faster.
303
304* Memory usage improvements.
305
306It is no longer possible to run out of memory during garbage
307collection. As a result, running out of memory is never fatal. This
308is due to a new garbage collection algorithm which compactifies
309strings in place rather than copying them. Another consequence of the
310change is a reduction in total memory usage and a slight increase in
311garbage collection speed.
312
313* Display changes.
314
315** Editing above top of screen.
316
317When you delete or kill or alter text that reaches to the top of the
318screen or above it, so that display would start in the middle of a
319line, Emacs will usually attempt to scroll the text so that display
320starts at the beginning of a line again.
321
322** Yanking in the minibuffer.
323
324The message "Mark Set" is no longer printed when the minibuffer is
325active. This is convenient with many commands, including C-y, that
326normally print such a message.
327
328** Cursor appears in last line during y-or-n questions.
329
330Questions that want a `y' or `n' answer now move the cursor
331to the last line, following the question.
332
333* Library loading changes.
334
335`load' now considers all possible suffixes (`.elc', `.el' and none)
336for each directory in `load-path' before going on to the next directory.
337It now accepts an optional fourth argument which, if non-nil, says to
338use no suffixes; then the file name must be given in full. The search
339of the directories in `load-path' goes on as usual in this case, but
340it too can be prevented by passing an absolute file name.
341
342The value of `load-path' no longer by default includes nil (meaning to
343look in the current default directory). The idea is that `load' should
344be used to search the path only for libraries to be found in the standard
345places. If you want to override system libraries with your own, place
346your own libraries in one special directory and add that directory to the
347front of `load-path'.
348
349The function `load' is no longer a command; that is to say, `M-x load'
350is 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
353and 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
359Do `edt-emulation-off' to return Emacs to normal.
360
361** `vi-mode' and `vip-mode' starts emulating vi.
362
363These are two different vi emulations provided by GNU Emacs users.
364We are interested in feedback as to which emulation is preferable.
365
366See the documentation and source code for these functions
367for more information.
368
369** `set-gosmacs-bindings' emulates Gosling Emacs.
370
371This command changes many global bindings to resemble those of
372Gosling Emacs. The previous bindings are saved and can be restored using
373`set-gnu-bindings'.
374
375* Emulation of a display terminal.
376
377Within Emacs it is now possible to run programs (such as emacs or
378supdup) which expect to do output to a visual display terminal.
379
380See the function `terminal-emulator' for more information.
381
382* New support for keypads and function keys.
383
384There is now a first attempt at terminal-independent support for
385keypad and function keys.
386
387Emacs now defines a standard set of key-names for function and keypad
388keys, and provides standard hooks for defining them. Most of the
389standard key-names have default definitions built into Emacs; you can
390override these in a terminal-independent manner. The default definitions
391and the conventions for redefining them are in the file `lisp/keypad.el'.
392
393These keys on the terminal normally work by sending sequences of
394characters starting with ESC. The exact sequences used vary from
395terminal to terminal. Emacs interprets them in two stages:
396in the first stage, terminal-dependent sequences are mapped into
397the standard key-names; then second stage maps the standard key-names
398into their definitions in a terminal-independent fashion.
399
400The terminal-specific file `term/$TERM.el' now is responsible only for
401establishing the mapping from the terminal's escape sequences into
402standard key-names. It no longer knows what Emacs commands are
403assigned to the standard key-names.
404
405One other change in terminal-specific files: if the value of the TERM
406variable contains a hyphen, only the part before the first hyphen is
407used in forming the name of the terminal-specific file. Thus, for
408terminal type `aaa-48', the file loaded is now `term/aaa.el' rather
409than `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
414insert the contents of FILE into the current buffer at that point in
415command 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
421emulator on the X window system and you want to run Emacs to work through
422the terminal emulator instead of working directly with the window system,
423use this switch.
424
425* Buffer-sorting commands.
426
427Various M-x commands whose names start with `sort-' sort parts of
428the region:
429
430sort-lines divides the region into lines and sorts them alphabetically.
431sort-pages divides into pages and sorts them alphabetically.
432sort-paragraphs divides into paragraphs and sorts them alphabetically.
433sort-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.
438sort-numeric-fields
439 is similar but converts the specified fields to numbers
440 and sorts them numerically.
441sort-columns divides into lines and sorts them according to the contents
442 of a specified range of columns.
443
444Refer 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
451listed. Select the `*Occur*' buffer that contains the output of `occur',
452move point to the occurrence you want, and type C-c C-c.
453This will move point to the same occurrence in the buffer that the
454occurrences were found in.
455
456The command `occur-menu' is thus obsolete, and has been deleted.
457
458One way to get a list of matching lines without line numbers is to
459copy the text to another buffer and use the command `keep-lines'.
460
461** Incremental search changes.
462
463Ordinary and regexp incremental searches now have distinct default
464search strings. Thus, regexp searches recall only previous regexp
465searches.
466
467If you exit an incremental search when the search string is empty,
468the old default search string is kept. The default does not become
469empty.
470
471Reversing the direction of an incremental search with C-s or C-r
472when the search string is empty now does not get the default search
473string. It leaves the search string empty. A second C-s or C-r
474will get the default search string. As a result, you can do a reverse
475incremental regexp search with C-M-s C-r.
476
477If you add a `*', `?' or `\|' to an incremental search regexp,
478point will back up if that is appropriate. For example, if
479you have searched for `ab' and add a `*', point moves to the
480first match for `ab*', which may be before the match for `ab'
481that was previously found.
482
483If an incremental search is failing and you ask to repeat it,
484it will start again from the beginning of the buffer (or the end,
485if it is a backward search).
486
487The 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
490with `search'.
491
492If `search-slow-window-lines' is negative, the slow search window
493is put at the top of the screen, and the absolute value or the
494negative number specifies the height of it.
495
496** Undo changes
497
498The undo command now will mark the buffer as unmodified only when it is
499identical to the contents of the visited file.
500
501** C-M-v in minibuffer.
502
503If while in the minibuffer you request help in a way that uses a
504window to display something, then until you exit the minibuffer C-M-v
505in the minibuffer window scrolls the window of help.
506
507For example, if you request a list of possible completions, C-M-v can
508be used reliably to scroll the completion list.
509
510** M-TAB command.
511
512Meta-TAB performs completion on the Emacs Lisp symbol names. The sexp
513in the buffer before point is compared against all existing nontrivial
514Lisp symbols and completed as far as is uniquely determined by them.
515Nontrivial symbols are those with either function definitions, values
516or properties.
517
518If there are multiple possibilities for the very next character, a
519list of possible completions is displayed.
520
521** Dynamic abbreviation package.
522
523The new command Meta-/ expands an abbreviation in the buffer before point
524by searching the buffer for words that start with the abbreviation.
525
526** Changes in saving kbd macros.
527
528The commands `write-kbd-macro' and `append-kbd-macro' have been
529deleted. 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
531it is currently defined into the buffer before point. Visit a Lisp
532file such as your Emacs init file `~/.emacs', insert the macro
533definition (perhaps deleting an old definition for the same macro)
534and then save the file.
535
536** C-x ' command.
537
538The new command C-x ' (expand-abbrev) expands the word before point as
539an abbrev, even if abbrev-mode is not turned on.
540
541** Sending to inferior Lisp.
542
543The command C-M-x in Lisp mode, which sends the current defun to
544an inferior Lisp process, now works by writing the text into a temporary
545file and actually sending only a `load'-form to load the file.
546As a result, it avoids the Unix bugs that used to strike when the
547text was above a certain length.
548
549With a prefix argument, this command now makes the inferior Lisp buffer
550appear on the screen and scrolls it so that the bottom is showing.
551
552Two variables `inferior-lisp-load-command' and `inferior-lisp-prompt',
553exist to customize these feature for different Lisp implementations.
554
555** C-x n p now disabled.
556
557The command C-x n p, a nonrecomended command which narrows to the current
558page, is now initially disabled like C-x n n.
559
560* Dealing with files.
561
562** C-x C-v generalized
563
564This command is now allowed even if the current buffer is not visiting
565a file. As usual, it kills the current buffer and replaces it with a
566newly found file.
567
568** M-x recover-file improved; auto save file names changed.
569
570M-x recover-file now checks whether the last auto-save file is more
571recent than the real visited file before offering to read in the
572auto-save file. If the auto-save file is newer, a directory listing
573containing the two files is displayed while you are asked whether you
574want the auto save file.
575
576Visiting a file also makes this check. If the auto-save file is more recent,
577a message is printed suggesting that you consider using M-x recover file.
578
579Auto save file names now by default have a `#' at the end as well
580as at the beginning. This is so that `*.c' in a shell command
581will never match auto save files.
582
583On VMS, auto save file names are made by appending `_$' at the front
584and `$' at the end.
585
586When you change the visited file name of a buffer, the auto save file
587is now renamed to belong to the new visited file name.
588
589You can customize the way auto save file names are made by redefining
590the two functions `make-auto-save-file-name' and `auto-save-file-name-p',
591both of which are defined in `files.el'.
592
593** Modifying a buffer whose file is changed on disk is detected instantly.
594
595On systems where clash detection (locking of files being edited) is
596implemented, Emacs also checks the first time you modify a buffer
597whether the file has changed on disk since it was last visited or saved.
598If it has, you are asked to confirm that you want to change the buffer.
599
600** Exiting Emacs offers to save `*mail*'.
601
602Emacs can now know about buffers that it should offer to save on exit
603even though they are not visiting files. This is done for any buffer
604which has a non-nil local value of `buffer-offer-save'. By default,
605Mail mode provides such a local value.
606
607** Backup file changes.
608
609If a backup file cannot be written in the directory of the visited file
610due to fascist file protection, a backup file is now written in your home
611directory as `~/%backup%~'. Only one such file is made, ever, so only
612the most recently made such backup is available.
613
614When backup files are made by copying, the last-modification time of the
615original file is now preserved in the backup copy.
616
617** Visiting remote files.
618
619On an internet host, you can now visit and save files on any other
620internet host directly from Emacs with the commands M-x ftp-find-file
621and M-x ftp-write-file. Specify an argument of the form HOST:FILENAME.
622Since standard internet FTP is used, the other host may be any kind
623of machine and is not required to have any special facilities.
624
625The first time any one remote host is accessed, you will be asked to
626give the user name and password for use on that host. FTP is reinvoked
627each time you ask to use it, but previously specified user names and
628passwords are remembered automatically.
629
630** Dired `g' command.
631
632`g' in Dired mode is equivalent to M-x revert-buffer; it causes the
633current contents of the same directory to be read in.
634
635* Changes in major modes.
636
637** C mode indentation change.
638
639The binding of Linefeed is no longer changed by C mode. It once again
640has its normal meaning, which is to insert a newline and then indent
641afterward.
642
643The old definition did one additional thing: it reindented the line
644before the new newline. This has been removed because it made the
645command twice as slow. The only time it was really useful was after the
646insertion of an `else', since the fact of starting with `else' may change
647the way that line is indented. Now you will have to type TAB again
648yourself to reindent the `else' properly.
649
650If the variable `c-tab-always-indent' is set to `nil', the TAB command
651in C mode, with no argument, will just insert a tab character if there
652is non-whitespace preceding point on the current line. Giving it a
653prefix argument will force reindentation of the line (as well as
654of the compound statement that begins after point, if any).
655
656** Fortran mode now exists.
657
658This mode provides commands for motion and indentation of Fortran code,
659plus built-in abbrevs for Fortran keywords. For details, see the manual
660or the on-line documentation of the command `fortran-mode'.
661
662** Scribe mode now exists.
663
664This mode does something useful for editing files of Scribe input.
665It is used automatically for files with names ending in ".mss".
666
667** Modula2 and Prolog modes now exist.
668
669These modes are for editing programs in the languages of the same names.
670They can be selected with M-x modula-2-mode and M-x prolog-mode.
671
672** Telnet mode changes.
673
674The telnet mode special commands have now been assigned to C-c keys.
675Most of them are the same as in Shell mode.
676
677** Picture mode changes.
678
679The special picture-mode commands to specify the direction of cursor
680motion after insertion have been moved to C-c keys. The commands to
681specify diagonal motion were already C-c keys; they are unchanged.
682The keys to specify horizontal or vertical motion are now
683C-c < (left), C-c > (right), C-c ^ (up) and C-c . (down).
684
685** Nroff mode comments.
686
687Comments are now supported in Nroff mode. The standard comment commands
688such as M-; and C-x ; know how to insert, align and delete comments
689that start with backslash-doublequote.
690
691** LaTeX mode.
692
693LaTeX mode now exists. Use M-x latex-mode to select this mode, and
694M-x plain-tex-mode to select the previously existing mode for Plain
695TeX. M-x tex-mode attempts to examine the contents of the buffer and
696choose between latex-mode and plain-tex-mode accordingly; if the
697buffer is empty or it cannot tell, the variable `TeX-default-mode'
698controls the choice. Its value should be the symbol for the mode to
699be used.
700
701The facilities for running TeX on all or part of the buffer
702work with LaTeX as well.
703
704Some new commands available in both modes:
705
706C-c C-l recenter the window showing the TeX output buffer
707 so most recent line of output can be seen.
708C-c C-k kill the TeX subprocess.
709C-c C-q show the printer queue.
710C-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
717Invisible lines in outline mode are now indicated by `...' at the
718end of the previous visible line.
719
720The special outline heading motion commands are now all on C-c keys.
721A few new ones have been added. Here is a full list:
722
723C-c C-n Move to next visible heading (formerly M-})
724C-c C-p Move to previous visible heading (formerly M-{)
725C-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.
728C-c C-b Move to previous visible heading at the same level.
729C-c C-u Move up to previous visible heading at a higher level.
730
731The variable `outline-regexp' now controls recognition of heading lines.
732Any line whose beginning matches this regexp is a heading line.
733The depth in outline structure is determined by the length of
734the string that matches.
735
736A line starting with a ^L (formfeed) is now by default considered
737a header line.
738
739* Mail reading and sending.
740
741** MH-E changes.
742
743MH-E has been extensively modified and improved since the v17 release.
744It contains many new features, including commands to: extracted failed
745messages, kill a draft message, undo changes to a mail folder, monitor
746delivery of a letter, print multiple messages, page digests backwards,
747insert signatures, and burst digests. Also, many commands have been
748made to able to deal with named sequences of messages, instead of
749single messages. MH-E also has had numerous bugs fixed and commands
750made to run faster. Furthermore, its keybindings have been changed to
751be compatible with Rmail and the rest of GNU Emacs.
752
753** Mail mode changes.
754
755The C-c commands of mail mode have been rearranged:
756
757C-c s, C-c c, C-c t and C-c b (move point to various header fields)
758have been reassigned as C-c C-f C-s, C-c C-f C-c, C-c C-f C-t and C-c
759C-f C-b. C-c C-f is for "field".
760
761C-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
763Thus, C-c LETTER is always unassigned.
764
765** Rmail C-r command changed to w.
766
767The Rmail command to edit the current message is now `w'. This change
768has been made because people frequently type C-r while in Rmail hoping
769to do a reverse incremental search. That now works.
770
771* Rnews changes.
772
773** Caesar rotation added.
774
775The function news-caesar-buffer-body performs the rot13 code on the
776body of a news message. You can also specify the number to rotate by,
777as a prefix argument. The function is bound to C-c C-r in both
778News mode and News Reply mode.
779
780** rmail-output command added.
781
782The C-o command has been bound to rmail-output in news-mode.
783This allows one to append an article to a file which is in either Unix
784mail or RMAIL format.
785
786** news-reply-mode changes.
787
788The C-c commands of news reply mode have been rearranged and changed,
789so that C-c LETTER is always unassigned:
790
791C-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
793C-c c, C-c t, and C-c b (move to various mail header fields) have been
794deleted (they make no sense for posting and replying to USENET).
795
796C-c s (move to Subject: header field) has been reassigned as C-c C-f
797C-s. C-c C-f is for "field". Several additional move to news header
798field commands have been added.
799
800The local news-reply-mode bindings now look like this:
801
802C-c C-s news-inews (post the message) C-c C-c news-inews
803C-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:
807C-c C-y news-reply-yank-original (insert current message, in NEWS).
808C-c C-q mail-fill-yanked-message (fill what was yanked).
809C-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
814match in the tags table, and try substring matches only afterward.
815
816** The new command `find-tag-regexp' visits successively the tags that
817match a specified regular expression.
818
819** You can now use more than one tags table. Using `visit-tags-table'
820to load a new tags table does not discard the other tables previously
821loaded. The other tags commands use all the tags tables that are loaded;
822the 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
825the tags table gives the file names of other tags tables. Tags command
826then search included tags tables after the including table (but before any
827other tags tables you have loaded). Included tags tables can make it much
828easier and more efficient to maintain a tags table for a large package with
829many subdirectories--there is one tags table for each subdirectory, and a
830master tags table that includes each subdirectory table. You use `-i'
831options to `etags' when creating the tags table to give the file names of
832the included tables.
833
834** You can now use the tags table for completion of names during
835ordinary editing. The command M-TAB (except in Emacs Lisp mode)
836completes the identifier in the buffer before point, using the set of
837all tags as the list of possible completions.
838
839** `tags-query-replace' and `tags-search' changes.
840
841These functions no longer permanently create buffers for files that
842are searched but that do not contain any matches for the search
843pattern.
844
845* Existing Emacs usable as a server.
846
847Programs such as mailers that invoke "the editor" as an inferior
848to edit some text can now be told to use an existing Emacs process
849instead of creating a new editor.
850
851To do this, you must have an Emacs process running and capable of
852doing terminal I/O at the time you want to invoke it. This means that
853either you are using a window system and give Emacs a separate window
854or you run the other programs as inferiors of Emacs (such as, using
855M-x shell).
856
857First prepare the existing Emacs process by loading the `server'
858library and executing M-x server-start. (Your .emacs can do this
859automatically.)
860
861Now tell the other programs to use, as "the editor", the Emacs client
862program (etc/emacsclient, located in the same directory as this file).
863This can be done by setting the environment variable EDITOR.
864
865When another program invokes the emacsclient as "the editor", the
866client actually transfers the file names to be edited to the existing
867Emacs, which automatically visits the files.
868
869When you are done editing a buffer for a client, do C-x # (server-edit).
870This marks that buffer as done, and selects the next buffer that the client
871asked for. When all the buffers requested by a client are marked in this
872way, Emacs tells the client program to exit, so that the program that
873invoked "the editor" will resume execution.
874
875You can only have one server Emacs at a time, but multiple client programs
876can put in requests at the same time.
877
878The client/server work only on Berkeley Unix, since they use the Berkeley
879sockets mechanism for their communication.
880
881Changes in Lisp programming in Emacs version 18.
882
883* Init file changes.
884
885** Suffixes no longer accepted on `.emacs'.
886
887Emacs will no longer load a file named `.emacs.el' or `emacs.elc'
888in place of `.emacs'. This is so that it will take less time to
889find `.emacs'. If you want to compile your init file, give it another
890name and make `.emacs' a link to the `.elc' file, or make it contain
891a call to `load' to load the `.elc' file.
892
893** `default-profile' renamed to `default', and loaded after `.emacs'.
894
895It used to be the case that the file `default-profile' was loaded if
896and only if `.emacs' was not found.
897
898Now the name `default-profile' is not used at all. Instead, a library
899named `default' is loaded after the `.emacs' file. `default' is loaded
900whether the `.emacs' file exists or not. However, loading of `default'
901can be prevented if the `.emacs' file sets `inhibit-default-init' to non-nil.
902
903In fact, you would call the default file `default.el' and probably would
904byte-compile it to speed execution.
905
906Note that for most purposes you are better off using a `site-init' library
907since that will be loaded before the runnable Emacs is dumped. By using
908a `site-init' library, you avoid taking up time each time Emacs is started.
909
910** inhibit-command-line has been eliminated.
911
912This variable used to exist for .emacs files to set. It has been
913eliminated because you can get the same effect by setting
914command-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;
919the rest are individual arguments to pass to that function, except for the
920last, which is a list of arguments to pass.
921
922Previously, `apply' required exactly two arguments. Its old behavior
923follows 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
928a number using the minibuffer to serve as the argument; however,
929if a prefix argument was specified, it uses the prefix argument
930value as the argument, and does not use the minibuffer at all.
931
932This is used by the `goto-line' and `goto-char' commands.
933
934* Semantics of variables.
935
936** Built-in per-buffer variables improved.
937
938Several built-in variables which in the past had a different value in
939each buffer now behave exactly as if `make-variable-buffer-local' had
940been done to them.
941
942These 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
947To be precise, each variable has a default value which shows through
948in most buffers and can be accessed with `default-value' and set with
949`set-default'. Setting the variable with `setq' makes the variable
950local to the current buffer. Changing the default value has retroactive
951effect on all buffers in which the variable is not local.
952
953The variables `default-case-fold-search', etc., are now obsolete.
954They now refer to the default value of the variable, which is not
955quite the same behavior as before, but it should enable old init files
956to continue to work.
957
958** New per-buffer variables.
959
960The variables `fill-prefix', `comment-column' and `indent-tabs-mode'
961are 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
966same syntax that `setq' accepts: the variable name is not evaluated
967and need not be quoted.
968
969`(setq-default case-fold-search nil)' would make searches case-sensitive
970in all buffers that do not have local values for `case-fold-search'.
971
972You can set multiple variables sequentially, each with its own value,
973in `setq-default' just as in `setq'.
974
975** Functions `global-set' and `global-value' deleted.
976
977These functions were never used except by mistake by users expecting
978the functionality of `set-default' and `default-value'.
979
980* Changes in defaulting of major modes.
981
982When `default-major-mode' is `nil', new buffers are supposed to
983get their major mode from the buffer that is current. However,
984certain major modes (such as Dired mode, Rmail mode, Rmail Summary mode,
985and others) are not reasonable to use in this way.
986
987Now such modes' names have been given non-`nil' `mode-class' properties.
988If the current buffer's mode has such a property, Fundamental mode is
989used as the default for newly created buffers.
990
991* `where-is-internal' requires additional arguments.
992
993This function now accepts three arguments, two of them required:
994DEFINITION, the definition to search for; LOCAL-KEYMAP, the keymap
995to use as the local map when doing the searching, and FIRST-ONLY,
996which is nonzero to return only the first key found.
997
998This function returns a list of keys (strings) whose definitions
999(in the LOCAL-KEYMAP or the current global map) are DEFINITION.
1000
1001If FIRST-ONLY is non-nil, it returns a single key (string).
1002
1003This function has changed incompatibly in that now two arguments
1004are required when previously only one argument was allowed. To get
1005the old behavior of this function, write `(current-local-map)' as
1006the expression for the second argument.
1007
1008The incompatibility is sad, but `nil' is a legitimate value for the
1009second argument (it means there is no local keymap), so it cannot also
1010serve as a default meaning to use the current local keymap.
1011
1012* Abbrevs with hooks.
1013
1014When an abbrev defined with a hook is expanded, it now performs the
1015usual replacement of the abbrev with the expansion before running the
1016hook. Previously the abbrev itself was deleted but the expansion was
1017not inserted.
1018
1019* Function `scan-buffer' deleted.
1020
1021Use `search-forward' or `search-backward' in place of `scan-buffer'.
1022You will have to rearrange the arguments.
1023
1024* X window interface improvements.
1025
1026** Detect release of mouse buttons.
1027
1028Button-up events can now be detected. See the file `lisp/x-mouse.el'
1029for details.
1030
1031** New pop-up menu facility.
1032
1033The new function `x-popup-menu' pops up a menu (in a X window)
1034and returns an indication of which selection the user made.
1035For more information, see its self-documentation.
1036
1037* M-x disassemble.
1038
1039This command prints the disassembly of a byte-compiled Emacs Lisp function.
1040
1041Would anyone like to interface this to the debugger?
1042
1043* `insert-buffer-substring' can insert part of the current buffer.
1044
1045The old restriction that the text being inserted had to come from
1046a different buffer is now lifted.
1047
1048When inserting text from the current buffer, the text to be inserted
1049is determined from the specified bounds before any copying takes place.
1050
1051* New function `substitute-key-definition'.
1052
1053This is a new way to replace one command with another command as the
1054binding of whatever keys may happen to refer to it.
1055
1056(substitute-key-definition OLDDEF NEWDEF KEYMAP) looks through KEYMAP
1057for keys defined to run OLDDEF, and rebinds those keys to run NEWDEF
1058instead.
1059
1060* New function `insert-char'.
1061
1062Insert a specified character, a specified number of times.
1063
1064* `mark-marker' changed.
1065
1066When there is no mark, this now returns a marker that points
1067nowhere, rather than `nil'.
1068
1069* `ding' accepts argument.
1070
1071When given an argument, the function `ding' does not terminate
1072execution of a keyboard macro. Normally, `ding' does terminate
1073all macros that are currently executing.
1074
1075* New function `minibuffer-depth'.
1076
1077This function returns the current depth in minibuffer activations.
1078The value is zero when the minibuffer is not in use.
1079Values greater than one are possible if the user has entered the
1080minibuffer recursively.
1081
1082* New function `documentation-property'.
1083
1084(documentation-property SYMBOL PROPNAME) is like (get SYMBOL PROPNAME),
1085except that if the property value is a number `documentation-property'
1086will take that number (or its absolute value) as a character position
1087in the DOC file and return the string found there.
1088
1089(documentation-property VAR 'variable-documentation) is the proper
1090way for a Lisp program to get the documentation of variable VAR.
1091
1092* New documentation-string expansion feature.
1093
1094If a documentation string (for a variable or function) contains text
1095of the form `\<FOO>', it means that all command names specified in
1096`\[COMMAND]' construct from that point on should be turned into keys
1097using 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
1101will expand into
1102
1103 "ESC C-x evaluates the defun containing point."
1104
1105regardless of the current major mode, because ESC C-x is defined to
1106run `eval-defun' in the keymap `emacs-lisp-mode-map'. The effect is
1107to show the key for `eval-defun' in Emacs Lisp mode regardless of the
1108current major mode.
1109
1110The `\<...>' construct applies to all `\[...]' constructs that follow it,
1111up to the end of the documentation string or the next `\<...>'.
1112
1113Without `\<...>', the keys for commands specified in `\[...]' are found
1114in the current buffer's local map.
1115
1116The current global keymap is always searched second, whether `\<...>'
1117has been used or not.
1118
1119* Multiple hooks allowed in certain contexts.
1120
1121The old hook variables `find-file-hook', `find-file-not-found-hook' and
1122`write-file-hook' have been replaced.
1123
1124The replacements are `find-file-hooks', `find-file-not-found-hooks'
1125and `write-file-hooks'. Each holds a list of functions to be called;
1126by default, `nil', for no functions. The functions are called in
1127order of appearance in the list.
1128
1129In the case of `find-file-hooks', all the functions are executed.
1130
1131In the case of `find-file-not-found-hooks', if any of the functions
1132returns non-`nil', the rest of the functions are not called.
1133
1134In the case of `write-file-hooks', if any of the functions returns
1135non-`nil', the rest of the functions are not called, and the file is
1136considered to have been written already; so actual writing in the
1137usual way is not done. If `write-file-hooks' is local to a buffer,
1138it 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
1142together to implement editing of files that are not stored as Unix
1143files: stored in archives, or inside version control systems, or on
1144other machines running other operating systems and accessible via ftp.
1145
1146* New hooks for suspending Emacs.
1147
1148Suspending Emacs runs the hook `suspend-hook' before suspending
1149and the hook `suspend-resume-hook' if the suspended Emacs is resumed.
1150Running a hook is done by applying the variable's value to no arguments
1151if the variable has a non-`nil' value. If `suspend-hook' returns
1152non-`nil', then suspending is inhibited and so is running the
1153`suspend-resume-hook'. The non-`nil' value means that the `suspend-hook'
1154has done whatever suspending is required.
1155
1156* Disabling commands can print a special message.
1157
1158A command is disabled by giving it a non-`nil' `disabled' property.
1159Now, if this property is a string, it is included in the message
1160printed when the user tries to run the command.
1161
1162* Emacs can open TCP connections.
1163
1164The function `open-network-stream' opens a TCP connection to
1165a specified host and service. Its value is a Lisp object that represents
1166the connection. The object is a kind of "subprocess", and I/O are
1167done like I/O to subprocesses.
1168
1169* Display-related changes.
1170
1171** New mode-line control features.
1172
1173The display of the mode line used to be controlled by a format-string
1174that was the value of the variable `mode-line-format'.
1175
1176This variable still exists, but it now allows more general values,
1177not just strings. Lists, cons cells and symbols are also meaningful.
1178
1179The mode line contents are created by outputting various mode elements
1180one after the other. Here are the kinds of objects that can be
1181used 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
1212There 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
1214more mode elements, which can lead to more, and so on.
1215
1216There is one new %-construct for mode elements that are strings:
1217`%n' displays ` Narrow' for a buffer that is narrowed.
1218
1219The default value of `mode-line-format' refers to several other variables.
1220These 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
1223are changed from the default.
1224
1225mode-name Name of buffer's major mode. Local in every buffer.
1226
1227mode-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
1236mode-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
1241mode-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
1246minor-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
1255global-mode-string
1256 This variable is used to display the time, if you ask
1257 for that.
1258
1259The idea of these variables is to eliminate the need for major modes
1260to alter mode-line-format itself.
1261
1262** `window-point' valid for selected window.
1263
1264The value returned by `window-point' used to be incorrect when its
1265argument was the selected window. Now the value is correct.
1266
1267** Window configurations may be saved as Lisp objects.
1268
1269The function `current-window-configuration' returns a special type of
1270Lisp object that represents the current layout of windows: the
1271sizes and positions of windows, which buffers appear in them, and
1272which parts of the buffers appear on the screen.
1273
1274The function `set-window-configuration' takes one argument, which must
1275be a window configuration object, and restores that configuration.
1276
1277** New hook `temp-output-buffer-show-hook'.
1278
1279This hook allows you to control how help buffers are displayed.
1280Whenever `with-output-to-temp-buffer' has executed its body and wants
1281to display the temp buffer, if this variable is bound and non-`nil'
1282then its value is called with one argument, the temp buffer.
1283The hook function is solely responsible for displaying the buffer.
1284The standard manner of display--making the buffer appear in a window--is
1285used only if there is no hook function.
1286
1287** New function `minibuffer-window'.
1288
1289This function returns the window used (sometimes) for displaying
1290the minibuffer. It can be used even when the minibuffer is not active.
1291
1292** New feature to `next-window'.
1293
1294If the optional second argument is neither `nil' nor `t', the minibuffer
1295window is omitted from consideration even when active; if the starting
1296window was the last non-minibuffer window, the value will be the first
1297non-minibuffer window.
1298
1299** New variable `minibuffer-scroll-window'.
1300
1301When this variable is non-`nil', the command `scroll-other-window'
1302uses it as the window to be scrolled. Displays of completion-lists
1303set this variable to the window containing the display.
1304
1305** New argument to `sit-for'.
1306
1307A non-nil second argument to `sit-for' means do not redisplay;
1308just wait for the specified time or until input is available.
1309
1310** Deleted function `set-minor-mode'; minor modes must be changed.
1311
1312The function `set-minor-mode' has been eliminated. The display
1313of minor mode names in the mode line is now controlled by the
1314variable `minor-mode-alist'. To specify display of a new minor
1315mode, it is sufficient to add an element to this list. Once that
1316is done, you can turn the mode on and off just by setting a variable,
1317and the display will show its status automatically.
1318
1319** New variable `cursor-in-echo-area'.
1320
1321If this variable is non-nil, the screen cursor appears on the
1322last line of the screen, at the end of the text displayed there.
1323
1324Binding this variable to t is useful at times when reading single
1325characters of input with `read-char'.
1326
1327** New per-buffer variable `selective-display-ellipses'.
1328
1329If this variable is non-nil, an ellipsis (`...') appears on the screen
1330at the end of each text line that is followed by invisible text.
1331
1332If this variable is nil, no ellipses appear. Then there is no sign
1333on the screen that invisible text is present.
1334
1335Text 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
1340If you set this variable non-nil, Emacs will not clear the screen when
1341you resume it after suspending it. This is for the sake of terminals
1342with multiple screens of memory, where the termcap entry has been set
1343up to switch between screens when Emacs is suspended and resumed.
1344
1345** New argument to `set-screen-height' or `set-screen-width'.
1346
1347These functions now take an optional second argument which says
1348what significance the newly specified height or width has.
1349
1350If the argument is nil, or absent, it means that Emacs should
1351believe that the terminal height or width really is as just specified.
1352
1353If the argument is t, it means Emacs should not believe that the
1354terminal really is this high or wide, but it should use the
1355specific height or width as the number of lines or columns to display.
1356Thus, you could display only 24 lines on a screen known to have 48 lines.
1357
1358What practical difference is there between using only 24 lines for display
1359and really believing that the terminal has 24 lines?
1360
13611. The "real" height of the terminal says what the terminal command
1362to move the cursor to the last line will do.
1363
13642. The "real" height of the terminal determines how much padding is
1365needed.
1366
1367* File-related changes.
1368
1369** New parameter `backup-by-copying-when-mismatch'.
1370
1371If this variable is non-`nil', then when Emacs is about to save a
1372file, it will create the backup file by copying if that would avoid
1373changing the file's uid or gid.
1374
1375The default value of this variable is `nil', because usually it is
1376useful to have the uid of a file change according to who edited it
1377last. I recommend thet this variable be left normally `nil' and
1378changed with a local variables list in those particular files where
1379the uid needs to be preserved.
1380
1381** New parameter `file-precious-flag'.
1382
1383If this variable is non-`nil', saving the buffer tries to avoid
1384leaving an incomplete file due to disk full or other I/O errors.
1385It renames the old file before saving. If saving is successful,
1386the renamed file is deleted; if saving gets an error, the renamed
1387file is renamed back to the name you visited.
1388
1389Backups are always made by copying for such files.
1390
1391** New variable `buffer-offer-save'.
1392
1393If the value of this variable is non-`nil' in a buffer then exiting
1394Emacs will offer to save the buffer (if it is modified and nonempty)
1395even if the buffer is not visiting a file. This variable is
1396automatically 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
1400The third argument to these functions used to be `t' or `nil'; `t'
1401meaning go ahead even if the specified new file name already has a file,
1402and `nil' meaning to get an error.
1403
1404Now if the third argument is a number it means to ask the user for
1405confirmation in this case.
1406
1407** New optional argument to `copy-file'.
1408
1409If `copy-file' receives a non-nil fourth argument, it attempts
1410to give the new copy the same time-of-last-modification that the
1411original 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
1416modified more recently than FILE2. If FILE1 does not exist, the value
1417is always nil; otherwise, if FILE2 does not exist, the value is t.
1418This is meant for use when FILE2 depends on FILE1, to see if changes
1419in FILE1 make it necessary to recompute FILE2 from it.
1420
1421** Changed function `file-exists-p'.
1422
1423This 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
1425the fascists won't allow you to read.
1426
1427** New function `file-locked-p'.
1428
1429This function receives a file name as argument and returns `nil'
1430if the file is not locked, `t' if locked by this Emacs, or a
1431string 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
1436version numbers or other backup suffixes deleted from the end.
1437
1438** New functions for directory names.
1439
1440Although a directory is really a kind of file, specifying a directory
1441uses a somewhat different syntax from specifying a file.
1442In Emacs, a directory name is used as part of a file name.
1443
1444On Unix, the difference is small: a directory name ends in a slash,
1445while a file name does not: thus, `/usr/rms/' to name a directory,
1446while `/usr/rms' names the file which holds that directory.
1447
1448On VMS, the difference is considerable: `du:[rms.foo]' specifies a
1449directory, but the name of the file that holds that directory is
1450`du:[rms]foo.dir'.
1451
1452There are two new functions for converting between directory names
1453and file names. `directory-file-name' takes a directory name and
1454returns 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
1456the corresponding directory name. These always understand Unix file name
1457syntax; on VMS, they understand VMS syntax as well.
1458
1459For example, (file-name-as-directory "/usr/rms") returns "/usr/rms/"
1460and (directory-file-name "/usr/rms/") returns "/usr/rms".
1461On VMS, (file-name-as-directory "du:[rms]foo.dir") returns "du:[rms.foo]"
1462and (directory-file-name "du:[rms.foo]") returns "du:[rms]foo.dir".
1463
1464** Value of `file-attributes' changed.
1465
1466The function file-attributes returns a list containing many kinds of
1467information about a file. Now the list has eleven elements.
1468
1469The tenth element is `t' if deleting the file and creating another
1470file 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
1472comparing the file's group with the default group for files created in
1473the same directory by you.
1474
1475The eleventh element is the inode number of the file.
1476
1477** VMS-only function `file-name-all-versions'.
1478
1479This function returns a list of all the completions, including version
1480number, of a specified version-number-less file name. This is like
1481`file-name-all-completions', except that the latter returns values
1482that do not include version numbers.
1483
1484** VMS-only variable `vms-stmlf-recfm'.
1485
1486On a VMS system, if this variable is non-nil, Emacs will give newly
1487created files the record format `stmlf'. This is necessary for files
1488that must contain lines of arbitrary length, such as compiled Emacs
1489Lisp.
1490
1491When writing a new version of an existing file, Emacs always keeps
1492the same record format as the previous version; so this variable has
1493no effect.
1494
1495This variable has no effect on Unix systems.
1496
1497** `insert-file-contents' on an empty file.
1498
1499This 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
1504LOGICAL whose translation is TRANSLATION. The new name applies to
1505the current process only.
1506
1507** Deleted variable `ask-about-buffer-names'.
1508
1509If you want buffer names for files to be generated in a special way,
1510you must redefine `create-file-buffer'.
1511
1512* Subprocess-related changes.
1513
1514** New function `process-list'.
1515
1516This function takes no arguments and returns a list of all
1517of Emacs's asynchronous subprocesses.
1518
1519** New function `process-exit-status'.
1520
1521This function, given a process, process name or buffer as argument,
1522returns the exit status code or signal number of the process.
1523If the process has not yet exited or died, this function returns 0.
1524
1525** Process output ignores `buffer-read-only'.
1526
1527Output from a process will go into the process's buffer even if the
1528buffer is read only.
1529
1530** Switching buffers in filter functions and sentinels.
1531
1532Emacs no longer saves and restore the current buffer around calling
1533the filter and sentinel functions, so these functions can now
1534permanently alter the selected buffer in a straightforward manner.
1535
1536** Specifying environment variables for subprocesses.
1537
1538When a subprocess is started with `start-process' or `call-process',
1539the value of the variable `process-environment' is taken to
1540specify the environment variables to give the subprocess. The
1541value should be a list of strings, each of the form "VAR=VALUE".
1542
1543`process-environment' is initialized when Emacs starts up
1544based on Emacs's environment.
1545
1546** New variable `process-connection-type'.
1547
1548If this variable is `nil', when a subprocess is created, Emacs uses
1549a pipe rather than a pty to communicate with it. Normally this
1550variable is `t', telling Emacs to use a pty if ptys are supported
1551and one is available.
1552
1553** New function `waiting-for-user-input-p'.
1554
1555This function, given a subprocess as argument, returns `t' if that
1556subprocess appears to be waiting for input sent from Emacs,
1557or `nil' otherwise.
1558
1559** New hook `shell-set-directory-error-hook'.
1560
1561The value of this variable is called, with no arguments, whenever
1562Shell mode gets an error trying to keep track of directory-setting
1563commands (such as `cd' and `pushd') used in the shell buffer.
1564
1565* New functions `user-uid' and `user-real-uid'.
1566
1567These functions take no arguments and return, respectively,
1568the effective uid and the real uid of the Emacs process.
1569The value in each case is an integer.
1570
1571* New variable `print-escape-newlines' controls string printing.
1572
1573If this variable is non-`nil', then when a Lisp string is printed
1574by the Lisp printing function `prin1' or `print', newline characters
1575are printed as `\n' rather than as a literal newline.
1576
1577* New function `sysnetunam' on HPUX.
1578
1579This function takes two arguments, a network address PATH and a
1580login string LOGIN, and executes the system call `netunam'.
1581It returns `t' if the call succeeds, otherwise `nil'.
1582
1583News regarding installation:
1584
1585* Many `s-...' file names changed.
1586
1587Many `s-...' files have been renamed. All periods in such names,
1588except the ones just before the final `h', have been changed to
1589hyphens. Thus, `s-bsd4.2.h' has been renamed to `s-bsd4-2.h'.
1590
1591This is so a Unix distribution can be moved mechanically to VMS.
1592
1593* `DOCSTR...' file now called `DOC-...'.
1594
1595The 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'.
1597This is so that it can port to VMS using the standard conventions
1598for translating filenames for VMS.
1599
1600This file also now contains the doc strings for variables as
1601well as functions.
1602
1603* Emacs no longer uses floating point arithmetic.
1604
1605This may make it easier to port to some machines.
1606
1607* Macros `XPNTR' and `XSETPNTR'; flag `DATA_SEG_BITS'.
1608
1609These macros exclusively are used to unpack a pointer from a Lisp_Object
1610and to insert a pointer into a Lisp_Object. Redefining them may help
1611port Emacs to machines in which all pointers to data objects have
1612certain high bits set.
1613
1614If `DATA_SEG_BITS' is defined, it should be a number which contains
1615the high bits to be inclusive or'ed with pointers that are unpacked.
1616
1617* New flag `HAVE_X_MENU'.
1618
1619Define this flag in `config.h' in addition to `HAVE_X_WINDOWS'
1620to enable use of the Emacs interface to X Menus. On some operating
1621systems, the rest of the X interface works properly but X Menus
1622do not work; hence this separate flag. See the file `src/xmenu.c'
1623for 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
1631SYSTEM_MALLOC, if defined, means use the system's own `malloc' routines
1632rather than those that come with Emacs.
1633
1634Use this only if absolutely necessary, because if it is used you do
1635not get warnings when space is getting low.
1636
1637* New flags to control unexec.
1638
1639See the file `unexec.c' for a long comment on the compilation
1640switches that suffice to make it work on many machines.
1641
1642* `PNTR_COMPARISON_TYPE'
1643
1644Pointers that need to be compared for ordering are converted to this type
1645first. Normally this is `unsigned int'.
1646
1647* `HAVE_VFORK', `HAVE_DUP2' and `HAVE_GETTIMEOFDAY'.
1648
1649These flags just say whether certain system calls are available.
1650
1651* New macros control compiler switches, linker switches and libraries.
1652
1653The m- and s- files can now control in a modular fashion the precise
1654arguments passed to `cc' and `ld'.
1655
1656LIBS_STANDARD defines the standard C libraries. Default is `-lc'.
1657LIBS_DEBUG defines the extra libraries to use when debugging. Default `-lg'.
1658LIBS_SYSTEM can be defined by the s- file to specify extra libraries.
1659LIBS_MACHINE can be defined by the m- file to specify extra libraries.
1660LIBS_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
1664LD_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.
1666LD_SWITCH_MACHINE can be defined by the m- file to specify extra `ld' switches.
1667
1668C_DEBUG_SWITCH defines the switches to give `cc' when debugging. Default `-g'.
1669C_OPTIMIZE_SWITCH defines the switches to give `cc' to optimize. Default `-O'.
1670C_SWITCH_MACHINE can be defined by the m- file to specify extra `cc' switches.
1671
1672For older news, see the file ONEWS.3.
1673
1674----------------------------------------------------------------------
1675Copyright information:
1676
1677Copyright (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
1689Local variables:
1690mode: text
1691end:
1692
1693arch-tag: 373312be-99a8-46d5-bcb0-a62577ab5045