* Installation Changes in Emacs 22.1
---
-** Emacs includes now support for loading image libraries on demand.
-(Currently this feature is only used on MS Windows.) You can configure
-the supported image types and their associated dynamic libraries by
-setting the variable `image-library-alist'.
+** Emacs now supports new configure options `--program-prefix',
+`--program-suffix' and `--program-transform-name' that affect the names of
+installed programs.
---
-** New translations of the Emacs Tutorial are available in the following
- languages: Brasilian, Bulgarian, Chinese (both with simplified and
- traditional characters), French, and Italian. Type `C-u C-h t' to
- choose one of them in case your language setup doesn't automatically
- select the right one.
+** Emacs can now be built without sound support.
---
** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
when you run configure. This requires Gtk+ 2.0 or newer. This port
provides a way to display multilingual text in menus (with some caveats).
----
-** Emacs can now be built without sound support.
-
---
** The `emacsserver' program has been removed, replaced with elisp code.
----
-** Emacs now supports new configure options `--program-prefix',
-`--program-suffix' and `--program-transform-name' that affect the names of
-installed programs.
-
---
** By default, Emacs now uses a setgid helper program to update game
scores. The directory ${localstatedir}/games/emacs is the normal
item was added to the menu bar that makes it easy accessible
(Help->More Manuals->Introduction to Emacs Lisp).
+---
+** New translations of the Emacs Tutorial are available in the following
+ languages: Brasilian, Bulgarian, Chinese (both with simplified and
+ traditional characters), French, and Italian. Type `C-u C-h t' to
+ choose one of them in case your language setup doesn't automatically
+ select the right one.
+
+---
+** A French translation of the `Emacs Survival Guide' is available.
+
+---
+** Emacs now includes support for loading image libraries on demand.
+(Currently this feature is only used on MS Windows.) You can configure
+the supported image types and their associated dynamic libraries by
+setting the variable `image-library-alist'.
+
---
** Support for Cygwin was added.
create non-Carbon build by specifying `NonCarbon' as a target. See
the files mac/README and mac/INSTALL for build instructions.
----
-** A French translation of the `Emacs Survival Guide' is available.
-
---
** Building with -DENABLE_CHECKING does not automatically build with union
types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
\f
* Changes in Emacs 22.1
-** Moving or scrolling through images (and other lines) taller that
-the window now works sensible, by automatically adjusting the window's
-vscroll property.
+** New command line option -Q or --quick.
+This is like using -q --no-site-file, but in addition it also disables
+the fancy startup screen.
+++
-** In graphical mode, with a C program, GUD Tooltips have been extended to
-display the #define directive associated with an identifier when program is
-not executing.
+** New command line option -D or --basic-display.
+Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
+the blinking cursor.
+++
-** `comint-use-prompt-regexp-instead-of-fields' has been renamed
-`comint-use-prompt-regexp'. The old name has been kept as an alias,
-but declared obsolete.
-
-** Improved key bindings support when running in an xterm.
-When emacs is running in an xterm more key bindings are available. The
-following should work:
-{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}.
-These key bindings work on xterm from X.org 6.8, they might not work on
-some older versions of xterm, or on some proprietary versions.
-
-** Improved Thai support. A new minor mode `thai-word-mode' (which is
-automatically activated if you select Thai as a language
-environment) changes key bindings of most word-oriented commands to
-versions which recognize Thai words. Affected commands are
- M-f (forward-word)
- M-b (backward-word)
- M-d (kill-word)
- M-DEL (backward-kill-word)
- M-t (transpose-words)
- M-q (fill-paragraph)
+** New command line option -nbc or --no-blinking-cursor disables
+the blinking cursor on graphical terminals.
+++
-** Auto Compression mode is now enabled by default.
-
-** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
+** The command line option --no-windows has been changed to
+--no-window-system. The old one still works, but is deprecated.
-Since the default input is the current directory, this has the effect
-of specifying the current directory. Normally that means to visit the
-directory with Dired.
++++
+** The -f option, used from the command line to call a function,
+now reads arguments for the function interactively if it is
+an interactively callable function.
----
-** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead.
++++
+** Emacs can now be invoked in full-screen mode on a windowed display.
+When Emacs is invoked on a window system, the new command-line options
+`--fullwidth', `--fullheight', and `--fullscreen' produce a frame
+whose width, height, or both width and height take up the entire
+screen size. (For now, this does not work with some window managers.)
----
-** The default settings for JIT stealth lock parameters are changed.
-The default value for the user option jit-lock-stealth-time is now 16
-instead of 3, and the default value of jit-lock-stealth-nice is now
-0.5 instead of 0.125. The new defaults should lower the CPU usage
-when Emacs is fontifying in the background.
++++
+** Emacs now displays a splash screen by default even if command-line
+arguments were given. The new command-line option --no-splash
+disables the splash screen; see also the variable
+`inhibit-startup-message' (which is also aliased as
+`inhibit-splash-screen').
----
-** iso-acc.el is now obsolete. Use one of the latin input methods instead.
++++
+** New user option `inhibit-startup-buffer-menu'.
+When loading many files, for instance with `emacs *', Emacs normally
+displays a buffer menu. This option turns the buffer menu off.
----
-** Language environment and various default coding systems are setup
-more correctly according to the current locale name. If the locale
-name doesn't specify a charset, the default is what glibc defines.
-This change may result in using the different coding systems as
-default in some locale (e.g. vi_VN).
++++
+** Init file changes
+You can now put the init files .emacs and .emacs_SHELL under
+~/.emacs.d or directly under ~. Emacs will find them in either place.
+++
-** The commands copy-file, rename-file, make-symbolic-link and
-add-name-to-file, when given a directory as the "new name" argument,
-convert it to a file name by merging in the within-directory part of
-the existing file's name. (This is the same convention that shell
-commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET
-/tmp RET copies ~/foo to /tmp/foo.
+** Emacs now reads the standard abbrevs file ~/.abbrev_defs
+automatically at startup, if it exists. When Emacs offers to save
+modified buffers, it saves the abbrevs too if they have changed. It
+can do this either silently or asking for confirmation first,
+according to the value of `save-abbrevs'.
+++
-** M-o now is the prefix key for setting text properties;
-M-o M-o requests refontification.
+** The mode line position information now comes before the major mode.
+When the file is maintained under version control, that information
+appears between the position information and the major mode.
+++
** M-g is now a prefix key.
-
M-g g and M-g M-g run goto-line.
M-g n and M-g M-n run next-error (like C-x `).
M-g p and M-g M-p run previous-error.
+++
-** font-lock-lines-before specifies a number of lines before the
-current line that should be refontified when you change the buffer.
-The default value is 1.
+** M-o now is the prefix key for setting text properties;
+M-o M-o requests refontification.
+++
** C-u M-x goto-line now switches to the most recent previous buffer,
When goto-line starts to execute, if there's a number in the buffer at
point then it acts as the default argument for the minibuffer.
----
-** Emacs now responds to mouse-clicks on the mode-line, header-line and
-display margin, when run in an xterm.
-
+++
-** M-SPC (just-one-space) when given a numeric argument N
-converts whitespace around point to N spaces.
+** You can now switch buffers in a cyclic order with C-x C-left and
+(prev-buffer) and C-x C-right (next-buffer). C-x left and C-x right
+can be used as well.
+++
-** Control characters and escape glyphs are now shown in the new
-escape-glyph face.
+** New command `Buffer-menu-toggle-files-only' toggles display of file
+buffers only in the Buffer Menu. It is bound to `T' in Buffer Menu
+mode.
+++
-** Non-breaking space and hyphens are now prefixed with an escape
-character, unless the new user variable `show-nonbreak-escape' is set
-to nil.
-
----
-** The type-break package now allows `type-break-file-name' to be nil
-and if so, doesn't store any data across sessions. This is handy if
-you don't want the .type-break file in your home directory or are
-annoyed by the need for interaction when you kill Emacs.
-
----
-** display-battery has been replaced by display-battery-mode.
+** `buffer-menu' and `list-buffers' now list buffers whose names begin
+with a space, when those buffers are visiting files. Normally buffers
+whose names begin with space are omitted.
---
-** calculator.el now has radix grouping mode, which is available when
-`calculator-output-radix' is non-nil. In this mode a separator
-character is used every few digits, making it easier to see byte
-boundries etc. For more info, see the documentation of the variable
-`calculator-radix-grouping-mode'.
-
-+++
-** You can now follow links by clicking Mouse-1 on the link.
-
-Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2
-click to follow a link, whereas most other applications use a Mouse-1
-click for both purposes, depending on whether you click outside or
-inside a link. Now the behavior of a Mouse-1 click has been changed
-to match this context-sentitive dual behavior.
-
-Depending on the current mode, a Mouse-2 click in Emacs may do much
-more than just follow a link, so the new Mouse-1 behavior is only
-activated for modes which explicitly mark a clickable text as a "link"
-(see the new function `mouse-on-link-p' for details). The Lisp
-packages that are included in release 22.1 have been adapted to do
-this, but external packages may not yet support this. However, there
-is no risk in using such packages, as the worst thing that could
-happen is that you get the original Mouse-1 behavior when you click
-on a link, which typically means that you set point where you click.
+** The new options `buffers-menu-show-directories' and
+`buffers-menu-show-status' let you control how buffers are displayed
+in the menu dropped down when you click "Buffers" from the menu bar.
-If you want to get the original Mouse-1 action also inside a link, you
-just need to press the Mouse-1 button a little longer than a normal
-click (i.e. press and hold the Mouse-1 button for half a second before
-you release it).
+`buffers-menu-show-directories' controls whether the menu displays
+leading directories as part of the file name visited by the buffer.
+If its value is `unless-uniquify', the default, directories are
+shown unless uniquify-buffer-name-style' is non-nil. The value of nil
+and t turn the display of directories off and on, respectively.
-Dragging the Mouse-1 inside a link still performs the original
-drag-mouse-1 action, typically copy the text.
+`buffers-menu-show-status' controls whether the Buffers menu includes
+the modified and read-only status of the buffers. By default it is
+t, and the status is shown.
-You can customize the new Mouse-1 behavior via the new user options
-`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'.
+Setting these variables directly does not take effect until next time
+the Buffers menu is regenerated.
+++
-** require-final-newline now has two new possible values:
-
-`visit' means add a newline (as an undoable change) if it's needed
-when visiting the file.
-
-`visit-save' means add a newline (as an undoable change) if it's
-needed when visiting the file, and also add a newline if it's needed
-when saving the file.
+** The old bindings C-M-delete and C-M-backspace have been deleted,
+since there are situations where one or the other will shut down
+the operating system or your X server.
+++
-** The new option mode-require-final-newline controls how certain
-major modes enable require-final-newline. Any major mode that's
-designed for a kind of file that should normally end in a newline
-sets require-final-newline based on mode-require-final-newline.
-So you can customize mode-require-final-newline to control what these
-modes do.
+** `undo-only' does an undo which does not redo any previous undo.
+++
** When the undo information of the current command gets really large
you about it.
+++
-** line-move-ignore-invisible now defaults to t.
+** M-SPC (just-one-space) when given a numeric argument N
+converts whitespace around point to N spaces.
-+++
-** In Outline mode, hide-body no longer hides lines at the top
-of the file that precede the first header line.
+---
+** New command `kill-whole-line' kills an entire line at once.
+By default, it is bound to C-S-<backspace>.
+++
-** In Enriched mode, `set-left-margin' and `set-right-margin' are now
-by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
-and `C-c C-r'.
+** Yanking text now discards certain text properties that can
+be inconvenient when you did not expect them. The variable
+`yank-excluded-properties' specifies which ones. Insertion
+of register contents and rectangles also discards these properties.
+++
-** In processing a local variables list, Emacs strips the prefix and
-suffix are from every line before processing all the lines.
+** The default values of paragraph-start and indent-line-function have
+been changed to reflect those used in Text mode rather than those used
+in Indented-Text mode.
+++
-** `apply-macro-to-region-lines' now operates on all lines that begin
-in the region, rather than on all complete lines in the region.
-
----
-** global-whitespace-mode is a new alias for whitespace-global-mode.
-
-+++
-** There are now two new regular expression operators, \_< and \_>,
-for matching the beginning and end of a symbol. A symbol is a
-non-empty sequence of either word or symbol constituent characters, as
-specified by the syntax table.
----
-*** rx.el has new corresponding `symbol-end' and `symbol-start' elements.
+** Movement commands `beginning-of-buffer', `end-of-buffer',
+`beginning-of-defun', `end-of-defun' do not set the mark if the mark
+is already active in Transient Mark mode.
+++
-** Passing resources on the command line now works on MS Windows.
-You can use --xrm to pass resource settings to Emacs, overriding any
-existing values. For example:
-
- emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20"
-
-will start up Emacs on an initial frame of 100x20 with red background,
-irrespective of geometry or background setting on the Windows registry.
+** The parameters of automatic hscrolling can now be customized.
+The variable `hscroll-margin' determines how many columns away from
+the window edge point is allowed to get before automatic hscrolling
+will horizontally scroll the window. The default value is 5.
----
-** The terminal emulation code in term.el has been improved, it can
-run most curses applications now.
+The variable `hscroll-step' determines how many columns automatic
+hscrolling scrolls the window when point gets too close to the
+window edge. If its value is zero, the default, Emacs scrolls the
+window so as to center point. If its value is an integer, it says how
+many columns to scroll. If the value is a floating-point number, it
+gives the fraction of the window's width to scroll the window.
-** New features in evaluation commands
+The variable `automatic-hscrolling' was renamed to
+`auto-hscroll-mode'. The old name is still available as an alias.
+++
-*** The function `eval-defun' (C-M-x) called on defface reinitializes
-the face to the value specified in the defface expression.
+** A prefix argument is no longer required to repeat a jump to a
+previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the
+mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump.
+++
-*** Typing C-x C-e twice prints the value of the integer result
-in additional formats (octal, hexadecimal, character) specified
-by the new function `eval-expression-print-format'. The same
-function also defines the result format for `eval-expression' (M-:),
-`eval-print-last-sexp' (C-j) and some edebug evaluation functions.
-
----
-** New input method chinese-sisheng for inputting Chinese Pinyin
-characters.
+** Marking commands extend the region when invoked multiple times. If
+you hit M-C-SPC (mark-sexp), M-@ (mark-word), M-h (mark-paragraph), or
+C-M-h (mark-defun) repeatedly, the marked region extends each time, so
+you can mark the next two sexps with M-C-SPC M-C-SPC, for example.
+This feature also works for mark-end-of-sentence, if you bind that to
+a key. It also extends the region when the mark is active in Transient
+Mark mode, regardless of the last command. To start a new region with
+one of marking commands in Transient Mark mode, you can deactivate the
+active region with C-g, or set the new mark with C-SPC.
+++
-** New command quail-show-key shows what key (or key sequence) to type
-in the current input method to input a character at point.
+** M-h (mark-paragraph) now accepts a prefix arg.
+With positive arg, M-h marks the current and the following paragraphs;
+if the arg is negative, it marks the current and the preceding
+paragraphs.
+++
-** You can now switch buffers in a cyclic order with C-x C-left and
-(prev-buffer) and C-x C-right (next-buffer). C-x left and C-x right
-can be used as well.
-
----
-** Commands winner-redo and winner-undo, from winner.el, are now bound to
-C-c <left> and C-c <right>, respectively. This is an incompatible change.
-
----
-** Help commands `describe-function' and `describe-key' now show function
-arguments in lowercase italics on displays that support it. To change the
-default, customize face `help-argument-name' or redefine the function
-`help-default-arg-highlight'.
-
----
-** The comint prompt can now be made read-only, using the new user
-option `comint-prompt-read-only'. This is not enabled by default,
-except in IELM buffers. The read-only status of IELM prompts can be
-controlled with the new user option `ielm-prompt-read-only', which
-overrides `comint-prompt-read-only'.
-
-The new commands `comint-kill-whole-line' and `comint-kill-region'
-support editing comint buffers with read-only prompts.
+** Some commands do something special in Transient Mark mode when the
+mark is active--for instance, they limit their operation to the
+region. Even if you don't normally use Transient Mark mode, you might
+want to get this behavior from a particular command. There are two
+ways you can enable Transient Mark mode and activate the mark, for one
+command only.
-`comint-kill-whole-line' is like `kill-whole-line', but ignores both
-read-only and field properties. Hence, it always kill entire
-lines, including any prompts.
+One method is to type C-SPC C-SPC; this enables Transient Mark mode
+and sets the mark at point. The other method is to type C-u C-x C-x.
+This enables Transient Mark mode temporarily but does not alter the
+mark or the region.
-`comint-kill-region' is like `kill-region', except that it ignores
-read-only properties, if it is safe to do so. This means that if any
-part of a prompt is deleted, then the entire prompt must be deleted
-and that all prompts must stay at the beginning of a line. If this is
-not the case, then `comint-kill-region' behaves just like
-`kill-region' if read-only are involved: it copies the text to the
-kill-ring, but does not delete it.
+After these commands, Transient Mark mode remains enabled until you
+deactivate the mark. That typically happens when you type a command
+that alters the buffer, but you can also deactivate the mark by typing
+C-g.
+++
-** You can now use next-error (C-x `) and previous-error to advance to
-the next/previous matching line found by M-x occur.
+** find-file-read-only visits multiple files in read-only mode,
+when the file name contains wildcard characters.
+++
-** Telnet now prompts you for a port number with C-u M-x telnet.
+** find-alternate-file replaces the current file with multiple files,
+when the file name contains wildcard characters.
+++
-** New command line option -Q or --quick.
+** Auto Compression mode is now enabled by default.
-This is like using -q --no-site-file, but in addition it also disables
-the fancy startup screen.
+---
+** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
-+++
-** New command line option -D or --basic-display.
+Since the default input is the current directory, this has the effect
+of specifying the current directory. Normally that means to visit the
+directory with Dired.
-Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
-the blinking cursor.
++++
+** When you are root, and you visit a file whose modes specify
+read-only, the Emacs buffer is now read-only too. Type C-x C-q if you
+want to make the buffer writable. (As root, you can in fact alter the
+file.)
+++
-** New command line option -nbc or --no-blinking-cursor disables
-the blinking cursor on graphical terminals.
+** C-x s (save-some-buffers) now offers an option `d' to diff a buffer
+against its file, so you can see what changes you would be saving.
+++
-** C-h v and C-h f commands now include a hyperlink to the C source for
-variables and functions defined in C (if the C source is available).
+** The commands copy-file, rename-file, make-symbolic-link and
+add-name-to-file, when given a directory as the "new name" argument,
+convert it to a file name by merging in the within-directory part of
+the existing file's name. (This is the same convention that shell
+commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET
+/tmp RET copies ~/foo to /tmp/foo.
---
** When used interactively, `format-write-file' now asks for confirmation
before overwriting an existing file, unless a prefix argument is
supplied. This behavior is analogous to `write-file'.
-+++
-** You can now use Auto Revert mode to `tail' a file.
-If point is at the end of a file buffer before reverting, Auto Revert
-mode keeps it at the end after reverting. Similarly if point is
-displayed at the end of a file buffer in any window, it stays at
-the end of the buffer in that window. This allows to tail a file:
-just put point at the end of the buffer and it stays there. This
-rule applies to file buffers. For non-file buffers, the behavior may
-be mode dependent.
-
-If you are sure that the file will only change by growing at the end,
-then you can tail the file more efficiently by using the new minor
-mode Auto Revert Tail mode. The function `auto-revert-tail-mode'
-toggles this mode.
+---
+** The variable `auto-save-file-name-transforms' now has a third element that
+controls whether or not the function `make-auto-save-file-name' will
+attempt to construct a unique auto-save name (e.g. for remote files).
+++
-** Auto Revert mode is now more careful to avoid excessive reverts and
-other potential problems when deciding which non-file buffers to
-revert. This matters especially if Global Auto Revert mode is enabled
-and `global-auto-revert-non-file-buffers' is non-nil. Auto Revert
-mode only reverts a non-file buffer if the buffer has a non-nil
-`revert-buffer-function' and a non-nil `buffer-stale-function', which
-decides whether the buffer should be reverted. Currently, this means
-that auto reverting works for Dired buffers (although this may not
-work properly on all operating systems) and for the Buffer Menu.
+** The max size of buffers and integers has been doubled.
+On 32bit machines, it is now 256M (i.e. 268435455).
+++
-** If the new user option `auto-revert-check-vc-info' is non-nil, Auto
-Revert mode reliably updates version control info (such as the version
-control number in the mode line), in all version controlled buffers in
-which it is active. If the option is nil, the default, then this info
-only gets updated whenever the buffer gets reverted.
+** If the user visits a file larger than `large-file-warning-threshold',
+Emacs prompts her for confirmation.
+++
-** New command `Buffer-menu-toggle-files-only' toggles display of file
-buffers only in the Buffer Menu. It is bound to `T' in Buffer Menu
-mode.
+** There's a new face `minibuffer-prompt'.
+Emacs adds this face to the list of text properties stored in the
+variable `minibuffer-prompt-properties', which is used to display the
+prompt string.
---
-** M-x compile has become more robust and reliable
-
-Quite a few more kinds of messages are recognized. Messages that are
-recognized as warnings or informational come in orange or green, instead of
-red. Informational messages are by default skipped with `next-error'
-(controlled by `compilation-skip-threshold').
+** Enhanced visual feedback in *Completions* buffer.
-Location data is collected on the fly as the *compilation* buffer changes.
-This means you could modify messages to make them point to different files.
-This also means you can not go to locations of messages you may have deleted.
+Completions lists use faces to highlight what all completions
+have in common and where they begin to differ.
-The variable `compilation-error-regexp-alist' has now become customizable. If
-you had added your own regexps to this, you'll probably need to include a
-leading `^', otherwise they'll match anywhere on a line. There is now also a
-`compilation-mode-font-lock-keywords' and it nicely handles all the checks
-that configure outputs and -o options so you see at a glance where you are.
+The common prefix shared by all possible completions uses the face
+`completions-common-part', while the first character that isn't the
+same uses the face `completions-first-difference'. By default,
+`completions-common-part' inherits from `default', and
+`completions-first-difference' inherits from `bold'. The idea of
+`completions-common-part' is that you can use it to make the common
+parts less visible than normal, so that the rest of the differing
+parts is, by contrast, slightly highlighted.
-The new file etc/compilation.txt gives examples of each type of message.
++++
+** File-name completion can now ignore directories.
+If an element of the list in `completion-ignored-extensions' ends in a
+slash `/', it indicates a subdirectory that should be ignored when
+completing file names. Elements of `completion-ignored-extensions'
+which do not end in a slash are never considered when a completion
+candidate is a directory.
-** Compilation mode enhancements:
++++
+** The completion commands TAB, SPC and ? in the minibuffer apply only
+to the text before point. If there is text in the buffer after point,
+it remains unchanged.
+++
-*** New user option `compilation-environment'.
-This option allows you to specify environment variables for inferior
-compilation processes without affecting the environment that all
-subprocesses inherit.
+** New user option `history-delete-duplicates'.
+If set to t when adding a new history element, all previous identical
+elements are deleted.
+++
-** Grep has been decoupled from compilation mode setup.
+** You can now customize fill-nobreak-predicate to control where
+filling can break lines. The value is now normally a list of
+functions, but it can also be a single function, for compatibility.
----
-*** There's a new separate package grep.el.
+We provide two sample predicates, fill-single-word-nobreak-p and
+fill-french-nobreak-p, for use in the value of fill-nobreak-predicate.
----
-*** M-x grep has been adapted to new compile
++++
+** require-final-newline now has two new possible values:
-Hits are fontified in green, and hits in binary files in orange. Grep buffers
-can be saved and automatically revisited with the new Grep mode.
+`visit' means add a newline (as an undoable change) if it's needed
+when visiting the file.
----
-*** Grep commands now have their own submenu and customization group.
+`visit-save' means add a newline (as an undoable change) if it's
+needed when visiting the file, and also add a newline if it's needed
+when saving the file.
+++
-*** `grep-find' is now also available under the name `find-grep' where
-people knowing `find-grep-dired' would probably expect it.
-
----
-*** The new variables `grep-window-height', `grep-auto-highlight', and
-`grep-scroll-output' can be used to override the corresponding
-compilation mode settings for grep commands.
+** The new option mode-require-final-newline controls how certain
+major modes enable require-final-newline. Any major mode that's
+designed for a kind of file that should normally end in a newline
+sets require-final-newline based on mode-require-final-newline.
+So you can customize mode-require-final-newline to control what these
+modes do.
+++
-*** New option `grep-highlight-matches' highlightes matches in *grep*
-buffer. It uses a special feature of some grep programs which accept
---color option to output markers around matches. When going to the next
-match with `next-error' the exact match is highlighted in the source
-buffer. Otherwise, if `grep-highlight-matches' is nil, the whole
-source line is highlighted.
+** Control characters and escape glyphs are now shown in the new
+escape-glyph face.
+++
-*** New key bindings in grep output window:
-SPC and DEL scrolls window up and down. C-n and C-p moves to next and
-previous match in the grep window. RET jumps to the source line of
-the current match. `n' and `p' shows next and previous match in
-other window, but does not switch buffer. `{' and `}' jumps to the
-previous or next file in the grep output. TAB also jumps to the next
-file.
+** Non-breaking space and hyphens are now prefixed with an escape
+character, unless the new user variable `show-nonbreak-escape' is set
+to nil.
+++
-** New options `next-error-highlight' and `next-error-highlight-no-select'
-specify the method of highlighting of the corresponding source line
-in new face `next-error'.
+** In graphical mode, with a C program, GUD Tooltips have been extended to
+display the #define directive associated with an identifier when program is
+not executing.
+
+** Moving or scrolling through images (and other lines) taller that
+the window now works sensible, by automatically adjusting the window's
+vscroll property.
+++
-** A new minor mode `next-error-follow-minor-mode' can be used in
-compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the
-modes that can use `next-error'). In this mode, cursor motion in the
-buffer causes automatic display in another window of the corresponding
-matches, compilation errors, etc. This minor mode can be toggled with
-C-c C-f.
+** font-lock-lines-before specifies a number of lines before the
+current line that should be refontified when you change the buffer.
+The default value is 1.
-+++
-** M-x diff uses diff-mode instead of compilation-mode.
+---
+** JIT-lock changes
-+++
-** M-x compare-windows now can automatically skip non-matching text to
-resync points in both windows.
+*** The default settings for JIT stealth lock parameters are changed.
+The default value for the user option jit-lock-stealth-time is now 16
+instead of 3, and the default value of jit-lock-stealth-nice is now
+0.5 instead of 0.125. The new defaults should lower the CPU usage
+when Emacs is fontifying in the background.
----
-** New command `strokes-global-set-stroke-string'.
-This is like `strokes-global-set-stroke', but it allows you to bind
-the stroke directly to a string to insert. This is convenient for
-using strokes as an input method.
-** Gnus package
+*** jit-lock can now be delayed with `jit-lock-defer-time'.
----
-*** Gnus now includes Sieve and PGG
-Sieve is a library for managing Sieve scripts. PGG is a library to handle
-PGP/MIME.
+If this variable is non-nil, its value should be the amount of Emacs
+idle time in seconds to wait before starting fontification. For
+example, if you set `jit-lock-defer-time' to 0.25, fontification will
+only happen after 0.25s of idle time.
----
-*** There are many news features, bug fixes and improvements.
-See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details.
+*** contextual refontification is now separate from stealth fontification.
-+++
-** Desktop package
+jit-lock-defer-contextually is renamed jit-lock-contextually and
+jit-lock-context-time determines the delay after which contextual
+refontification takes place.
+++
-*** Desktop saving is now a minor mode, desktop-save-mode. Variable
-desktop-enable is obsolete. Customize desktop-save-mode to enable desktop
-saving.
+** line-move-ignore-invisible now defaults to t.
---
-*** Buffers are saved in the desktop file in the same order as that in the
-buffer list.
+** A menu item "Show/Hide" was added to the top-level menu "Options".
+This menu allows you to turn various display features on and off (such
+as the fringes, the tool bar, the speedbar, and the menu bar itself).
+You can also move the vertical scroll bar to either side here or turn
+it off completely. There is also a menu-item to toggle displaying of
+current date and time, current line and column number in the
+mode-line.
+
+---
+** Speedbar has moved from the "Tools" top level menu to "Show/Hide".
+++
-*** The desktop package can be customized to restore only some buffers immediately,
-remaining buffers are restored lazily (when Emacs is idle).
+** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
+now controlled by the variable `blink-cursor-alist'.
+++
-*** New commands:
- - desktop-revert reverts to the last loaded desktop.
- - desktop-change-dir kills current desktop and loads a new.
- - desktop-save-in-desktop-dir saves desktop in the directory from which
- it was loaded.
- - desktop-lazy-complete runs the desktop load to completion.
- - desktop-lazy-abort aborts lazy loading of the desktop.
+** The X resource cursorBlink can be used to turn off cursor blinking.
----
-*** New customizable variables:
- - desktop-save. Determins whether the desktop should be saved when it is
- killed.
- - desktop-file-name-format. Format in which desktop file names should be saved.
- - desktop-path. List of directories in which to lookup the desktop file.
- - desktop-locals-to-save. List of local variables to save.
- - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear.
- - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear'
- should not delete.
- - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are
- restored lazily (when Emacs is idle).
- - desktop-lazy-verbose. Verbose reporting of lazily created buffers.
- - desktop-lazy-idle-delay. Idle delay before starting to create buffers.
++++
+** Emacs can produce an underscore-like (horizontal bar) cursor.
+The underscore cursor is set by putting `(cursor-type . hbar)' in
+default-frame-alist. It supports variable heights, like the `bar'
+cursor does.
+++
-*** New command line option --no-desktop
+** Display of hollow cursors now obeys the buffer-local value (if any)
+of `cursor-in-non-selected-windows' in the buffer that the cursor
+appears in.
----
-*** New hooks:
- - desktop-after-read-hook run after a desktop is loaded.
- - desktop-no-desktop-file-hook run when no desktop file is found.
++++
+** The variable `cursor-in-non-selected-windows' can now be set to any
+of the recognized cursor types.
----
-** The saveplace.el package now filters out unreadable files.
-When you exit Emacs, the saved positions in visited files no longer
-include files that aren't readable, e.g. files that don't exist.
-Customize the new option `save-place-forget-unreadable-files' to nil
-to get the old behavior. The new options `save-place-save-skipped'
-and `save-place-skip-check-regexp' allow further fine-tuning of this
-feature.
++++
+** The new face `mode-line-inactive' is used to display the mode line
+of non-selected windows. The `mode-line' face is now used to display
+the mode line of the currently selected window.
+
+The new variable `mode-line-in-non-selected-windows' controls whether
+the `mode-line-inactive' face is used.
+++
-** You can have several Emacs servers on the same machine.
+** New display feature: focus follows the mouse from one Emacs window
+to another, even within a frame. If you set the variable
+mouse-autoselect-window to non-nil value, moving the mouse to a
+different Emacs window will select that window (minibuffer window can
+be selected only when it is active). The default is nil, so that this
+feature is not enabled.
- % emacs --eval '(setq server-name "foo")' -f server-start &
- % emacs --eval '(setq server-name "bar")' -f server-start &
- % emacsclient -s foo file1
- % emacsclient -s bar file2
++++
+** On X, when the window manager requires that you click on a frame to
+select it (give it focus), the selected window and cursor position
+normally changes according to the mouse click position. If you set
+the variable x-mouse-click-focus-ignore-position to t, the selected
+window and cursor position do not change when you click on a frame
+to give it focus.
+++
-** On window systems, lines which are exactly as wide as the window
-(not counting the final newline character) are no longer broken into
-two lines on the display (with just the newline on the second line).
-Instead, the newline now "overflows" into the right fringe, and the
-cursor will be displayed in the fringe when positioned on that newline.
+** When you specify a frame size with --geometry, the size applies to
+all frames you create. A position specified with --geometry only
+affects the initial frame.
-The new user option 'overflow-newline-into-fringe' may be set to nil to
-revert to the old behavior of continuing such lines.
++++
+** You can now customize the use of window fringes. To control this
+for all frames, use M-x fringe-mode or the Show/Hide submenu of the
+top-level Options menu, or customize the `fringe-mode' variable. To
+control this for a specific frame, use the command M-x
+set-fringe-style.
+++
** The buffer boundaries (i.e. first and last line in the buffer) may
left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)).
+++
-** New command `display-local-help' displays any local help at point
-in the echo area. It is bound to `C-h .'. It normally displays the
-same string that would be displayed on mouse-over using the
-`help-echo' property, but, in certain cases, it can display a more
-keyboard oriented alternative.
+** On window systems, lines which are exactly as wide as the window
+(not counting the final newline character) are no longer broken into
+two lines on the display (with just the newline on the second line).
+Instead, the newline now "overflows" into the right fringe, and the
+cursor will be displayed in the fringe when positioned on that newline.
-+++
-** New user option `help-at-pt-display-when-idle' allows to
-automatically show the help provided by `display-local-help' on
-point-over, after suitable idle time. The amount of idle time is
-determined by the user option `help-at-pt-timer-delay' and defaults
-to one second. This feature is turned off by default.
+The new user option 'overflow-newline-into-fringe' may be set to nil to
+revert to the old behavior of continuing such lines.
----
-** New commands `scan-buf-next-region' and `scan-buf-previous-region'
-move to the start of the next (previous, respectively) region with
-non-nil help-echo property and display any help found there in the
-echo area, using `display-local-help'.
++++
+** When display margins are present in a window, the fringes are now
+displayed between the margins and the buffer's text area, rather than
+at the edges of the window.
+++
-** Help mode now only makes hyperlinks for faces when the face name is
-preceded or followed by the word `face'. It no longer makes
-hyperlinks for variables without variable documentation, unless
-preceded by one of the words `variable' or `option'. It now makes
-hyperlinks to Info anchors (or nodes) if the anchor (or node) name is
-enclosed in single quotes and preceded by `info anchor' or `Info
-anchor' (in addition to earlier `info node' and `Info node').
+** A window may now have individual fringe and scroll-bar settings,
+in addition to the individual display margin settings.
+
+Such individual settings are now preserved when windows are split
+horizontally or vertically, a saved window configuration is restored,
+or when the frame is resized.
+++
-** The max size of buffers and integers has been doubled.
-On 32bit machines, it is now 256M (i.e. 268435455).
+** `special-display-buffer-names' and `special-display-regexps' now
+understand two new boolean pseudo-frame-parameters `same-frame' and
+`same-window'.
+++
-** The -f option, used from the command line to call a function,
-now reads arguments for the function interactively if it is
-an interactively callable function.
+** Changes in C-h bindings:
----
-** sql changes.
+C-h e displays the *Messages* buffer.
-*** The variable `sql-product' controls the highlightng of different
-SQL dialects. This variable can be set globally via Customize, on a
-buffer-specific basis via local variable settings, or for the current
-session using the new SQL->Product submenu. (This menu replaces the
-SQL->Highlighting submenu.)
+C-h followed by a control character is used for displaying files
+ that do not change:
-The following values are supported:
+C-h C-f displays the FAQ.
+C-h C-e displays the PROBLEMS file.
- ansi ANSI Standard (default)
- db2 DB2
- informix Informix
- ingres Ingres
- interbase Interbase
- linter Linter
- ms Microsoft
- mysql MySQL
- oracle Oracle
- postgres Postgres
- solid Solid
- sqlite SQLite
- sybase Sybase
-
-The current product name will be shown on the mode line following the
-SQL mode indicator.
-
-The technique of setting `sql-mode-font-lock-defaults' directly in
-your .emacs will no longer establish the default highlighting -- Use
-`sql-product' to accomplish this.
-
-ANSI keywords are always highlighted.
-
-*** The function `sql-add-product-keywords' can be used to add
-font-lock rules to the product specific rules. For example, to have
-all identifiers ending in "_t" under MS SQLServer treated as a type,
-you would use the following line in your .emacs file:
-
- (sql-add-product-keywords 'ms
- '(("\\<\\w+_t\\>" . font-lock-type-face)))
+The info-search bindings on C-h C-f, C-h C-k and C-h C-i
+have been moved to C-h F, C-h K and C-h S.
-*** Oracle support includes keyword highlighting for Oracle 9i. Most
-SQL and PL/SQL keywords are implemented. SQL*Plus commands are
-highlighted in `font-lock-doc-face'.
+C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands.
-*** Microsoft SQLServer support has been significantly improved.
-Keyword highlighting for SqlServer 2000 is implemented.
-sql-interactive-mode defaults to use osql, rather than isql, because
-osql flushes its error stream more frequently. Thus error messages
-are displayed when they occur rather than when the session is
-terminated.
+- C-h c and C-h k report the actual command (after possible remapping)
+ run by the key sequence.
-If the username and password are not provided to `sql-ms', osql is
-called with the -E command line argument to use the operating system
-credentials to authenticate the user.
+- C-h w and C-h f on a command which has been remapped now report the
+ command it is remapped to, and the keys which can be used to run
+ that command.
-*** Postgres support is enhanced.
-Keyword highlighting of Postgres 7.3 is implemented. Prompting for
-the username and the pgsql `-U' option is added.
+For example, if C-k is bound to kill-line, and kill-line is remapped
+to new-kill-line, these commands now report:
-*** MySQL support is enhanced.
-Keyword higlighting of MySql 4.0 is implemented.
+- C-h c and C-h k C-k reports:
+ C-k runs the command new-kill-line
-*** Imenu support has been enhanced to locate tables, views, indexes,
-packages, procedures, functions, triggers, sequences, rules, and
-defaults.
+- C-h w and C-h f kill-line reports:
+ kill-line is remapped to new-kill-line which is on C-k, <deleteline>
-*** Added SQL->Start SQLi Session menu entry which calls the
-appropriate sql-interactive-mode wrapper for the current setting of
-`sql-product'.
+- C-h w and C-h f new-kill-line reports:
+ new-kill-line is on C-k
---
-** M-x view-file and commands that use it now avoid interfering
-with special modes such as Tar mode.
+** Help commands `describe-function' and `describe-key' now show function
+arguments in lowercase italics on displays that support it. To change the
+default, customize face `help-argument-name' or redefine the function
+`help-default-arg-highlight'.
-** Enhancements to apropos commands:
++++
+** C-h v and C-h f commands now include a hyperlink to the C source for
+variables and functions defined in C (if the C source is available).
+++
-*** The apropos commands now accept a list of words to match.
-When more than one word is specified, at least two of those words must
-be present for an item to match. Regular expression matching is still
-available.
+** Help mode now only makes hyperlinks for faces when the face name is
+preceded or followed by the word `face'. It no longer makes
+hyperlinks for variables without variable documentation, unless
+preceded by one of the words `variable' or `option'. It now makes
+hyperlinks to Info anchors (or nodes) if the anchor (or node) name is
+enclosed in single quotes and preceded by `info anchor' or `Info
+anchor' (in addition to earlier `info node' and `Info node').
+++
-*** The new option `apropos-sort-by-scores' causes the matching items
-to be sorted according to their score. The score for an item is a
-number calculated to indicate how well the item matches the words or
-regular expression that you entered to the apropos command. The best
-match is listed first, and the calculated score is shown for each
-matching item.
+** The new command `describe-char' (C-u C-x =) pops up a buffer with
+description various information about a character, including its
+encodings and syntax, its text properties, how to input, overlays, and
+widgets at point. You can get more information about some of them, by
+clicking on mouse-sensitive areas or moving there and pressing RET.
+++
-** The old bindings C-M-delete and C-M-backspace have been deleted,
-since there are situations where one or the other will shut down
-the operating system or your X server.
+** New command `display-local-help' displays any local help at point
+in the echo area. It is bound to `C-h .'. It normally displays the
+same string that would be displayed on mouse-over using the
+`help-echo' property, but, in certain cases, it can display a more
+keyboard oriented alternative.
---
-** New minor mode, Visible mode, toggles invisibility in the current buffer.
-When enabled, it makes all invisible text visible. When disabled, it
-restores the previous value of `buffer-invisibility-spec'.
+** New commands `scan-buf-next-region' and `scan-buf-previous-region'
+move to the start of the next (previous, respectively) region with
+non-nil help-echo property and display any help found there in the
+echo area, using `display-local-help'.
----
-** New command `kill-whole-line' kills an entire line at once.
-By default, it is bound to C-S-<backspace>.
++++
+** New user option `help-at-pt-display-when-idle' allows to
+automatically show the help provided by `display-local-help' on
+point-over, after suitable idle time. The amount of idle time is
+determined by the user option `help-at-pt-timer-delay' and defaults
+to one second. This feature is turned off by default.
---
** New commands to operate on pairs of open and close characters:
`insert-pair', `delete-pair', `raise-sexp'.
+++
-** A prefix argument of C-M-q in Emacs Lisp mode pretty-printifies the
-list starting after point.
+** In processing a local variables list, Emacs strips the prefix and
+suffix are from every line before processing all the lines.
-** Dired mode:
++++
+** `apply-macro-to-region-lines' now operates on all lines that begin
+in the region, rather than on all complete lines in the region.
----
-*** New faces dired-header, dired-mark, dired-marked, dired-flagged,
-dired-ignored, dired-directory, dired-symlink, dired-warning
-introduced for Dired mode instead of font-lock faces.
++++
+** You can now follow links by clicking Mouse-1 on the link.
+
+Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2
+click to follow a link, whereas most other applications use a Mouse-1
+click for both purposes, depending on whether you click outside or
+inside a link. Now the behavior of a Mouse-1 click has been changed
+to match this context-sentitive dual behavior.
+
+Depending on the current mode, a Mouse-2 click in Emacs may do much
+more than just follow a link, so the new Mouse-1 behavior is only
+activated for modes which explicitly mark a clickable text as a "link"
+(see the new function `mouse-on-link-p' for details). The Lisp
+packages that are included in release 22.1 have been adapted to do
+this, but external packages may not yet support this. However, there
+is no risk in using such packages, as the worst thing that could
+happen is that you get the original Mouse-1 behavior when you click
+on a link, which typically means that you set point where you click.
+
+If you want to get the original Mouse-1 action also inside a link, you
+just need to press the Mouse-1 button a little longer than a normal
+click (i.e. press and hold the Mouse-1 button for half a second before
+you release it).
+
+Dragging the Mouse-1 inside a link still performs the original
+drag-mouse-1 action, typically copy the text.
+
+You can customize the new Mouse-1 behavior via the new user options
+`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'.
+++
-*** New Dired command `dired-compare-directories' marks files
-with different file attributes in two dired buffers.
+** Emacs normally highlights mouse sensitive text whenever the mouse
+is over the text. By setting the new variable `mouse-highlight', you
+can optionally enable mouse highlighting only after you move the
+mouse, so that highlighting disappears when you press a key. You can
+also disable mouse highlighting.
+++
-*** New Dired command `dired-do-touch' (bound to T) changes timestamps
-of marked files with the value entered in the minibuffer.
+** You can now customize if selecting a region by dragging the mouse
+shall not copy the selected text to the kill-ring by setting the new
+variable mouse-drag-copy-region to nil.
+
+---
+** mouse-wheels can now scroll a specific fraction of the window
+(rather than a fixed number of lines) and the scrolling is `progressive'.
+
+---
+** Unexpected yanking of text due to accidental clicking on the mouse
+wheel button (typically mouse-2) during wheel scrolling is now avoided.
+This behavior can be customized via the mouse-wheel-click-event and
+mouse-wheel-inhibit-click-time variables.
+++
-*** In Dired's ! command (dired-do-shell-command), `*' and `?' now
-control substitution of the file names only when they are surrounded
-by whitespace. This means you can now use them as shell wildcards
-too. If you want to use just plain `*' as a wildcard, type `*""'; the
-doublequotes make no difference in the shell, but they prevent
-special treatment in `dired-do-shell-command'.
+** Under X, mouse-wheel-mode is turned on by default.
+++
-*** In Dired, the w command now copies the current line's file name
-into the kill ring. With a zero prefix arg, copies absolute file names.
+** M-x setenv now expands environment variables of the form `$foo' and
+`${foo}' in the specified new value of the environment variable. To
+include a `$' in the value, use `$$'.
+++
-** Dired-x:
+** Unquoted `$' in file names do not signal an error any more when
+the corresponding environment variable does not exist.
+Instead, the `$ENVVAR' text is left as is, so that `$$' quoting
+is only rarely needed.
+
+---
+** Language environment and various default coding systems are setup
+more correctly according to the current locale name. If the locale
+name doesn't specify a charset, the default is what glibc defines.
+This change may result in using the different coding systems as
+default in some locale (e.g. vi_VN).
+++
-*** Omitting files is now a minor mode, dired-omit-mode. The mode toggling
-command is bound to M-o. A new command dired-mark-omitted, bound to * O,
-marks omitted files. The variable dired-omit-files-p is obsoleted, use the
-mode toggling function instead.
+** The default for the paper size (variable ps-paper-type) is taken
+from the locale.
+++
-** find-file-read-only visits multiple files in read-only mode,
-when the file name contains wildcard characters.
+** The keyboard-coding-system is now automatically set based on your
+current locale settings if you are not using a window system. This
+may mean that the META key doesn't work but generates non-ASCII
+characters instead, depending on how the terminal (or terminal
+emulator) works. Use `set-keyboard-coding-system' (or customize
+keyboard-coding-system) if you prefer META to work (the old default)
+or if the locale doesn't describe the character set actually generated
+by the keyboard. See Info node `Single-Byte Character Support'.
+++
-** find-alternate-file replaces the current file with multiple files,
-when the file name contains wildcard characters.
+** The new command `revert-buffer-with-coding-system' (C-x RET r)
+revisits the current file using a coding system that you specify.
-** FFAP
++++
+** New command `recode-region' decodes the region again by a specified
+coding system.
+++
-*** New ffap commands and keybindings: C-x C-r (`ffap-read-only'),
-C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'),
-C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'),
-C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame').
+** The new command `recode-file-name' changes the encoding of the name
+of a file.
---
-*** FFAP accepts wildcards in a file name by default. C-x C-f passes
-it to `find-file' with non-nil WILDCARDS argument, which visits
-multiple files, and C-x d passes it to `dired'.
+** New command `ucs-insert' inserts a character specified by its
+unicode.
-** Info mode:
++++
+** The new command `set-file-name-coding-system' (C-x RET F) sets
+coding system for encoding and decoding file names. A new menu item
+(Options->Mule->Set Coding Systems->For File Name) invokes this
+command.
+++
-*** A numeric prefix argument of `info' selects an Info buffer
-with the number appended to the *info* buffer name (e.g. "*info*<2>").
+** New command quail-show-key shows what key (or key sequence) to type
+in the current input method to input a character at point.
----
-*** isearch in Info uses Info-search and searches through multiple nodes.
-Before leaving the initial Info node isearch fails once with the error
-message [initial node], and with subsequent C-s/C-r continues through
-other nodes. When isearch fails for the rest of the manual, it wraps
-aroung the whole manual to the top/final node. The user option
-`Info-isearch-search' controls whether to use Info-search for isearch,
-or the default isearch search function that wraps around the current
-Info node.
-
-*** New search commands: `Info-search-case-sensitively' (bound to S),
-`Info-search-backward', and `Info-search-next' which repeats the last
-search without prompting for a new search string.
-
-*** New command `Info-history-forward' (bound to r and new toolbar icon)
-moves forward in history to the node you returned from after using
-`Info-history-back' (renamed from `Info-last').
-
-*** New command `Info-history' (bound to L) displays a menu of visited nodes.
-
-*** New command `Info-toc' (bound to T) creates a node with table of contents
-from the tree structure of menus of the current Info file.
++++
+** Limited support for character `unification' has been added.
+Emacs now knows how to translate between different representations of
+the same characters in various Emacs charsets according to standard
+Unicode mappings. This applies mainly to characters in the ISO 8859
+sets plus some other 8-bit sets, but can be extended. For instance,
+translation works amongst the Emacs ...-iso8859-... charsets and the
+mule-unicode-... ones.
-*** New command `info-apropos' searches the indices of the known
-Info files on your system for a string, and builds a menu of the
-possible matches.
+By default this translation happens automatically on encoding.
+Self-inserting characters are translated to make the input conformant
+with the encoding of the buffer in which it's being used, where
+possible.
-*** New command `Info-copy-current-node-name' (bound to w) copies
-the current Info node name into the kill ring. With a zero prefix
-arg, puts the node name inside the `info' function call.
+You can force a more complete unification with the user option
+unify-8859-on-decoding-mode. That maps all the Latin-N character sets
+into Unicode characters (from the latin-iso8859-1 and
+mule-unicode-0100-24ff charsets) on decoding. Note that this mode
+will often effectively clobber data with an iso-2022 encoding.
---
-*** New face `info-xref-visited' distinguishes visited nodes from unvisited
-and a new option `Info-fontify-visited-nodes' to control this.
-
-*** http and ftp links in Info are now operational: they look like cross
-references and following them calls `browse-url'.
-
-+++
-*** Info now hides node names in menus and cross references by default.
-If you prefer the old behavior, you can set the new user option
-`Info-hide-note-references' to nil.
+** There is support for decoding Greek and Cyrillic characters into
+either Unicode (the mule-unicode charsets) or the iso-8859 charsets,
+when possible. The latter are more space-efficient. This is
+controlled by user option utf-fragment-on-decoding.
---
-*** Images in Info pages are supported.
-Info pages show embedded images, in Emacs frames with image support.
-Info documentation that includes images, processed with makeinfo
-version 4.7 or newer, compiles to Info pages with embedded images.
-
-+++
-*** The default value for `Info-scroll-prefer-subnodes' is now nil.
+** New language environments: French, Ukrainian, Tajik,
+Bulgarian, Belarusian, Ukrainian, UTF-8, Windows-1255, Welsh, Latin-6,
+Latin-7, Lithuanian, Latvian, Swedish, Slovenian, Croatian, Georgian,
+Italian, Russian, Malayalam, Tamil, Russian, Chinese-EUC-TW. (Set up
+automatically according to the locale.)
---
-*** Info-index offers completion.
+** New input methods: latin-alt-postfix, latin-postfix, latin-prefix,
+ukrainian-computer, belarusian, bulgarian-bds, russian-computer,
+vietnamese-telex, lithuanian-numeric, lithuanian-keyboard,
+latvian-keyboard, welsh, georgian, rfc1345, ucs, sgml,
+bulgarian-phonetic, dutch, slovenian, croatian, malayalam-inscript,
+tamil-inscript.
---
-** Support for the SQLite interpreter has been added to sql.el by calling
-'sql-sqlite'.
-
-** BibTeX mode:
-*** The new command bibtex-url browses a URL for the BibTeX entry at
-point (bound to C-c C-l and mouse-2, RET on clickable fields).
-
-*** The new command bibtex-entry-update (bound to C-c C-u) updates
-an existing BibTeX entry.
-
-*** New `bibtex-entry-format' option `required-fields', enabled by default.
-
-*** bibtex-maintain-sorted-entries can take values `plain',
-`crossref', and `entry-class' which control the sorting scheme used
-for BibTeX entries. `bibtex-sort-entry-class' controls the sorting
-scheme `entry-class'. TAB completion for reference keys and
-automatic detection of duplicates does not require anymore that
-bibtex-maintain-sorted-entries is non-nil.
-
-*** If the new variable bibtex-parse-keys-fast is non-nil,
-use fast but simplified algorithm for parsing BibTeX keys.
+** New input method chinese-sisheng for inputting Chinese Pinyin
+characters.
-*** If the new variable bibtex-autoadd-commas is non-nil,
-automatically add missing commas at end of BibTeX fields.
+---
+** Improved Thai support. A new minor mode `thai-word-mode' (which is
+automatically activated if you select Thai as a language
+environment) changes key bindings of most word-oriented commands to
+versions which recognize Thai words. Affected commands are
+ M-f (forward-word)
+ M-b (backward-word)
+ M-d (kill-word)
+ M-DEL (backward-kill-word)
+ M-t (transpose-words)
+ M-q (fill-paragraph)
-*** The new variable bibtex-autofill-types contains a list of entry
-types for which fields are filled automatically (if possible).
+---
+** Indian support has been updated.
+The in-is13194 coding system is now Unicode-based. CDAC fonts are
+assumed. There is a framework for supporting various
+Indian scripts, but currently only Devanagari, Malayalam and Tamil are
+supported.
-*** The new command bibtex-complete completes word fragment before
-point according to context (bound to M-tab).
+---
+** A UTF-7 coding system is available in the library `utf-7'.
-*** The new commands bibtex-find-entry and bibtex-find-crossref
-locate entries and crossref'd entries (bound to C-c C-s and C-c C-x).
-Crossref fields are clickable (bound to mouse-2, RET).
+---
+** The utf-8/16 coding systems have been enhanced.
+By default, untranslatable utf-8 sequences are simply composed into
+single quasi-characters. User option `utf-translate-cjk-mode' (it is
+turned on by default) arranges to translate many utf-8 CJK character
+sequences into real Emacs characters in a similar way to the Mule-UCS
+system. As this loads a fairly big data on demand, people who are not
+interested in CJK characters may want to customize it to nil.
+You can augment/amend the CJK translation via hash tables
+`ucs-mule-cjk-to-unicode' and `ucs-unicode-to-mule-cjk'. The utf-8
+coding system now also encodes characters from most of Emacs's
+one-dimensional internal charsets, specifically the ISO-8859 ones.
+The utf-16 coding system is affected similarly.
-*** In BibTeX mode the command fill-paragraph (bound to M-q) fills
-individual fields of a BibTeX entry.
+---
+** A new coding system `euc-tw' has been added for traditional Chinese
+in CNS encoding; it accepts both Big 5 and CNS as input; on saving,
+Big 5 is then converted to CNS.
-*** The new variables bibtex-files and bibtex-file-path define a set
-of BibTeX files that are searched for entry keys.
+---
+** Many new coding systems are available by loading the `code-pages'
+library. These include complete versions of most of those in
+codepage.el, based on Unicode mappings. `codepage-setup' is now
+obsolete and is used only in the MS-DOS port of Emacs. windows-1252
+and windows-1251 are preloaded since the former is so common and the
+latter is used by GNU locales.
-*** The new command bibtex-validate-globally checks for duplicate keys
-in multiple BibTeX files.
+---
+** New variable `utf-translate-cjk-unicode-range' controls which
+Unicode characters to translate in `utf-translate-cjk-mode'.
-*** The new command bibtex-copy-summary-as-kill pushes summary
-of BibTeX entry to kill ring (bound to C-c C-t).
+---
+** iso-10646-1 (`Unicode') fonts can be used to display any range of
+characters encodable by the utf-8 coding system. Just specify the
+fontset appropriately.
+++
-** When display margins are present in a window, the fringes are now
-displayed between the margins and the buffer's text area, rather than
-at the edges of the window.
+** Vertical scrolling is now possible within incremental search.
+To enable this feature, customize the new user option
+`isearch-allow-scroll'. User written commands which satisfy stringent
+constraints can be marked as "scrolling commands". See the Emacs manual
+for details.
+++
-** A window may now have individual fringe and scroll-bar settings,
-in addition to the individual display margin settings.
+** C-w in incremental search now grabs either a character or a word,
+making the decision in a heuristic way. This new job is done by the
+command `isearch-yank-word-or-char'. To restore the old behavior,
+bind C-w to `isearch-yank-word' in `isearch-mode-map'.
-Such individual settings are now preserved when windows are split
-horizontally or vertically, a saved window configuration is restored,
-or when the frame is resized.
++++
+** C-y in incremental search now grabs the next line if point is already
+at the end of a line.
+++
-** New functions frame-current-scroll-bars and window-current-scroll-bars.
+** C-M-w deletes and C-M-y grabs a character in isearch mode.
+Another method to grab a character is to enter the minibuffer by `M-e'
+and to type `C-f' at the end of the search string in the minibuffer.
-These functions return the current locations of the vertical and
-horizontal scroll bars in a frame or window.
++++
+** M-% typed in isearch mode invokes `query-replace' or
+`query-replace-regexp' (depending on search mode) with the current
+search string used as the string to replace.
+++
-** Emacs now supports drag and drop for X. Dropping a file on a window
- opens it, dropping text inserts the text. Dropping a file on a dired
- buffer copies or moves the file to that directory.
+** Isearch no longer adds `isearch-resume' commands to the command
+history by default. To enable this feature, customize the new
+user option `isearch-resume-in-command-history'.
+
+---
+** New user option `query-replace-skip-read-only': when non-nil,
+`query-replace' and related functions simply ignore
+a match if part of it has a read-only property.
+++
-** Under X, mouse-wheel-mode is turned on by default.
+** When used interactively, the commands `query-replace-regexp' and
+`replace-regexp' allow \,expr to be used in a replacement string,
+where expr is an arbitrary Lisp expression evaluated at replacement
+time. In many cases, this will be more convenient than using
+`query-replace-regexp-eval'. `\#' in a replacement string now refers
+to the count of replacements already made by the replacement command.
+All regular expression replacement commands now allow `\?' in the
+replacement string to specify a position where the replacement string
+can be edited for each replacement.
+++
-** The X resource useXIM can be used to turn off use of XIM, which may
-speed up Emacs with slow networking to the X server.
+** query-replace uses isearch lazy highlighting when the new user option
+`query-replace-lazy-highlight' is non-nil.
-If the configure option `--without-xim' was used to turn off use of
-XIM by default, the X resource useXIM can be used to turn it on.
+---
+** The current match in query-replace is highlighted in new face
+`query-replace' which by default inherits from isearch face.
+++
-** The X resource cursorBlink can be used to turn off cursor blinking.
+** M-x compare-windows now can automatically skip non-matching text to
+resync points in both windows.
+++
-** `undo-only' does an undo which does not redo any previous undo.
+** The commands M-x customize-face and M-x customize-face-other-window
+now look at the character after point. If a face or faces are
+specified for that character, the commands by default customize those
+faces.
---
-** `uniquify-strip-common-suffix' tells uniquify to prefer
-`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
+** The face-customization widget has been reworked to be less confusing.
+In particular, when you enable a face attribute using the corresponding
+check-box, there's no longer a redundant `*' option in value selection
+for that attribute; the values you can choose are only those which make
+sense for the attribute. When an attribute is de-selected by unchecking
+its check-box, then the (now ignored, but still present temporarily in
+case you re-select the attribute) value is hidden.
+++
-** If the user visits a file larger than `large-file-warning-threshold',
-Emacs prompts her for confirmation.
+** When you set or reset a variable's value in a Customize buffer,
+the previous value becomes the "backup value" of the variable.
+You can go back to that backup value by selecting "Use Backup Value"
+under the "[State]" button.
----
-** A UTF-7 coding system is available in the library `utf-7'.
+** Dired mode:
---
-** GUD mode has its own tool bar for controlling execution of the inferior
-and other common debugger commands.
+*** New faces dired-header, dired-mark, dired-marked, dired-flagged,
+dired-ignored, dired-directory, dired-symlink, dired-warning
+introduced for Dired mode instead of font-lock faces.
----
-** recentf changes.
++++
+*** New Dired command `dired-compare-directories' marks files
+with different file attributes in two dired buffers.
-The recent file list is now automatically cleanup when recentf mode is
-enabled. The new option `recentf-auto-cleanup' controls when to do
-automatic cleanup.
++++
+*** New Dired command `dired-do-touch' (bound to T) changes timestamps
+of marked files with the value entered in the minibuffer.
-The `recentf-keep' option replaces `recentf-keep-non-readable-files-p'
-and provides a more general mechanism to customize which file names to
-keep in the recent list.
++++
+*** In Dired's ! command (dired-do-shell-command), `*' and `?' now
+control substitution of the file names only when they are surrounded
+by whitespace. This means you can now use them as shell wildcards
+too. If you want to use just plain `*' as a wildcard, type `*""'; the
+doublequotes make no difference in the shell, but they prevent
+special treatment in `dired-do-shell-command'.
-With the more advanced option: `recentf-filename-handler', you can
-specify a function that transforms filenames handled by recentf. For
-example, if set to `file-truename', the same file will not be in the
-recent list with different symbolic links.
++++
+*** In Dired, the w command now copies the current line's file name
+into the kill ring. With a zero prefix arg, copies absolute file names.
-To follow naming convention, `recentf-menu-append-commands-flag'
-replaces the misnamed option `recentf-menu-append-commands-p'. The
-old name remains available as alias, but has been marked obsolete.
++++
+** The variables dired-free-space-program and dired-free-space-args
+have been renamed to directory-free-space-program and
+directory-free-space-args, and they now apply whenever Emacs puts a
+directory listing into a buffer.
+++
-** The default for the paper size (variable ps-paper-type) is taken
-from the locale.
+** Dired-x:
+++
-** Init file changes
+*** Omitting files is now a minor mode, dired-omit-mode. The mode toggling
+command is bound to M-o. A new command dired-mark-omitted, bound to * O,
+marks omitted files. The variable dired-omit-files-p is obsoleted, use the
+mode toggling function instead.
-You can now put the init files .emacs and .emacs_SHELL under
-~/.emacs.d or directly under ~. Emacs will find them in either place.
++++
+** In Outline mode, hide-body no longer hides lines at the top
+of the file that precede the first header line.
----
-** partial-completion-mode now does partial completion on directory names.
++++
+** Occur, Info, and comint-derived modes now support using
+M-x font-lock-mode to toggle fontification. The variable
+`Info-fontify' is no longer applicable; to disable fontification,
+remove `turn-on-font-lock' from `Info-mode-hook'.
---
-** skeleton.el now supports using - to mark the skeleton-point without
- interregion interaction. @ has reverted to only setting
- skeleton-positions and no longer sets skeleton-point. Skeletons
- which used @ to mark skeleton-point independent of _ should now use -
- instead. The updated skeleton-insert docstring explains these new
- features along with other details of skeleton construction.
+** The terminal emulation code in term.el has been improved, it can
+run most curses applications now.
---
-** MH-E changes.
-
-Upgraded to MH-E version 7.82. There have been major changes since
-version 5.0.2; see MH-E-NEWS for details.
-
-+++
-** The `emacsclient' command understands the options `--eval' and
-`--display' which tell Emacs respectively to evaluate the given elisp
-expression and to use the given display when visiting files.
-
-+++
-** User option `server-mode' can be used to start a server process.
-
-+++
-** The mode line position information now comes before the major mode.
-When the file is maintained under version control, that information
-appears between the position information and the major mode.
+** The comint prompt can now be made read-only, using the new user
+option `comint-prompt-read-only'. This is not enabled by default,
+except in IELM buffers. The read-only status of IELM prompts can be
+controlled with the new user option `ielm-prompt-read-only', which
+overrides `comint-prompt-read-only'.
-+++
-** C-x s (save-some-buffers) now offers an option `d' to diff a buffer
-against its file, so you can see what changes you would be saving.
+The new commands `comint-kill-whole-line' and `comint-kill-region'
+support editing comint buffers with read-only prompts.
-+++
-** You can now customize the use of window fringes. To control this
-for all frames, use M-x fringe-mode or the Show/Hide submenu of the
-top-level Options menu, or customize the `fringe-mode' variable. To
-control this for a specific frame, use the command M-x
-set-fringe-style.
+`comint-kill-whole-line' is like `kill-whole-line', but ignores both
+read-only and field properties. Hence, it always kill entire
+lines, including any prompts.
-+++
-** There is a new user option `mail-default-directory' that allows you
-to specify the value of `default-directory' for mail buffers. This
-directory is used for auto-save files of mail buffers. It defaults to
-"~/".
+`comint-kill-region' is like `kill-region', except that it ignores
+read-only properties, if it is safe to do so. This means that if any
+part of a prompt is deleted, then the entire prompt must be deleted
+and that all prompts must stay at the beginning of a line. If this is
+not the case, then `comint-kill-region' behaves just like
+`kill-region' if read-only are involved: it copies the text to the
+kill-ring, but does not delete it.
+++
-** When you are root, and you visit a file whose modes specify
-read-only, the Emacs buffer is now read-only too. Type C-x C-q if you
-want to make the buffer writable. (As root, you can in fact alter the
-file.)
+** The new command `comint-insert-previous-argument' in comint-derived
+modes (shell-mode etc) inserts arguments from previous command lines,
+like bash's `ESC .' binding. It is bound by default to `C-c .', but
+otherwise behaves quite similarly to the bash version.
-+++
-** The new command `revert-buffer-with-coding-system' (C-x RET r)
-revisits the current file using a coding system that you specify.
+** `comint-use-prompt-regexp-instead-of-fields' has been renamed
+`comint-use-prompt-regexp'. The old name has been kept as an alias,
+but declared obsolete.
+++
-** The new command `recode-file-name' changes the encoding of the name
-of a file.
+** Telnet now prompts you for a port number with C-u M-x telnet.
---
-** `ps-print' can now print characters from the mule-unicode charsets.
+** M-x compile has become more robust and reliable
-Printing text with characters from the mule-unicode-* sets works with
-ps-print, provided that you have installed the appropriate BDF fonts.
-See the file INSTALL for URLs where you can find these fonts.
+Quite a few more kinds of messages are recognized. Messages that are
+recognized as warnings or informational come in orange or green, instead of
+red. Informational messages are by default skipped with `next-error'
+(controlled by `compilation-skip-threshold').
----
-** The new options `buffers-menu-show-directories' and
-`buffers-menu-show-status' let you control how buffers are displayed
-in the menu dropped down when you click "Buffers" from the menu bar.
+Location data is collected on the fly as the *compilation* buffer changes.
+This means you could modify messages to make them point to different files.
+This also means you can not go to locations of messages you may have deleted.
-`buffers-menu-show-directories' controls whether the menu displays
-leading directories as part of the file name visited by the buffer.
-If its value is `unless-uniquify', the default, directories are
-shown unless uniquify-buffer-name-style' is non-nil. The value of nil
-and t turn the display of directories off and on, respectively.
+The variable `compilation-error-regexp-alist' has now become customizable. If
+you had added your own regexps to this, you'll probably need to include a
+leading `^', otherwise they'll match anywhere on a line. There is now also a
+`compilation-mode-font-lock-keywords' and it nicely handles all the checks
+that configure outputs and -o options so you see at a glance where you are.
-`buffers-menu-show-status' controls whether the Buffers menu includes
-the modified and read-only status of the buffers. By default it is
-t, and the status is shown.
+The new file etc/compilation.txt gives examples of each type of message.
-Setting these variables directly does not take effect until next time
-the Buffers menu is regenerated.
+** Compilation mode enhancements:
+++
-** The commands M-x customize-face and M-x customize-face-other-window
-now look at the character after point. If a face or faces are
-specified for that character, the commands by default customize those
-faces.
+*** New user option `compilation-environment'.
+This option allows you to specify environment variables for inferior
+compilation processes without affecting the environment that all
+subprocesses inherit.
----
-** New language environments: French, Ukrainian, Tajik,
-Bulgarian, Belarusian, Ukrainian, UTF-8, Windows-1255, Welsh, Latin-6,
-Latin-7, Lithuanian, Latvian, Swedish, Slovenian, Croatian, Georgian,
-Italian, Russian, Malayalam, Tamil, Russian, Chinese-EUC-TW. (Set up
-automatically according to the locale.)
++++
+** Grep has been decoupled from compilation mode setup.
---
-** Indian support has been updated.
-The in-is13194 coding system is now Unicode-based. CDAC fonts are
-assumed. There is a framework for supporting various
-Indian scripts, but currently only Devanagari, Malayalam and Tamil are
-supported.
+*** There's a new separate package grep.el.
---
-** New input methods: latin-alt-postfix, latin-postfix, latin-prefix,
-ukrainian-computer, belarusian, bulgarian-bds, russian-computer,
-vietnamese-telex, lithuanian-numeric, lithuanian-keyboard,
-latvian-keyboard, welsh, georgian, rfc1345, ucs, sgml,
-bulgarian-phonetic, dutch, slovenian, croatian, malayalam-inscript,
-tamil-inscript.
+*** M-x grep has been adapted to new compile
----
-** A new coding system `euc-tw' has been added for traditional Chinese
-in CNS encoding; it accepts both Big 5 and CNS as input; on saving,
-Big 5 is then converted to CNS.
+Hits are fontified in green, and hits in binary files in orange. Grep buffers
+can be saved and automatically revisited with the new Grep mode.
---
-** Many new coding systems are available by loading the `code-pages'
-library. These include complete versions of most of those in
-codepage.el, based on Unicode mappings. `codepage-setup' is now
-obsolete and is used only in the MS-DOS port of Emacs. windows-1252
-and windows-1251 are preloaded since the former is so common and the
-latter is used by GNU locales.
+*** Grep commands now have their own submenu and customization group.
----
-** The utf-8/16 coding systems have been enhanced.
-By default, untranslatable utf-8 sequences are simply composed into
-single quasi-characters. User option `utf-translate-cjk-mode' (it is
-turned on by default) arranges to translate many utf-8 CJK character
-sequences into real Emacs characters in a similar way to the Mule-UCS
-system. As this loads a fairly big data on demand, people who are not
-interested in CJK characters may want to customize it to nil.
-You can augment/amend the CJK translation via hash tables
-`ucs-mule-cjk-to-unicode' and `ucs-unicode-to-mule-cjk'. The utf-8
-coding system now also encodes characters from most of Emacs's
-one-dimensional internal charsets, specifically the ISO-8859 ones.
-The utf-16 coding system is affected similarly.
++++
+*** `grep-find' is now also available under the name `find-grep' where
+people knowing `find-grep-dired' would probably expect it.
---
-** New variable `utf-translate-cjk-unicode-range' controls which
-Unicode characters to translate in `utf-translate-cjk-mode'.
+*** The new variables `grep-window-height', `grep-auto-highlight', and
+`grep-scroll-output' can be used to override the corresponding
+compilation mode settings for grep commands.
----
-** iso-10646-1 (`Unicode') fonts can be used to display any range of
-characters encodable by the utf-8 coding system. Just specify the
-fontset appropriately.
++++
+*** New option `grep-highlight-matches' highlightes matches in *grep*
+buffer. It uses a special feature of some grep programs which accept
+--color option to output markers around matches. When going to the next
+match with `next-error' the exact match is highlighted in the source
+buffer. Otherwise, if `grep-highlight-matches' is nil, the whole
+source line is highlighted.
----
-** New command `ucs-insert' inserts a character specified by its
-unicode.
++++
+*** New key bindings in grep output window:
+SPC and DEL scrolls window up and down. C-n and C-p moves to next and
+previous match in the grep window. RET jumps to the source line of
+the current match. `n' and `p' shows next and previous match in
+other window, but does not switch buffer. `{' and `}' jumps to the
+previous or next file in the grep output. TAB also jumps to the next
+file.
+++
-** Limited support for character `unification' has been added.
-Emacs now knows how to translate between different representations of
-the same characters in various Emacs charsets according to standard
-Unicode mappings. This applies mainly to characters in the ISO 8859
-sets plus some other 8-bit sets, but can be extended. For instance,
-translation works amongst the Emacs ...-iso8859-... charsets and the
-mule-unicode-... ones.
+** M-x grep now tries to avoid appending `/dev/null' to the command line
+by using GNU grep `-H' option instead. M-x grep automatically
+detects whether this is possible or not the first time it is invoked.
+When `-H' is used, the grep command line supplied by the user is passed
+unchanged to the system to execute, which allows more complicated
+command lines to be used than was possible before.
-By default this translation happens automatically on encoding.
-Self-inserting characters are translated to make the input conformant
-with the encoding of the buffer in which it's being used, where
-possible.
-
-You can force a more complete unification with the user option
-unify-8859-on-decoding-mode. That maps all the Latin-N character sets
-into Unicode characters (from the latin-iso8859-1 and
-mule-unicode-0100-24ff charsets) on decoding. Note that this mode
-will often effectively clobber data with an iso-2022 encoding.
++++
+** New options `next-error-highlight' and `next-error-highlight-no-select'
+specify the method of highlighting of the corresponding source line
+in new face `next-error'.
----
-** There is support for decoding Greek and Cyrillic characters into
-either Unicode (the mule-unicode charsets) or the iso-8859 charsets,
-when possible. The latter are more space-efficient. This is
-controlled by user option utf-fragment-on-decoding.
++++
+** A new minor mode `next-error-follow-minor-mode' can be used in
+compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the
+modes that can use `next-error'). In this mode, cursor motion in the
+buffer causes automatic display in another window of the corresponding
+matches, compilation errors, etc. This minor mode can be toggled with
+C-c C-f.
+++
-** The new command `set-file-name-coding-system' (C-x RET F) sets
-coding system for encoding and decoding file names. A new menu item
-(Options->Mule->Set Coding Systems->For File Name) invokes this
-command.
+** M-x diff uses diff-mode instead of compilation-mode.
----
-** The scrollbar under LessTif or Motif has a smoother drag-scrolling.
-On the other hand, the size of the thumb does not represent the actual
-amount of text shown any more (only a crude approximation of it).
++++
+** In the *Occur* buffer, `o' switches to it in another window, and
+C-o displays the current line's occurrence in another window without
+switching to it.
----
-** The pop up menus for Lucid now stay up if you do a fast click and can
-be navigated with the arrow keys (like Gtk+, Mac and W32).
++++
+** You can now use next-error (C-x `) and previous-error to advance to
+the next/previous matching line found by M-x occur.
+++
-** The Lucid menus can display multilingual text in your locale. You have
-to explicitly specify a fontSet resource for this to work, for example
-`-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
+** The new command `multi-occur' is just like `occur', except it can
+search multiple buffers. There is also a new command
+`multi-occur-by-filename-regexp' which allows you to specify the
+buffers to search by their filename. Internally, Occur mode has been
+rewritten, and now uses font-lock, among other changes.
----
-** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
-ESC, like they do for Gtk+, Mac and W32.
++++
+** font-lock: in modes like C and Lisp where the fontification assumes that
+an open-paren in column 0 is always outside of any string or comment,
+font-lock now highlights any such open-paren-in-column-zero in bold-red
+if it is inside a string or a comment, to indicate that it can cause
+trouble with fontification and/or indentation.
----
-** Dialogs and menus pop down when pressing C-g.
+** Enhancements to apropos commands:
----
-** The menu item "Open File..." has been split into two items, "New File..."
-and "Open File...". "Open File..." now opens only existing files. This is
-to support existing GUI file selection dialogs better.
++++
+*** The apropos commands now accept a list of words to match.
+When more than one word is specified, at least two of those words must
+be present for an item to match. Regular expression matching is still
+available.
+++
-** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be
-disabled by customizing the variable `use-file-dialog'.
+*** The new option `apropos-sort-by-scores' causes the matching items
+to be sorted according to their score. The score for an item is a
+number calculated to indicate how well the item matches the words or
+regular expression that you entered to the apropos command. The best
+match is listed first, and the calculated score is shown for each
+matching item.
+++
-** For Gtk+ version 2.4, you can make Emacs use the old file dialog
-by setting the variable `x-use-old-gtk-file-dialog' to t. Default is to use
-the new dialog.
+** You can have several Emacs servers on the same machine.
+
+ % emacs --eval '(setq server-name "foo")' -f server-start &
+ % emacs --eval '(setq server-name "bar")' -f server-start &
+ % emacsclient -s foo file1
+ % emacsclient -s bar file2
+++
-** Emacs can produce an underscore-like (horizontal bar) cursor.
-The underscore cursor is set by putting `(cursor-type . hbar)' in
-default-frame-alist. It supports variable heights, like the `bar'
-cursor does.
+** The `emacsclient' command understands the options `--eval' and
+`--display' which tell Emacs respectively to evaluate the given elisp
+expression and to use the given display when visiting files.
+++
-** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
-now controlled by the variable `blink-cursor-alist'.
+** User option `server-mode' can be used to start a server process.
+++
-** Filesets are collections of files. You can define a fileset in
-various ways, such as based on a directory tree or based on
-program files that include other program files.
+** New user option `add-log-always-start-new-record'.
+When this option is enabled, M-x add-change-log-entry always
+starts a new record regardless of when the last record is.
-Once you have defined a fileset, you can perform various operations on
-all the files in it, such as visiting them or searching and replacing
-in them.
+** Info mode:
----
-** PO translation files are decoded according to their MIME headers
-when Emacs visits them.
++++
+*** A numeric prefix argument of `info' selects an Info buffer
+with the number appended to the *info* buffer name (e.g. "*info*<2>").
---
-** The game `mpuz' is enhanced.
+*** isearch in Info uses Info-search and searches through multiple nodes.
+Before leaving the initial Info node isearch fails once with the error
+message [initial node], and with subsequent C-s/C-r continues through
+other nodes. When isearch fails for the rest of the manual, it wraps
+aroung the whole manual to the top/final node. The user option
+`Info-isearch-search' controls whether to use Info-search for isearch,
+or the default isearch search function that wraps around the current
+Info node.
-`mpuz' now allows the 2nd factor not to have two identical digits. By
-default, all trivial operations involving whole lines are performed
-automatically. The game uses faces for better visual feedback.
+*** New search commands: `Info-search-case-sensitively' (bound to S),
+`Info-search-backward', and `Info-search-next' which repeats the last
+search without prompting for a new search string.
----
-** The new variable `x-select-request-type' controls how Emacs
-requests X selection. The default value is nil, which means that
-Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING,
-and use the more appropriately result.
+*** New command `Info-history-forward' (bound to r and new toolbar icon)
+moves forward in history to the node you returned from after using
+`Info-history-back' (renamed from `Info-last').
-+++
-** The parameters of automatic hscrolling can now be customized.
-The variable `hscroll-margin' determines how many columns away from
-the window edge point is allowed to get before automatic hscrolling
-will horizontally scroll the window. The default value is 5.
+*** New command `Info-history' (bound to L) displays a menu of visited nodes.
-The variable `hscroll-step' determines how many columns automatic
-hscrolling scrolls the window when point gets too close to the
-window edge. If its value is zero, the default, Emacs scrolls the
-window so as to center point. If its value is an integer, it says how
-many columns to scroll. If the value is a floating-point number, it
-gives the fraction of the window's width to scroll the window.
+*** New command `Info-toc' (bound to T) creates a node with table of contents
+from the tree structure of menus of the current Info file.
-The variable `automatic-hscrolling' was renamed to
-`auto-hscroll-mode'. The old name is still available as an alias.
+*** New command `info-apropos' searches the indices of the known
+Info files on your system for a string, and builds a menu of the
+possible matches.
-** TeX modes:
+*** New command `Info-copy-current-node-name' (bound to w) copies
+the current Info node name into the kill ring. With a zero prefix
+arg, puts the node name inside the `info' function call.
-+++
-*** C-c C-c prompts for a command to run, and tries to offer a good default.
+---
+*** New face `info-xref-visited' distinguishes visited nodes from unvisited
+and a new option `Info-fontify-visited-nodes' to control this.
+
+*** http and ftp links in Info are now operational: they look like cross
+references and following them calls `browse-url'.
+++
-*** The user option `tex-start-options-string' has been replaced
-by two new user options: `tex-start-options', which should hold
-command-line options to feed to TeX, and `tex-start-commands' which should hold
-TeX commands to use at startup.
+*** Info now hides node names in menus and cross references by default.
+If you prefer the old behavior, you can set the new user option
+`Info-hide-note-references' to nil.
---
-*** verbatim environments are now highlighted in courier by font-lock
-and super/sub-scripts are made into super/sub-scripts.
+*** Images in Info pages are supported.
+Info pages show embedded images, in Emacs frames with image support.
+Info documentation that includes images, processed with makeinfo
+version 4.7 or newer, compiles to Info pages with embedded images.
+++
-*** New major mode doctex-mode for *.dtx files.
+*** The default value for `Info-scroll-prefer-subnodes' is now nil.
-+++
-** New display feature: focus follows the mouse from one Emacs window
-to another, even within a frame. If you set the variable
-mouse-autoselect-window to non-nil value, moving the mouse to a
-different Emacs window will select that window (minibuffer window can
-be selected only when it is active). The default is nil, so that this
-feature is not enabled.
+---
+*** Info-index offers completion.
-+++
-** On X, when the window manager requires that you click on a frame to
-select it (give it focus), the selected window and cursor position
-normally changes according to the mouse click position. If you set
-the variable x-mouse-click-focus-ignore-position to t, the selected
-window and cursor position do not change when you click on a frame
-to give it focus.
+---
+** Lisp mode now uses font-lock-doc-face for the docstrings.
+++
-** The new command `describe-char' (C-u C-x =) pops up a buffer with
-description various information about a character, including its
-encodings and syntax, its text properties, how to input, overlays, and
-widgets at point. You can get more information about some of them, by
-clicking on mouse-sensitive areas or moving there and pressing RET.
+** A prefix argument of C-M-q in Emacs Lisp mode pretty-printifies the
+list starting after point.
-+++
-** The new command `multi-occur' is just like `occur', except it can
-search multiple buffers. There is also a new command
-`multi-occur-by-filename-regexp' which allows you to specify the
-buffers to search by their filename. Internally, Occur mode has been
-rewritten, and now uses font-lock, among other changes.
+** New features in evaluation commands
+++
-** The default values of paragraph-start and indent-line-function have
-been changed to reflect those used in Text mode rather than those used
-in Indented-Text mode.
-
----
-** New user option `query-replace-skip-read-only': when non-nil,
-`query-replace' and related functions simply ignore
-a match if part of it has a read-only property.
+*** The function `eval-defun' (C-M-x) called on defface reinitializes
+the face to the value specified in the defface expression.
+++
-** When used interactively, the commands `query-replace-regexp' and
-`replace-regexp' allow \,expr to be used in a replacement string,
-where expr is an arbitrary Lisp expression evaluated at replacement
-time. In many cases, this will be more convenient than using
-`query-replace-regexp-eval'. `\#' in a replacement string now refers
-to the count of replacements already made by the replacement command.
-All regular expression replacement commands now allow `\?' in the
-replacement string to specify a position where the replacement string
-can be edited for each replacement.
+*** Typing C-x C-e twice prints the value of the integer result
+in additional formats (octal, hexadecimal, character) specified
+by the new function `eval-expression-print-format'. The same
+function also defines the result format for `eval-expression' (M-:),
+`eval-print-last-sexp' (C-j) and some edebug evaluation functions.
+++
-** query-replace uses isearch lazy highlighting when the new user option
-`query-replace-lazy-highlight' is non-nil.
+** CC Mode changes.
----
-** The current match in query-replace is highlighted in new face
-`query-replace' which by default inherits from isearch face.
+*** Font lock support.
+CC Mode now provides font lock support for all its languages. This
+supersedes the font lock patterns that have been in the core font lock
+package for C, C++, Java and Objective-C. Like indentation, font
+locking is done in a uniform way across all languages (except the new
+AWK mode - see below). That means that the new font locking will be
+different from the old patterns in various details for most languages.
-+++
-** Emacs normally highlights mouse sensitive text whenever the mouse
-is over the text. By setting the new variable `mouse-highlight', you
-can optionally enable mouse highlighting only after you move the
-mouse, so that highlighting disappears when you press a key. You can
-also disable mouse highlighting.
+The main goal of the font locking in CC Mode is accuracy, to provide a
+dependable aid in recognizing the various constructs. Some, like
+strings and comments, are easy to recognize while others like
+declarations and types can be very tricky. CC Mode can go to great
+lengths to recognize declarations and casts correctly, especially when
+the types aren't recognized by standard patterns. This is a fairly
+demanding analysis which can be slow on older hardware, and it can
+therefore be disabled by choosing a lower decoration level with the
+variable font-lock-maximum-decoration.
-+++
-** You can now customize if selecting a region by dragging the mouse
-shall not copy the selected text to the kill-ring by setting the new
-variable mouse-drag-copy-region to nil.
+Note that the most demanding font lock level has been tuned with lazy
+fontification in mind, i.e. there should be a support mode that waits
+with the fontification until the text is actually shown
+(e.g. Just-in-time Lock mode, which is the default, or Lazy Lock
+mode). Fontifying a file with several thousand lines in one go can
+take the better part of a minute.
-+++
-** font-lock: in modes like C and Lisp where the fontification assumes that
-an open-paren in column 0 is always outside of any string or comment,
-font-lock now highlights any such open-paren-in-column-zero in bold-red
-if it is inside a string or a comment, to indicate that it can cause
-trouble with fontification and/or indentation.
+**** The (c|c++|objc|java|idl|pike)-font-lock-extra-types variables
+are now used by CC Mode to recognize identifiers that are certain to
+be types. (They are also used in cases that aren't related to font
+locking.) At the maximum decoration level, types are often recognized
+properly anyway, so these variables should be fairly restrictive and
+not contain patterns for uncertain types.
-+++
-** There's a new face `minibuffer-prompt'.
-Emacs adds this face to the list of text properties stored in the
-variable `minibuffer-prompt-properties', which is used to display the
-prompt string.
+**** Support for documentation comments.
+There is a "plugin" system to fontify documentation comments like
+Javadoc and the markup within them. It's independent of the host
+language, so it's possible to e.g. turn on Javadoc font locking in C
+buffers. See the variable c-doc-comment-style for details.
-+++
-** The new face `mode-line-inactive' is used to display the mode line
-of non-selected windows. The `mode-line' face is now used to display
-the mode line of the currently selected window.
+Currently two kinds of doc comment styles are recognized: Suns Javadoc
+and Autodoc which is used in Pike. This is by no means a complete
+list of the most common tools; if your doc comment extractor of choice
+is missing then please drop a note to bug-cc-mode@gnu.org.
-The new variable `mode-line-in-non-selected-windows' controls whether
-the `mode-line-inactive' face is used.
+**** Better handling of C++ templates.
+As a side effect of the more accurate font locking, C++ templates are
+now handled much better. The angle brackets that delimit them are
+given parenthesis syntax so that they can be navigated like other
+parens.
----
-** A menu item "Show/Hide" was added to the top-level menu "Options".
-This menu allows you to turn various display features on and off (such
-as the fringes, the tool bar, the speedbar, and the menu bar itself).
-You can also move the vertical scroll bar to either side here or turn
-it off completely. There is also a menu-item to toggle displaying of
-current date and time, current line and column number in the
-mode-line.
+This also improves indentation of templates, although there still is
+work to be done in that area. E.g. it's required that multiline
+template clauses are written in full and then refontified to be
+recognized, and the indentation of nested templates is a bit odd and
+not as configurable as it ought to be.
----
-** Speedbar has moved from the "Tools" top level menu to "Show/Hide".
+**** Improved handling of Objective-C and CORBA IDL.
+Especially the support for Objective-C and IDL has gotten an overhaul.
+The special "@" declarations in Objective-C are handled correctly.
+All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and
+handled correctly, also wrt indentation.
-+++
-** Emacs can now indicate in the mode-line the presence of new e-mail
-in a directory or in a file. See the documentation of the user option
-`display-time-mail-directory'.
+*** Support for the AWK language.
+Support for the AWK language has been introduced. The implementation is
+based around GNU AWK version 3.1, but it should work pretty well with
+any AWK. As yet, not all features of CC Mode have been adapted for AWK.
+Here is a summary:
----
-** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
+**** Indentation Engine
+The CC Mode indentation engine fully supports AWK mode.
-+++
-** You can now disable pc-selection-mode after enabling it.
-M-x pc-selection-mode behaves like a proper minor mode, and with no
-argument it toggles the mode.
+AWK mode handles code formatted in the conventional AWK fashion: `{'s
+which start actions, user-defined functions, or compound statements are
+placed on the same line as the associated construct; the matching `}'s
+are normally placed under the start of the respective pattern, function
+definition, or structured statement.
-Turning off PC-Selection mode restores the global key bindings
-that were replaced by turning on the mode.
+The predefined indentation functions haven't yet been adapted for AWK
+mode, though some of them may work serendipitously. There shouldn't be
+any problems writing custom indentation functions for AWK mode.
-+++
-** Emacs now displays a splash screen by default even if command-line
-arguments were given. The new command-line option --no-splash
-disables the splash screen; see also the variable
-`inhibit-startup-message' (which is also aliased as
-`inhibit-splash-screen').
+The command C-c C-q (c-indent-defun) hasn't yet been adapted for AWK,
+though in practice it works properly nearly all the time. Should it
+fail, explicitly set the region around the function (using C-u C-SPC:
+C-M-h probably won't work either) then do C-M-\ (indent-region).
-** Changes in support of colors on character terminals
+**** Font Locking
+There is a single level of font locking in AWK mode, rather than the
+three distinct levels the other modes have. There are several
+idiosyncrasies in AWK mode's font-locking due to the peculiarities of
+the AWK language itself.
-+++
-*** The new command-line option --color=MODE lets you specify a standard
-mode for a tty color support. It is meant to be used on character
-terminals whose capabilities are not set correctly in the terminal
-database, or with terminal emulators which support colors, but don't
-set the TERM environment variable to a name of a color-capable
-terminal. "emacs --color" uses the same color commands as GNU `ls'
-when invoked with "ls --color", so if your terminal can support colors
-in "ls --color", it will support "emacs --color" as well. See the
-user manual for the possible values of the MODE parameter.
+**** Comment Commands
+M-; (indent-for-comment) works fine. None of the other CC Mode
+comment formatting commands have yet been adapted for AWK mode.
----
-*** Emacs now supports several character terminals which provide more
-than 8 colors. For example, for `xterm', 16-color, 88-color, and
-256-color modes are supported. Emacs automatically notes at startup
-the extended number of colors, and defines the appropriate entries for
-all of these colors.
+**** Movement Commands
+Most of the movement commands work in AWK mode. The most important
+exceptions are M-a (c-beginning-of-statement) and M-e
+(c-end-of-statement) which haven't yet been adapted.
-+++
-*** Emacs now uses the full range of available colors for the default
-faces when running on a color terminal, including 16-, 88-, and
-256-color xterms. This means that when you run "emacs -nw" on an
-88-color or 256-color xterm, you will see essentially the same face
-colors as on X.
+The notion of "defun" has been augmented to include AWK pattern-action
+pairs. C-M-a (c-awk-beginning-of-defun) and C-M-e (c-awk-end-of-defun)
+recognise these pattern-action pairs, as well as user defined
+functions.
----
-*** There's a new support for colors on `rxvt' terminal emulator.
+**** Auto-newline Insertion and Clean-ups
+Auto-newline insertion hasn't yet been adapted for AWK. Some of
+the clean-ups can actually convert good AWK code into syntactically
+invalid code. These features are best disabled in AWK buffers.
-+++
-** Emacs can now be invoked in full-screen mode on a windowed display.
+*** New syntactic symbols in IDL mode.
+The top level constructs "module" and "composition" (from CIDL) are
+now handled like "namespace" in C++: They are given syntactic symbols
+module-open, module-close, inmodule, composition-open,
+composition-close, and incomposition.
-When Emacs is invoked on a window system, the new command-line options
-`--fullwidth', `--fullheight', and `--fullscreen' produce a frame
-whose width, height, or both width and height take up the entire
-screen size. (For now, this does not work with some window managers.)
+*** New functions to do hungry delete without enabling hungry delete mode.
+The functions c-hungry-backspace and c-hungry-delete-forward can be
+bound to keys to get this feature without toggling a mode.
+Contributed by Kevin Ryde.
----
-** Emacs now tries to set up buffer coding systems for HTML/XML files
-automatically.
+*** Better control over require-final-newline. The variable that
+controls how to handle a final newline when the buffer is saved,
+require-final-newline, is now customizable on a per-mode basis through
+c-require-final-newline. That is a list of modes, and only those
+modes set require-final-newline. By default that's C, C++ and
+Objective-C.
-+++
-** The new command `comint-insert-previous-argument' in comint-derived
-modes (shell-mode etc) inserts arguments from previous command lines,
-like bash's `ESC .' binding. It is bound by default to `C-c .', but
-otherwise behaves quite similarly to the bash version.
+The specified modes set require-final-newline based on
+mode-require-final-newline, as usual.
-+++
-** Changes in C-h bindings:
+*** Format change for syntactic context elements.
+The elements in the syntactic context returned by c-guess-basic-syntax
+and stored in c-syntactic-context has been changed somewhat to allow
+attaching more information. They are now lists instead of single cons
+cells. E.g. a line that previously had the syntactic analysis
-C-h e displays the *Messages* buffer.
+((inclass . 11) (topmost-intro . 13))
-C-h followed by a control character is used for displaying files
- that do not change:
+is now analysed as
-C-h C-f displays the FAQ.
-C-h C-e displays the PROBLEMS file.
+((inclass 11) (topmost-intro 13))
-The info-search bindings on C-h C-f, C-h C-k and C-h C-i
-have been moved to C-h F, C-h K and C-h S.
+In some cases there are more than one position given for a syntactic
+symbol.
-C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands.
+This change might affect code that call c-guess-basic-syntax directly,
+and custom lineup functions if they use c-syntactic-context. However,
+the argument given to lineup functions is still a single cons cell
+with nil or an integer in the cdr.
-- C-h c and C-h k report the actual command (after possible remapping)
- run by the key sequence.
+*** API changes for derived modes.
+There have been extensive changes "under the hood" which can affect
+derived mode writers. Some of these changes are likely to cause
+incompatibilities with existing derived modes, but on the other hand
+care has now been taken to make it possible to extend and modify CC
+Mode with less risk of such problems in the future.
-- C-h w and C-h f on a command which has been remapped now report the
- command it is remapped to, and the keys which can be used to run
- that command.
+**** New language variable system.
+See the comment blurb near the top of cc-langs.el.
-For example, if C-k is bound to kill-line, and kill-line is remapped
-to new-kill-line, these commands now report:
+**** New initialization functions.
+The initialization procedure has been split up into more functions to
+give better control: c-basic-common-init, c-font-lock-init, and
+c-init-language-vars.
-- C-h c and C-h k C-k reports:
- C-k runs the command new-kill-line
+*** Changes in analysis of nested syntactic constructs.
+The syntactic analysis engine has better handling of cases where
+several syntactic constructs appear nested on the same line. They are
+now handled as if each construct started on a line of its own.
-- C-h w and C-h f kill-line reports:
- kill-line is remapped to new-kill-line which is on C-k, <deleteline>
+This means that CC Mode now indents some cases differently, and
+although it's more consistent there might be cases where the old way
+gave results that's more to one's liking. So if you find a situation
+where you think that the indentation has become worse, please report
+it to bug-cc-mode@gnu.org.
-- C-h w and C-h f new-kill-line reports:
- new-kill-line is on C-k
+**** New syntactic symbol substatement-label.
+This symbol is used when a label is inserted between a statement and
+its substatement. E.g:
+
+ if (x)
+ x_is_true:
+ do_stuff();
+
+*** Better handling of multiline macros.
+
+**** Syntactic indentation inside macros.
+The contents of multiline #define's are now analyzed and indented
+syntactically just like other code. This can be disabled by the new
+variable c-syntactic-indentation-in-macros. A new syntactic symbol
+cpp-define-intro has been added to control the initial indentation
+inside #define's.
+
+**** New lineup function c-lineup-cpp-define.
+Now used by default to line up macro continuation lines. The behavior
+of this function closely mimics the indentation one gets if the macro
+is indented while the line continuation backslashes are temporarily
+removed. If syntactic indentation in macros is turned off, it works
+much line c-lineup-dont-change, which was used earlier, but handles
+empty lines within the macro better.
+
+**** Automatically inserted newlines continues the macro if used within one.
+This applies to the newlines inserted by the auto-newline mode, and to
+c-context-line-break and c-context-open-line.
+
+**** Better alignment of line continuation backslashes.
+c-backslash-region tries to adapt to surrounding backslashes. New
+variable c-backslash-max-column which put a limit on how far out
+backslashes can be moved.
+
+**** Automatic alignment of line continuation backslashes.
+This is controlled by the new variable c-auto-align-backslashes. It
+affects c-context-line-break, c-context-open-line and newlines
+inserted in auto-newline mode.
+
+**** Line indentation works better inside macros.
+Regardless whether syntactic indentation and syntactic indentation
+inside macros are enabled or not, line indentation now ignores the
+line continuation backslashes. This is most noticeable when syntactic
+indentation is turned off and there are empty lines (save for the
+backslash) in the macro.
+
+*** indent-for-comment is more customizable.
+The behavior of M-; (indent-for-comment) is now configurable through
+the variable c-indent-comment-alist. The indentation behavior based
+on the preceding code on the line, e.g. to get two spaces after #else
+and #endif but indentation to comment-column in most other cases
+(something which was hardcoded earlier).
+
+*** New function c-context-open-line.
+It's the open-line equivalent of c-context-line-break.
+
+*** New lineup functions
+
+**** c-lineup-string-cont
+This lineup function lines up a continued string under the one it
+continues. E.g:
+
+result = prefix + "A message "
+ "string."; <- c-lineup-string-cont
+
+**** c-lineup-cascaded-calls
+Lines up series of calls separated by "->" or ".".
+
+**** c-lineup-knr-region-comment
+Gives (what most people think is) better indentation of comments in
+the "K&R region" between the function header and its body.
+
+**** c-lineup-gcc-asm-reg
+Provides better indentation inside asm blocks. Contributed by Kevin
+Ryde.
+
+**** c-lineup-argcont
+Lines up continued function arguments after the preceding comma.
+Contributed by Kevin Ryde.
+
+*** Better caching of the syntactic context.
+CC Mode caches the positions of the opening parentheses (of any kind)
+of the lists surrounding the point. Those positions are used in many
+places as anchor points for various searches. The cache is now
+improved so that it can be reused to a large extent when the point is
+moved. The less it moves, the less needs to be recalculated.
+
+The effect is that CC Mode should be fast most of the time even when
+opening parens are hung (i.e. aren't in column zero). It's typically
+only the first time after the point is moved far down in a complex
+file that it'll take noticeable time to find out the syntactic
+context.
+
+*** Statements are recognized in a more robust way.
+Statements are recognized most of the time even when they occur in an
+"invalid" context, e.g. in a function argument. In practice that can
+happen when macros are involved.
+
+*** Improved the way c-indent-exp chooses the block to indent.
+It now indents the block for the closest sexp following the point
+whose closing paren ends on a different line. This means that the
+point doesn't have to be immediately before the block to indent.
+Also, only the block and the closing line is indented; the current
+line is left untouched.
+
+*** Added toggle for syntactic indentation.
+The function c-toggle-syntactic-indentation can be used to toggle
+syntactic indentation.
+
+---
+** Perl mode has a new variable `perl-indent-continued-arguments'.
+
+---
+** Fortran mode does more font-locking by default. Use level 3
+highlighting for the old default.
+++
-** Vertical scrolling is now possible within incremental search.
-To enable this feature, customize the new user option
-`isearch-allow-scroll'. User written commands which satisfy stringent
-constraints can be marked as "scrolling commands". See the Emacs manual
-for details.
+** Fortran mode has a new variable `fortran-directive-re'.
+Adapt this to match the format of any compiler directives you use.
+Lines that match are never indented, and are given distinctive font-locking.
+++
-** C-w in incremental search now grabs either a character or a word,
-making the decision in a heuristic way. This new job is done by the
-command `isearch-yank-word-or-char'. To restore the old behavior,
-bind C-w to `isearch-yank-word' in `isearch-mode-map'.
+** F90 mode and Fortran mode have new navigation commands
+`f90-end-of-block', `f90-beginning-of-block', `f90-next-block',
+`f90-previous-block', `fortran-end-of-block',
+`fortran-beginning-of-block'.
+
+---
+** F90 mode and Fortran mode have support for hs-minor-mode (hideshow).
+It cannot deal with every code format, but ought to handle a sizeable
+majority.
+
+---
+** The new function `f90-backslash-not-special' can be used to change
+the syntax of backslashes in F90 buffers.
+
+---
+** Prolog mode has a new variable `prolog-font-lock-keywords'
+to support use of font-lock.
+
+---
+** Emacs now tries to set up buffer coding systems for HTML/XML files
+automatically.
+++
-** C-y in incremental search now grabs the next line if point is already
-at the end of a line.
+** SGML mode has indentation and supports XML syntax.
+The new variable `sgml-xml-mode' tells SGML mode to use XML syntax.
+When this option is enabled, SGML tags are inserted in XML style,
+i.e., there is always a closing tag.
+By default, its setting is inferred on a buffer-by-buffer basis
+from the file name or buffer contents.
+++
-** C-M-w deletes and C-M-y grabs a character in isearch mode.
-Another method to grab a character is to enter the minibuffer by `M-e'
-and to type `C-f' at the end of the search string in the minibuffer.
+** `xml-mode' is now an alias for `sgml-mode', which has XML support.
+
+** TeX modes:
+++
-** M-% typed in isearch mode invokes `query-replace' or
-`query-replace-regexp' (depending on search mode) with the current
-search string used as the string to replace.
+*** C-c C-c prompts for a command to run, and tries to offer a good default.
+++
-** Isearch no longer adds `isearch-resume' commands to the command
-history by default. To enable this feature, customize the new
-user option `isearch-resume-in-command-history'.
+*** The user option `tex-start-options-string' has been replaced
+by two new user options: `tex-start-options', which should hold
+command-line options to feed to TeX, and `tex-start-commands' which should hold
+TeX commands to use at startup.
+
+---
+*** verbatim environments are now highlighted in courier by font-lock
+and super/sub-scripts are made into super/sub-scripts.
+++
-** New user option `history-delete-duplicates'.
-If set to t when adding a new history element, all previous identical
-elements are deleted.
+*** New major mode doctex-mode for *.dtx files.
+
+** BibTeX mode:
+*** The new command bibtex-url browses a URL for the BibTeX entry at
+point (bound to C-c C-l and mouse-2, RET on clickable fields).
+
+*** The new command bibtex-entry-update (bound to C-c C-u) updates
+an existing BibTeX entry.
+
+*** New `bibtex-entry-format' option `required-fields', enabled by default.
+
+*** bibtex-maintain-sorted-entries can take values `plain',
+`crossref', and `entry-class' which control the sorting scheme used
+for BibTeX entries. `bibtex-sort-entry-class' controls the sorting
+scheme `entry-class'. TAB completion for reference keys and
+automatic detection of duplicates does not require anymore that
+bibtex-maintain-sorted-entries is non-nil.
+
+*** If the new variable bibtex-parse-keys-fast is non-nil,
+use fast but simplified algorithm for parsing BibTeX keys.
+
+*** If the new variable bibtex-autoadd-commas is non-nil,
+automatically add missing commas at end of BibTeX fields.
+
+*** The new variable bibtex-autofill-types contains a list of entry
+types for which fields are filled automatically (if possible).
+
+*** The new command bibtex-complete completes word fragment before
+point according to context (bound to M-tab).
+
+*** The new commands bibtex-find-entry and bibtex-find-crossref
+locate entries and crossref'd entries (bound to C-c C-s and C-c C-x).
+Crossref fields are clickable (bound to mouse-2, RET).
-+++
-** Yanking text now discards certain text properties that can
-be inconvenient when you did not expect them. The variable
-`yank-excluded-properties' specifies which ones. Insertion
-of register contents and rectangles also discards these properties.
+*** In BibTeX mode the command fill-paragraph (bound to M-q) fills
+individual fields of a BibTeX entry.
-+++
-** Occur, Info, and comint-derived modes now support using
-M-x font-lock-mode to toggle fontification. The variable
-`Info-fontify' is no longer applicable; to disable fontification,
-remove `turn-on-font-lock' from `Info-mode-hook'.
+*** The new variables bibtex-files and bibtex-file-path define a set
+of BibTeX files that are searched for entry keys.
-+++
-** M-x grep now tries to avoid appending `/dev/null' to the command line
-by using GNU grep `-H' option instead. M-x grep automatically
-detects whether this is possible or not the first time it is invoked.
-When `-H' is used, the grep command line supplied by the user is passed
-unchanged to the system to execute, which allows more complicated
-command lines to be used than was possible before.
+*** The new command bibtex-validate-globally checks for duplicate keys
+in multiple BibTeX files.
----
-** The face-customization widget has been reworked to be less confusing.
-In particular, when you enable a face attribute using the corresponding
-check-box, there's no longer a redundant `*' option in value selection
-for that attribute; the values you can choose are only those which make
-sense for the attribute. When an attribute is de-selected by unchecking
-its check-box, then the (now ignored, but still present temporarily in
-case you re-select the attribute) value is hidden.
+*** The new command bibtex-copy-summary-as-kill pushes summary
+of BibTeX entry to kill ring (bound to C-c C-t).
+++
-** When you set or reset a variable's value in a Customize buffer,
-the previous value becomes the "backup value" of the variable.
-You can go back to that backup value by selecting "Use Backup Value"
-under the "[State]" button.
-
----
-** The new customization type `float' specifies numbers with floating
-point (no integers are allowed).
+** In Enriched mode, `set-left-margin' and `set-right-margin' are now
+by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
+and `C-c C-r'.
+++
** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program
counter to the specified source line (the one where point is).
+---
+** GUD mode has its own tool bar for controlling execution of the inferior
+and other common debugger commands.
+
---
** GUD mode improvements for jdb:
*** Do not allow debugger output history variable to grow without bounds.
+++
-** hide-ifdef-mode now uses overlays rather than selective-display
-to hide its text. This should be mostly transparent but slightly
-changes the behavior of motion commands like C-e and C-p.
-
-+++
-** Unquoted `$' in file names do not signal an error any more when
-the corresponding environment variable does not exist.
-Instead, the `$ENVVAR' text is left as is, so that `$$' quoting
-is only rarely needed.
-
----
-** JIT-lock changes
-*** jit-lock can now be delayed with `jit-lock-defer-time'.
-
-If this variable is non-nil, its value should be the amount of Emacs
-idle time in seconds to wait before starting fontification. For
-example, if you set `jit-lock-defer-time' to 0.25, fontification will
-only happen after 0.25s of idle time.
-
-*** contextual refontification is now separate from stealth fontification.
-
-jit-lock-defer-contextually is renamed jit-lock-contextually and
-jit-lock-context-time determines the delay after which contextual
-refontification takes place.
-
-+++
-** Marking commands extend the region when invoked multiple times. If
-you hit M-C-SPC (mark-sexp), M-@ (mark-word), M-h (mark-paragraph), or
-C-M-h (mark-defun) repeatedly, the marked region extends each time, so
-you can mark the next two sexps with M-C-SPC M-C-SPC, for example.
-This feature also works for mark-end-of-sentence, if you bind that to
-a key. It also extends the region when the mark is active in Transient
-Mark mode, regardless of the last command. To start a new region with
-one of marking commands in Transient Mark mode, you can deactivate the
-active region with C-g, or set the new mark with C-SPC.
-
-+++
-** Some commands do something special in Transient Mark mode when the
-mark is active--for instance, they limit their operation to the
-region. Even if you don't normally use Transient Mark mode, you might
-want to get this behavior from a particular command. There are two
-ways you can enable Transient Mark mode and activate the mark, for one
-command only.
-
-One method is to type C-SPC C-SPC; this enables Transient Mark mode
-and sets the mark at point. The other method is to type C-u C-x C-x.
-This enables Transient Mark mode temporarily but does not alter the
-mark or the region.
-
-After these commands, Transient Mark mode remains enabled until you
-deactivate the mark. That typically happens when you type a command
-that alters the buffer, but you can also deactivate the mark by typing
-C-g.
-
-+++
-** A prefix argument is no longer required to repeat a jump to a
-previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the
-mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump.
-
-+++
-** Movement commands `beginning-of-buffer', `end-of-buffer',
-`beginning-of-defun', `end-of-defun' do not set the mark if the mark
-is already active in Transient Mark mode.
-
-+++
-** In the *Occur* buffer, `o' switches to it in another window, and
-C-o displays the current line's occurrence in another window without
-switching to it.
-
-+++
-** When you specify a frame size with --geometry, the size applies to
-all frames you create. A position specified with --geometry only
-affects the initial frame.
-
-+++
-** M-h (mark-paragraph) now accepts a prefix arg.
-With positive arg, M-h marks the current and the following paragraphs;
-if the arg is negative, it marks the current and the preceding
-paragraphs.
-
-+++
-** The variables dired-free-space-program and dired-free-space-args
-have been renamed to directory-free-space-program and
-directory-free-space-args, and they now apply whenever Emacs puts a
-directory listing into a buffer.
-
----
-** mouse-wheels can now scroll a specific fraction of the window
-(rather than a fixed number of lines) and the scrolling is `progressive'.
-
----
-** Unexpected yanking of text due to accidental clicking on the mouse
-wheel button (typically mouse-2) during wheel scrolling is now avoided.
-This behavior can be customized via the mouse-wheel-click-event and
-mouse-wheel-inhibit-click-time variables.
-
-+++
-** The keyboard-coding-system is now automatically set based on your
-current locale settings if you are not using a window system. This
-may mean that the META key doesn't work but generates non-ASCII
-characters instead, depending on how the terminal (or terminal
-emulator) works. Use `set-keyboard-coding-system' (or customize
-keyboard-coding-system) if you prefer META to work (the old default)
-or if the locale doesn't describe the character set actually generated
-by the keyboard. See Info node `Single-Byte Character Support'.
+** You can now use Auto Revert mode to `tail' a file.
+If point is at the end of a file buffer before reverting, Auto Revert
+mode keeps it at the end after reverting. Similarly if point is
+displayed at the end of a file buffer in any window, it stays at
+the end of the buffer in that window. This allows to tail a file:
+just put point at the end of the buffer and it stays there. This
+rule applies to file buffers. For non-file buffers, the behavior may
+be mode dependent.
-+++
-** Emacs now reads the standard abbrevs file ~/.abbrev_defs
-automatically at startup, if it exists. When Emacs offers to save
-modified buffers, it saves the abbrevs too if they have changed. It
-can do this either silently or asking for confirmation first,
-according to the value of `save-abbrevs'.
+If you are sure that the file will only change by growing at the end,
+then you can tail the file more efficiently by using the new minor
+mode Auto Revert Tail mode. The function `auto-revert-tail-mode'
+toggles this mode.
+++
-** Display of hollow cursors now obeys the buffer-local value (if any)
-of `cursor-in-non-selected-windows' in the buffer that the cursor
-appears in.
+** Auto Revert mode is now more careful to avoid excessive reverts and
+other potential problems when deciding which non-file buffers to
+revert. This matters especially if Global Auto Revert mode is enabled
+and `global-auto-revert-non-file-buffers' is non-nil. Auto Revert
+mode only reverts a non-file buffer if the buffer has a non-nil
+`revert-buffer-function' and a non-nil `buffer-stale-function', which
+decides whether the buffer should be reverted. Currently, this means
+that auto reverting works for Dired buffers (although this may not
+work properly on all operating systems) and for the Buffer Menu.
+++
-** The variable `cursor-in-non-selected-windows' can now be set to any
-of the recognized cursor types.
+** If the new user option `auto-revert-check-vc-info' is non-nil, Auto
+Revert mode reliably updates version control info (such as the version
+control number in the mode line), in all version controlled buffers in
+which it is active. If the option is nil, the default, then this info
+only gets updated whenever the buffer gets reverted.
---
-** The variable `auto-save-file-name-transforms' now has a third element that
-controls whether or not the function `make-auto-save-file-name' will
-attempt to construct a unique auto-save name (e.g. for remote files).
-
-+++
-** There is a new calendar package, icalendar.el, that can be used to
-convert Emacs diary entries to/from the iCalendar format.
-
-+++
-** Diary sexp entries can have custom marking in the calendar.
-Diary sexp functions which only apply to certain days (such as
-`diary-block' or `diary-cyclic') now take an optional parameter MARK,
-which is the name of a face or a single-character string indicating
-how to highlight the day in the calendar display. Specifying a
-single-character string as @var{mark} places the character next to the
-day in the calendar. Specifying a face highlights the day with that
-face. This lets you have different colors or markings for vacations,
-appointments, paydays or anything else using a sexp.
-
-+++
-** The new function `calendar-goto-day-of-year' (g D) prompts for a
-year and day number, and moves to that date. Negative day numbers
-count backward from the end of the year.
+** recentf changes.
-+++
-** The new Calendar function `calendar-goto-iso-week' (g w)
-prompts for a year and a week number, and moves to the first
-day of that ISO week.
+The recent file list is now automatically cleanup when recentf mode is
+enabled. The new option `recentf-auto-cleanup' controls when to do
+automatic cleanup.
----
-** The new variable `calendar-minimum-window-height' affects the
-window generated by the function `generate-calendar-window'.
+The `recentf-keep' option replaces `recentf-keep-non-readable-files-p'
+and provides a more general mechanism to customize which file names to
+keep in the recent list.
----
-** The functions `holiday-easter-etc' and `holiday-advent' now take
-optional arguments, in order to only report on the specified holiday
-rather than all. This makes customization of variables such as
-`christian-holidays' simpler.
+With the more advanced option: `recentf-filename-handler', you can
+specify a function that transforms filenames handled by recentf. For
+example, if set to `file-truename', the same file will not be in the
+recent list with different symbolic links.
----
-** The function `simple-diary-display' now by default sets a header line.
-This can be controlled through the variables `diary-header-line-flag'
-and `diary-header-line-format'.
+To follow naming convention, `recentf-menu-append-commands-flag'
+replaces the misnamed option `recentf-menu-append-commands-p'. The
+old name remains available as alias, but has been marked obsolete.
+++
-** The procedure for activating appointment reminders has changed: use
-the new function `appt-activate'. The new variable
-`appt-display-format' controls how reminders are displayed, replacing
-appt-issue-message, appt-visible, and appt-msg-window.
+** Desktop package
+++
-** The new functions `diary-from-outlook', `diary-from-outlook-gnus',
-and `diary-from-outlook-rmail' can be used to import diary entries
-from Outlook-format appointments in mail messages. The variable
-`diary-outlook-formats' can be customized to recognize additional
-formats.
-
+*** Desktop saving is now a minor mode, desktop-save-mode. Variable
+desktop-enable is obsolete. Customize desktop-save-mode to enable desktop
+saving.
-** VC Changes
+---
+*** Buffers are saved in the desktop file in the same order as that in the
+buffer list.
+++
-*** The key C-x C-q no longer checks files in or out, it only changes
-the read-only state of the buffer (toggle-read-only). We made this
-change because we held a poll and found that many users were unhappy
-with the previous behavior. If you do prefer this behavior, you
-can bind `vc-toggle-read-only' to C-x C-q in your .emacs:
+*** The desktop package can be customized to restore only some buffers immediately,
+remaining buffers are restored lazily (when Emacs is idle).
- (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
++++
+*** New commands:
+ - desktop-revert reverts to the last loaded desktop.
+ - desktop-change-dir kills current desktop and loads a new.
+ - desktop-save-in-desktop-dir saves desktop in the directory from which
+ it was loaded.
+ - desktop-lazy-complete runs the desktop load to completion.
+ - desktop-lazy-abort aborts lazy loading of the desktop.
-The function `vc-toggle-read-only' will continue to exist.
+---
+*** New customizable variables:
+ - desktop-save. Determins whether the desktop should be saved when it is
+ killed.
+ - desktop-file-name-format. Format in which desktop file names should be saved.
+ - desktop-path. List of directories in which to lookup the desktop file.
+ - desktop-locals-to-save. List of local variables to save.
+ - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear.
+ - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear'
+ should not delete.
+ - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are
+ restored lazily (when Emacs is idle).
+ - desktop-lazy-verbose. Verbose reporting of lazily created buffers.
+ - desktop-lazy-idle-delay. Idle delay before starting to create buffers.
+++
-*** There is a new user option `vc-cvs-global-switches' that allows
-you to specify switches that are passed to any CVS command invoked
-by VC. These switches are used as "global options" for CVS, which
-means they are inserted before the command name. For example, this
-allows you to specify a compression level using the "-z#" option for
-CVS.
+*** New command line option --no-desktop
-+++
-*** New backends for Subversion and Meta-CVS.
+---
+*** New hooks:
+ - desktop-after-read-hook run after a desktop is loaded.
+ - desktop-no-desktop-file-hook run when no desktop file is found.
+
+---
+** The saveplace.el package now filters out unreadable files.
+When you exit Emacs, the saved positions in visited files no longer
+include files that aren't readable, e.g. files that don't exist.
+Customize the new option `save-place-forget-unreadable-files' to nil
+to get the old behavior. The new options `save-place-save-skipped'
+and `save-place-skip-check-regexp' allow further fine-tuning of this
+feature.
** EDiff changes.
reads from standard input and marks the produced tags as belonging to
the file FILE.
-+++
-** CC Mode changes.
-
-*** Font lock support.
-CC Mode now provides font lock support for all its languages. This
-supersedes the font lock patterns that have been in the core font lock
-package for C, C++, Java and Objective-C. Like indentation, font
-locking is done in a uniform way across all languages (except the new
-AWK mode - see below). That means that the new font locking will be
-different from the old patterns in various details for most languages.
-
-The main goal of the font locking in CC Mode is accuracy, to provide a
-dependable aid in recognizing the various constructs. Some, like
-strings and comments, are easy to recognize while others like
-declarations and types can be very tricky. CC Mode can go to great
-lengths to recognize declarations and casts correctly, especially when
-the types aren't recognized by standard patterns. This is a fairly
-demanding analysis which can be slow on older hardware, and it can
-therefore be disabled by choosing a lower decoration level with the
-variable font-lock-maximum-decoration.
-
-Note that the most demanding font lock level has been tuned with lazy
-fontification in mind, i.e. there should be a support mode that waits
-with the fontification until the text is actually shown
-(e.g. Just-in-time Lock mode, which is the default, or Lazy Lock
-mode). Fontifying a file with several thousand lines in one go can
-take the better part of a minute.
-
-**** The (c|c++|objc|java|idl|pike)-font-lock-extra-types variables
-are now used by CC Mode to recognize identifiers that are certain to
-be types. (They are also used in cases that aren't related to font
-locking.) At the maximum decoration level, types are often recognized
-properly anyway, so these variables should be fairly restrictive and
-not contain patterns for uncertain types.
-
-**** Support for documentation comments.
-There is a "plugin" system to fontify documentation comments like
-Javadoc and the markup within them. It's independent of the host
-language, so it's possible to e.g. turn on Javadoc font locking in C
-buffers. See the variable c-doc-comment-style for details.
-
-Currently two kinds of doc comment styles are recognized: Suns Javadoc
-and Autodoc which is used in Pike. This is by no means a complete
-list of the most common tools; if your doc comment extractor of choice
-is missing then please drop a note to bug-cc-mode@gnu.org.
-
-**** Better handling of C++ templates.
-As a side effect of the more accurate font locking, C++ templates are
-now handled much better. The angle brackets that delimit them are
-given parenthesis syntax so that they can be navigated like other
-parens.
-
-This also improves indentation of templates, although there still is
-work to be done in that area. E.g. it's required that multiline
-template clauses are written in full and then refontified to be
-recognized, and the indentation of nested templates is a bit odd and
-not as configurable as it ought to be.
-
-**** Improved handling of Objective-C and CORBA IDL.
-Especially the support for Objective-C and IDL has gotten an overhaul.
-The special "@" declarations in Objective-C are handled correctly.
-All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and
-handled correctly, also wrt indentation.
-
-*** Support for the AWK language.
-Support for the AWK language has been introduced. The implementation is
-based around GNU AWK version 3.1, but it should work pretty well with
-any AWK. As yet, not all features of CC Mode have been adapted for AWK.
-Here is a summary:
-
-**** Indentation Engine
-The CC Mode indentation engine fully supports AWK mode.
-
-AWK mode handles code formatted in the conventional AWK fashion: `{'s
-which start actions, user-defined functions, or compound statements are
-placed on the same line as the associated construct; the matching `}'s
-are normally placed under the start of the respective pattern, function
-definition, or structured statement.
-
-The predefined indentation functions haven't yet been adapted for AWK
-mode, though some of them may work serendipitously. There shouldn't be
-any problems writing custom indentation functions for AWK mode.
-
-The command C-c C-q (c-indent-defun) hasn't yet been adapted for AWK,
-though in practice it works properly nearly all the time. Should it
-fail, explicitly set the region around the function (using C-u C-SPC:
-C-M-h probably won't work either) then do C-M-\ (indent-region).
-
-**** Font Locking
-There is a single level of font locking in AWK mode, rather than the
-three distinct levels the other modes have. There are several
-idiosyncrasies in AWK mode's font-locking due to the peculiarities of
-the AWK language itself.
-
-**** Comment Commands
-M-; (indent-for-comment) works fine. None of the other CC Mode
-comment formatting commands have yet been adapted for AWK mode.
-
-**** Movement Commands
-Most of the movement commands work in AWK mode. The most important
-exceptions are M-a (c-beginning-of-statement) and M-e
-(c-end-of-statement) which haven't yet been adapted.
-
-The notion of "defun" has been augmented to include AWK pattern-action
-pairs. C-M-a (c-awk-beginning-of-defun) and C-M-e (c-awk-end-of-defun)
-recognise these pattern-action pairs, as well as user defined
-functions.
-
-**** Auto-newline Insertion and Clean-ups
-Auto-newline insertion hasn't yet been adapted for AWK. Some of
-the clean-ups can actually convert good AWK code into syntactically
-invalid code. These features are best disabled in AWK buffers.
-
-*** New syntactic symbols in IDL mode.
-The top level constructs "module" and "composition" (from CIDL) are
-now handled like "namespace" in C++: They are given syntactic symbols
-module-open, module-close, inmodule, composition-open,
-composition-close, and incomposition.
-
-*** New functions to do hungry delete without enabling hungry delete mode.
-The functions c-hungry-backspace and c-hungry-delete-forward can be
-bound to keys to get this feature without toggling a mode.
-Contributed by Kevin Ryde.
-
-*** Better control over require-final-newline. The variable that
-controls how to handle a final newline when the buffer is saved,
-require-final-newline, is now customizable on a per-mode basis through
-c-require-final-newline. That is a list of modes, and only those
-modes set require-final-newline. By default that's C, C++ and
-Objective-C.
-
-The specified modes set require-final-newline based on
-mode-require-final-newline, as usual.
-
-*** Format change for syntactic context elements.
-The elements in the syntactic context returned by c-guess-basic-syntax
-and stored in c-syntactic-context has been changed somewhat to allow
-attaching more information. They are now lists instead of single cons
-cells. E.g. a line that previously had the syntactic analysis
-
-((inclass . 11) (topmost-intro . 13))
-
-is now analysed as
-
-((inclass 11) (topmost-intro 13))
-
-In some cases there are more than one position given for a syntactic
-symbol.
-
-This change might affect code that call c-guess-basic-syntax directly,
-and custom lineup functions if they use c-syntactic-context. However,
-the argument given to lineup functions is still a single cons cell
-with nil or an integer in the cdr.
-
-*** API changes for derived modes.
-There have been extensive changes "under the hood" which can affect
-derived mode writers. Some of these changes are likely to cause
-incompatibilities with existing derived modes, but on the other hand
-care has now been taken to make it possible to extend and modify CC
-Mode with less risk of such problems in the future.
-
-**** New language variable system.
-See the comment blurb near the top of cc-langs.el.
-
-**** New initialization functions.
-The initialization procedure has been split up into more functions to
-give better control: c-basic-common-init, c-font-lock-init, and
-c-init-language-vars.
-
-*** Changes in analysis of nested syntactic constructs.
-The syntactic analysis engine has better handling of cases where
-several syntactic constructs appear nested on the same line. They are
-now handled as if each construct started on a line of its own.
-
-This means that CC Mode now indents some cases differently, and
-although it's more consistent there might be cases where the old way
-gave results that's more to one's liking. So if you find a situation
-where you think that the indentation has become worse, please report
-it to bug-cc-mode@gnu.org.
-
-**** New syntactic symbol substatement-label.
-This symbol is used when a label is inserted between a statement and
-its substatement. E.g:
-
- if (x)
- x_is_true:
- do_stuff();
-
-*** Better handling of multiline macros.
+** VC Changes
-**** Syntactic indentation inside macros.
-The contents of multiline #define's are now analyzed and indented
-syntactically just like other code. This can be disabled by the new
-variable c-syntactic-indentation-in-macros. A new syntactic symbol
-cpp-define-intro has been added to control the initial indentation
-inside #define's.
++++
+*** The key C-x C-q no longer checks files in or out, it only changes
+the read-only state of the buffer (toggle-read-only). We made this
+change because we held a poll and found that many users were unhappy
+with the previous behavior. If you do prefer this behavior, you
+can bind `vc-toggle-read-only' to C-x C-q in your .emacs:
-**** New lineup function c-lineup-cpp-define.
-Now used by default to line up macro continuation lines. The behavior
-of this function closely mimics the indentation one gets if the macro
-is indented while the line continuation backslashes are temporarily
-removed. If syntactic indentation in macros is turned off, it works
-much line c-lineup-dont-change, which was used earlier, but handles
-empty lines within the macro better.
+ (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
-**** Automatically inserted newlines continues the macro if used within one.
-This applies to the newlines inserted by the auto-newline mode, and to
-c-context-line-break and c-context-open-line.
+The function `vc-toggle-read-only' will continue to exist.
-**** Better alignment of line continuation backslashes.
-c-backslash-region tries to adapt to surrounding backslashes. New
-variable c-backslash-max-column which put a limit on how far out
-backslashes can be moved.
++++
+*** There is a new user option `vc-cvs-global-switches' that allows
+you to specify switches that are passed to any CVS command invoked
+by VC. These switches are used as "global options" for CVS, which
+means they are inserted before the command name. For example, this
+allows you to specify a compression level using the "-z#" option for
+CVS.
-**** Automatic alignment of line continuation backslashes.
-This is controlled by the new variable c-auto-align-backslashes. It
-affects c-context-line-break, c-context-open-line and newlines
-inserted in auto-newline mode.
++++
+*** New backends for Subversion and Meta-CVS.
-**** Line indentation works better inside macros.
-Regardless whether syntactic indentation and syntactic indentation
-inside macros are enabled or not, line indentation now ignores the
-line continuation backslashes. This is most noticeable when syntactic
-indentation is turned off and there are empty lines (save for the
-backslash) in the macro.
++++
+** vc-annotate-mode enhancements
-*** indent-for-comment is more customizable.
-The behavior of M-; (indent-for-comment) is now configurable through
-the variable c-indent-comment-alist. The indentation behavior based
-on the preceding code on the line, e.g. to get two spaces after #else
-and #endif but indentation to comment-column in most other cases
-(something which was hardcoded earlier).
+In vc-annotate mode, you can now use the following key bindings for
+enhanced functionality to browse the annotations of past revisions, or
+to view diffs or log entries directly from vc-annotate-mode:
-*** New function c-context-open-line.
-It's the open-line equivalent of c-context-line-break.
+ P: annotates the previous revision
+ N: annotates the next revision
+ J: annotates the revision at line
+ A: annotates the revision previous to line
+ D: shows the diff of the revision at line with its previous revision
+ L: shows the log of the revision at line
+ W: annotates the workfile (most up to date) version
-*** New lineup functions
++++
+** In pcl-cvs mode, there is a new `d y' command to view the diffs
+between the local version of the file and yesterday's head revision
+in the repository.
-**** c-lineup-string-cont
-This lineup function lines up a continued string under the one it
-continues. E.g:
++++
+** In pcl-cvs mode, there is a new `d r' command to view the changes
+anyone has committed to the repository since you last executed
+"checkout", "update" or "commit". That means using cvs diff options
+-rBASE -rHEAD.
-result = prefix + "A message "
- "string."; <- c-lineup-string-cont
++++
+** There is a new user option `mail-default-directory' that allows you
+to specify the value of `default-directory' for mail buffers. This
+directory is used for auto-save files of mail buffers. It defaults to
+"~/".
-**** c-lineup-cascaded-calls
-Lines up series of calls separated by "->" or ".".
++++
+** Emacs can now indicate in the mode-line the presence of new e-mail
+in a directory or in a file. See the documentation of the user option
+`display-time-mail-directory'.
-**** c-lineup-knr-region-comment
-Gives (what most people think is) better indentation of comments in
-the "K&R region" between the function header and its body.
+---
+** PO translation files are decoded according to their MIME headers
+when Emacs visits them.
-**** c-lineup-gcc-asm-reg
-Provides better indentation inside asm blocks. Contributed by Kevin
-Ryde.
+** Gnus package
-**** c-lineup-argcont
-Lines up continued function arguments after the preceding comma.
-Contributed by Kevin Ryde.
+---
+*** Gnus now includes Sieve and PGG
+Sieve is a library for managing Sieve scripts. PGG is a library to handle
+PGP/MIME.
-*** Better caching of the syntactic context.
-CC Mode caches the positions of the opening parentheses (of any kind)
-of the lists surrounding the point. Those positions are used in many
-places as anchor points for various searches. The cache is now
-improved so that it can be reused to a large extent when the point is
-moved. The less it moves, the less needs to be recalculated.
+---
+*** There are many news features, bug fixes and improvements.
+See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details.
-The effect is that CC Mode should be fast most of the time even when
-opening parens are hung (i.e. aren't in column zero). It's typically
-only the first time after the point is moved far down in a complex
-file that it'll take noticeable time to find out the syntactic
-context.
+---
+** Rmail now displays 5-digit message ids in its summary buffer.
-*** Statements are recognized in a more robust way.
-Statements are recognized most of the time even when they occur in an
-"invalid" context, e.g. in a function argument. In practice that can
-happen when macros are involved.
++++
+** Support for `movemail' from GNU mailutils was added to Rmail.
+This version of `movemail' allows to read mail from a wide range of
+mailbox formats, including remote POP3 and IMAP4 mailboxes with or
+without TLS encryption. If GNU mailutils is installed on the system
+and its version of `movemail' can be found in exec-path, it will be
+used instead of the native one.
-*** Improved the way c-indent-exp chooses the block to indent.
-It now indents the block for the closest sexp following the point
-whose closing paren ends on a different line. This means that the
-point doesn't have to be immediately before the block to indent.
-Also, only the block and the closing line is indented; the current
-line is left untouched.
+---
+** MH-E changes.
-*** Added toggle for syntactic indentation.
-The function c-toggle-syntactic-indentation can be used to toggle
-syntactic indentation.
+Upgraded to MH-E version 7.82. There have been major changes since
+version 5.0.2; see MH-E-NEWS for details.
+++
-** The command line option --no-windows has been changed to
---no-window-system. The old one still works, but is deprecated.
+** There is a new calendar package, icalendar.el, that can be used to
+convert Emacs diary entries to/from the iCalendar format.
+++
-** The command `list-text-properties-at' has been deleted because
-C-u C-x = gives the same information and more.
+** Diary sexp entries can have custom marking in the calendar.
+Diary sexp functions which only apply to certain days (such as
+`diary-block' or `diary-cyclic') now take an optional parameter MARK,
+which is the name of a face or a single-character string indicating
+how to highlight the day in the calendar display. Specifying a
+single-character string as @var{mark} places the character next to the
+day in the calendar. Specifying a face highlights the day with that
+face. This lets you have different colors or markings for vacations,
+appointments, paydays or anything else using a sexp.
+++
-** `buffer-menu' and `list-buffers' now list buffers whose names begin
-with a space, when those buffers are visiting files. Normally buffers
-whose names begin with space are omitted.
+** The new function `calendar-goto-day-of-year' (g D) prompts for a
+year and day number, and moves to that date. Negative day numbers
+count backward from the end of the year.
+++
-** You can now customize fill-nobreak-predicate to control where
-filling can break lines. The value is now normally a list of
-functions, but it can also be a single function, for compatibility.
+** The new Calendar function `calendar-goto-iso-week' (g w)
+prompts for a year and a week number, and moves to the first
+day of that ISO week.
-We provide two sample predicates, fill-single-word-nobreak-p and
-fill-french-nobreak-p, for use in the value of fill-nobreak-predicate.
+---
+** The new variable `calendar-minimum-window-height' affects the
+window generated by the function `generate-calendar-window'.
+
+---
+** The functions `holiday-easter-etc' and `holiday-advent' now take
+optional arguments, in order to only report on the specified holiday
+rather than all. This makes customization of variables such as
+`christian-holidays' simpler.
+
+---
+** The function `simple-diary-display' now by default sets a header line.
+This can be controlled through the variables `diary-header-line-flag'
+and `diary-header-line-format'.
+++
-** New user option `add-log-always-start-new-record'.
-When this option is enabled, M-x add-change-log-entry always
-starts a new record regardless of when the last record is.
+** The procedure for activating appointment reminders has changed: use
+the new function `appt-activate'. The new variable
+`appt-display-format' controls how reminders are displayed, replacing
+appt-issue-message, appt-visible, and appt-msg-window.
+++
-** SGML mode has indentation and supports XML syntax.
-The new variable `sgml-xml-mode' tells SGML mode to use XML syntax.
-When this option is enabled, SGML tags are inserted in XML style,
-i.e., there is always a closing tag.
-By default, its setting is inferred on a buffer-by-buffer basis
-from the file name or buffer contents.
+** The new functions `diary-from-outlook', `diary-from-outlook-gnus',
+and `diary-from-outlook-rmail' can be used to import diary entries
+from Outlook-format appointments in mail messages. The variable
+`diary-outlook-formats' can be customized to recognize additional
+formats.
+++
-** `xml-mode' is now an alias for `sgml-mode', which has XML support.
+** Emacs now supports drag and drop for X. Dropping a file on a window
+ opens it, dropping text inserts the text. Dropping a file on a dired
+ buffer copies or moves the file to that directory.
----
-** Lisp mode now uses font-lock-doc-face for the docstrings.
++++
+** Under X11, it is possible to swap Alt and Meta (and Super and Hyper).
+The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym',
+and `x-super-keysym' can be used to choose which keysyms Emacs should
+use for the modifiers. For example, the following two lines swap
+Meta and Alt:
+ (setq x-alt-keysym 'meta)
+ (setq x-meta-keysym 'alt)
+
++++
+** The X resource useXIM can be used to turn off use of XIM, which may
+speed up Emacs with slow networking to the X server.
+
+If the configure option `--without-xim' was used to turn off use of
+XIM by default, the X resource useXIM can be used to turn it on.
---
-** Perl mode has a new variable `perl-indent-continued-arguments'.
+** The new variable `x-select-request-type' controls how Emacs
+requests X selection. The default value is nil, which means that
+Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING,
+and use the more appropriately result.
---
-** Fortran mode does more font-locking by default. Use level 3
-highlighting for the old default.
+** The scrollbar under LessTif or Motif has a smoother drag-scrolling.
+On the other hand, the size of the thumb does not represent the actual
+amount of text shown any more (only a crude approximation of it).
-+++
-** Fortran mode has a new variable `fortran-directive-re'.
-Adapt this to match the format of any compiler directives you use.
-Lines that match are never indented, and are given distinctive font-locking.
+---
+** The pop up menus for Lucid now stay up if you do a fast click and can
+be navigated with the arrow keys (like Gtk+, Mac and W32).
+++
-** F90 mode and Fortran mode have new navigation commands
-`f90-end-of-block', `f90-beginning-of-block', `f90-next-block',
-`f90-previous-block', `fortran-end-of-block',
-`fortran-beginning-of-block'.
+** The Lucid menus can display multilingual text in your locale. You have
+to explicitly specify a fontSet resource for this to work, for example
+`-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
---
-** F90 mode and Fortran mode have support for hs-minor-mode (hideshow).
-It cannot deal with every code format, but ought to handle a sizeable
-majority.
+** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
+ESC, like they do for Gtk+, Mac and W32.
----
-** The new function `f90-backslash-not-special' can be used to change
-the syntax of backslashes in F90 buffers.
+---
+** Dialogs and menus pop down if you type C-g.
---
-** Prolog mode has a new variable `prolog-font-lock-keywords'
-to support use of font-lock.
+** The menu item "Open File..." has been split into two items, "New File..."
+and "Open File...". "Open File..." now opens only existing files. This is
+to support existing GUI file selection dialogs better.
+++
-** `special-display-buffer-names' and `special-display-regexps' now
-understand two new boolean pseudo-frame-parameters `same-frame' and
-`same-window'.
+** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be
+disabled by customizing the variable `use-file-dialog'.
+++
-** M-x setenv now expands environment variables of the form `$foo' and
-`${foo}' in the specified new value of the environment variable. To
-include a `$' in the value, use `$$'.
+** For Gtk+ version 2.4, you can make Emacs use the old file dialog
+by setting the variable `x-use-old-gtk-file-dialog' to t. Default is to use
+the new dialog.
-+++
-** File-name completion can now ignore directories.
-If an element of the list in `completion-ignored-extensions' ends in a
-slash `/', it indicates a subdirectory that should be ignored when
-completing file names. Elements of `completion-ignored-extensions'
-which do not end in a slash are never considered when a completion
-candidate is a directory.
+---
+** Emacs now responds to mouse-clicks on the mode-line, header-line and
+display margin, when run in an xterm.
-+++
-** The completion commands TAB, SPC and ? in the minibuffer apply only
-to the text before point. If there is text in the buffer after point,
-it remains unchanged.
+** Improved key bindings support when running in an xterm.
+When emacs is running in an xterm more key bindings are available. The
+following should work:
+{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}.
+These key bindings work on xterm from X.org 6.8, they might not work on
+some older versions of xterm, or on some proprietary versions.
----
-** Enhanced visual feedback in *Completions* buffer.
+** Changes in support of colors on character terminals
-Completions lists use faces to highlight what all completions
-have in common and where they begin to differ.
++++
+*** The new command-line option --color=MODE lets you specify a standard
+mode for a tty color support. It is meant to be used on character
+terminals whose capabilities are not set correctly in the terminal
+database, or with terminal emulators which support colors, but don't
+set the TERM environment variable to a name of a color-capable
+terminal. "emacs --color" uses the same color commands as GNU `ls'
+when invoked with "ls --color", so if your terminal can support colors
+in "ls --color", it will support "emacs --color" as well. See the
+user manual for the possible values of the MODE parameter.
-The common prefix shared by all possible completions uses the face
-`completions-common-part', while the first character that isn't the
-same uses the face `completions-first-difference'. By default,
-`completions-common-part' inherits from `default', and
-`completions-first-difference' inherits from `bold'. The idea of
-`completions-common-part' is that you can use it to make the common
-parts less visible than normal, so that the rest of the differing
-parts is, by contrast, slightly highlighted.
+---
+*** Emacs now supports several character terminals which provide more
+than 8 colors. For example, for `xterm', 16-color, 88-color, and
+256-color modes are supported. Emacs automatically notes at startup
+the extended number of colors, and defines the appropriate entries for
+all of these colors.
+++
-** New user option `inhibit-startup-buffer-menu'.
-When loading many files, for instance with `emacs *', Emacs normally
-displays a buffer menu. This option turns the buffer menu off.
+*** Emacs now uses the full range of available colors for the default
+faces when running on a color terminal, including 16-, 88-, and
+256-color xterms. This means that when you run "emacs -nw" on an
+88-color or 256-color xterm, you will see essentially the same face
+colors as on X.
---
-** Rmail now displays 5-digit message ids in its summary buffer.
+*** There's a new support for colors on `rxvt' terminal emulator.
+++
-** Support for `movemail' from GNU mailutils was added to Rmail.
-This version of `movemail' allows to read mail from a wide range of
-mailbox formats, including remote POP3 and IMAP4 mailboxes with or
-without TLS encryption. If GNU mailutils is installed on the system
-and its version of `movemail' can be found in exec-path, it will be
-used instead of the native one.
+** Passing resources on the command line now works on MS Windows.
+You can use --xrm to pass resource settings to Emacs, overriding any
+existing values. For example:
+
+ emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20"
+
+will start up Emacs on an initial frame of 100x20 with red background,
+irrespective of geometry or background setting on the Windows registry.
---
** On MS Windows, the "system caret" now follows the cursor.
the clipboard should work correctly for your local language without
any customizations.
-+++
-** Under X11, it is possible to swap Alt and Meta (and Super and Hyper).
-The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym',
-and `x-super-keysym' can be used to choose which keysyms Emacs should
-use for the modifiers. For example, the following two lines swap
-Meta and Alt:
- (setq x-alt-keysym 'meta)
- (setq x-meta-keysym 'alt)
-
-+++
-** vc-annotate-mode enhancements
-
-In vc-annotate mode, you can now use the following key bindings for
-enhanced functionality to browse the annotations of past revisions, or
-to view diffs or log entries directly from vc-annotate-mode:
-
- P: annotates the previous revision
- N: annotates the next revision
- J: annotates the revision at line
- A: annotates the revision previous to line
- D: shows the diff of the revision at line with its previous revision
- L: shows the log of the revision at line
- W: annotates the workfile (most up to date) version
-
-+++
-** In pcl-cvs mode, there is a new `d y' command to view the diffs
-between the local version of the file and yesterday's head revision
-in the repository.
-
-+++
-** In pcl-cvs mode, there is a new `d r' command to view the changes
-anyone has committed to the repository since you last executed
-"checkout", "update" or "commit". That means using cvs diff options
--rBASE -rHEAD.
-
----
-** New variable `hs-set-up-overlay' allows customization of the overlay
-used to effect hiding for hideshow minor mode. Integration with isearch
-handles the overlay property `display' specially, preserving it during
-temporary overlay showing in the course of an isearch operation.
-
-+++
-** New command `recode-region' decodes the region again by a specified
-coding system.
-
---
** On Mac OS, the value of the variable `keyboard-coding-system' is
now dynamically changed according to the current keyboard script. The
variable `mac-keyboard-text-encoding' and the constants
-`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
-`kTextEncodingISOLatin2' are obsolete.
-\f
-* New modes and packages in Emacs 22.1
-
-+++
-** The new package longlines.el provides a minor mode for editing text
-files composed of long lines, based on the `use-hard-newlines'
-mechanism. The long lines are broken up by inserting soft newlines,
-which are automatically removed when saving the file to disk or
-copying into the kill ring, clipboard, etc. By default, Longlines
-mode inserts soft newlines automatically during editing, a behavior
-referred to as "soft word wrap" in other text editors. This is
-similar to Refill mode, but more reliable. To turn the word wrap
-feature off, set `longlines-auto-wrap' to nil.
-
-+++
-** The new package conf-mode.el handles thousands of configuration files, with
-varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value,
-var : value, var value or keyword var value) and sections ([section] or
-section { }). Many files under /etc/, or with suffixes like .cf through
-.config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are
-recognized.
-
-+++
-** The new package dns-mode.el add syntax highlight of DNS master files.
-The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used
-to increment the SOA serial.
-
-+++
-** The new package flymake.el does on-the-fly syntax checking of program
-source files. See the Flymake's Info manual for more details.
-
----
-** The library tree-widget.el provides a new widget to display a set
-of hierarchical data as an outline. For example, the tree-widget is
-well suited to display a hierarchy of directories and files.
-
-+++
-** The wdired.el package allows you to use normal editing commands on Dired
-buffers to change filenames, permissions, etc...
-
-+++
-** The thumbs.el package allows you to preview image files as thumbnails
-and can be invoked from a Dired buffer.
-
-+++
-** Image files are normally visited in Image mode, which lets you toggle
-between viewing the image and viewing the text using C-c C-c.
-
-+++
-** The new python.el package is used to edit Python and Jython programs.
-
----
-** The URL package (which had been part of W3) is now part of Emacs.
-
-+++
-** The new global minor mode `size-indication-mode' (off by default)
-shows the size of accessible part of the buffer on the mode line.
-
----
-** GDB-Script-mode is used for files like .gdbinit.
-
----
-** Ido mode is now part of the Emacs distribution.
-
-The ido (interactively do) package is an extension of the iswitchb
-package to do interactive opening of files and directories in addition
-to interactive buffer switching. Ido is a superset of iswitchb (with
-a few exceptions), so don't enable both packages.
-
----
-** CUA mode is now part of the Emacs distribution.
-
-The new cua package provides CUA-like keybindings using C-x for
-cut (kill), C-c for copy, C-v for paste (yank), and C-z for undo.
-With cua, the region can be set and extended using shifted movement
-keys (like pc-selection-mode) and typed text replaces the active
-region (like delete-selection-mode). Do not enable these modes with
-cua-mode. Customize the variable `cua-mode' to enable cua.
-
-In addition, cua provides unified rectangle support with visible
-rectangle highlighting: Use S-return to start a rectangle, extend it
-using the movement commands (or mouse-3), and cut or copy it using C-x
-or C-c (using C-w and M-w also works).
-
-Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to
-fill it with blanks or another character, use M-u or M-l to upcase or
-downcase the rectangle, use M-i to increment the numbers in the
-rectangle, use M-n to fill the rectangle with a numeric sequence (such
-as 10 20 30...), use M-r to replace a regexp in the rectangle, and use
-M-' or M-/ to restrict command on the rectangle to a subset of the
-rows. See the commentary in cua-base.el for more rectangle commands.
-
-Cua also provides unified support for registers: Use a numeric
-prefix argument between 0 and 9, i.e. M-0 .. M-9, for C-x, C-c, and
-C-v to cut or copy into register 0-9, or paste from register 0-9.
-
-The last text deleted (not killed) is automatically stored in
-register 0. This includes text deleted by typing text.
-
-Finally, cua provides a global mark which is set using S-C-space.
-When the global mark is active, any text which is cut or copied is
-automatically inserted at the global mark position. See the
-commentary in cua-base.el for more global mark related commands.
-
-The features of cua also works with the standard emacs bindings for
-kill, copy, yank, and undo. If you want to use cua mode, but don't
-want the C-x, C-c, C-v, and C-z bindings, you may customize the
-`cua-enable-cua-keys' variable.
-
-Note: This version of cua mode is not backwards compatible with older
-versions of cua.el and cua-mode.el. To ensure proper operation, you
-must remove older versions of cua.el or cua-mode.el as well as the
-loading and customization of those packages from the .emacs file.
-
-+++
-** The new keypad setup package provides several common bindings for
-the numeric keypad which is available on most keyboards. The numeric
-keypad typically has the digits 0 to 9, a decimal point, keys marked
-+, -, /, and *, an Enter key, and a NumLock toggle key. The keypad
-package only controls the use of the digit and decimal keys.
+`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
+`kTextEncodingISOLatin2' are obsolete.
-By customizing the variables `keypad-setup', `keypad-shifted-setup',
-`keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by
-using the function `keypad-setup', you can rebind all digit keys and
-the decimal key of the keypad in one step for each of the four
-possible combinations of the Shift key state (not pressed/pressed) and
-the NumLock toggle state (off/on).
+---
+** sql changes.
-The choices for the keypad keys in each of the above states are:
-`Plain numeric keypad' where the keys generates plain digits,
-`Numeric keypad with decimal key' where the character produced by the
-decimal key can be customized individually (for internationalization),
-`Numeric Prefix Arg' where the keypad keys produce numeric prefix args
-for emacs editing commands, `Cursor keys' and `Shifted Cursor keys'
-where the keys work like (shifted) arrow keys, home/end, etc., and
-`Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.)
-are left unspecified and can be bound individually through the global
-or local keymaps.
+*** The variable `sql-product' controls the highlightng of different
+SQL dialects. This variable can be set globally via Customize, on a
+buffer-specific basis via local variable settings, or for the current
+session using the new SQL->Product submenu. (This menu replaces the
+SQL->Highlighting submenu.)
-+++
-** The new kmacro package provides a simpler user interface to
-emacs' keyboard macro facilities.
+The following values are supported:
-Basically, it uses two function keys (default F3 and F4) like this:
-F3 starts a macro, F4 ends the macro, and pressing F4 again executes
-the last macro. While defining the macro, F3 inserts a counter value
-which automatically increments every time the macro is executed.
+ ansi ANSI Standard (default)
+ db2 DB2
+ informix Informix
+ ingres Ingres
+ interbase Interbase
+ linter Linter
+ ms Microsoft
+ mysql MySQL
+ oracle Oracle
+ postgres Postgres
+ solid Solid
+ sqlite SQLite
+ sybase Sybase
-There is now a keyboard macro ring which stores the most recently
-defined macros.
+The current product name will be shown on the mode line following the
+SQL mode indicator.
-The C-x C-k sequence is now a prefix for the kmacro keymap which
-defines bindings for moving through the keyboard macro ring,
-C-x C-k C-p and C-x C-k C-n, editing the last macro C-x C-k C-e,
-manipulating the macro counter and format via C-x C-k C-c,
-C-x C-k C-a, and C-x C-k C-f. See the commentary in kmacro.el
-for more commands.
+The technique of setting `sql-mode-font-lock-defaults' directly in
+your .emacs will no longer establish the default highlighting -- Use
+`sql-product' to accomplish this.
-The normal macro bindings C-x (, C-x ), and C-x e now interfaces to
-the keyboard macro ring.
+ANSI keywords are always highlighted.
-The C-x e command now automatically terminates the current macro
-before calling it, if used while defining a macro.
+*** The function `sql-add-product-keywords' can be used to add
+font-lock rules to the product specific rules. For example, to have
+all identifiers ending in "_t" under MS SQLServer treated as a type,
+you would use the following line in your .emacs file:
-In addition, when ending or calling a macro with C-x e, the macro can
-be repeated immediately by typing just the `e'. You can customize
-this behavior via the variable kmacro-call-repeat-key and
-kmacro-call-repeat-with-arg.
+ (sql-add-product-keywords 'ms
+ '(("\\<\\w+_t\\>" . font-lock-type-face)))
-Keyboard macros can now be debugged and edited interactively.
-C-x C-k SPC steps through the last keyboard macro one key sequence
-at a time, prompting for the actions to take.
+*** Oracle support includes keyword highlighting for Oracle 9i. Most
+SQL and PL/SQL keywords are implemented. SQL*Plus commands are
+highlighted in `font-lock-doc-face'.
----
-** The old Octave mode bindings C-c f and C-c i have been changed
-to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate
-bindings on control characters--thus, C-c C-i C-b is the same as
-C-c C-i b, and so on.
+*** Microsoft SQLServer support has been significantly improved.
+Keyword highlighting for SqlServer 2000 is implemented.
+sql-interactive-mode defaults to use osql, rather than isql, because
+osql flushes its error stream more frequently. Thus error messages
+are displayed when they occur rather than when the session is
+terminated.
-** The printing package is now part of the Emacs distribution.
+If the username and password are not provided to `sql-ms', osql is
+called with the -E command line argument to use the operating system
+credentials to authenticate the user.
-If you enable the printing package by including (require 'printing) in
-the .emacs file, the normal Print item on the File menu is replaced
-with a Print sub-menu which allows you to preview output through
-ghostview, use ghostscript to print (if you don't have a PostScript
-printer) or send directly to printer a PostScript code generated by
-`ps-print' package. Use M-x pr-help for more information.
+*** Postgres support is enhanced.
+Keyword highlighting of Postgres 7.3 is implemented. Prompting for
+the username and the pgsql `-U' option is added.
-+++
-** Calc is now part of the Emacs distribution.
+*** MySQL support is enhanced.
+Keyword higlighting of MySql 4.0 is implemented.
-Calc is an advanced desk calculator and mathematical tool written in
-Emacs Lisp. Its documentation is in a separate manual; within Emacs,
-type "C-h i m calc RET" to read that manual. A reference card is
-available in `etc/calccard.tex' and `etc/calccard.ps'.
+*** Imenu support has been enhanced to locate tables, views, indexes,
+packages, procedures, functions, triggers, sequences, rules, and
+defaults.
-+++
-** Tramp is now part of the distribution.
+*** Added SQL->Start SQLi Session menu entry which calls the
+appropriate sql-interactive-mode wrapper for the current setting of
+`sql-product'.
-This package is similar to Ange-FTP: it allows you to edit remote
-files. But whereas Ange-FTP uses FTP to access the remote host,
-Tramp uses a shell connection. The shell connection is always used
-for filename completion and directory listings and suchlike, but for
-the actual file transfer, you can choose between the so-called
-`inline' methods (which transfer the files through the shell
-connection using base64 or uu encoding) and the `out-of-band' methods
-(which invoke an external copying program such as `rcp' or `scp' or
-`rsync' to do the copying).
+---
+*** Support for the SQLite interpreter has been added to sql.el by calling
+'sql-sqlite'.
-Shell connections can be acquired via `rsh', `ssh', `telnet' and also
-`su' and `sudo'. Ange-FTP is still supported via the `ftp' method.
+---
+** M-x view-file and commands that use it now avoid interfering
+with special modes such as Tar mode.
-If you want to disable Tramp you should set
++++
+** Filesets are collections of files. You can define a fileset in
+various ways, such as based on a directory tree or based on
+program files that include other program files.
- (setq tramp-default-method "ftp")
+Once you have defined a fileset, you can perform various operations on
+all the files in it, such as visiting them or searching and replacing
+in them.
---
-** The new global minor mode `file-name-shadow-mode' modifies the way
-filenames being entered by the user in the minibuffer are displayed, so
-that it's clear when part of the entered filename will be ignored due to
-emacs' filename parsing rules. The ignored portion can be made dim,
-invisible, or otherwise less visually noticable. The display method may
-be displayed by customizing the variable `file-name-shadow-properties'.
+** Commands winner-redo and winner-undo, from winner.el, are now bound to
+C-c <left> and C-c <right>, respectively. This is an incompatible change.
----
-** The ruler-mode.el library provides a minor mode for displaying an
-"active" ruler in the header line. You can use the mouse to visually
-change the `fill-column', `window-margins' and `tab-stop-list'
-settings.
+** FFAP
+
++++
+*** New ffap commands and keybindings: C-x C-r (`ffap-read-only'),
+C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'),
+C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'),
+C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame').
---
-** The minor mode Reveal mode makes text visible on the fly as you
-move your cursor into hidden regions of the buffer.
-It should work with any package that uses overlays to hide parts
-of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
+*** FFAP accepts wildcards in a file name by default. C-x C-f passes
+it to `find-file' with non-nil WILDCARDS argument, which visits
+multiple files, and C-x d passes it to `dired'.
-There is also Global Reveal mode which affects all buffers.
+---
+** skeleton.el now supports using - to mark the skeleton-point without
+ interregion interaction. @ has reverted to only setting
+ skeleton-positions and no longer sets skeleton-point. Skeletons
+ which used @ to mark skeleton-point independent of _ should now use -
+ instead. The updated skeleton-insert docstring explains these new
+ features along with other details of skeleton construction.
---
-** The new package ibuffer provides a powerful, completely
-customizable replacement for buff-menu.el.
+** New variable `hs-set-up-overlay' allows customization of the overlay
+used to effect hiding for hideshow minor mode. Integration with isearch
+handles the overlay property `display' specially, preserving it during
+temporary overlay showing in the course of an isearch operation.
+++
-** The new package table.el implements editable, WYSIWYG, embedded
-`text tables' in Emacs buffers. It simulates the effect of putting
-these tables in a special major mode. The package emulates WYSIWYG
-table editing available in modern word processors. The package also
-can generate a table source in typesetting and markup languages such
-as latex and html from the visually laid out text table.
+** hide-ifdef-mode now uses overlays rather than selective-display
+to hide its text. This should be mostly transparent but slightly
+changes the behavior of motion commands like C-e and C-p.
-+++
-** SES mode (ses-mode) is a new major mode for creating and editing
-spreadsheet files. Besides the usual Emacs features (intuitive command
-letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers
-viral immunity and import/export of tab-separated values.
+---
+** partial-completion-mode now does partial completion on directory names.
---
-** Support for `magic cookie' standout modes has been removed.
-Emacs will still work on terminals that require magic cookies in order
-to use standout mode, however they will not be able to display
-mode-lines in inverse-video.
+** The type-break package now allows `type-break-file-name' to be nil
+and if so, doesn't store any data across sessions. This is handy if
+you don't want the .type-break file in your home directory or are
+annoyed by the need for interaction when you kill Emacs.
---
-** cplus-md.el has been removed to avoid problems with Custom.
+** `ps-print' can now print characters from the mule-unicode charsets.
-+++
-** New package benchmark.el contains simple support for convenient
-timing measurements of code (including the garbage collection component).
+Printing text with characters from the mule-unicode-* sets works with
+ps-print, provided that you have installed the appropriate BDF fonts.
+See the file INSTALL for URLs where you can find these fonts.
---
-** The new Lisp library fringe.el controls the appearance of fringes.
+** New command `strokes-global-set-stroke-string'.
+This is like `strokes-global-set-stroke', but it allows you to bind
+the stroke directly to a string to insert. This is convenient for
+using strokes as an input method.
---
-** `cfengine-mode' is a major mode for editing GNU Cfengine
-configuration files.
-\f
-* Incompatible Lisp Changes in Emacs 22.1
+** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
+++
-** The new interactive-specification `G' reads a file name
-much like `F', but if the input is a directory name (even defaulted),
-it returns just the directory name.
+** You can now disable pc-selection-mode after enabling it.
+M-x pc-selection-mode behaves like a proper minor mode, and with no
+argument it toggles the mode.
-+++
-** `suppress-keymap' now works by remapping `self-insert-command' to
-the command `undefined'. (In earlier Emacs versions, it used
-`substitute-key-definition' to rebind self inserting characters to
-`undefined'.)
+Turning off PC-Selection mode restores the global key bindings
+that were replaced by turning on the mode.
-+++
-** Mode line display ignores text properties as well as the
-:propertize and :eval forms in the value of a variable whose
-`risky-local-variable' property is nil.
-\f
-* Lisp Changes in Emacs 22.1
+---
+** `uniquify-strip-common-suffix' tells uniquify to prefer
+`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
+
+---
+** rx.el has new corresponding `symbol-end' and `symbol-start' elements.
-** New functions, macros, and commands
+---
+** Support for `magic cookie' standout modes has been removed.
+Emacs will still work on terminals that require magic cookies in order
+to use standout mode, however they will not be able to display
+mode-lines in inverse-video.
-+++
-*** The new function `filter-buffer-substring' extracts a buffer
-substring, passes it through a set of filter functions, and returns
-the filtered substring. It is used instead of `buffer-substring' or
-`delete-and-extract-region' when copying text into a user-accessible
-data structure, like the kill-ring, X clipboard, or a register. The
-list of filter function is specified by the new variable
-`buffer-substring-filters'. For example, Longlines mode uses
-`buffer-substring-filters' to remove soft newlines from the copied
-text.
+---
+** The game `mpuz' is enhanced.
-+++
-*** (while-no-input BODY...) runs BODY, but only so long as no input
-arrives. If the user types or clicks anything, BODY stops as if a
-quit had occurred. while-no-input returns the value of BODY, if BODY
-finishes. It returns nil if BODY was aborted.
+`mpuz' now allows the 2nd factor not to have two identical digits. By
+default, all trivial operations involving whole lines are performed
+automatically. The game uses faces for better visual feedback.
-+++
-*** New function `looking-back' checks whether a regular expression matches
-the text before point. Specifying the LIMIT argument bounds how far
-back the match can start; this is a way to keep it from taking too long.
+---
+** display-battery has been replaced by display-battery-mode.
-+++
-*** New functions `make-progress-reporter', `progress-reporter-update',
-`progress-reporter-force-update', `progress-reporter-done', and
-`dotimes-with-progress-reporter' provide a simple and efficient way for
-a command to present progress messages for the user.
+---
+** calculator.el now has radix grouping mode, which is available when
+`calculator-output-radix' is non-nil. In this mode a separator
+character is used every few digits, making it easier to see byte
+boundries etc. For more info, see the documentation of the variable
+`calculator-radix-grouping-mode'.
-+++
-*** The new primitive `get-internal-run-time' returns the processor
-run time used by Emacs since start-up.
+---
+** global-whitespace-mode is a new alias for whitespace-global-mode.
+++
-*** The new function `called-interactively-p' does what many people
-have mistakenly believed `interactive-p' did: it returns t if the
-calling function was called through `call-interactively'. This should
-only be used when you cannot add a new "interactive" argument to the
-command.
+** The command `list-text-properties-at' has been deleted because
+C-u C-x = gives the same information and more.
-+++
-*** The new function `assoc-string' replaces `assoc-ignore-case' and
-`assoc-ignore-representation', which are still available, but have
-been declared obsolete.
+---
+** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead.
---
-*** New function quail-find-key returns a list of keys to type in the
-current input method to input a character.
+** iso-acc.el is now obsolete. Use one of the latin input methods instead.
-+++
-*** New functions posn-at-point and posn-at-x-y return
-click-event-style position information for a given visible buffer
-position or for a given window pixel coordinate.
+---
+** cplus-md.el has been removed to avoid problems with Custom.
-+++
-*** The new primitive `set-file-times' sets a file's access and
-modification times. Magic file name handlers can handle this
-operation.
+\f
+* New modes and packages in Emacs 22.1
+++
-*** The new function syntax-after returns the syntax code
-of the character after a specified buffer position, taking account
-of text properties as well as the character code.
+** New package benchmark.el contains simple support for convenient
+timing measurements of code (including the garbage collection component).
+++
-*** `syntax-class' extracts the class of a syntax code (as returned
-by syntax-after).
+** Calc is now part of the Emacs distribution.
-+++
-*** New function `line-number-at-pos' returns line number of current
-line in current buffer, or if optional buffer position is given, line
-number of corresponding line in current buffer.
+Calc is an advanced desk calculator and mathematical tool written in
+Emacs Lisp. Its documentation is in a separate manual; within Emacs,
+type "C-h i m calc RET" to read that manual. A reference card is
+available in `etc/calccard.tex' and `etc/calccard.ps'.
-+++
-*** New function `macroexpand-all' expands all macros in a form.
-It is similar to the Common-Lisp function of the same name.
-One difference is that it guarantees to return the original argument
-if no expansion is done, which may be tested using `eq'.
+---
+** `cfengine-mode' is a major mode for editing GNU Cfengine
+configuration files.
+++
-*** New macro with-local-quit temporarily sets inhibit-quit to nil for use
-around potentially blocking or long-running code in timers
-and post-command-hooks.
+** The new package conf-mode.el handles thousands of configuration files, with
+varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value,
+var : value, var value or keyword var value) and sections ([section] or
+section { }). Many files under /etc/, or with suffixes like .cf through
+.config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are
+recognized.
-+++
-*** The new function `rassq-delete-all' deletes all elements from an
-alist whose cdr is `eq' to a specified value.
+---
+** CUA mode is now part of the Emacs distribution.
-+++
-*** New macros define-obsolete-variable-alias to combine defvaralias and
-make-obsolete-variable and define-obsolete-function-alias to combine defalias
-and make-obsolete.
+The new cua package provides CUA-like keybindings using C-x for
+cut (kill), C-c for copy, C-v for paste (yank), and C-z for undo.
+With cua, the region can be set and extended using shifted movement
+keys (like pc-selection-mode) and typed text replaces the active
+region (like delete-selection-mode). Do not enable these modes with
+cua-mode. Customize the variable `cua-mode' to enable cua.
-+++
-** copy-file now takes an additional option arg MUSTBENEW.
+In addition, cua provides unified rectangle support with visible
+rectangle highlighting: Use S-return to start a rectangle, extend it
+using the movement commands (or mouse-3), and cut or copy it using C-x
+or C-c (using C-w and M-w also works).
-This argument works like the MUSTBENEW argument of write-file.
+Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to
+fill it with blanks or another character, use M-u or M-l to upcase or
+downcase the rectangle, use M-i to increment the numbers in the
+rectangle, use M-n to fill the rectangle with a numeric sequence (such
+as 10 20 30...), use M-r to replace a regexp in the rectangle, and use
+M-' or M-/ to restrict command on the rectangle to a subset of the
+rows. See the commentary in cua-base.el for more rectangle commands.
----
-** easy-mmode-define-global-mode has been renamed to
-define-global-minor-mode. The old name remains as an alias.
+Cua also provides unified support for registers: Use a numeric
+prefix argument between 0 and 9, i.e. M-0 .. M-9, for C-x, C-c, and
+C-v to cut or copy into register 0-9, or paste from register 0-9.
-+++
-** An element of buffer-undo-list can now have the form (apply FUNNAME
-. ARGS), where FUNNAME is a symbol other than t or nil. That stands
-for a high-level change that should be undone by evaluating (apply
-FUNNAME ARGS).
+The last text deleted (not killed) is automatically stored in
+register 0. This includes text deleted by typing text.
-These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS)
-which indicates that the change which took place was limited to the
-range BEG...END and increased the buffer size by DELTA.
+Finally, cua provides a global mark which is set using S-C-space.
+When the global mark is active, any text which is cut or copied is
+automatically inserted at the global mark position. See the
+commentary in cua-base.el for more global mark related commands.
-+++
-** The line-move, scroll-up, and scroll-down functions will now
-modify the window vscroll to scroll through display rows that are
-taller that the height of the window, for example in the presense of
-large images. To disable this feature, Lisp code may bind the new
-variable `auto-window-vscroll' to nil.
+The features of cua also works with the standard emacs bindings for
+kill, copy, yank, and undo. If you want to use cua mode, but don't
+want the C-x, C-c, C-v, and C-z bindings, you may customize the
+`cua-enable-cua-keys' variable.
-+++
-** If a buffer sets buffer-save-without-query to non-nil,
-save-some-buffers will always save that buffer without asking
-(if it's modified).
+Note: This version of cua mode is not backwards compatible with older
+versions of cua.el and cua-mode.el. To ensure proper operation, you
+must remove older versions of cua.el or cua-mode.el as well as the
+loading and customization of those packages from the .emacs file.
+++
-** The function symbol-file tells you which file defined
-a certain function or variable.
+** The new package dns-mode.el add syntax highlight of DNS master files.
+The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used
+to increment the SOA serial.
-+++
-** Lisp code can now test if a given buffer position is inside a
-clickable link with the new function `mouse-on-link-p'. This is the
-function used by the new `mouse-1-click-follows-link' functionality.
+---
+** The new global minor mode `file-name-shadow-mode' modifies the way
+filenames being entered by the user in the minibuffer are displayed, so
+that it's clear when part of the entered filename will be ignored due to
+emacs' filename parsing rules. The ignored portion can be made dim,
+invisible, or otherwise less visually noticable. The display method may
+be displayed by customizing the variable `file-name-shadow-properties'.
+++
-** `set-auto-mode' now gives the interpreter magic line (if present)
-precedence over the file name. Likewise an <?xml or <!DOCTYPE declaration
-will give the buffer XML or SGML mode, based on the new var
-`magic-mode-alist'.
+** The new package flymake.el does on-the-fly syntax checking of program
+source files. See the Flymake's Info manual for more details.
---
-** To manipulate the File menu using easy-menu, you must specify the
-proper name "file". In previous Emacs versions, you had to specify
-"files", even though the menu item itself was changed to say "File"
-several versions ago.
+** The new Lisp library fringe.el controls the appearance of fringes.
-+++
-** read-from-minibuffer now accepts an additional argument KEEP-ALL
-saying to put all inputs in the history list, even empty ones.
+---
+** GDB-Script-mode is used for files like .gdbinit.
+++
-** The new variable search-spaces-regexp controls how to search
-for spaces in a regular expression. If it is non-nil, it should be a
-regular expression, and any series of spaces stands for that regular
-expression. If it is nil, spaces stand for themselves.
+** The new package gdb-ui.el provides an enhanced graphical interface to
+GDB. You can interact with GDB through the GUD buffer in the usual way, but
+there are also further buffers which control the execution and describe the
+state of your program. It separates the input/output of your program from
+that of GDB and watches expressions in the speedbar. It also uses features of
+Emacs 21 such as the display margin for breakpoints, and the toolbar.
-Spaces inside of constructs such as [..] and *, +, ? are never
-replaced with search-spaces-regexp.
+Use M-x gdba to start GDB-UI.
---
-** list-buffers-noselect now takes an additional argument, BUFFER-LIST.
-If it is non-nil, it specifies which buffers to list.
+** The new package ibuffer provides a powerful, completely
+customizable replacement for buff-menu.el.
---
-** set-buffer-file-coding-system now takes an additional argument,
-NOMODIFY. If it is non-nil, it means don't mark the buffer modified.
+** Ido mode is now part of the Emacs distribution.
+
+The ido (interactively do) package is an extension of the iswitchb
+package to do interactive opening of files and directories in addition
+to interactive buffer switching. Ido is a superset of iswitchb (with
+a few exceptions), so don't enable both packages.
+++
-** An interactive specification may now use the code letter 'U' to get
-the up-event that was discarded in case the last key sequence read for a
-previous 'k' or 'K' argument was a down-event; otherwise nil is used.
+** Image files are normally visited in Image mode, which lets you toggle
+between viewing the image and viewing the text using C-c C-c.
+++
-** Function `translate-region' accepts also a char-table as TABLE
-argument.
+** The new keypad setup package provides several common bindings for
+the numeric keypad which is available on most keyboards. The numeric
+keypad typically has the digits 0 to 9, a decimal point, keys marked
++, -, /, and *, an Enter key, and a NumLock toggle key. The keypad
+package only controls the use of the digit and decimal keys.
+
+By customizing the variables `keypad-setup', `keypad-shifted-setup',
+`keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by
+using the function `keypad-setup', you can rebind all digit keys and
+the decimal key of the keypad in one step for each of the four
+possible combinations of the Shift key state (not pressed/pressed) and
+the NumLock toggle state (off/on).
+
+The choices for the keypad keys in each of the above states are:
+`Plain numeric keypad' where the keys generates plain digits,
+`Numeric keypad with decimal key' where the character produced by the
+decimal key can be customized individually (for internationalization),
+`Numeric Prefix Arg' where the keypad keys produce numeric prefix args
+for emacs editing commands, `Cursor keys' and `Shifted Cursor keys'
+where the keys work like (shifted) arrow keys, home/end, etc., and
+`Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.)
+are left unspecified and can be bound individually through the global
+or local keymaps.
+
++++
+** The new kmacro package provides a simpler user interface to
+emacs' keyboard macro facilities.
+
+Basically, it uses two function keys (default F3 and F4) like this:
+F3 starts a macro, F4 ends the macro, and pressing F4 again executes
+the last macro. While defining the macro, F3 inserts a counter value
+which automatically increments every time the macro is executed.
-+++
-** Major mode functions now run the new normal hook
-`after-change-major-mode-hook', at their very end, after the mode hooks.
+There is now a keyboard macro ring which stores the most recently
+defined macros.
-+++
-** `auto-save-file-format' has been renamed to
-`buffer-auto-save-file-format' and made into a permanent local.
+The C-x C-k sequence is now a prefix for the kmacro keymap which
+defines bindings for moving through the keyboard macro ring,
+C-x C-k C-p and C-x C-k C-n, editing the last macro C-x C-k C-e,
+manipulating the macro counter and format via C-x C-k C-c,
+C-x C-k C-a, and C-x C-k C-f. See the commentary in kmacro.el
+for more commands.
-+++
-** Both the variable and the function `disabled-command-hook' have
-been renamed to `disabled-command-function'. The variable
-`disabled-command-hook' has been kept as an obsolete alias.
+The normal macro bindings C-x (, C-x ), and C-x e now interfaces to
+the keyboard macro ring.
-+++
-** Function `compute-motion' now calculates the usable window
-width if the WIDTH argument is nil. If the TOPOS argument is nil,
-the usable window height and width is used.
+The C-x e command now automatically terminates the current macro
+before calling it, if used while defining a macro.
-+++
-** `visited-file-modtime' and `calendar-time-from-absolute' now return
-a list of two integers, instead of a cons.
+In addition, when ending or calling a macro with C-x e, the macro can
+be repeated immediately by typing just the `e'. You can customize
+this behavior via the variable kmacro-call-repeat-key and
+kmacro-call-repeat-with-arg.
-+++
-** If a command sets transient-mark-mode to `only', that
-enables Transient Mark mode for the following command only.
-During that following command, the value of transient-mark-mode
-is `identity'. If it is still `identity' at the end of the command,
-it changes to nil.
+Keyboard macros can now be debugged and edited interactively.
+C-x C-k SPC steps through the last keyboard macro one key sequence
+at a time, prompting for the actions to take.
+++
-** Cleaner way to enter key sequences.
+** The new package longlines.el provides a minor mode for editing text
+files composed of long lines, based on the `use-hard-newlines'
+mechanism. The long lines are broken up by inserting soft newlines,
+which are automatically removed when saving the file to disk or
+copying into the kill ring, clipboard, etc. By default, Longlines
+mode inserts soft newlines automatically during editing, a behavior
+referred to as "soft word wrap" in other text editors. This is
+similar to Refill mode, but more reliable. To turn the word wrap
+feature off, set `longlines-auto-wrap' to nil.
-You can enter a constant key sequence in a more natural format, the
-same one used for saving keyboard macros, using the macro `kbd'. For
-example,
+---
+** The old Octave mode bindings C-c f and C-c i have been changed
+to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate
+bindings on control characters--thus, C-c C-i C-b is the same as
+C-c C-i b, and so on.
-(kbd "C-x C-f") => "\^x\^f"
+** The printing package is now part of the Emacs distribution.
-+++
-** The sentinel is now called when a network process is deleted with
-delete-process. The status message passed to the sentinel for a
-deleted network process is "deleted". The message passed to the
-sentinel when the connection is closed by the remote peer has been
-changed to "connection broken by remote peer".
+If you enable the printing package by including (require 'printing) in
+the .emacs file, the normal Print item on the File menu is replaced
+with a Print sub-menu which allows you to preview output through
+ghostview, use ghostscript to print (if you don't have a PostScript
+printer) or send directly to printer a PostScript code generated by
+`ps-print' package. Use M-x pr-help for more information.
+++
-** If the buffer's undo list for the current command gets longer than
-undo-outer-limit, garbage collection empties it. This is to prevent
-it from using up the available memory and choking Emacs.
+** The new python.el package is used to edit Python and Jython programs.
-+++
-** skip-chars-forward and skip-chars-backward now handle
-character classes such as [:alpha:], along with individual characters
-and ranges.
+---
+** The minor mode Reveal mode makes text visible on the fly as you
+move your cursor into hidden regions of the buffer.
+It should work with any package that uses overlays to hide parts
+of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
-+++
-** Function pos-visible-in-window-p now returns the pixel coordinates
-and partial visiblity state of the corresponding row, if the PARTIALLY
-arg is non-nil.
+There is also Global Reveal mode which affects all buffers.
-+++
-** The function `eql' is now available without requiring the CL package.
+---
+** The ruler-mode.el library provides a minor mode for displaying an
+"active" ruler in the header line. You can use the mouse to visually
+change the `fill-column', `window-margins' and `tab-stop-list'
+settings.
+++
-** The display space :width and :align-to text properties are now
-supported on text terminals.
+** SES mode (ses-mode) is a new major mode for creating and editing
+spreadsheet files. Besides the usual Emacs features (intuitive command
+letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers
+viral immunity and import/export of tab-separated values.
+++
-** Support for displaying image slices
-
-*** New display property (slice X Y WIDTH HEIGHT) may be used with
-an image property to display only a specific slice of the image.
+** The new global minor mode `size-indication-mode' (off by default)
+shows the size of accessible part of the buffer on the mode line.
-*** Function insert-image has new optional fourth arg to
-specify image slice (X Y WIDTH HEIGHT).
++++
+** The new package table.el implements editable, WYSIWYG, embedded
+`text tables' in Emacs buffers. It simulates the effect of putting
+these tables in a special major mode. The package emulates WYSIWYG
+table editing available in modern word processors. The package also
+can generate a table source in typesetting and markup languages such
+as latex and html from the visually laid out text table.
-*** New function insert-sliced-image inserts a given image as a
-specified number of evenly sized slices (rows x columns).
++++
+** The thumbs.el package allows you to preview image files as thumbnails
+and can be invoked from a Dired buffer.
+++
-** New line-height and line-spacing properties for newline characters
+** Tramp is now part of the distribution.
-A newline may now have line-height and line-spacing text or overlay
-properties that control the height of the corresponding display row.
+This package is similar to Ange-FTP: it allows you to edit remote
+files. But whereas Ange-FTP uses FTP to access the remote host,
+Tramp uses a shell connection. The shell connection is always used
+for filename completion and directory listings and suchlike, but for
+the actual file transfer, you can choose between the so-called
+`inline' methods (which transfer the files through the shell
+connection using base64 or uu encoding) and the `out-of-band' methods
+(which invoke an external copying program such as `rcp' or `scp' or
+`rsync' to do the copying).
-If the line-height property value is t, the newline does not
-contribute to the height of the display row; instead the height of the
-newline glyph is reduced. Also, a line-spacing property on this
-newline is ignored. This can be used to tile small images or image
-slices without adding blank areas between the images.
+Shell connections can be acquired via `rsh', `ssh', `telnet' and also
+`su' and `sudo'. Ange-FTP is still supported via the `ftp' method.
-If the line-height property value is a positive integer, the value
-specifies the minimum line height in pixels. If necessary, the line
-height it increased by increasing the line's ascent.
+If you want to disable Tramp you should set
-If the line-height property value is a float, the minimum line height
-is calculated by multiplying the default frame line height by the
-given value.
+ (setq tramp-default-method "ftp")
-If the line-height property value is a cons (FACE . RATIO), the
-minimum line height is calculated as RATIO * height of named FACE.
-RATIO is int or float. If FACE is t, it specifies the current face.
+---
+** The library tree-widget.el provides a new widget to display a set
+of hierarchical data as an outline. For example, the tree-widget is
+well suited to display a hierarchy of directories and files.
-If the line-height property value is a cons (nil . RATIO), the line
-height is calculated as RATIO * actual height of the line's contents.
+---
+** The URL package (which had been part of W3) is now part of Emacs.
-If the line-height value is a cons (HEIGHT . TOTAL), HEIGHT specifies
-the line height as described above, while TOTAL is any of the forms
-described above and specifies the total height of the line, causing a
-varying number of pixels to be inserted after the line to make it line
-exactly that many pixels high.
+---
+** New minor mode, Visible mode, toggles invisibility in the current buffer.
+When enabled, it makes all invisible text visible. When disabled, it
+restores the previous value of `buffer-invisibility-spec'.
-If the line-spacing property value is an positive integer, the value
-is used as additional pixels to insert after the display line; this
-overrides the default frame line-spacing and any buffer local value of
-the line-spacing variable.
++++
+** The wdired.el package allows you to use normal editing commands on Dired
+buffers to change filenames, permissions, etc...
-If the line-spacing property may be a float or cons, the line spacing
-is calculated as specified above for the line-height property.
+\f
+* Incompatible Lisp Changes in Emacs 22.1
+++
-** The buffer local line-spacing variable may now have a float value,
-which is used as a height relative to the default frame line height.
+** The new interactive-specification `G' reads a file name
+much like `F', but if the input is a directory name (even defaulted),
+it returns just the directory name.
+++
-** Enhancements to stretch display properties
-
-The display property stretch specification form `(space PROPS)', where
-PROPS is a property list now allows pixel based width and height
-specifications, as well as enhanced horizontal text alignment.
-
-The value of these properties can now be a (primitive) expression
-which is evaluated during redisplay. The following expressions
-are supported:
+** `suppress-keymap' now works by remapping `self-insert-command' to
+the command `undefined'. (In earlier Emacs versions, it used
+`substitute-key-definition' to rebind self inserting characters to
+`undefined'.)
-EXPR ::= NUM | (NUM) | UNIT | ELEM | POS | IMAGE | FORM
-NUM ::= INTEGER | FLOAT | SYMBOL
-UNIT ::= in | mm | cm | width | height
-ELEM ::= left-fringe | right-fringe | left-margin | right-margin
- | scroll-bar | text
-POS ::= left | center | right
-FORM ::= (NUM . EXPR) | (OP EXPR ...)
-OP ::= + | -
++++
+** Mode line display ignores text properties as well as the
+:propertize and :eval forms in the value of a variable whose
+`risky-local-variable' property is nil.
+\f
+* Lisp Changes in Emacs 22.1
-The form `NUM' specifies a fractional width or height of the default
-frame font size. The form `(NUM)' specifies an absolute number of
-pixels. If a symbol is specified, its buffer-local variable binding
-is used. The `in', `mm', and `cm' units specifies the number of
-pixels per inch, milli-meter, and centi-meter, resp. The `width' and
-`height' units correspond to the width and height of the current face
-font. An image specification corresponds to the width or height of
-the image.
++++
+** The option --script FILE runs Emacs in batch mode and loads FILE.
+It is useful for writing Emacs Lisp shell script files, because they
+can start with this line:
-The `left-fringe', `right-fringe', `left-margin', `right-margin',
-`scroll-bar', and `text' elements specify to the width of the
-corresponding area of the window.
+ #!/usr/bin/emacs --script
-The `left', `center', and `right' positions can be used with :align-to
-to specify a position relative to the left edge, center, or right edge
-of the text area. One of the above window elements (except `text')
-can also be used with :align-to to specify that the position is
-relative to the left edge of the given area. Once the base offset for
-a relative position has been set (by the first occurrence of one of
-these symbols), further occurences of these symbols are interpreted as
-the width of the area.
++++
+** The option --directory DIR now modifies `load-path' immediately.
+Directories are added to the front of `load-path' in the order they
+appear on the command line. For example, with this command line:
-For example, to align to the center of the left-margin, use
- :align-to (+ left-margin (0.5 . left-margin))
+ emacs -batch -L .. -L /tmp --eval "(require 'foo)"
-If no specific base offset is set for alignment, it is always relative
-to the left edge of the text area. For example, :align-to 0 in a
-header-line aligns with the first text column in the text area.
+Emacs looks for library `foo' in the parent directory, then in /tmp, then
+in the other directories in `load-path'. (-L is short for --directory.)
-The value of the form `(NUM . EXPR)' is the value of NUM multiplied by
-the value of the expression EXPR. For example, (2 . in) specifies a
-width of 2 inches, while (0.5 . IMAGE) specifies half the width (or
-height) of the specified image.
++++
+** The default value of `sentence-end' is now defined using the new
+variable `sentence-end-without-space', which contains such characters
+that end a sentence without following spaces.
-The form `(+ EXPR ...)' adds up the value of the expressions.
-The form `(- EXPR ...)' negates or subtracts the value of the expressions.
+The function `sentence-end' should be used to obtain the value of the
+variable `sentence-end'. If the variable `sentence-end' is nil, then
+this function returns the regexp constructed from the variables
+`sentence-end-without-period', `sentence-end-double-space' and
+`sentence-end-without-space'.
+++
-** Normally, the cursor is displayed at the end of any overlay and
-text property string that may be present at the current window
-position. The cursor may now be placed on any character of such
-strings by giving that character a non-nil `cursor' text property.
+** The argument to forward-word, backward-word, forward-to-indentation
+and backward-to-indentation is now optional, and defaults to 1.
+++
-** The first face specification element in a defface can specify
-`default' instead of frame classification. Then its attributes act as
-defaults that apply to all the subsequent cases (and may be overridden
-by them).
+** If a command sets transient-mark-mode to `only', that
+enables Transient Mark mode for the following command only.
+During that following command, the value of transient-mark-mode
+is `identity'. If it is still `identity' at the end of the command,
+it changes to nil.
+++
-** New face attribute `min-colors' can be used to tailor the face color
-to the number of colors supported by a display, and define the
-foreground and background colors accordingly so that they look best on
-a terminal that supports at least this many colors. This is now the
-preferred method for defining default faces in a way that makes a good
-use of the capabilities of the display.
+** The new hook `before-save-hook' is invoked by `basic-save-buffer'
+before saving buffers. This allows packages to perform various final
+tasks, for example; it can be used by the copyright package to make
+sure saved files have the current year in any copyright headers.
+++
-** Customizable fringe bitmaps
+** If a buffer sets buffer-save-without-query to non-nil,
+save-some-buffers will always save that buffer without asking
+(if it's modified).
-*** New function 'define-fringe-bitmap' can now be used to create new
-fringe bitmaps, as well as change the built-in fringe bitmaps.
+---
+** list-buffers-noselect now takes an additional argument, BUFFER-LIST.
+If it is non-nil, it specifies which buffers to list.
-To change a built-in bitmap, do (require 'fringe) and use the symbol
-identifing the bitmap such as `left-truncation or `continued-line'.
++++
+** The kill-buffer-hook is now permanent-local.
-*** New function 'destroy-fringe-bitmap' may be used to destroy a
-previously created bitmap, or restore a built-in bitmap.
++++
+** `auto-save-file-format' has been renamed to
+`buffer-auto-save-file-format' and made into a permanent local.
-*** New function 'set-fringe-bitmap-face' can now be used to set a
-specific face to be used for a specific fringe bitmap. The face is
-automatically merged with the `fringe' face, so normally, the face
-should only specify the foreground color of the bitmap.
++++
+** Functions `file-name-sans-extension' and `file-name-extension' now
+ignore the leading dots in file names, so that file names such as
+`.emacs' are treated as extensionless.
-*** There are new display properties, left-fringe and right-fringe,
-that can be used to show a specific bitmap in the left or right fringe
-bitmap of the display line.
++++
+** copy-file now takes an additional option arg MUSTBENEW.
-Format is 'display '(left-fringe BITMAP [FACE]), where BITMAP is a
-symbol identifying a fringe bitmap, either built-in or defined with
-`define-fringe-bitmap', and FACE is an optional face name to be used
-for displaying the bitmap instead of the default `fringe' face.
-When specified, FACE is automatically merged with the `fringe' face.
+This argument works like the MUSTBENEW argument of write-file.
-*** New function `fringe-bitmaps-at-pos' returns the current fringe
-bitmaps in the display line at a given buffer position.
++++
+** If the second argument to `copy-file' is the name of a directory,
+the file is copied to that directory instead of signaling an error.
+++
-** Multiple overlay arrows can now be defined and managed via the new
-variable `overlay-arrow-variable-list'. It contains a list of
-varibles which contain overlay arrow position markers, including
-the original `overlay-arrow-position' variable.
+** `visited-file-modtime' and `calendar-time-from-absolute' now return
+a list of two integers, instead of a cons.
-Each variable on this list may have individual `overlay-arrow-string'
-and `overlay-arrow-bitmap' properties that specify an overlay arrow
-string (for non-window terminals) or fringe bitmap (for window
-systems) to display at the corresponding overlay arrow position.
-If either property is not set, the default `overlay-arrow-string' or
-'overlay-arrow-fringe-bitmap' will be used.
++++
+** `file-chase-links' now takes an optional second argument LIMIT which
+specifies the maximum number of links to chase through. If after that
+many iterations the file name obtained is still a symbolic link,
+`file-chase-links' returns it anyway.
+++
-** The default value of `sentence-end' is now defined using the new
-variable `sentence-end-without-space' which contains such characters
-that end a sentence without following spaces.
+** The function `commandp' takes an additional optional
+argument. If it is non-nil, then `commandp' checks
+for a function that could be called with `call-interactively',
+and does not return t for keyboard macros.
+++
-** The function `sentence-end' should be used to obtain the value of
-the variable `sentence-end'. If the variable `sentence-end' is nil,
-then this function returns the regexp constructed from the variables
-`sentence-end-without-period', `sentence-end-double-space' and
-`sentence-end-without-space'.
+** An interactive specification may now use the code letter 'U' to get
+the up-event that was discarded in case the last key sequence read for a
+previous 'k' or 'K' argument was a down-event; otherwise nil is used.
+
+---
+** Functions y-or-n-p, read-char, read-key-sequence and the like, that
+display a prompt but don't use the minibuffer, now display the prompt
+using the text properties (esp. the face) of the prompt string.
+++
-** The flags, width, and precision options for %-specifications in function
-`format' are now documented. Some flags that were accepted but not
-implemented (such as "*") are no longer accepted.
+** read-from-minibuffer now accepts an additional argument KEEP-ALL
+saying to put all inputs in the history list, even empty ones.
+++
-** New function `delete-dups' destructively removes `equal' duplicates
-from a list. Of several `equal' occurrences of an element in the list,
-the first one is kept.
+** The `read-file-name' function now takes an additional argument which
+specifies a predicate which the file name read must satify. The
+new variable `read-file-name-predicate' contains the predicate argument
+while reading the file name from the minibuffer; the predicate in this
+variable is used by read-file-name-internal to filter the completion list.
+
+---
+** The new variable `read-file-name-function' can be used by lisp code
+to override the internal read-file-name function.
+++
-** `declare' is now a macro. This change was made mostly for
-documentation purposes and should have no real effect on Lisp code.
+** The new variable `read-file-name-completion-ignore-case' specifies
+whether completion ignores case when reading a file name with the
+`read-file-name' function.
+++
-** A file name handler can declare which operations it handles.
+** The new function `read-directory-name' can be used instead of
+`read-file-name' to read a directory name; when used, completion
+will only show directories.
-You do this by putting an `operation' property on the handler name
-symbol. The property value should be a list of the operations that
-the handler really handles. It won't be called for any other
-operations.
++++
+** The new variable search-spaces-regexp controls how to search
+for spaces in a regular expression. If it is non-nil, it should be a
+regular expression, and any series of spaces stands for that regular
+expression. If it is nil, spaces stand for themselves.
-This is useful for autoloaded handlers, to prevent them from being
-autoloaded when not really necessary.
+Spaces inside of constructs such as [..] and *, +, ? are never
+replaced with search-spaces-regexp.
+++
-** The new hook `before-save-hook' is invoked by `basic-save-buffer'
-before saving buffers. This allows packages to perform various final
-tasks, for example; it can be used by the copyright package to make
-sure saved files have the current year in any copyright headers.
+** There are now two new regular expression operators, \_< and \_>,
+for matching the beginning and end of a symbol. A symbol is a
+non-empty sequence of either word or symbol constituent characters, as
+specified by the syntax table.
+++
-** The function `insert-for-yank' now supports strings where the
-`yank-handler' property does not span the first character of the
-string. The old behavior is available if you call
-`insert-for-yank-1' instead.
+** skip-chars-forward and skip-chars-backward now handle
+character classes such as [:alpha:], along with individual characters
+and ranges.
-+++
-** New function `get-char-property-and-overlay' accepts the same
-arguments as `get-char-property' and returns a cons whose car is the
-return value of `get-char-property' called with those arguments and
-whose cdr is the overlay in which the property was found, or nil if
-it was found as a text property or not found at all.
+---
+** In `replace-match', the replacement text no longer inherits
+properties from surrounding text.
-+++ (lispref)
-??? (man)
-** The mouse pointer shape in void text areas (i.e. after the end of a
-line or below the last line in the buffer) of the text window is now
-controlled by the new variable `void-text-area-pointer'. The default
-is to use the `arrow' (non-text) pointer. Other choices are `text'
-(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'.
++++
+** The list returned by `(match-data t)' now has the buffer as a final
+element, if the last match was on a buffer. `set-match-data'
+accepts such a list for restoring the match state.
+++
-** The mouse pointer shape over an image can now be controlled by the
-:pointer image property.
+** Variable aliases have been implemented:
+
+*** defvaralias ALIAS-VAR BASE-VAR [DOCSTRING]
+
+This function defines the symbol ALIAS-VAR as a variable alias for
+symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR
+returns the value of BASE-VAR, and changing the value of ALIAS-VAR
+changes the value of BASE-VAR.
+
+DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has
+the same documentation as BASE-VAR.
+
+*** indirect-variable VARIABLE
+
+This function returns the variable at the end of the chain of aliases
+of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not
+defined as an alias, the function returns VARIABLE.
+
+It might be noteworthy that variables aliases work for all kinds of
+variables, including buffer-local and frame-local variables.
+++
-** The mouse pointer shape over ordinary text or images may now be
-controlled/overriden via the `pointer' text property.
+*** The macro define-obsolete-variable-alias combines defvaralias and
+make-obsolete-variable. The macro define-obsolete-function-alias
+combines defalias and make-obsolete.
+++
-** Images may now have an associated image map via the :map property.
+** Enhancements to keymaps.
-An image map is an alist where each element has the format (AREA ID PLIST).
-An AREA is specified as either a rectangle, a circle, or a polygon:
-A rectangle is a cons (rect . ((x0 . y0) . (x1 . y1))) specifying the
-pixel coordinates of the upper left and bottom right corners.
-A circle is a cons (circle . ((x0 . y0) . r)) specifying the center
-and the radius of the circle; r may be a float or integer.
-A polygon is a cons (poly . [x0 y0 x1 y1 ...]) where each pair in the
-vector describes one corner in the polygon.
+*** Cleaner way to enter key sequences.
-When the mouse pointer is above a hot-spot area of an image, the
-PLIST of that hot-spot is consulted; if it contains a `help-echo'
-property it defines a tool-tip for the hot-spot, and if it contains
-a `pointer' property, it defines the shape of the mouse cursor when
-it is over the hot-spot. See the variable 'void-area-text-pointer'
-for possible pointer shapes.
+You can enter a constant key sequence in a more natural format, the
+same one used for saving keyboard macros, using the macro `kbd'. For
+example,
+
+(kbd "C-x C-f") => "\^x\^f"
+
+*** Interactive commands can be remapped through keymaps.
+
+This is an alternative to using defadvice or substitute-key-definition
+to modify the behavior of a key binding using the normal keymap
+binding and lookup functionality.
+
+When a key sequence is bound to a command, and that command is
+remapped to another command, that command is run instead of the
+original command.
+
+Example:
+Suppose that minor mode my-mode has defined the commands
+my-kill-line and my-kill-word, and it wants C-k (and any other key
+bound to kill-line) to run the command my-kill-line instead of
+kill-line, and likewise it wants to run my-kill-word instead of
+kill-word.
+
+Instead of rebinding C-k and the other keys in the minor mode map,
+command remapping allows you to directly map kill-line into
+my-kill-line and kill-word into my-kill-word through the minor mode
+map using define-key:
+
+ (define-key my-mode-map [remap kill-line] 'my-kill-line)
+ (define-key my-mode-map [remap kill-word] 'my-kill-word)
+
+Now, when my-mode is enabled, and the user enters C-k or M-d,
+the commands my-kill-line and my-kill-word are run.
+
+Notice that only one level of remapping is supported. In the above
+example, this means that if my-kill-line is remapped to other-kill,
+then C-k still runs my-kill-line.
+
+The following changes have been made to provide command remapping:
+
+- Command remappings are defined using `define-key' with a prefix-key
+ `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD
+ to definition DEF in keymap MAP. The definition is not limited to
+ another command; it can be anything accepted for a normal binding.
-When you click the mouse when the mouse pointer is over a hot-spot,
-an event is composed by combining the ID of the hot-spot with the
-mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'.
+- The new function `command-remapping' returns the binding for a
+ remapped command in the current keymaps, or nil if not remapped.
-** Mouse event enhancements:
+- key-binding now remaps interactive commands unless the optional
+ third argument NO-REMAP is non-nil.
-+++
-*** Mouse clicks on fringes now generates left-fringe or right-fringes
-events, rather than a text area click event.
+- where-is-internal now returns nil for a remapped command (e.g.
+ kill-line if my-mode is enabled), and the actual key binding for
+ the command it is remapped to (e.g. C-k for my-kill-line).
+ It also has a new optional fifth argument, NO-REMAP, which inhibits
+ remapping if non-nil (e.g. it returns C-k for kill-line and
+ <kill-line> for my-kill-line).
-+++
-*** Mouse clicks in the left and right marginal areas now includes a
-sensible buffer position corresponding to the first character in the
-corresponding text row.
+- The new variable `this-original-command' contains the original
+ command before remapping. It is equal to `this-command' when the
+ command was not remapped.
-+++
-*** Function `mouse-set-point' now works for events outside text area.
+*** If text has a `keymap' property, that keymap takes precedence
+over minor mode keymaps.
-+++
-*** Mouse events now includes buffer position for all event types.
+*** The `keymap' property now also works at the ends of overlays and
+text-properties, according to their stickiness. This also means that it
+works with empty overlays. The same hold for the `local-map' property.
-+++
-*** `posn-point' now returns buffer position for non-text area events.
+*** Dense keymaps now handle inheritance correctly.
+Previously a dense keymap would hide all of the simple-char key
+bindings of the parent keymap.
-+++
-*** New function `posn-area' returns window area clicked on (nil means
-text area).
+*** `define-key-after' now accepts keys longer than 1.
-+++
-*** Mouse events include actual glyph column and row for all event types.
+*** New function `current-active-maps' returns a list of currently
+active keymaps.
-+++
-*** New function `posn-actual-col-row' returns actual glyph coordinates.
+*** New function `describe-buffer-bindings' inserts the list of all
+defined keys and their definitions.
-+++
-*** Mouse events may now include image object in addition to string object.
+*** New function `keymap-prompt' returns the prompt-string of a keymap
-+++
-*** Mouse events include relative x and y pixel coordinates relative to
-the top left corner of the object (image or character) clicked on.
+*** (map-keymap FUNCTION KEYMAP) applies the function to each binding
+in the keymap.
-+++
-*** Mouse events include the pixel width and height of the object
-(image or character) clicked on.
+*** New variable emulation-mode-map-alists.
-+++
-*** New functions 'posn-object', 'posn-object-x-y', and
-'posn-object-width-height' return the image or string object of a mouse
-click, the x and y pixel coordinates relative to the top left corner
-of that object, and the total width and height of that object.
+Lisp packages using many minor mode keymaps can now maintain their own
+keymap alist separate from minor-mode-map-alist by adding their keymap
+alist to this list.
+++
-** New function `force-window-update' can initiate a full redisplay of
-one or all windows. Normally, this is not needed as changes in window
-contents are detected automatically. However, certain implicit
-changes to mode lines, header lines, or display properties may require
-forcing an explicit window update.
+** Atomic change groups.
----
-** New function `redirect-debugging-output' can be used to redirect
-debugging output on the stderr file handle to a file.
+To perform some changes in the current buffer "atomically" so that
+they either all succeed or are all undone, use `atomic-change-group'
+around the code that makes changes. For instance:
-+++
-** `split-string' now includes null substrings in the returned list if
-the optional argument SEPARATORS is non-nil and there are matches for
-SEPARATORS at the beginning or end of the string. If SEPARATORS is
-nil, or if the new optional third argument OMIT-NULLS is non-nil, all
-empty matches are omitted from the returned list.
+ (atomic-change-group
+ (insert foo)
+ (delete-region x y))
-+++
-** `makehash' is now obsolete. Use `make-hash-table' instead.
+If an error (or other nonlocal exit) occurs inside the body of
+`atomic-change-group', it unmakes all the changes in that buffer that
+were during the execution of the body. The change group has no effect
+on any other buffers--any such changes remain.
-+++
-** If optional third argument APPEND to `add-to-list' is non-nil, a
-new element gets added at the end of the list instead of at the
-beginning. This change actually occurred in Emacs-21.1, but was not
-documented.
+If you need something more sophisticated, you can directly call the
+lower-level functions that `atomic-change-group' uses. Here is how.
-+++
-** Major modes can define `eldoc-documentation-function'
-locally to provide Eldoc functionality by some method appropriate to
-the language.
+To set up a change group for one buffer, call `prepare-change-group'.
+Specify the buffer as argument; it defaults to the current buffer.
+This function returns a "handle" for the change group. You must save
+the handle to activate the change group and then finish it.
----
-** New coding system property `mime-text-unsuitable' indicates that
-the coding system's `mime-charset' is not suitable for MIME text
-parts, e.g. utf-16.
+Before you change the buffer again, you must activate the change
+group. Pass the handle to `activate-change-group' afterward to
+do this.
-+++
-** The argument to forward-word, backward-word, forward-to-indentation
-and backward-to-indentation is now optional, and defaults to 1.
+After you make the changes, you must finish the change group. You can
+either accept the changes or cancel them all. Call
+`accept-change-group' to accept the changes in the group as final;
+call `cancel-change-group' to undo them all.
-+++
-** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able
-to display CHAR. More precisely, if the selected frame's fontset has
-a font to display the character set that CHAR belongs to.
+You should use `unwind-protect' to make sure the group is always
+finished. The call to `activate-change-group' should be inside the
+`unwind-protect', in case the user types C-g just after it runs.
+(This is one reason why `prepare-change-group' and
+`activate-change-group' are separate functions.) Once you finish the
+group, don't use the handle again--don't try to finish the same group
+twice.
-Fontsets can specify a font on a per-character basis; when the fontset
-does that, this value may not be accurate.
+To make a multibuffer change group, call `prepare-change-group' once
+for each buffer you want to cover, then use `nconc' to combine the
+returned values, like this:
-+++
-** The new function `window-inside-edges' returns the edges of the
-actual text portion of the window, not including the scroll bar or
-divider line, the fringes, the display margins, the header line and
-the mode line.
+ (nconc (prepare-change-group buffer-1)
+ (prepare-change-group buffer-2))
-+++
-** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
-return window edges in units of pixels, rather than columns and lines.
+You can then activate the multibuffer change group with a single call
+to `activate-change-group', and finish it with a single call to
+`accept-change-group' or `cancel-change-group'.
-+++
-** The kill-buffer-hook is now permanent-local.
+Nested use of several change groups for the same buffer works as you
+would expect. Non-nested use of change groups for the same buffer
+will lead to undesirable results, so don't let it happen; the first
+change group you start for any given buffer should be the last one
+finished.
+++
-** `select-window' takes an optional second argument `norecord', like
-`switch-to-buffer'.
+** Progress reporters.
+The new functions `make-progress-reporter', `progress-reporter-update',
+`progress-reporter-force-update', `progress-reporter-done', and
+`dotimes-with-progress-reporter' provide a simple and efficient way for
+a command to present progress messages for the user.
+++
-** The new macro `with-selected-window' temporarily switches the
-selected window without impacting the order of buffer-list.
+** New `yank-handler' text property may be used to control how
+previously killed text on the kill-ring is reinserted.
-+++
-** The `keymap' property now also works at the ends of overlays and
-text-properties, according to their stickiness. This also means that it
-works with empty overlays. The same hold for the `local-map' property.
+The value of the yank-handler property must be a list with one to four
+elements with the following format:
+ (FUNCTION PARAM NOEXCLUDE UNDO).
-+++
-** (map-keymap FUNCTION KEYMAP) applies the function to each binding
-in the keymap.
+The `insert-for-yank' function looks for a yank-handler property on
+the first character on its string argument (typically the first
+element on the kill-ring). If a yank-handler property is found,
+the normal behavior of `insert-for-yank' is modified in various ways:
----
-** VC changes for backends:
-*** (vc-switches BACKEND OPERATION) is a new function for use by backends.
-*** The new `find-version' backend function replaces the `destfile'
-parameter of the `checkout' backend function.
-Old code still works thanks to a default `find-version' behavior that
-uses the old `destfile' parameter.
+ When FUNCTION is present and non-nil, it is called instead of `insert'
+to insert the string. FUNCTION takes one argument--the object to insert.
+ If PARAM is present and non-nil, it replaces STRING as the object
+passed to FUNCTION (or `insert'); for example, if FUNCTION is
+`yank-rectangle', PARAM should be a list of strings to insert as a
+rectangle.
+ If NOEXCLUDE is present and non-nil, the normal removal of the
+yank-excluded-properties is not performed; instead FUNCTION is
+responsible for removing those properties. This may be necessary
+if FUNCTION adjusts point before or after inserting the object.
+ If UNDO is present and non-nil, it is a function that will be called
+by `yank-pop' to undo the insertion of the current object. It is
+called with two arguments, the start and end of the current region.
+FUNCTION may set `yank-undo-function' to override the UNDO value.
-+++
-** The new macro dynamic-completion-table supports using functions
-as a dynamic completion table.
+*** The functions kill-new, kill-append, and kill-region now have an
+optional argument to specify the yank-handler text property to put on
+the killed text.
- (dynamic-completion-table FUN)
+*** The function yank-pop will now use a non-nil value of the variable
+`yank-undo-function' (instead of delete-region) to undo the previous
+yank or yank-pop command (or a call to insert-for-yank). The function
+insert-for-yank automatically sets that variable according to the UNDO
+element of the string argument's yank-handler text property if present.
-FUN is called with one argument, the string for which completion is required,
-and it should return an alist containing all the intended possible
-completions. This alist may be a full list of possible completions so that FUN
-can ignore the value of its argument. If completion is performed in the
-minibuffer, FUN will be called in the buffer from which the minibuffer was
-entered. dynamic-completion-table then computes the completion.
+*** The function `insert-for-yank' now supports strings where the
+`yank-handler' property does not span the first character of the
+string. The old behavior is available if you call
+`insert-for-yank-1' instead.
-+++
-** The new macro lazy-completion-table initializes a variable
-as a lazy completion table.
+*** The new function insert-for-yank normally works like `insert', but
+removes the text properties in the `yank-excluded-properties' list.
+However, the insertion of the text may be modified by a `yank-handler'
+text property.
- (lazy-completion-table VAR FUN &rest ARGS)
++++
+** An element of buffer-undo-list can now have the form (apply FUNNAME
+. ARGS), where FUNNAME is a symbol other than t or nil. That stands
+for a high-level change that should be undone by evaluating (apply
+FUNNAME ARGS).
-If the completion table VAR is used for the first time (e.g., by passing VAR
-as an argument to `try-completion'), the function FUN is called with arguments
-ARGS. FUN must return the completion table that will be stored in VAR. If
-completion is requested in the minibuffer, FUN will be called in the buffer
-from which the minibuffer was entered. The return value of
-`lazy-completion-table' must be used to initialize the value of VAR.
+These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS)
+which indicates that the change which took place was limited to the
+range BEG...END and increased the buffer size by DELTA.
+++
-** `minor-mode-list' now holds a list of minor mode commands.
+** If the buffer's undo list for the current command gets longer than
+undo-outer-limit, garbage collection empties it. This is to prevent
+it from using up the available memory and choking Emacs.
+++
-** The new function `modify-all-frames-parameters' modifies parameters
-for all (existing and future) frames.
+** Enhancements to process support
-+++
-** `sit-for' can now be called with args (SECONDS &optional NODISP).
+*** Function list-processes now has an optional argument; if non-nil,
+only the processes whose query-on-exit flag is set are listed.
-+++
-** New standard font-lock face `font-lock-preprocessor-face'.
+*** New set-process-query-on-exit-flag and process-query-on-exit-flag
+functions. The existing process-kill-without-query function is still
+supported, but new code should use the new functions.
+
+*** Function signal-process now accepts a process object or process
+name in addition to a process id to identify the signalled process.
+
+*** Processes now have an associated property list where programs can
+maintain process state and other per-process related information.
+
+The new functions process-get and process-put are used to access, add,
+and modify elements on this property list.
-+++
-** The macro `with-syntax-table' does not copy the table any more.
+The new low-level functions process-plist and set-process-plist are
+used to access and replace the entire property list of a process.
-+++
-** The variable `face-font-rescale-alist' specifies how much larger
-(or smaller) font we should use. For instance, if the value is
-'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10
-point, we actually use a font of 13 point if the font matches
-SOME-FONTNAME-PATTERN.
+*** Function accept-process-output now has an optional fourth arg
+`just-this-one'. If non-nil, only output from the specified process
+is handled, suspending output from other processes. If value is an
+integer, also inhibit running timers. This feature is generally not
+recommended, but may be necessary for specific applications, such as
+speech synthesis.
-+++
-** The function `number-sequence' returns a list of equally-separated
-numbers. For instance, (number-sequence 4 9) returns (4 5 6 7 8 9).
-By default, the separation is 1, but you can specify a different separation
-as the third argument. (number-sequence 1.5 6 2) returns (1.5 3.5 5.5).
+*** Adaptive read buffering of subprocess output.
-+++
-** `file-chase-links' now takes an optional second argument LIMIT which
-specifies the maximum number of links to chase through. If after that
-many iterations the file name obtained is still a symbolic link,
-`file-chase-links' returns it anyway.
+On some systems, when emacs reads the output from a subprocess, the
+output data is read in very small blocks, potentially resulting in
+very poor performance. This behavior can be remedied to some extent
+by setting the new variable process-adaptive-read-buffering to a
+non-nil value (the default), as it will automatically delay reading
+from such processes, to allowing them to produce more output before
+emacs tries to read it.
----
-** `set-fontset-font', `fontset-info', `fontset-font' now operate on
-the default fontset if the argument NAME is nil..
+*** The new function `call-process-shell-command' executes a shell
+command command synchronously in a separate process.
-+++
-** The escape sequence \s is now interpreted as a SPACE character,
-unless it is followed by a `-' in a character constant (e.g. ?\s-A),
-in which case it is still interpreted as the super modifier.
-In strings, \s is always interpreted as a space.
+*** The new function `process-file' is similar to `call-process', but
+obeys file handlers. The file handler is chosen based on
+default-directory.
-+++
-** New function `set-process-filter-multibyte' sets the multibyteness
-of a string given to a process's filter.
+*** The new function `set-process-filter-multibyte' sets the
+multibyteness of a string given to a process's filter.
-+++
-** New function `process-filter-multibyte-p' returns t if
-a string given to a process's filter is multibyte.
+*** The new function `process-filter-multibyte-p' returns t if a
+string given to a process's filter is multibyte.
-+++
-** A filter function of a process is called with a multibyte string if
-the filter's multibyteness is t. That multibyteness is decided by the
-value of `default-enable-multibyte-characters' when the process is
+*** A filter function of a process is called with a multibyte string
+if the filter's multibyteness is t. That multibyteness is decided by
+the value of `default-enable-multibyte-characters' when the process is
created and can be changed later by `set-process-filter-multibyte'.
-+++
-** If a process's coding system is raw-text or no-conversion and its
+*** If a process's coding system is raw-text or no-conversion and its
buffer is multibyte, the output of the process is at first converted
to multibyte by `string-to-multibyte' then inserted in the buffer.
Previously, it was converted to multibyte by `string-as-multibyte',
which was not compatible with the behavior of file reading.
+++
-** New function `string-to-multibyte' converts a unibyte string to a
-multibyte string with the same individual character codes.
+** Enhanced networking support.
-+++
-** New variables `gc-elapsed' and `gcs-done' provide extra information
-on garbage collection.
+*** There is a new `make-network-process' function which supports
+opening of stream and datagram connections to a server, as well as
+create a stream or datagram server inside emacs.
-+++
-** New function `decode-coding-inserted-region' decodes a region as if
-it is read from a file without decoding.
+- A server is started using :server t arg.
+- Datagram connection is selected using :type 'datagram arg.
+- A server can open on a random port using :service t arg.
+- Local sockets are supported using :family 'local arg.
+- Non-blocking connect is supported using :nowait t arg.
+- The process' property list may be initialized using :plist PLIST arg;
+ a copy of the server process' property list is automatically inherited
+ by new client processes created to handle incoming connections.
-+++
-** New function `locale-info' accesses locale information.
+To test for the availability of a given feature, use featurep like this:
+ (featurep 'make-network-process '(:type datagram))
-+++
-** `save-selected-window' now saves and restores the selected window
-of every frame. This way, it restores everything that can be changed
-by calling `select-window'.
+*** Original open-network-stream is now emulated using make-network-process.
----
-** `easy-menu-define' now allows you to use nil for the symbol name
-if you don't need to give the menu a name. If you install the menu
-into other keymaps right away (MAPS is non-nil), it usually doesn't
-need to have a name.
+*** New function open-network-stream-nowait.
-** Byte compiler changes:
+This function initiates a non-blocking connect and returns immediately
+without waiting for the connection to be established. It takes the
+filter and sentinel functions as arguments; when the non-blocking
+connect completes, the sentinel is called with a status string
+matching "open" or "failed".
----
-*** `(featurep 'xemacs)' is treated by the compiler as nil. This
-helps to avoid noisy compiler warnings in code meant to run under both
-Emacs and XEmacs and may sometimes make the result significantly more
-efficient. Since byte code from recent versions of XEmacs won't
-generally run in Emacs and vice versa, this optimization doesn't lose
-you anything.
+*** New function open-network-stream-server.
-+++
-*** You can avoid warnings for possibly-undefined symbols with a
-simple convention that the compiler understands. (This is mostly
-useful in code meant to be portable to different Emacs versions.)
-Write forms like the following, or code that macroexpands into such
-forms:
+This function creates a network server process for a TCP service.
+When a client connects to the specified service, a new subprocess
+is created to handle the new connection, and the sentinel function
+is called for the new process.
- (if (fboundp 'foo) <then> <else>)
- (if (boundp 'foo) <then> <else)
+*** New functions process-datagram-address and set-process-datagram-address.
-In the first case, using `foo' as a function inside the <then> form
-won't produce a warning if it's not defined as a function, and in the
-second case, using `foo' as a variable won't produce a warning if it's
-unbound. The test must be in exactly one of the above forms (after
-macro expansion), but such tests may be nested. Note that `when' and
-`unless' expand to `if', but `cond' doesn't.
+These functions are used with datagram-based network processes to get
+and set the current address of the remote partner.
-+++
-*** The new macro `with-no-warnings' suppresses all compiler warnings
-inside its body. In terms of execution, it is equivalent to `progn'.
+*** New function format-network-address.
-+++
-** The new translation table `translation-table-for-input'
-is used for customizing self-insertion. The character to
-be inserted is translated through it.
+This function reformats the lisp representation of a network address
+to a printable string. For example, an IP address A.B.C.D and port
+number P is represented as a five element vector [A B C D P], and the
+printable string returned for this vector is "A.B.C.D:P". See the doc
+string for other formatting options.
-+++
-** `load-history' can now have elements of the form (t . FUNNAME),
-which means FUNNAME was previously defined as an autoload (before the
-current file redefined it).
+*** By default, the function process-contact still returns (HOST SERVICE)
+for a network process. Using the new optional KEY arg, the complete list
+of network process properties or a specific property can be selected.
-+++
-** `load-history' now records (defun . FUNNAME) when a function is
-defined. For a variable, it records just the variable name.
+Using :local and :remote as the KEY, the address of the local or
+remote end-point is returned. An Inet address is represented as a 5
+element vector, where the first 4 elements contain the IP address and
+the fifth is the port number.
-+++
-** New Lisp library testcover.el works with edebug to help you determine
-whether you've tested all your Lisp code. Function testcover-start
-instruments all functions in a given file. Then test your code. Function
-testcover-mark-all adds overlay "splotches" to the Lisp file's buffer to
-show where coverage is lacking. Command testcover-next-mark (bind it to
-a key!) will move point forward to the next spot that has a splotch.
+*** Network processes can now be stopped and restarted with
+`stop-process' and `continue-process'. For a server process, no
+connections are accepted in the stopped state. For a client process,
+no input is received in the stopped state.
-*** Normally, a red splotch indicates the form was never completely evaluated;
-a brown splotch means it always evaluated to the same value. The red
-splotches are skipped for forms that can't possibly complete their evaluation,
-such as `error'. The brown splotches are skipped for forms that are expected
-to always evaluate to the same value, such as (setq x 14).
+*** New function network-interface-list.
-*** For difficult cases, you can add do-nothing macros to your code to help
-out the test coverage tool. The macro `noreturn' suppresses a red splotch.
-It is an error if the argument to `noreturn' does return. The macro 1value
-suppresses a brown splotch for its argument. This macro is a no-op except
-during test-coverage -- then it signals an error if the argument actually
-returns differing values.
+This function returns a list of network interface names and their
+current network addresses.
-+++
-** New function unsafep returns nil if the given Lisp form can't possibly
-do anything dangerous; otherwise it returns a reason why the form might be
-unsafe (calls dangerous function, alters global variable, etc).
+*** New function network-interface-info.
-+++
-** The new variable `print-continuous-numbering', when non-nil, says
-that successive calls to print functions should use the same
-numberings for circular structure references. This is only relevant
-when `print-circle' is non-nil.
+This function returns the network address, hardware address, current
+status, and other information about a specific network interface.
-When you bind `print-continuous-numbering' to t, you should
-also bind `print-number-table' to nil.
+*** The sentinel is now called when a network process is deleted with
+delete-process. The status message passed to the sentinel for a
+deleted network process is "deleted". The message passed to the
+sentinel when the connection is closed by the remote peer has been
+changed to "connection broken by remote peer".
+++
-** When using non-toolkit scroll bars with the default width,
-the scroll-bar-width frame parameter value is nil.
+** New function `force-window-update' can initiate a full redisplay of
+one or all windows. Normally, this is not needed as changes in window
+contents are detected automatically. However, certain implicit
+changes to mode lines, header lines, or display properties may require
+forcing an explicit window update.
+++
-** The new function copy-abbrev-table returns a new abbrev table that
-is a copy of a given abbrev table.
+** You can now make a window as short as one line.
+
+A window that is just one line tall does not display either a mode
+line or a header line, even if the variables `mode-line-format' and
+`header-line-format' call for them. A window that is two lines tall
+cannot display both a mode line and a header line at once; if the
+variables call for both, only the mode line actually appears.
+++
-** The option --script FILE runs Emacs in batch mode and loads FILE.
-It is useful for writing Emacs Lisp shell script files, because they
-can start with this line:
+** The line-move, scroll-up, and scroll-down functions will now
+modify the window vscroll to scroll through display rows that are
+taller that the height of the window, for example in the presense of
+large images. To disable this feature, Lisp code may bind the new
+variable `auto-window-vscroll' to nil.
- #!/usr/bin/emacs --script
++++
+** Function `compute-motion' now calculates the usable window
+width if the WIDTH argument is nil. If the TOPOS argument is nil,
+the usable window height and width is used.
+++
-** The option --directory DIR now modifies `load-path' immediately.
-Directories are added to the front of `load-path' in the order they
-appear on the command line. For example, with this command line:
+** Function pos-visible-in-window-p now returns the pixel coordinates
+and partial visiblity state of the corresponding row, if the PARTIALLY
+arg is non-nil.
- emacs -batch -L .. -L /tmp --eval "(require 'foo)"
++++
+** The new function `window-inside-edges' returns the edges of the
+actual text portion of the window, not including the scroll bar or
+divider line, the fringes, the display margins, the header line and
+the mode line.
-Emacs looks for library `foo' in the parent directory, then in /tmp, then
-in the other directories in `load-path'. (-L is short for --directory.)
++++
+** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
+return window edges in units of pixels, rather than columns and lines.
+++
-** A function's docstring can now hold the function's usage info on
-its last line. It should match the regexp "\n\n(fn.*)\\'".
+** The new macro `with-selected-window' temporarily switches the
+selected window without impacting the order of buffer-list.
----
-** New CCL functions `lookup-character' and `lookup-integer' access
-hash tables defined by the Lisp function `define-translation-hash-table'.
++++
+** `select-window' takes an optional second argument `norecord', like
+`switch-to-buffer'.
+++
-** The new function `minibufferp' returns non-nil if its optional buffer
-argument is a minibuffer. If the argument is omitted it defaults to
-the current buffer.
+** `save-selected-window' now saves and restores the selected window
+of every frame. This way, it restores everything that can be changed
+by calling `select-window'.
+++
-** There is a new Warnings facility; see the functions `warn'
-and `display-warning'.
+** The function `set-window-buffer' now has an optional third argument
+KEEP-MARGINS which will preserve the window's current margin, fringe,
+and scroll-bar settings if non-nil.
+++
-** The functions all-completions and try-completion now accept lists
-of strings as well as hash-tables additionally to alists, obarrays
-and functions. Furthermore, the function `test-completion' is now
-exported to Lisp. The keys in alists and hash tables may be either
-strings or symbols, which are automatically converted with to strings.
+** Customizable fringe bitmaps
----
-** When pure storage overflows while dumping, Emacs now prints how
-much pure storage it will approximately need.
+*** New function 'define-fringe-bitmap' can now be used to create new
+fringe bitmaps, as well as change the built-in fringe bitmaps.
-+++
-** The new variable `auto-coding-functions' lets you specify functions
-to examine a file being visited and deduce the proper coding system
-for it. (If the coding system is detected incorrectly for a specific
-file, you can put a `coding:' tags to override it.)
+To change a built-in bitmap, do (require 'fringe) and use the symbol
+identifing the bitmap such as `left-truncation or `continued-line'.
----
-** The new function `merge-coding-systems' fills in unspecified aspects
-of one coding system from another coding system.
+*** New function 'destroy-fringe-bitmap' may be used to destroy a
+previously created bitmap, or restore a built-in bitmap.
-+++
-** The variable `safe-local-eval-forms' specifies a list of forms that
-are ok to evaluate when they appear in an `eval' local variables
-specification. Normally Emacs asks for confirmation before evaluating
-such a form, but if the form appears in this list, no confirmation is
-needed.
+*** New function 'set-fringe-bitmap-face' can now be used to set a
+specific face to be used for a specific fringe bitmap. The face is
+automatically merged with the `fringe' face, so normally, the face
+should only specify the foreground color of the bitmap.
----
-** If a function has a non-nil `safe-local-eval-function' property,
-that means it is ok to evaluate some calls to that function when it
-appears in an `eval' local variables specification. If the property
-is t, then any form calling that function with constant arguments is
-ok. If the property is a function or list of functions, they are called
-with the form as argument, and if any returns t, the form is ok to call.
+*** There are new display properties, left-fringe and right-fringe,
+that can be used to show a specific bitmap in the left or right fringe
+bitmap of the display line.
-If the form is not "ok to call", that means Emacs asks for
-confirmation as before.
+Format is 'display '(left-fringe BITMAP [FACE]), where BITMAP is a
+symbol identifying a fringe bitmap, either built-in or defined with
+`define-fringe-bitmap', and FACE is an optional face name to be used
+for displaying the bitmap instead of the default `fringe' face.
+When specified, FACE is automatically merged with the `fringe' face.
+
+*** New function `fringe-bitmaps-at-pos' returns the current fringe
+bitmaps in the display line at a given buffer position.
+++
** Controlling the default left and right fringe widths.
fringe bitmaps is 8 pixels.
+++
-** Per-window fringes settings
+** Per-window fringe and scrollbar settings
-Windows can now have their own individual fringe widths and position
-settings.
+*** Windows can now have their own individual fringe widths and
+position settings.
To control the fringe widths of a window, either set the buffer-local
variables `left-fringe-width', `right-fringe-width', or call
displaying the buffer in a window, or use `set-window-buffer' to force
an update of the display margins.
-+++
-** Per-window vertical scroll-bar settings
-
-Windows can now have their own individual scroll-bar settings
+*** Windows can now have their own individual scroll-bar settings
controlling the width and position of scroll-bars.
To control the scroll-bar of a window, either set the buffer-local
of the display margins.
+++
-** The function `set-window-buffer' now has an optional third argument
-KEEP-MARGINS which will preserve the window's current margin, fringe,
-and scroll-bar settings if non-nil.
+** When using non-toolkit scroll bars with the default width,
+the scroll-bar-width frame parameter value is nil.
+++
-** Renamed hooks to better follow the naming convention:
-find-file-hooks to find-file-hook,
-find-file-not-found-hooks to find-file-not-found-functions,
-write-file-hooks to write-file-functions,
-write-contents-hooks to write-contents-functions,
-x-lost-selection-hooks to x-lost-selection-functions,
-x-sent-selection-hooks to x-sent-selection-functions.
-Marked local-write-file-hooks as obsolete (use the LOCAL arg of `add-hook').
+** Multiple overlay arrows can now be defined and managed via the new
+variable `overlay-arrow-variable-list'. It contains a list of
+varibles which contain overlay arrow position markers, including
+the original `overlay-arrow-position' variable.
+
+Each variable on this list may have individual `overlay-arrow-string'
+and `overlay-arrow-bitmap' properties that specify an overlay arrow
+string (for non-window terminals) or fringe bitmap (for window
+systems) to display at the corresponding overlay arrow position.
+If either property is not set, the default `overlay-arrow-string' or
+'overlay-arrow-fringe-bitmap' will be used.
+++
-** The new variable `delete-frame-functions' replaces `delete-frame-hook'.
-It was renamed to follow the naming conventions for abnormal hooks. The old
-name remains available as an alias, but has been marked obsolete.
+** New line-height and line-spacing properties for newline characters
+
+A newline may now have line-height and line-spacing text or overlay
+properties that control the height of the corresponding display row.
+
+If the line-height property value is t, the newline does not
+contribute to the height of the display row; instead the height of the
+newline glyph is reduced. Also, a line-spacing property on this
+newline is ignored. This can be used to tile small images or image
+slices without adding blank areas between the images.
+
+If the line-height property value is a positive integer, the value
+specifies the minimum line height in pixels. If necessary, the line
+height it increased by increasing the line's ascent.
+
+If the line-height property value is a float, the minimum line height
+is calculated by multiplying the default frame line height by the
+given value.
+
+If the line-height property value is a cons (FACE . RATIO), the
+minimum line height is calculated as RATIO * height of named FACE.
+RATIO is int or float. If FACE is t, it specifies the current face.
+
+If the line-height property value is a cons (nil . RATIO), the line
+height is calculated as RATIO * actual height of the line's contents.
+
+If the line-height value is a cons (HEIGHT . TOTAL), HEIGHT specifies
+the line height as described above, while TOTAL is any of the forms
+described above and specifies the total height of the line, causing a
+varying number of pixels to be inserted after the line to make it line
+exactly that many pixels high.
+
+If the line-spacing property value is an positive integer, the value
+is used as additional pixels to insert after the display line; this
+overrides the default frame line-spacing and any buffer local value of
+the line-spacing variable.
+
+If the line-spacing property may be a float or cons, the line spacing
+is calculated as specified above for the line-height property.
+++
-** The `read-file-name' function now takes an additional argument which
-specifies a predicate which the file name read must satify. The
-new variable `read-file-name-predicate' contains the predicate argument
-while reading the file name from the minibuffer; the predicate in this
-variable is used by read-file-name-internal to filter the completion list.
+** The buffer local line-spacing variable may now have a float value,
+which is used as a height relative to the default frame line height.
----
-** The new variable `read-file-name-function' can be used by lisp code
-to override the internal read-file-name function.
++++
+** Enhancements to stretch display properties
+
+The display property stretch specification form `(space PROPS)', where
+PROPS is a property list now allows pixel based width and height
+specifications, as well as enhanced horizontal text alignment.
+
+The value of these properties can now be a (primitive) expression
+which is evaluated during redisplay. The following expressions
+are supported:
+
+EXPR ::= NUM | (NUM) | UNIT | ELEM | POS | IMAGE | FORM
+NUM ::= INTEGER | FLOAT | SYMBOL
+UNIT ::= in | mm | cm | width | height
+ELEM ::= left-fringe | right-fringe | left-margin | right-margin
+ | scroll-bar | text
+POS ::= left | center | right
+FORM ::= (NUM . EXPR) | (OP EXPR ...)
+OP ::= + | -
+
+The form `NUM' specifies a fractional width or height of the default
+frame font size. The form `(NUM)' specifies an absolute number of
+pixels. If a symbol is specified, its buffer-local variable binding
+is used. The `in', `mm', and `cm' units specifies the number of
+pixels per inch, milli-meter, and centi-meter, resp. The `width' and
+`height' units correspond to the width and height of the current face
+font. An image specification corresponds to the width or height of
+the image.
+
+The `left-fringe', `right-fringe', `left-margin', `right-margin',
+`scroll-bar', and `text' elements specify to the width of the
+corresponding area of the window.
+
+The `left', `center', and `right' positions can be used with :align-to
+to specify a position relative to the left edge, center, or right edge
+of the text area. One of the above window elements (except `text')
+can also be used with :align-to to specify that the position is
+relative to the left edge of the given area. Once the base offset for
+a relative position has been set (by the first occurrence of one of
+these symbols), further occurences of these symbols are interpreted as
+the width of the area.
+
+For example, to align to the center of the left-margin, use
+ :align-to (+ left-margin (0.5 . left-margin))
+
+If no specific base offset is set for alignment, it is always relative
+to the left edge of the text area. For example, :align-to 0 in a
+header-line aligns with the first text column in the text area.
+
+The value of the form `(NUM . EXPR)' is the value of NUM multiplied by
+the value of the expression EXPR. For example, (2 . in) specifies a
+width of 2 inches, while (0.5 . IMAGE) specifies half the width (or
+height) of the specified image.
+
+The form `(+ EXPR ...)' adds up the value of the expressions.
+The form `(- EXPR ...)' negates or subtracts the value of the expressions.
+
++++
+** Support for displaying image slices
+
+*** New display property (slice X Y WIDTH HEIGHT) may be used with
+an image property to display only a specific slice of the image.
+
+*** Function insert-image has new optional fourth arg to
+specify image slice (X Y WIDTH HEIGHT).
+
+*** New function insert-sliced-image inserts a given image as a
+specified number of evenly sized slices (rows x columns).
+
++++
+** Images may now have an associated image map via the :map property.
+
+An image map is an alist where each element has the format (AREA ID PLIST).
+An AREA is specified as either a rectangle, a circle, or a polygon:
+A rectangle is a cons (rect . ((x0 . y0) . (x1 . y1))) specifying the
+pixel coordinates of the upper left and bottom right corners.
+A circle is a cons (circle . ((x0 . y0) . r)) specifying the center
+and the radius of the circle; r may be a float or integer.
+A polygon is a cons (poly . [x0 y0 x1 y1 ...]) where each pair in the
+vector describes one corner in the polygon.
+
+When the mouse pointer is above a hot-spot area of an image, the
+PLIST of that hot-spot is consulted; if it contains a `help-echo'
+property it defines a tool-tip for the hot-spot, and if it contains
+a `pointer' property, it defines the shape of the mouse cursor when
+it is over the hot-spot. See the variable 'void-area-text-pointer'
+for possible pointer shapes.
+
+When you click the mouse when the mouse pointer is over a hot-spot,
+an event is composed by combining the ID of the hot-spot with the
+mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'.
+
++++ (lispref)
+??? (man)
+** The mouse pointer shape in void text areas (i.e. after the end of a
+line or below the last line in the buffer) of the text window is now
+controlled by the new variable `void-text-area-pointer'. The default
+is to use the `arrow' (non-text) pointer. Other choices are `text'
+(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'.
+
++++
+** The mouse pointer shape over an image can now be controlled by the
+:pointer image property.
+
++++
+** Lisp code can now test if a given buffer position is inside a
+clickable link with the new function `mouse-on-link-p'. This is the
+function used by the new `mouse-1-click-follows-link' functionality.
+
++++
+** The mouse pointer shape over ordinary text or images may now be
+controlled/overriden via the `pointer' text property.
+
+** Mouse event enhancements:
+
++++
+*** Mouse clicks on fringes now generates left-fringe or right-fringes
+events, rather than a text area click event.
+
++++
+*** Mouse clicks in the left and right marginal areas now includes a
+sensible buffer position corresponding to the first character in the
+corresponding text row.
+
++++
+*** Function `mouse-set-point' now works for events outside text area.
+
++++
+*** Mouse events now includes buffer position for all event types.
+
++++
+*** `posn-point' now returns buffer position for non-text area events.
+
++++
+*** New function `posn-area' returns window area clicked on (nil means
+text area).
+
++++
+*** Mouse events include actual glyph column and row for all event types.
+
++++
+*** New function `posn-actual-col-row' returns actual glyph coordinates.
+++
-** The new variable `read-file-name-completion-ignore-case' specifies
-whether completion ignores case when reading a file name with the
-`read-file-name' function.
+*** Mouse events may now include image object in addition to string object.
+++
-** The new function `read-directory-name' can be used instead of
-`read-file-name' to read a directory name; when used, completion
-will only show directories.
+*** Mouse events include relative x and y pixel coordinates relative to
+the top left corner of the object (image or character) clicked on.
+++
-** The new function `file-remote-p' tests a file name and returns
-non-nil if it specifies a remote file (one that Emacs accesses using
-its own special methods and not directly through the file system).
-The value in that case is an identifier for the remote file system.
+*** Mouse events include the pixel width and height of the object
+(image or character) clicked on.
----
-** When a Lisp file uses CL functions at run-time, compiling the file
-now issues warnings about these calls, unless the file performs
-(require 'cl) when loaded.
++++
+*** New functions 'posn-object', 'posn-object-x-y', and
+'posn-object-width-height' return the image or string object of a mouse
+click, the x and y pixel coordinates relative to the top left corner
+of that object, and the total width and height of that object.
+++
-** The `defmacro' form may contain declarations specifying how to
-indent the macro in Lisp mode and how to debug it with Edebug. The
-syntax of defmacro has been extended to
+** At the end of a command, point moves out from within invisible
+text, in the same way it moves out from within text covered by an
+image or composition property.
- (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
+This makes it generally unnecessary to mark invisible text as intangible.
+This is particularly good because the intangible property often has
+unexpected side-effects since the property applies to everything
+(including `goto-char', ...) whereas this new code is only run after
+post-command-hook and thus does not care about intermediate states.
-DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The
-declaration specifiers supported are:
++++
+** Normally, the cursor is displayed at the end of any overlay and
+text property string that may be present at the current window
+position. The cursor may now be placed on any character of such
+strings by giving that character a non-nil `cursor' text property.
-(indent INDENT)
- Set NAME's `lisp-indent-function' property to INDENT.
++++
+** The display space :width and :align-to text properties are now
+supported on text terminals.
-(edebug DEBUG)
- Set NAME's `edebug-form-spec' property to DEBUG. (This is
- equivalent to writing a `def-edebug-spec' for the macro.
++++
+** Arguments for remove-overlays are now optional, so that you can
+remove all overlays in the buffer by just calling (remove-overlay).
+++
-** Interactive commands can be remapped through keymaps.
+** New variable char-property-alias-alist.
-This is an alternative to using defadvice or substitute-key-definition
-to modify the behavior of a key binding using the normal keymap
-binding and lookup functionality.
+This variable allows you to create alternative names for text
+properties. It works at the same level as `default-text-properties',
+although it applies to overlays as well. This variable was introduced
+to implement the `font-lock-face' property.
-When a key sequence is bound to a command, and that command is
-remapped to another command, that command is run instead of the
-original command.
++++
+** New function `get-char-property-and-overlay' accepts the same
+arguments as `get-char-property' and returns a cons whose car is the
+return value of `get-char-property' called with those arguments and
+whose cdr is the overlay in which the property was found, or nil if
+it was found as a text property or not found at all.
-Example:
-Suppose that minor mode my-mode has defined the commands
-my-kill-line and my-kill-word, and it wants C-k (and any other key
-bound to kill-line) to run the command my-kill-line instead of
-kill-line, and likewise it wants to run my-kill-word instead of
-kill-word.
++++
+** The new frame parameter `tty-color-mode' specifies the mode to use
+for color support on character terminal frames. Its value can be a
+number of colors to support, or a symbol. See the Emacs Lisp
+Reference manual for more detailed documentation.
-Instead of rebinding C-k and the other keys in the minor mode map,
-command remapping allows you to directly map kill-line into
-my-kill-line and kill-word into my-kill-word through the minor mode
-map using define-key:
++++
+** The new face attribute `min-colors' can be used to tailor the face
+color to the number of colors supported by a display, and define the
+foreground and background colors accordingly so that they look best on
+a terminal that supports at least this many colors. This is now the
+preferred method for defining default faces in a way that makes a good
+use of the capabilities of the display.
- (define-key my-mode-map [remap kill-line] 'my-kill-line)
- (define-key my-mode-map [remap kill-word] 'my-kill-word)
++++
+** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able
+to display CHAR. More precisely, if the selected frame's fontset has
+a font to display the character set that CHAR belongs to.
-Now, when my-mode is enabled, and the user enters C-k or M-d,
-the commands my-kill-line and my-kill-word are run.
+Fontsets can specify a font on a per-character basis; when the fontset
+does that, this value may not be accurate.
-Notice that only one level of remapping is supported. In the above
-example, this means that if my-kill-line is remapped to other-kill,
-then C-k still runs my-kill-line.
++++
+** New function display-supports-face-attributes-p may be used to test
+whether a given set of face attributes is actually displayable.
-The following changes have been made to provide command remapping:
+A new predicate `supports' has also been added to the `defface' face
+specification language, which can be used to do this test for faces
+defined with defface.
-- Command remappings are defined using `define-key' with a prefix-key
- `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD
- to definition DEF in keymap MAP. The definition is not limited to
- another command; it can be anything accepted for a normal binding.
+---
+** The special treatment of faces whose names are of the form `fg:COLOR'
+or `bg:COLOR' has been removed. Lisp programs should use the
+`defface' facility for defining faces with specific colors, or use
+the feature of specifying the face attributes :foreground and :background
+directly in the `face' property instead of using a named face.
-- The new function `command-remapping' returns the binding for a
- remapped command in the current keymaps, or nil if not remapped.
++++
+** The first face specification element in a defface can specify
+`default' instead of frame classification. Then its attributes act as
+defaults that apply to all the subsequent cases (and may be overridden
+by them).
-- key-binding now remaps interactive commands unless the optional
- third argument NO-REMAP is non-nil.
++++
+** The variable `face-font-rescale-alist' specifies how much larger
+(or smaller) font we should use. For instance, if the value is
+'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10
+point, we actually use a font of 13 point if the font matches
+SOME-FONTNAME-PATTERN.
-- where-is-internal now returns nil for a remapped command (e.g.
- kill-line if my-mode is enabled), and the actual key binding for
- the command it is remapped to (e.g. C-k for my-kill-line).
- It also has a new optional fifth argument, NO-REMAP, which inhibits
- remapping if non-nil (e.g. it returns C-k for kill-line and
- <kill-line> for my-kill-line).
+---
+** `set-fontset-font', `fontset-info', `fontset-font' now operate on
+the default fontset if the argument NAME is nil..
-- The new variable `this-original-command' contains the original
- command before remapping. It is equal to `this-command' when the
- command was not remapped.
+---
+** The function face-differs-from-default-p now truly checks whether the
+given face displays differently from the default face or not (previously
+it did only a very cursory check).
+++
-** New variable emulation-mode-map-alists.
+** face-attribute, face-foreground, face-background, and face-stipple now
+accept a new optional argument, INHERIT, which controls how face
+inheritance is used when determining the value of a face attribute.
-Lisp packages using many minor mode keymaps can now maintain their own
-keymap alist separate from minor-mode-map-alist by adding their keymap
-alist to this list.
++++
+** New functions face-attribute-relative-p and merge-face-attribute
+help with handling relative face attributes.
+++
-** Atomic change groups.
+** The priority of faces in an :inherit attribute face-list is reversed.
+If a face contains an :inherit attribute with a list of faces, earlier
+faces in the list override later faces in the list; in previous releases
+of Emacs, the order was the opposite. This change was made so that
+:inherit face-lists operate identically to face-lists in text `face'
+properties.
-To perform some changes in the current buffer "atomically" so that
-they either all succeed or are all undone, use `atomic-change-group'
-around the code that makes changes. For instance:
++++
+** New standard font-lock face `font-lock-preprocessor-face'.
- (atomic-change-group
- (insert foo)
- (delete-region x y))
++++
+** New special text property `font-lock-face'.
-If an error (or other nonlocal exit) occurs inside the body of
-`atomic-change-group', it unmakes all the changes in that buffer that
-were during the execution of the body. The change group has no effect
-on any other buffers--any such changes remain.
+This property acts like the `face' property, but it is controlled by
+M-x font-lock-mode. It is not, strictly speaking, a builtin text
+property. Instead, it is implemented inside font-core.el, using the
+new variable `char-property-alias-alist'.
-If you need something more sophisticated, you can directly call the
-lower-level functions that `atomic-change-group' uses. Here is how.
+---
+** jit-lock obeys a new text-property `jit-lock-defer-multiline'.
+If a piece of text with that property gets contextually refontified
+(see jit-lock-defer-contextually), then all of that text will
+be refontified. This is useful when the syntax of a textual element
+depends on text several lines further down (and when font-lock-multiline
+is not appropriate to solve that problem). For example in Perl:
-To set up a change group for one buffer, call `prepare-change-group'.
-Specify the buffer as argument; it defaults to the current buffer.
-This function returns a "handle" for the change group. You must save
-the handle to activate the change group and then finish it.
+ s{
+ foo
+ }{
+ bar
+ }e
-Before you change the buffer again, you must activate the change
-group. Pass the handle to `activate-change-group' afterward to
-do this.
+Adding/removing the last `e' changes the `bar' from being a piece of
+text to being a piece of code, so you'd put a jit-lock-defer-multiline
+property over the second half of the command to force (deferred)
+refontification of `bar' whenever the `e' is added/removed.
-After you make the changes, you must finish the change group. You can
-either accept the changes or cancel them all. Call
-`accept-change-group' to accept the changes in the group as final;
-call `cancel-change-group' to undo them all.
++++
+** font-lock can manage arbitrary text-properties beside `face'.
+*** the FACENAME returned in font-lock-keywords can be a list
+of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set
+other properties than `face'.
+*** font-lock-extra-managed-props can be set to make sure those extra
+properties are automatically cleaned up by font-lock.
-You should use `unwind-protect' to make sure the group is always
-finished. The call to `activate-change-group' should be inside the
-`unwind-protect', in case the user types C-g just after it runs.
-(This is one reason why `prepare-change-group' and
-`activate-change-group' are separate functions.) Once you finish the
-group, don't use the handle again--don't try to finish the same group
-twice.
+---
+** The precedence of file-name-handlers has been changed.
+Instead of blindly choosing the first handler that matches,
+find-file-name-handler now gives precedence to a file-name handler
+that matches near the end of the file name. More specifically, the
+handler whose (match-beginning 0) is the largest is chosen.
+In case of ties, the old "first matched" rule applies.
-To make a multibuffer change group, call `prepare-change-group' once
-for each buffer you want to cover, then use `nconc' to combine the
-returned values, like this:
++++
+** A file name handler can declare which operations it handles.
- (nconc (prepare-change-group buffer-1)
- (prepare-change-group buffer-2))
+You do this by putting an `operation' property on the handler name
+symbol. The property value should be a list of the operations that
+the handler really handles. It won't be called for any other
+operations.
-You can then activate the multibuffer change group with a single call
-to `activate-change-group', and finish it with a single call to
-`accept-change-group' or `cancel-change-group'.
+This is useful for autoloaded handlers, to prevent them from being
+autoloaded when not really necessary.
-Nested use of several change groups for the same buffer works as you
-would expect. Non-nested use of change groups for the same buffer
-will lead to undesirable results, so don't let it happen; the first
-change group you start for any given buffer should be the last one
-finished.
++++
+** `set-auto-mode' now gives the interpreter magic line (if present)
+precedence over the file name. Likewise an <?xml or <!DOCTYPE declaration
+will give the buffer XML or SGML mode, based on the new var
+`magic-mode-alist'.
+++
-** New variable char-property-alias-alist.
+** Major mode functions now run the new normal hook
+`after-change-major-mode-hook', at their very end, after the mode hooks.
-This variable allows you to create alternative names for text
-properties. It works at the same level as `default-text-properties',
-although it applies to overlays as well. This variable was introduced
-to implement the `font-lock-face' property.
+---
+** If a major mode function has a non-nil `no-clone-indirect'
+property, `clone-indirect-buffer' signals an error if you use
+it in that buffer.
+++
-** New special text property `font-lock-face'.
-
-This property acts like the `face' property, but it is controlled by
-M-x font-lock-mode. It is not, strictly speaking, a builtin text
-property. Instead, it is implemented inside font-core.el, using the
-new variable `char-property-alias-alist'.
+** Major modes can define `eldoc-documentation-function'
+locally to provide Eldoc functionality by some method appropriate to
+the language.
+++
-** New function remove-list-of-text-properties.
+** define-derived-mode by default creates a new empty abbrev table.
+It does not copy abbrevs from the parent mode's abbrev table.
-The new function `remove-list-of-text-properties' is almost the same
-as `remove-text-properties'. The only difference is that it takes
-a list of property names as argument rather than a property list.
++++
+** define-minor-mode now accepts arbitrary additional keyword arguments
+and simply passes them to defcustom, if applicable.
+++
-** New function insert-for-yank.
+** The new function `run-mode-hooks' and the new macro `delay-mode-hooks'
+are used by define-derived-mode to make sure the mode hook for the
+parent mode is run at the end of the child mode.
-This function normally works like `insert' but removes the text
-properties in the `yank-excluded-properties' list. However, if the
-inserted text has a `yank-handler' text property on the first
-character of the string, the insertion of the text may be modified in
-a number of ways. See the description of `yank-handler' below.
++++
+** `minor-mode-list' now holds a list of minor mode commands.
+++
-** New function insert-buffer-substring-as-yank.
+** Both the variable and the function `disabled-command-hook' have
+been renamed to `disabled-command-function'. The variable
+`disabled-command-hook' has been kept as an obsolete alias.
-This function works like `insert-buffer-substring', but removes the
-text properties in the `yank-excluded-properties' list.
++++
+** The function `eql' is now available without requiring the CL package.
+++
-** New function insert-buffer-substring-no-properties.
+** If optional third argument APPEND to `add-to-list' is non-nil, a
+new element gets added at the end of the list instead of at the
+beginning. This change actually occurred in Emacs-21.1, but was not
+documented.
-This function is like insert-buffer-substring, but removes all
-text properties from the inserted substring.
++++
+** The escape sequence \s is now interpreted as a SPACE character,
+unless it is followed by a `-' in a character constant (e.g. ?\s-A),
+in which case it is still interpreted as the super modifier.
+In strings, \s is always interpreted as a space.
+++
-** New `yank-handler' text property may be used to control how
-previously killed text on the kill-ring is reinserted.
+** A hex escape in a string forces the string to be multibyte.
+An octal escape makes it unibyte.
-The value of the yank-handler property must be a list with one to four
-elements with the following format:
- (FUNCTION PARAM NOEXCLUDE UNDO).
++++
+** `split-string' now includes null substrings in the returned list if
+the optional argument SEPARATORS is non-nil and there are matches for
+SEPARATORS at the beginning or end of the string. If SEPARATORS is
+nil, or if the new optional third argument OMIT-NULLS is non-nil, all
+empty matches are omitted from the returned list.
-The `insert-for-yank' function looks for a yank-handler property on
-the first character on its string argument (typically the first
-element on the kill-ring). If a yank-handler property is found,
-the normal behavior of `insert-for-yank' is modified in various ways:
++++
+** New function `string-to-multibyte' converts a unibyte string to a
+multibyte string with the same individual character codes.
- When FUNCTION is present and non-nil, it is called instead of `insert'
-to insert the string. FUNCTION takes one argument--the object to insert.
- If PARAM is present and non-nil, it replaces STRING as the object
-passed to FUNCTION (or `insert'); for example, if FUNCTION is
-`yank-rectangle', PARAM should be a list of strings to insert as a
-rectangle.
- If NOEXCLUDE is present and non-nil, the normal removal of the
-yank-excluded-properties is not performed; instead FUNCTION is
-responsible for removing those properties. This may be necessary
-if FUNCTION adjusts point before or after inserting the object.
- If UNDO is present and non-nil, it is a function that will be called
-by `yank-pop' to undo the insertion of the current object. It is
-called with two arguments, the start and end of the current region.
-FUNCTION may set `yank-undo-function' to override the UNDO value.
++++
+** The function `number-sequence' returns a list of equally-separated
+numbers. For instance, (number-sequence 4 9) returns (4 5 6 7 8 9).
+By default, the separation is 1, but you can specify a different separation
+as the third argument. (number-sequence 1.5 6 2) returns (1.5 3.5 5.5).
+++
-*** The functions kill-new, kill-append, and kill-region now have an
-optional argument to specify the yank-handler text property to put on
-the killed text.
+** `sit-for' can now be called with args (SECONDS &optional NODISP).
+++
-*** The function yank-pop will now use a non-nil value of the variable
-`yank-undo-function' (instead of delete-region) to undo the previous
-yank or yank-pop command (or a call to insert-for-yank). The function
-insert-for-yank automatically sets that variable according to the UNDO
-element of the string argument's yank-handler text property if present.
+** A function's docstring can now hold the function's usage info on
+its last line. It should match the regexp "\n\n(fn.*)\\'".
+++
-** New function display-supports-face-attributes-p may be used to test
-whether a given set of face attributes is actually displayable.
+** The `defmacro' form may contain declarations specifying how to
+indent the macro in Lisp mode and how to debug it with Edebug. The
+syntax of defmacro has been extended to
-A new predicate `supports' has also been added to the `defface' face
-specification language, which can be used to do this test for faces
-defined with defface.
+ (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
----
-** The function face-differs-from-default-p now truly checks whether the
-given face displays differently from the default face or not (previously
-it did only a very cursory check).
+DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The
+declaration specifiers supported are:
-+++
-** face-attribute, face-foreground, face-background, and face-stipple now
-accept a new optional argument, INHERIT, which controls how face
-inheritance is used when determining the value of a face attribute.
+(indent INDENT)
+ Set NAME's `lisp-indent-function' property to INDENT.
-+++
-** New functions face-attribute-relative-p and merge-face-attribute
-help with handling relative face attributes.
+(edebug DEBUG)
+ Set NAME's `edebug-form-spec' property to DEBUG. (This is
+ equivalent to writing a `def-edebug-spec' for the macro.
+++
-** The priority of faces in an :inherit attribute face-list is reversed.
-If a face contains an :inherit attribute with a list of faces, earlier
-faces in the list override later faces in the list; in previous releases
-of Emacs, the order was the opposite. This change was made so that
-:inherit face-lists operate identically to face-lists in text `face'
-properties.
+** The functions all-completions and try-completion now accept lists
+of strings as well as hash-tables additionally to alists, obarrays
+and functions. Furthermore, the function `test-completion' is now
+exported to Lisp. The keys in alists and hash tables may be either
+strings or symbols, which are automatically converted with to strings.
+++
-** Enhancements to process support
+** The new macro dynamic-completion-table supports using functions
+as a dynamic completion table.
-*** Function list-processes now has an optional argument; if non-nil,
-only the processes whose query-on-exit flag is set are listed.
+ (dynamic-completion-table FUN)
-*** New set-process-query-on-exit-flag and process-query-on-exit-flag
-functions. The existing process-kill-without-query function is still
-supported, but new code should use the new functions.
+FUN is called with one argument, the string for which completion is required,
+and it should return an alist containing all the intended possible
+completions. This alist may be a full list of possible completions so that FUN
+can ignore the value of its argument. If completion is performed in the
+minibuffer, FUN will be called in the buffer from which the minibuffer was
+entered. dynamic-completion-table then computes the completion.
-*** Function signal-process now accepts a process object or process
-name in addition to a process id to identify the signalled process.
++++
+** The new macro lazy-completion-table initializes a variable
+as a lazy completion table.
-*** Processes now have an associated property list where programs can
-maintain process state and other per-process related information.
+ (lazy-completion-table VAR FUN &rest ARGS)
-The new functions process-get and process-put are used to access, add,
-and modify elements on this property list.
+If the completion table VAR is used for the first time (e.g., by passing VAR
+as an argument to `try-completion'), the function FUN is called with arguments
+ARGS. FUN must return the completion table that will be stored in VAR. If
+completion is requested in the minibuffer, FUN will be called in the buffer
+from which the minibuffer was entered. The return value of
+`lazy-completion-table' must be used to initialize the value of VAR.
-The new low-level functions process-plist and set-process-plist are
-used to access and replace the entire property list of a process.
++++
+** `load-history' can now have elements of the form (t . FUNNAME),
+which means FUNNAME was previously defined as an autoload (before the
+current file redefined it).
-*** Function accept-process-output now has an optional fourth arg
-`just-this-one'. If non-nil, only output from the specified process
-is handled, suspending output from other processes. If value is an
-integer, also inhibit running timers. This feature is generally not
-recommended, but may be necessary for specific applications, such as
-speech synthesis.
++++
+** `load-history' now records (defun . FUNNAME) when a function is
+defined. For a variable, it records just the variable name.
---
-*** Adaptive read buffering of subprocess output.
+** The variable `recursive-load-depth-limit' has been deleted.
+Emacs now signals an error if the same file is loaded with more
+than 3 levels of nesting.
-On some systems, when emacs reads the output from a subprocess, the
-output data is read in very small blocks, potentially resulting in
-very poor performance. This behavior can be remedied to some extent
-by setting the new variable process-adaptive-read-buffering to a
-non-nil value (the default), as it will automatically delay reading
-from such processes, to allowing them to produce more output before
-emacs tries to read it.
++++
+** The function symbol-file can now search specifically for function or
+variable definitions.
+++
-** Enhanced networking support.
+** `provide' and `featurep' now accept an optional second argument
+to test/provide subfeatures. Also `provide' now checks `after-load-alist'
+and runs any code associated with the provided feature.
-*** There is a new `make-network-process' function which supports
-opening of stream and datagram connections to a server, as well as
-create a stream or datagram server inside emacs.
++++
+** `declare' is now a macro. This change was made mostly for
+documentation purposes and should have no real effect on Lisp code.
-- A server is started using :server t arg.
-- Datagram connection is selected using :type 'datagram arg.
-- A server can open on a random port using :service t arg.
-- Local sockets are supported using :family 'local arg.
-- Non-blocking connect is supported using :nowait t arg.
-- The process' property list may be initialized using :plist PLIST arg;
- a copy of the server process' property list is automatically inherited
- by new client processes created to handle incoming connections.
++++
+** Byte compiler changes:
-To test for the availability of a given feature, use featurep like this:
- (featurep 'make-network-process '(:type datagram))
+*** The byte-compiler now displays the actual line and character
+position of errors, where possible. Additionally, the form of its
+warning and error messages have been brought more in line with the
+output of other GNU tools.
-*** Original open-network-stream is now emulated using make-network-process.
+*** The new macro `with-no-warnings' suppresses all compiler warnings
+inside its body. In terms of execution, it is equivalent to `progn'.
-*** New function open-network-stream-nowait.
+*** You can avoid warnings for possibly-undefined symbols with a
+simple convention that the compiler understands. (This is mostly
+useful in code meant to be portable to different Emacs versions.)
+Write forms like the following, or code that macroexpands into such
+forms:
-This function initiates a non-blocking connect and returns immediately
-without waiting for the connection to be established. It takes the
-filter and sentinel functions as arguments; when the non-blocking
-connect completes, the sentinel is called with a status string
-matching "open" or "failed".
+ (if (fboundp 'foo) <then> <else>)
+ (if (boundp 'foo) <then> <else)
-*** New function open-network-stream-server.
+In the first case, using `foo' as a function inside the <then> form
+won't produce a warning if it's not defined as a function, and in the
+second case, using `foo' as a variable won't produce a warning if it's
+unbound. The test must be in exactly one of the above forms (after
+macro expansion), but such tests may be nested. Note that `when' and
+`unless' expand to `if', but `cond' doesn't.
-This function creates a network server process for a TCP service.
-When a client connects to the specified service, a new subprocess
-is created to handle the new connection, and the sentinel function
-is called for the new process.
+*** `(featurep 'xemacs)' is treated by the compiler as nil. This
+helps to avoid noisy compiler warnings in code meant to run under both
+Emacs and XEmacs and may sometimes make the result significantly more
+efficient. Since byte code from recent versions of XEmacs won't
+generally run in Emacs and vice versa, this optimization doesn't lose
+you anything.
+
+*** The local variable `no-byte-compile' in elisp files is now obeyed.
+
+---
+** When a Lisp file uses CL functions at run-time, compiling the file
+now issues warnings about these calls, unless the file performs
+(require 'cl) when loaded.
+
++++
+** New function unsafep returns nil if the given Lisp form can't possibly
+do anything dangerous; otherwise it returns a reason why the form might be
+unsafe (calls dangerous function, alters global variable, etc).
-*** New functions process-datagram-address and set-process-datagram-address.
++++
+** There is a new Warnings facility; see the functions `warn'
+and `display-warning'.
-These functions are used with datagram-based network processes to get
-and set the current address of the remote partner.
+---
+** VC changes for backends:
+*** (vc-switches BACKEND OPERATION) is a new function for use by backends.
+*** The new `find-version' backend function replaces the `destfile'
+parameter of the `checkout' backend function.
+Old code still works thanks to a default `find-version' behavior that
+uses the old `destfile' parameter.
-*** New function format-network-address.
++++
+** Already true in Emacs 21.1, but not emphasized clearly enough:
-This function reformats the lisp representation of a network address
-to a printable string. For example, an IP address A.B.C.D and port
-number P is represented as a five element vector [A B C D P], and the
-printable string returned for this vector is "A.B.C.D:P". See the doc
-string for other formatting options.
+Multibyte buffers can now faithfully record all 256 character codes
+from 0 to 255. As a result, most of the past reasons to use unibyte
+buffers no longer exist. We only know of three reasons to use them
+now:
-*** By default, the function process-contact still returns (HOST SERVICE)
-for a network process. Using the new optional KEY arg, the complete list
-of network process properties or a specific property can be selected.
+1. If you prefer to use unibyte text all of the time.
-Using :local and :remote as the KEY, the address of the local or
-remote end-point is returned. An Inet address is represented as a 5
-element vector, where the first 4 elements contain the IP address and
-the fifth is the port number.
+2. For reading files into temporary buffers, when you want to avoid
+the time it takes to convert the format.
-*** Network processes can now be stopped and restarted with
-`stop-process' and `continue-process'. For a server process, no
-connections are accepted in the stopped state. For a client process,
-no input is received in the stopped state.
+3. For binary files where format conversion would be pointless and
+wasteful.
-*** New function network-interface-list.
+---
+** set-buffer-file-coding-system now takes an additional argument,
+NOMODIFY. If it is non-nil, it means don't mark the buffer modified.
-This function returns a list of network interface names and their
-current network addresses.
++++
+** The new variable `auto-coding-functions' lets you specify functions
+to examine a file being visited and deduce the proper coding system
+for it. (If the coding system is detected incorrectly for a specific
+file, you can put a `coding:' tags to override it.)
-*** New function network-interface-info.
+---
+** The new function `merge-coding-systems' fills in unspecified aspects
+of one coding system from another coding system.
-This function returns the network address, hardware address, current
-status, and other information about a specific network interface.
+---
+** New coding system property `mime-text-unsuitable' indicates that
+the coding system's `mime-charset' is not suitable for MIME text
+parts, e.g. utf-16.
+++
-** New function copy-tree.
+** New function `decode-coding-inserted-region' decodes a region as if
+it is read from a file without decoding.
+++
-** New function substring-no-properties.
+** Function `translate-region' accepts also a char-table as TABLE
+argument.
+++
-** New function minibuffer-selected-window.
+** The new translation table `translation-table-for-input'
+is used for customizing self-insertion. The character to
+be inserted is translated through it.
-+++
-** New function `call-process-shell-command'.
+---
+** New CCL functions `lookup-character' and `lookup-integer' access
+hash tables defined by the Lisp function `define-translation-hash-table'.
+++
-** New function `process-file'.
-
-This is similar to `call-process', but obeys file handlers. The file
-handler is chosen based on default-directory.
+** The flags, width, and precision options for %-specifications in function
+`format' are now documented. Some flags that were accepted but not
+implemented (such as "*") are no longer accepted.
---
-** The dummy function keys made by easymenu
-are now always lower case. If you specify the
-menu item name "Ada", for instance, it uses `ada'
-as the "key" bound by that key binding.
+** New function `redirect-debugging-output' can be used to redirect
+debugging output on the stderr file handle to a file.
-This is relevant only if Lisp code looks for
-the bindings that were made with easymenu.
++++
+** `makehash' is now obsolete. Use `make-hash-table' instead.
+++
-** The function `commandp' takes an additional optional
-argument. If it is non-nil, then `commandp' checks
-for a function that could be called with `call-interactively',
-and does not return t for keyboard macros.
+** The macro `with-syntax-table' does not copy the table any more.
----
-** master-mode.el implements a minor mode for scrolling a slave
-buffer without leaving your current buffer, the master buffer.
++++
+** New variables `gc-elapsed' and `gcs-done' provide extra information
+on garbage collection.
-It can be used by sql.el, for example: the SQL buffer is the master
-and its SQLi buffer is the slave. This allows you to scroll the SQLi
-buffer containing the output from the SQL buffer containing the
-commands.
++++
+** New function `locale-info' accesses locale information.
-This is how to use sql.el and master.el together: the variable
-sql-buffer contains the slave buffer. It is a local variable in the
-SQL buffer.
++++
+** The new variable `print-continuous-numbering', when non-nil, says
+that successive calls to print functions should use the same
+numberings for circular structure references. This is only relevant
+when `print-circle' is non-nil.
-(add-hook 'sql-mode-hook
- (function (lambda ()
- (master-mode t)
- (master-set-slave sql-buffer))))
-(add-hook 'sql-set-sqli-hook
- (function (lambda ()
- (master-set-slave sql-buffer))))
+When you bind `print-continuous-numbering' to t, you should
+also bind `print-number-table' to nil.
+
+---
+** When pure storage overflows while dumping, Emacs now prints how
+much pure storage it will approximately need.
+++
** File local variables.
properties--any specified text properties are discarded.
+++
-** New function window-body-height.
-
-This is like window-height but does not count the mode line
-or the header line.
+** The variable `safe-local-eval-forms' specifies a list of forms that
+are ok to evaluate when they appear in an `eval' local variables
+specification. Normally Emacs asks for confirmation before evaluating
+such a form, but if the form appears in this list, no confirmation is
+needed.
-+++
-** New function format-mode-line.
+---
+** If a function has a non-nil `safe-local-eval-function' property,
+that means it is ok to evaluate some calls to that function when it
+appears in an `eval' local variables specification. If the property
+is t, then any form calling that function with constant arguments is
+ok. If the property is a function or list of functions, they are called
+with the form as argument, and if any returns t, the form is ok to call.
-This returns the mode-line or header-line of the selected (or a
-specified) window as a string with or without text properties.
+If the form is not "ok to call", that means Emacs asks for
+confirmation as before.
+++
-** Functions `get' and `plist-get' no longer signals an error for
-a malformed property list. They also detect cyclic lists.
+** Renamed hooks to better follow the naming convention:
+find-file-hooks to find-file-hook,
+find-file-not-found-hooks to find-file-not-found-functions,
+write-file-hooks to write-file-functions,
+write-contents-hooks to write-contents-functions,
+x-lost-selection-hooks to x-lost-selection-functions,
+x-sent-selection-hooks to x-sent-selection-functions.
+Marked local-write-file-hooks as obsolete (use the LOCAL arg of `add-hook').
+++
-** New functions `lax-plist-get' and `lax-plist-put'.
-
-These functions are like `plist-get' and `plist-put' except that they
-compare the property name using `equal' rather than `eq'.
+** The new variable `delete-frame-functions' replaces `delete-frame-hook'.
+It was renamed to follow the naming conventions for abnormal hooks. The old
+name remains available as an alias, but has been marked obsolete.
+++
-** New function `tool-bar-local-item-from-menu'
+** The new function `file-remote-p' tests a file name and returns
+non-nil if it specifies a remote file (one that Emacs accesses using
+its own special methods and not directly through the file system).
+The value in that case is an identifier for the remote file system.
-The `tool-bar-add-item-from-menu' must not be used (as previously
-recommended) for making entries in the tool bar for local keymaps.
-Instead, use the function `tool-bar-local-item-from-menu', which lets
-you specify the map to use as an argument.
++++
+** Functions `get' and `plist-get' no longer signals an error for
+a malformed property list. They also detect cyclic lists.
+++
** The function `atan' now accepts an optional second argument.
equivalent to the standard C library function `atan2'.)
+++
-** You can now make a window as short as one line.
-
-A window that is just one line tall does not display either a mode
-line or a header line, even if the variables `mode-line-format' and
-`header-line-format' call for them. A window that is two lines tall
-cannot display both a mode line and a header line at once; if the
-variables call for both, only the mode line actually appears.
+** New function format-mode-line.
-+++
-** The new frame parameter `tty-color-mode' specifies the mode to use
-for color support on character terminal frames. Its value can be a
-number of colors to support, or a symbol. See the Emacs Lisp
-Reference manual for more detailed documentation.
+This returns the mode-line or header-line of the selected (or a
+specified) window as a string with or without text properties.
+++
** The new mode-line construct `(:propertize ELT PROPS...)' can be
---
** Indentation of backquoted forms has been made customizable in the
-cl-indent package. See the new user option `lisp-backquote-indentation'.
-
-+++
-** Already true in Emacs 21.1, but not emphasized clearly enough:
-
-Multibyte buffers can now faithfully record all 256 character codes
-from 0 to 255. As a result, most of the past reasons to use unibyte
-buffers no longer exist. We only know of three reasons to use them
-now:
-
-1. If you prefer to use unibyte text all of the time.
-
-2. For reading files into temporary buffers, when you want to avoid
-the time it takes to convert the format.
-
-3. For binary files where format conversion would be pointless and
-wasteful.
-
-+++
-** If text has a `keymap' property, that keymap takes precedence
-over minor mode keymaps.
-
-+++
-** A hex escape in a string forces the string to be multibyte.
-An octal escape makes it unibyte.
-
-+++
-** At the end of a command, point moves out from within invisible
-text, in the same way it moves out from within text covered by an
-image or composition property.
-
-This makes it generally unnecessary to mark invisible text as intangible.
-This is particularly good because the intangible property often has
-unexpected side-effects since the property applies to everything
-(including `goto-char', ...) whereas this new code is only run after
-post-command-hook and thus does not care about intermediate states.
-
-+++
-** field-beginning and field-end now accept an additional optional
-argument, LIMIT.
-
-+++
-** define-abbrev now accepts an optional argument SYSTEM-FLAG. If
-non-nil, this marks the abbrev as a "system" abbrev, which means that
-it won't be stored in the user's abbrevs file if he saves the abbrevs.
-Major modes that predefine some abbrevs should always specify this
-flag.
-
----
-** Support for Mocklisp has been removed.
-
----
-** The function insert-string is now obsolete.
-
----
-** The precedence of file-name-handlers has been changed.
-Instead of blindly choosing the first handler that matches,
-find-file-name-handler now gives precedence to a file-name handler
-that matches near the end of the file name. More specifically, the
-handler whose (match-beginning 0) is the largest is chosen.
-In case of ties, the old "first matched" rule applies.
-
----
-** Dense keymaps now handle inheritance correctly.
-Previously a dense keymap would hide all of the simple-char key
-bindings of the parent keymap.
-
----
-** jit-lock obeys a new text-property `jit-lock-defer-multiline'.
-If a piece of text with that property gets contextually refontified
-(see jit-lock-defer-contextually), then all of that text will
-be refontified. This is useful when the syntax of a textual element
-depends on text several lines further down (and when font-lock-multiline
-is not appropriate to solve that problem). For example in Perl:
+cl-indent package. See the new user option `lisp-backquote-indentation'.
- s{
- foo
- }{
- bar
- }e
++++
+** field-beginning and field-end now accept an additional optional
+argument, LIMIT.
-Adding/removing the last `e' changes the `bar' from being a piece of
-text to being a piece of code, so you'd put a jit-lock-defer-multiline
-property over the second half of the command to force (deferred)
-refontification of `bar' whenever the `e' is added/removed.
++++
+** define-abbrev now accepts an optional argument SYSTEM-FLAG. If
+non-nil, this marks the abbrev as a "system" abbrev, which means that
+it won't be stored in the user's abbrevs file if he saves the abbrevs.
+Major modes that predefine some abbrevs should always specify this
+flag.
---
** describe-vector now takes a second argument `describer' which is
** defcustom and other custom declarations now use a default group
(the last prior group defined in the same file) when no :group was given.
+---
+** The new customization type `float' specifies numbers with floating
+point (no integers are allowed).
+
+++
** emacsserver now runs pre-command-hook and post-command-hook when
it receives a request from emacsclient.
---
-** The variable `recursive-load-depth-limit' has been deleted.
-Emacs now signals an error if the same file is loaded with more
-than 3 levels of nesting.
+** New function `text-clone-create'. Text clones are chunks of text
+that are kept identical by transparently propagating changes from one
+clone to the other.
----
-** If a major mode function has a non-nil `no-clone-indirect'
-property, `clone-indirect-buffer' signals an error if you use
-it in that buffer.
++++
+** Functions `user-uid' and `user-real-uid' now return floats if the
+user UID doesn't fit in a Lisp integer. Function `user-full-name'
+accepts a float as UID parameter.
----
-** In `replace-match', the replacement text no longer inherits
-properties from surrounding text.
++++
+** New vars `exec-suffixes' and `load-suffixes' used when
+searching for an executable resp. an elisp file.
+++
-** The list returned by `(match-data t)' now has the buffer as a final
-element, if the last match was on a buffer. `set-match-data'
-accepts such a list for restoring the match state.
+** Functions from `post-gc-hook' are run at the end of garbage
+collection. The hook is run with GC inhibited, so use it with care.
+++
-** New function `buffer-local-value'.
+** The variables most-positive-fixnum and most-negative-fixnum
+hold the largest and smallest possible integer values.
-This function returns the buffer-local binding of VARIABLE (a symbol)
-in buffer BUFFER. If VARIABLE does not have a buffer-local binding in
-buffer BUFFER, it returns the default value of VARIABLE instead.
+---
+** On MS Windows, locale-coding-system is used to interact with the OS.
+The Windows specific variable w32-system-coding-system, which was
+formerly used for that purpose is now an alias for locale-coding-system.
---
-** New function `text-clone-create'. Text clones are chunks of text
-that are kept identical by transparently propagating changes from one
-clone to the other.
+** New function x-send-client-message sends a client message when
+running under X.
-+++
-** font-lock can manage arbitrary text-properties beside `face'.
-*** the FACENAME returned in font-lock-keywords can be a list
-of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set
-other properties than `face'.
-*** font-lock-extra-managed-props can be set to make sure those extra
-properties are automatically cleaned up by font-lock.
+---
+** easy-mmode-define-global-mode has been renamed to
+define-global-minor-mode. The old name remains as an alias.
---
-** The special treatment of faces whose names are of the form `fg:COLOR'
-or `bg:COLOR' has been removed. Lisp programs should use the
-`defface' facility for defining faces with specific colors, or use
-the feature of specifying the face attributes :foreground and :background
-directly in the `face' property instead of using a named face.
+** To manipulate the File menu using easy-menu, you must specify the
+proper name "file". In previous Emacs versions, you had to specify
+"files", even though the menu item itself was changed to say "File"
+several versions ago.
+
+---
+** The dummy function keys made by easymenu are now always lower case.
+If you specify the menu item name "Ada", for instance, it uses `ada'
+as the "key" bound by that key binding.
+
+This is relevant only if Lisp code looks for the bindings that were
+made with easymenu.
+
+---
+** `easy-menu-define' now allows you to use nil for the symbol name
+if you don't need to give the menu a name. If you install the menu
+into other keymaps right away (MAPS is non-nil), it usually doesn't
+need to have a name.
+
+** New functions, macros, and commands:
+++
-** The new function `run-mode-hooks' and the new macro `delay-mode-hooks'
-are used by define-derived-mode to make sure the mode hook for the
-parent mode is run at the end of the child mode.
+*** The new function `assoc-string' replaces `assoc-ignore-case' and
+`assoc-ignore-representation', which are still available, but have
+been declared obsolete.
+++
-** define-minor-mode now accepts arbitrary additional keyword arguments
-and simply passes them to defcustom, if applicable.
+*** The new function `buffer-local-value' returns the buffer-local
+binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not
+have a buffer-local binding in buffer BUFFER, it returns the default
+value of VARIABLE instead.
+++
-** define-derived-mode by default creates a new empty abbrev table.
-It does not copy abbrevs from the parent mode's abbrev table.
+*** The new function `called-interactively-p' does what many people
+have mistakenly believed `interactive-p' did: it returns t if the
+calling function was called through `call-interactively'. This should
+only be used when you cannot add a new "interactive" argument to the
+command.
+
+*** The new function copy-abbrev-table returns a new abbrev table that
+is a copy of a given abbrev table.
+++
-** `provide' and `featurep' now accept an optional second argument
-to test/provide subfeatures. Also `provide' now checks `after-load-alist'
-and runs any code associated with the provided feature.
+*** New function copy-tree makes a copy of a tree, recursively copying
+both cars and cdrs.
+++
-** Functions `file-name-sans-extension' and `file-name-extension' now
-ignore the leading dots in file names, so that file names such as
-`.emacs' are treated as extensionless.
+*** New function `delete-dups' destructively removes `equal'
+duplicates from a list. Of several `equal' occurrences of an element
+in the list, the first one is kept.
+++
-** Functions `user-uid' and `user-real-uid' now return floats if the
-user UID doesn't fit in a Lisp integer. Function `user-full-name'
-accepts a float as UID parameter.
+*** The new function `filter-buffer-substring' extracts a buffer
+substring, passes it through a set of filter functions, and returns
+the filtered substring. It is used instead of `buffer-substring' or
+`delete-and-extract-region' when copying text into a user-accessible
+data structure, like the kill-ring, X clipboard, or a register. The
+list of filter function is specified by the new variable
+`buffer-substring-filters'. For example, Longlines mode uses
+`buffer-substring-filters' to remove soft newlines from the copied
+text.
----
-** `define-key-after' now accepts keys longer than 1.
++++
+*** New functions frame-current-scroll-bars and window-current-scroll-bars.
+
+These functions return the current locations of the vertical and
+horizontal scroll bars in a frame or window.
+++
-** The local variable `no-byte-compile' in elisp files is now obeyed.
+*** The new primitive `get-internal-run-time' returns the processor
+run time used by Emacs since start-up.
+++
-** The Emacs Lisp byte-compiler now displays the actual line and
-character position of errors, where possible. Additionally, the form
-of its warning and error messages have been brought more in line with
-the output of other GNU tools.
+*** The new function insert-buffer-substring-as-yank works like
+`insert-buffer-substring', but removes the text properties in the
+`yank-excluded-properties' list.
+++
-** New functions `keymap-prompt' and `current-active-maps'.
+*** The new function insert-buffer-substring-no-properties is like
+insert-buffer-substring, but removes all text properties from the
+inserted substring.
----
-** New function `describe-buffer-bindings'.
++++
+*** The new functions `lax-plist-get' and `lax-plist-put' are like
+`plist-get' and `plist-put', except that they compare the property
+name using `equal' rather than `eq'.
+++
-** New vars `exec-suffixes' and `load-suffixes' used when
-searching for an executable resp. an elisp file.
+*** New function `line-number-at-pos' returns the line number of the
+current line in the current buffer, or if optional buffer position is
+given, line number of corresponding line in current buffer.
+++
-** Variable aliases have been implemented:
+*** New function `looking-back' checks whether a regular expression matches
+the text before point. Specifying the LIMIT argument bounds how far
+back the match can start; this is a way to keep it from taking too long.
-*** defvaralias ALIAS-VAR BASE-VAR [DOCSTRING]
++++
+*** New function `macroexpand-all' expands all macros in a form.
+It is similar to the Common-Lisp function of the same name.
+One difference is that it guarantees to return the original argument
+if no expansion is done, which may be tested using `eq'.
-This function defines the symbol ALIAS-VAR as a variable alias for
-symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR
-returns the value of BASE-VAR, and changing the value of ALIAS-VAR
-changes the value of BASE-VAR.
+*** The new function `minibufferp' returns non-nil if its optional
+buffer argument is a minibuffer. If the argument is omitted, it
+defaults to the current buffer.
-DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has
-the same documentation as BASE-VAR.
++++
+*** New function minibuffer-selected-window returns the window which
+was selected when entering the minibuffer.
-*** indirect-variable VARIABLE
++++
+*** The new function `modify-all-frames-parameters' modifies parameters
+for all (existing and future) frames.
-This function returns the variable at the end of the chain of aliases
-of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not
-defined as an alias, the function returns VARIABLE.
++++
+*** New functions posn-at-point and posn-at-x-y return
+click-event-style position information for a given visible buffer
+position or for a given window pixel coordinate.
-It might be noteworthy that variables aliases work for all kinds of
-variables, including buffer-local and frame-local variables.
+---
+*** New function quail-find-key returns a list of keys to type in the
+current input method to input a character.
+++
-** Functions from `post-gc-hook' are run at the end of garbage
-collection. The hook is run with GC inhibited, so use it with care.
+*** The new function `rassq-delete-all' deletes all elements from an
+alist whose cdr is `eq' to a specified value.
+++
-** If the second argument to `copy-file' is the name of a directory,
-the file is copied to that directory instead of signaling an error.
+*** The new function remove-list-of-text-properties is almost the same
+as `remove-text-properties'. The only difference is that it takes a
+list of property names as argument rather than a property list.
+++
-** The variables most-positive-fixnum and most-negative-fixnum
-hold the largest and smallest possible integer values.
+*** The new primitive `set-file-times' sets a file's access and
+modification times. Magic file name handlers can handle this
+operation.
----
-** On MS Windows, locale-coding-system is used to interact with the OS.
-The Windows specific variable w32-system-coding-system, which was
-formerly used for that purpose is now an alias for locale-coding-system.
++++
+*** New function substring-no-properties returns a substring without
+text properties.
----
-** Functions y-or-n-p, read-char, read-key-sequence and the like, that
-display a prompt but don't use the minibuffer, now display the prompt
-using the text properties (esp. the face) of the prompt string.
++++
+*** The new function syntax-after returns the syntax code
+of the character after a specified buffer position, taking account
+of text properties as well as the character code.
----
-** New function x-send-client-message sends a client message when
-running under X.
++++
+*** `syntax-class' extracts the class of a syntax code (as returned
+by syntax-after).
+++
-** Arguments for remove-overlays are now optional, so that you can remove
-all overlays in the buffer by just calling (remove-overlay).
+*** New function `tool-bar-local-item-from-menu'
-** New packages:
+The `tool-bar-add-item-from-menu' must not be used (as previously
+recommended) for making entries in the tool bar for local keymaps.
+Instead, use the function `tool-bar-local-item-from-menu', which lets
+you specify the map to use as an argument.
+++
-*** The new package gdb-ui.el provides an enhanced graphical interface to
-GDB. You can interact with GDB through the GUD buffer in the usual way, but
-there are also further buffers which control the execution and describe the
-state of your program. It separates the input/output of your program from
-that of GDB and watches expressions in the speedbar. It also uses features of
-Emacs 21 such as the display margin for breakpoints, and the toolbar.
+*** New function window-body-height.
+This is like window-height but does not count the mode line
+or the header line.
-Use M-x gdba to start GDB-UI.
++++
+*** (while-no-input BODY...) runs BODY, but only so long as no input
+arrives. If the user types or clicks anything, BODY stops as if a
+quit had occurred. while-no-input returns the value of BODY, if BODY
+finishes. It returns nil if BODY was aborted.
+
++++
+*** New macro with-local-quit temporarily sets inhibit-quit to nil for use
+around potentially blocking or long-running code in timers
+and post-command-hooks.
+
+** New packages:
*** The new package syntax.el provides an efficient way to find the
current syntactic context (as returned by parse-partial-sexp).
require the full power of widgets. Emacs uses buttons for such things
as help and apropos buffers.
+---
+*** master-mode.el implements a minor mode for scrolling a slave
+buffer without leaving your current buffer, the master buffer.
+
+It can be used by sql.el, for example: the SQL buffer is the master
+and its SQLi buffer is the slave. This allows you to scroll the SQLi
+buffer containing the output from the SQL buffer containing the
+commands.
+
+This is how to use sql.el and master.el together: the variable
+sql-buffer contains the slave buffer. It is a local variable in the
+SQL buffer.
+
+(add-hook 'sql-mode-hook
+ (function (lambda ()
+ (master-mode t)
+ (master-set-slave sql-buffer))))
+(add-hook 'sql-set-sqli-hook
+ (function (lambda ()
+ (master-set-slave sql-buffer))))
+
++++
+*** New Lisp library testcover.el works with edebug to help you determine
+whether you've tested all your Lisp code. Function testcover-start
+instruments all functions in a given file. Then test your code. Function
+testcover-mark-all adds overlay "splotches" to the Lisp file's buffer to
+show where coverage is lacking. Command testcover-next-mark (bind it to
+a key!) will move point forward to the next spot that has a splotch.
+
+Normally, a red splotch indicates the form was never completely
+evaluated; a brown splotch means it always evaluated to the same
+value. The red splotches are skipped for forms that can't possibly
+complete their evaluation, such as `error'. The brown splotches are
+skipped for forms that are expected to always evaluate to the same
+value, such as (setq x 14).
+
+For difficult cases, you can add do-nothing macros to your code to
+help out the test coverage tool. The macro `noreturn' suppresses a
+red splotch. It is an error if the argument to `noreturn' does
+return. The macro 1value suppresses a brown splotch for its argument.
+This macro is a no-op except during test-coverage -- then it signals
+an error if the argument actually returns differing values.
+
+---
+** Support for Mocklisp has been removed.
+
+---
+** The function insert-string is now obsolete.
\f
* Installation changes in Emacs 21.3