[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/etc/NEWS
From: |
Richard M . Stallman |
Subject: |
[Emacs-diffs] Changes to emacs/etc/NEWS |
Date: |
Mon, 02 May 2005 16:58:40 -0400 |
Index: emacs/etc/NEWS
diff -c emacs/etc/NEWS:1.1174 emacs/etc/NEWS:1.1175
*** emacs/etc/NEWS:1.1174 Mon May 2 11:36:01 2005
--- emacs/etc/NEWS Mon May 2 20:58:39 2005
***************
*** 18,34 ****
* 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'.
---
! ** 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.
---
** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
--- 18,29 ----
* Installation Changes in Emacs 22.1
---
! ** Emacs now supports new configure options `--program-prefix',
! `--program-suffix' and `--program-transform-name' that affect the names of
! installed programs.
---
! ** Emacs can now be built without sound support.
---
** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
***************
*** 36,52 ****
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
place for game scores to be stored. This may be controlled by the
--- 31,39 ----
***************
*** 78,83 ****
--- 65,86 ----
(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.
---
***************
*** 99,197 ****
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.
* 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.
+++
! ** 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.
+++
! ** `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)
+++
! ** Auto Compression mode is now enabled by default.
!
! ** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
! 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.
! ---
! ** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead.
! ---
! ** 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.
! ---
! ** iso-acc.el is now obsolete. Use one of the latin input methods instead.
! ---
! ** 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).
+++
! ** 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.
+++
! ** M-o now is the prefix key for setting text properties;
! M-o M-o requests refontification.
+++
** 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.
+++
** C-u M-x goto-line now switches to the most recent previous buffer,
--- 102,180 ----
the files mac/README and mac/INSTALL for build instructions.
---
** Building with -DENABLE_CHECKING does not automatically build with union
types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
* Changes in Emacs 22.1
! ** 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.
+++
! ** New command line option -D or --basic-display.
! Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
! the blinking cursor.
+++
! ** New command line option -nbc or --no-blinking-cursor disables
! the blinking cursor on graphical terminals.
+++
! ** The command line option --no-windows has been changed to
! --no-window-system. The old one still works, but is deprecated.
! +++
! ** 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.
! +++
! ** 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.)
! +++
! ** 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').
! +++
! ** 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.
! +++
! ** 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.
+++
! ** 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'.
+++
! ** 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.
+++
! ** 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,
***************
*** 200,285 ****
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.
+++
! ** Control characters and escape glyphs are now shown in the new
! escape-glyph face.
+++
! ** 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.
---
! ** 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.
! 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'.
+++
! ** 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 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.
+++
** When the undo information of the current command gets really large
--- 183,228 ----
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.
+++
! ** 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.
+++
! ** 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.
+++
! ** `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 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.
! `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.
! `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.
! Setting these variables directly does not take effect until next time
! the Buffers menu is regenerated.
+++
! ** 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.
+++
! ** `undo-only' does an undo which does not redo any previous undo.
+++
** When the undo information of the current command gets really large
***************
*** 287,644 ****
you about it.
+++
! ** line-move-ignore-invisible now defaults to t.
! +++
! ** In Outline mode, hide-body no longer hides lines at the top
! of the file that precede the first header line.
+++
! ** 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 processing a local variables list, Emacs strips the prefix and
! suffix are from every line before processing all the lines.
+++
! ** `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.
+++
! ** 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 terminal emulation code in term.el has been improved, it can
! run most curses applications now.
! ** New features in evaluation commands
+++
! *** The function `eval-defun' (C-M-x) called on defface reinitializes
! the face to the value specified in the defface expression.
+++
! *** 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.
+++
! ** New command quail-show-key shows what key (or key sequence) to type
! in the current input method to input a character at point.
+++
! ** 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.
! `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.
! `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.
+++
! ** You can now use next-error (C-x `) and previous-error to advance to
! the next/previous matching line found by M-x occur.
+++
! ** Telnet now prompts you for a port number with C-u M-x telnet.
+++
! ** 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.
! +++
! ** New command line option -D or --basic-display.
! Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
! the blinking cursor.
+++
! ** New command line option -nbc or --no-blinking-cursor disables
! the blinking cursor on graphical terminals.
+++
! ** 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).
---
** 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.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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.
---
! ** 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').
! 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.
! 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 new file etc/compilation.txt gives examples of each type of message.
! ** Compilation mode enhancements:
+++
! *** 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.
+++
! ** Grep has been decoupled from compilation mode setup.
! ---
! *** There's a new separate package grep.el.
! ---
! *** M-x grep has been adapted to new compile
! 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.
! ---
! *** Grep commands now have their own submenu and customization group.
+++
! *** `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.
+++
! *** 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 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.
+++
! ** 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'.
+++
! ** 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.
! +++
! ** M-x diff uses diff-mode instead of compilation-mode.
! +++
! ** M-x compare-windows now can automatically skip non-matching text to
! resync points in both windows.
- ---
- ** 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
! ---
! *** Gnus now includes Sieve and PGG
! Sieve is a library for managing Sieve scripts. PGG is a library to handle
! PGP/MIME.
! ---
! *** 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.
! +++
! ** Desktop package
+++
! *** Desktop saving is now a minor mode, desktop-save-mode. Variable
! desktop-enable is obsolete. Customize desktop-save-mode to enable desktop
! saving.
---
! *** Buffers are saved in the desktop file in the same order as that in the
! buffer list.
+++
! *** The desktop package can be customized to restore only some buffers
immediately,
! remaining buffers are restored lazily (when Emacs is idle).
+++
! *** 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.
! ---
! *** 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.
+++
! *** New command line option --no-desktop
! ---
! *** 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.
+++
! ** 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
+++
! ** 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.
! The new user option 'overflow-newline-into-fringe' may be set to nil to
! revert to the old behavior of continuing such lines.
+++
** The buffer boundaries (i.e. first and last line in the buffer) may
--- 230,551 ----
you about it.
+++
! ** M-SPC (just-one-space) when given a numeric argument N
! converts whitespace around point to N spaces.
! ---
! ** New command `kill-whole-line' kills an entire line at once.
! By default, it is bound to C-S-<backspace>.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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 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.
! The variable `automatic-hscrolling' was renamed to
! `auto-hscroll-mode'. The old name is still available as an alias.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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.
+++
! ** find-file-read-only visits multiple files in read-only mode,
! when the file name contains wildcard characters.
+++
! ** find-alternate-file replaces the current file with multiple files,
! when the file name contains wildcard characters.
+++
! ** Auto Compression mode is now enabled by default.
! ---
! ** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
! 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.
! +++
! ** 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.)
+++
! ** 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 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'.
! ---
! ** 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).
+++
! ** The max size of buffers and integers has been doubled.
! On 32bit machines, it is now 256M (i.e. 268435455).
+++
! ** If the user visits a file larger than `large-file-warning-threshold',
! Emacs prompts her for confirmation.
+++
! ** 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.
---
! ** Enhanced visual feedback in *Completions* buffer.
! Completions lists use faces to highlight what all completions
! have in common and where they begin to differ.
! 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.
! +++
! ** 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.
! +++
! ** 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 `history-delete-duplicates'.
! If set to t when adding a new history element, all previous identical
! elements are deleted.
+++
! ** 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.
! We provide two sample predicates, fill-single-word-nobreak-p and
! fill-french-nobreak-p, for use in the value of fill-nobreak-predicate.
! +++
! ** 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 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.
+++
! ** Control characters and escape glyphs are now shown in the new
! escape-glyph face.
+++
! ** Non-breaking space and hyphens are now prefixed with an escape
! character, unless the new user variable `show-nonbreak-escape' is set
! to nil.
+++
! ** 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.
+++
! ** 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.
! ---
! ** JIT-lock changes
! *** 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.
! *** 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.
+++
! ** line-move-ignore-invisible now defaults to t.
---
! ** 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".
+++
! ** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
! now controlled by the variable `blink-cursor-alist'.
+++
! ** The X resource cursorBlink can be used to turn off cursor blinking.
! +++
! ** 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.
+++
! ** 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.
! +++
! ** The variable `cursor-in-non-selected-windows' can now be set to any
! of the recognized cursor types.
! +++
! ** 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.
+++
! ** 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.
! +++
! ** 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.
+++
! ** 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.
! +++
! ** 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
***************
*** 662,1651 ****
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.
! +++
! ** 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 `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'.
+++
! ** 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 max size of buffers and integers has been doubled.
! On 32bit machines, it is now 256M (i.e. 268435455).
+++
! ** 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.
! ---
! ** sql changes.
! *** 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 following values are supported:
! 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)))
! *** 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'.
! *** 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.
! 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.
! *** Postgres support is enhanced.
! Keyword highlighting of Postgres 7.3 is implemented. Prompting for
! the username and the pgsql `-U' option is added.
! *** MySQL support is enhanced.
! Keyword higlighting of MySql 4.0 is implemented.
! *** Imenu support has been enhanced to locate tables, views, indexes,
! packages, procedures, functions, triggers, sequences, rules, and
! defaults.
! *** Added SQL->Start SQLi Session menu entry which calls the
! appropriate sql-interactive-mode wrapper for the current setting of
! `sql-product'.
---
! ** M-x view-file and commands that use it now avoid interfering
! with special modes such as Tar mode.
! ** Enhancements to apropos commands:
+++
! *** 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 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 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 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 command `kill-whole-line' kills an entire line at once.
! By default, it is bound to C-S-<backspace>.
---
** 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.
! ** Dired mode:
! ---
! *** 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.
+++
! *** New Dired command `dired-compare-directories' marks files
! with different file attributes in two dired buffers.
+++
! *** New Dired command `dired-do-touch' (bound to T) changes timestamps
! of marked files with the value entered in the minibuffer.
+++
! *** 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'.
+++
! *** 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.
+++
! ** Dired-x:
+++
! *** 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.
+++
! ** find-file-read-only visits multiple files in read-only mode,
! when the file name contains wildcard characters.
+++
! ** find-alternate-file replaces the current file with multiple files,
! when the file name contains wildcard characters.
! ** 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').
---
! *** 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'.
! ** Info mode:
+++
! *** A numeric prefix argument of `info' selects an Info buffer
! with the number appended to the *info* buffer name (e.g. "*info*<2>").
! ---
! *** 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.
! *** 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.
! *** 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.
---
! *** 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.
---
! *** 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.
---
! *** Info-index offers completion.
---
! ** 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.
! *** 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).
! *** In BibTeX mode the command fill-paragraph (bound to M-q) fills
! individual fields of a BibTeX entry.
! *** The new variables bibtex-files and bibtex-file-path define a set
! of BibTeX files that are searched for entry keys.
! *** The new command bibtex-validate-globally checks for duplicate keys
! in multiple BibTeX files.
! *** The new command bibtex-copy-summary-as-kill pushes summary
! of BibTeX entry to kill ring (bound to C-c C-t).
+++
! ** 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.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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.
+++
! ** Under X, mouse-wheel-mode is turned on by default.
+++
! ** 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.
+++
! ** The X resource cursorBlink can be used to turn off cursor blinking.
+++
! ** `undo-only' does an undo which does not redo any previous undo.
---
! ** `uniquify-strip-common-suffix' tells uniquify to prefer
! `file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
+++
! ** If the user visits a file larger than `large-file-warning-threshold',
! Emacs prompts her for confirmation.
! ---
! ** A UTF-7 coding system is available in the library `utf-7'.
---
! ** GUD mode has its own tool bar for controlling execution of the inferior
! and other common debugger commands.
! ---
! ** recentf changes.
! 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 `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.
! 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.
! 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 default for the paper size (variable ps-paper-type) is taken
! from the locale.
+++
! ** 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.
! ---
! ** partial-completion-mode now does partial completion on directory names.
---
! ** 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.
---
! ** 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.
! +++
! ** 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.
! +++
! ** 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.
! +++
! ** 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
! "~/".
+++
! ** 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 `revert-buffer-with-coding-system' (C-x RET r)
! revisits the current file using a coding system that you specify.
+++
! ** The new command `recode-file-name' changes the encoding of the name
! of a file.
---
! ** `ps-print' can now print characters from the mule-unicode charsets.
! 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 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.
! `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.
! `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.
! Setting these variables directly does not take effect until next time
! the Buffers menu is regenerated.
+++
! ** 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 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.)
---
! ** 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.
---
! ** 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.
! ---
! ** 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.
---
! ** 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 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.
---
! ** New variable `utf-translate-cjk-unicode-range' controls which
! Unicode characters to translate in `utf-translate-cjk-mode'.
! ---
! ** 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 command `ucs-insert' inserts a character specified by its
! unicode.
+++
! ** 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.
! 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.
! ---
! ** 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.
+++
! ** 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.
! ---
! ** 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).
! ---
! ** 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).
+++
! ** 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-*-*-*-*-*-*,*"'.
! ---
! ** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
! ESC, like they do for Gtk+, Mac and W32.
! ---
! ** Dialogs and menus pop down when pressing C-g.
! ---
! ** 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 file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be
! disabled by customizing the variable `use-file-dialog'.
+++
! ** 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.
+++
! ** 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.
+++
! ** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
! now controlled by the variable `blink-cursor-alist'.
+++
! ** 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.
! 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.
! ---
! ** PO translation files are decoded according to their MIME headers
! when Emacs visits them.
---
! ** The game `mpuz' is enhanced.
! `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.
! ---
! ** 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.
! +++
! ** 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 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.
! The variable `automatic-hscrolling' was renamed to
! `auto-hscroll-mode'. The old name is still available as an alias.
! ** TeX modes:
! +++
! *** C-c C-c prompts for a command to run, and tries to offer a good default.
+++
! *** 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 major mode doctex-mode for *.dtx files.
! +++
! ** 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.
! +++
! ** 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.
+++
! ** 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 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.
+++
! ** 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.
+++
! ** 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.
+++
! ** query-replace uses isearch lazy highlighting when the new user option
! `query-replace-lazy-highlight' is non-nil.
! ---
! ** The current match in query-replace is highlighted in new face
! `query-replace' which by default inherits from isearch face.
! +++
! ** 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.
! +++
! ** 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.
! +++
! ** 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.
! +++
! ** 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.
! +++
! ** 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.
! ---
! ** 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".
! +++
! ** 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'.
! ---
! ** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
! +++
! ** 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.
! Turning off PC-Selection mode restores the global key bindings
! that were replaced by turning on the 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').
! ** Changes in support of colors on character terminals
! +++
! *** 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.
! ---
! *** 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.
! +++
! *** 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.
! ---
! *** There's a new support for colors on `rxvt' terminal emulator.
! +++
! ** 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.)
! ---
! ** Emacs now tries to set up buffer coding systems for HTML/XML files
! automatically.
! +++
! ** 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.
! +++
! ** Changes in C-h bindings:
! C-h e displays the *Messages* buffer.
! C-h followed by a control character is used for displaying files
! that do not change:
! C-h C-f displays the FAQ.
! C-h C-e displays the PROBLEMS file.
! 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.
! C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands.
! - C-h c and C-h k report the actual command (after possible remapping)
! run by the key sequence.
! - 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.
! For example, if C-k is bound to kill-line, and kill-line is remapped
! to new-kill-line, these commands now report:
! - C-h c and C-h k C-k reports:
! C-k runs the command new-kill-line
! - C-h w and C-h f kill-line reports:
! kill-line is remapped to new-kill-line which is on C-k, <deleteline>
! - C-h w and C-h f new-kill-line reports:
! new-kill-line is on C-k
+++
! ** 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.
+++
! ** 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'.
+++
! ** C-y in incremental search now grabs the next line if point is already
! at the end of a line.
! +++
! ** 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.
! +++
! ** 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.
! +++
! ** 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 `history-delete-duplicates'.
! If set to t when adding a new history element, all previous identical
! elements are deleted.
! +++
! ** 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.
! +++
! ** 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'.
! +++
! ** 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 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.
! +++
! ** 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 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 improvements for jdb:
*** Search for source files using jdb classpath and class
--- 569,1727 ----
left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)).
+++
! ** 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.
! The new user option 'overflow-newline-into-fringe' may be set to nil to
! revert to the old behavior of continuing such lines.
! +++
! ** 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.
+++
! ** 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.
+++
! ** `special-display-buffer-names' and `special-display-regexps' now
! understand two new boolean pseudo-frame-parameters `same-frame' and
! `same-window'.
+++
! ** Changes in C-h bindings:
! C-h e displays the *Messages* buffer.
! C-h followed by a control character is used for displaying files
! that do not change:
! C-h C-f displays the FAQ.
! C-h C-e displays the PROBLEMS file.
! 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.
! C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands.
! - C-h c and C-h k report the actual command (after possible remapping)
! run by the key sequence.
! - 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.
! For example, if C-k is bound to kill-line, and kill-line is remapped
! to new-kill-line, these commands now report:
! - C-h c and C-h k C-k reports:
! C-k runs the command new-kill-line
! - C-h w and C-h f kill-line reports:
! kill-line is remapped to new-kill-line which is on C-k, <deleteline>
! - C-h w and C-h f new-kill-line reports:
! new-kill-line is on C-k
---
! ** 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'.
! +++
! ** 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).
+++
! ** 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 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.
+++
! ** 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 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 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'.
+++
! ** In processing a local variables list, Emacs strips the prefix and
! suffix are from every line before processing all the lines.
! +++
! ** `apply-macro-to-region-lines' now operates on all lines that begin
! in the region, rather than on all complete lines in the region.
! +++
! ** 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'.
+++
! ** 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.
+++
! ** 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.
+++
! ** Under X, mouse-wheel-mode is turned on by default.
+++
! ** 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 `$$'.
+++
! ** 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).
+++
! ** The default for the paper size (variable ps-paper-type) is taken
! from the locale.
+++
! ** 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'.
+++
! ** The new command `revert-buffer-with-coding-system' (C-x RET r)
! revisits the current file using a coding system that you specify.
! +++
! ** New command `recode-region' decodes the region again by a specified
! coding system.
+++
! ** The new command `recode-file-name' changes the encoding of the name
! of a file.
---
! ** New command `ucs-insert' inserts a character specified by its
! unicode.
! +++
! ** 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.
+++
! ** New command quail-show-key shows what key (or key sequence) to type
! in the current input method to input a character at point.
! +++
! ** 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.
! 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.
---
! ** 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.
---
! ** 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.)
---
! ** 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.
---
! ** New input method chinese-sisheng for inputting Chinese Pinyin
! characters.
! ---
! ** 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)
! ---
! ** 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.
! ---
! ** A UTF-7 coding system is available in the library `utf-7'.
! ---
! ** 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.
! ---
! ** 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.
! ---
! ** 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.
! ---
! ** New variable `utf-translate-cjk-unicode-range' controls which
! Unicode characters to translate in `utf-translate-cjk-mode'.
! ---
! ** 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.
+++
! ** 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.
+++
! ** 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'.
! +++
! ** C-y in incremental search now grabs the next line if point is already
! at the end of a line.
+++
! ** 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.
! +++
! ** 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.
+++
! ** 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.
+++
! ** 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.
+++
! ** query-replace uses isearch lazy highlighting when the new user option
! `query-replace-lazy-highlight' is non-nil.
! ---
! ** The current match in query-replace is highlighted in new face
! `query-replace' which by default inherits from isearch face.
+++
! ** M-x compare-windows now can automatically skip non-matching text to
! resync points in both windows.
+++
! ** 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.
---
! ** 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.
+++
! ** 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.
! ** Dired mode:
---
! *** 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.
! +++
! *** New Dired command `dired-compare-directories' marks files
! with different file attributes in two dired buffers.
! +++
! *** New Dired command `dired-do-touch' (bound to T) changes timestamps
! of marked files with the value entered in the minibuffer.
! +++
! *** 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'.
! +++
! *** 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.
! +++
! ** 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.
+++
! ** Dired-x:
+++
! *** 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.
! +++
! ** In Outline mode, hide-body no longer hides lines at the top
! of the file that precede the first header line.
! +++
! ** 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 terminal emulation code in term.el has been improved, it can
! run most curses applications now.
---
! ** 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.
! `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.
! `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.
+++
! ** 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.
! ** `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.
+++
! ** Telnet now prompts you for a port number with C-u M-x telnet.
---
! ** 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').
! 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.
! 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 new file etc/compilation.txt gives examples of each type of message.
! ** Compilation mode enhancements:
+++
! *** 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.
! +++
! ** Grep has been decoupled from compilation mode setup.
---
! *** There's a new separate package grep.el.
---
! *** M-x grep has been adapted to new compile
! 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.
---
! *** Grep commands now have their own submenu and customization group.
! +++
! *** `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.
! +++
! *** 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 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.
+++
! ** 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.
! +++
! ** 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'.
! +++
! ** 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.
+++
! ** M-x diff uses diff-mode instead of compilation-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.
! +++
! ** 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 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.
! +++
! ** 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.
! ** Enhancements to apropos commands:
! +++
! *** 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 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.
+++
! ** 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
+++
! ** 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.
+++
! ** 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.
! ** Info mode:
! +++
! *** A numeric prefix argument of `info' selects an Info buffer
! with the number appended to the *info* buffer name (e.g. "*info*<2>").
---
! *** 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.
! *** 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.
! *** 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.
! ---
! *** 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.
---
! *** 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.
! ---
! *** Info-index offers completion.
! ---
! ** Lisp mode now uses font-lock-doc-face for the docstrings.
+++
! ** A prefix argument of C-M-q in Emacs Lisp mode pretty-printifies the
! list starting after point.
! ** New features in evaluation commands
+++
! *** The function `eval-defun' (C-M-x) called on defface reinitializes
! the face to the value specified in the defface expression.
+++
! *** 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.
+++
! ** 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 address@hidden
! **** 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 address@hidden
! **** 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.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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.
!
! +++
! ** `xml-mode' is now an alias for `sgml-mode', which has XML support.
!
! ** TeX modes:
!
! +++
! *** C-c C-c prompts for a command to run, and tries to offer a good default.
!
! +++
! *** 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 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).
! *** In BibTeX mode the command fill-paragraph (bound to M-q) fills
! individual fields of a BibTeX entry.
! *** The new variables bibtex-files and bibtex-file-path define a set
! of BibTeX files that are searched for entry keys.
! *** The new command bibtex-validate-globally checks for duplicate keys
! in multiple BibTeX files.
! *** The new command bibtex-copy-summary-as-kill pushes summary
! of BibTeX entry to kill ring (bound to C-c C-t).
! +++
! ** 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:
*** Search for source files using jdb classpath and class
***************
*** 1689,1898 ****
*** 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'.
! +++
! ** 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'.
+++
! ** 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.
+++
! ** The variable `cursor-in-non-selected-windows' can now be set to any
! of the recognized cursor types.
---
! ** 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.
! +++
! ** 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 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'.
+++
! ** 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.
+++
! ** 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.
!
! ** VC Changes
+++
! *** 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:
! (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
! The function `vc-toggle-read-only' will continue to exist.
+++
! *** 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 backends for Subversion and Meta-CVS.
** EDiff changes.
--- 1765,1878 ----
*** Do not allow debugger output history variable to grow without bounds.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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.
---
! ** recentf changes.
! 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 `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.
! 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.
! 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.
+++
! ** Desktop package
+++
! *** Desktop saving is now a minor mode, desktop-save-mode. Variable
! desktop-enable is obsolete. Customize desktop-save-mode to enable desktop
! saving.
! ---
! *** Buffers are saved in the desktop file in the same order as that in the
! buffer list.
+++
! *** The desktop package can be customized to restore only some buffers
immediately,
! remaining buffers are restored lazily (when Emacs is idle).
! +++
! *** 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.
! ---
! *** 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.
+++
! *** New command line option --no-desktop
! ---
! *** 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.
***************
*** 1990,2408 ****
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 address@hidden
!
! **** 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 address@hidden
! **** 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.
+++
! ** The command line option --no-windows has been changed to
! --no-window-system. The old one still works, but is deprecated.
+++
! ** The command `list-text-properties-at' has been deleted because
! C-u C-x = gives the same information and more.
+++
! ** `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.
+++
! ** 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.
!
! We provide two sample predicates, fill-single-word-nobreak-p and
! fill-french-nobreak-p, for use in the value of fill-nobreak-predicate.
+++
! ** 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.
! +++
! ** 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.
+++
! ** `xml-mode' is now an alias for `sgml-mode', which has XML support.
---
! ** Lisp mode now uses font-lock-doc-face for the docstrings.
---
! ** 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.
+++
! ** 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.
+++
! ** 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.
! +++
! ** `special-display-buffer-names' and `special-display-regexps' now
! understand two new boolean pseudo-frame-parameters `same-frame' and
! `same-window'.
+++
! ** 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 `$$'.
! +++
! ** 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.
+++
! ** 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.
---
! ** Enhanced visual feedback in *Completions* buffer.
!
! Completions lists use faces to highlight what all completions
! have in common and where they begin to differ.
!
! 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.
+++
! ** 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.
! ---
! ** Rmail now displays 5-digit message ids in its summary buffer.
! +++
! ** 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.
---
** On MS Windows, the "system caret" now follows the cursor.
--- 1970,2233 ----
reads from standard input and marks the produced tags as belonging to
the file FILE.
! ** VC Changes
! +++
! *** 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:
! (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
! The function `vc-toggle-read-only' will continue to exist.
! +++
! *** 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 backends for Subversion and Meta-CVS.
! +++
! ** 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.
! +++
! ** 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
! "~/".
! +++
! ** 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'.
! ---
! ** PO translation files are decoded according to their MIME headers
! when Emacs visits them.
! ** Gnus package
! ---
! *** Gnus now includes Sieve and PGG
! Sieve is a library for managing Sieve scripts. PGG is a library to handle
! PGP/MIME.
! ---
! *** 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.
! ---
! ** Rmail now displays 5-digit message ids in its summary buffer.
! +++
! ** 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.
! ---
! ** 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.
! +++
! ** 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.
! +++
! ** 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 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'.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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.
!
! ---
! ** 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.
!
! ---
! ** 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).
!
! ---
! ** 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).
+++
! ** 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-*-*-*-*-*-*,*"'.
---
! ** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
! ESC, like they do for Gtk+, Mac and W32.
---
! ** Dialogs and menus pop down if you type C-g.
---
! ** 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 file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be
! disabled by customizing the variable `use-file-dialog'.
+++
! ** 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.
---
! ** Emacs now responds to mouse-clicks on the mode-line, header-line and
! display margin, when run in an xterm.
! ** 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.
! ** Changes in support of colors on character terminals
+++
! *** 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.
! ---
! *** 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.
+++
! *** 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.
---
! *** There's a new support for colors on `rxvt' terminal emulator.
+++
! ** 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.
***************
*** 2457,2768 ****
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.
-
- * 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.
! 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.
! There is now a keyboard macro ring which stores the most recently
! defined macros.
! 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 normal macro bindings C-x (, C-x ), and C-x e now interfaces to
! the keyboard macro ring.
! The C-x e command now automatically terminates the current macro
! before calling it, if used while defining a macro.
! 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.
! 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.
---
! ** 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.
! ** The printing package is now part of the Emacs distribution.
! 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.
! +++
! ** Calc is now part of the Emacs distribution.
! 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'.
+++
! ** Tramp is now part of the distribution.
! 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).
! Shell connections can be acquired via `rsh', `ssh', `telnet' and also
! `su' and `sudo'. Ange-FTP is still supported via the `ftp' method.
! If you want to disable Tramp you should set
! (setq tramp-default-method "ftp")
---
! ** 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'.
---
! ** 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 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, ...
! There is also Global Reveal mode which affects all buffers.
---
! ** The new package ibuffer provides a powerful, completely
! customizable replacement for buff-menu.el.
! +++
! ** 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.
+++
! ** 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 `magic cookie' standout modes has been removed.
--- 2282,2458 ----
the clipboard should work correctly for your local language without
any customizations.
---
** 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.
---
! ** sql changes.
! *** 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 following values are supported:
! 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)))
! *** 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'.
! *** 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.
! 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.
! *** Postgres support is enhanced.
! Keyword highlighting of Postgres 7.3 is implemented. Prompting for
! the username and the pgsql `-U' option is added.
! *** MySQL support is enhanced.
! Keyword higlighting of MySql 4.0 is implemented.
! *** Imenu support has been enhanced to locate tables, views, indexes,
! packages, procedures, functions, triggers, sequences, rules, and
! defaults.
! *** Added SQL->Start SQLi Session menu entry which calls the
! appropriate sql-interactive-mode wrapper for the current setting of
! `sql-product'.
! ---
! *** Support for the SQLite interpreter has been added to sql.el by calling
! 'sql-sqlite'.
---
! ** M-x view-file and commands that use it now avoid interfering
! with special modes such as Tar mode.
! +++
! ** 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.
! 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.
! ---
! ** 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.
! ** 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').
! ---
! *** 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'.
! ---
! ** 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.
! ---
! ** 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.
! +++
! ** 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.
---
! ** partial-completion-mode now does partial completion on directory names.
---
! ** 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.
---
! ** `ps-print' can now print characters from the mule-unicode charsets.
! 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.
---
! ** 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.
! ---
! ** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
+++
! ** 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.
!
! Turning off PC-Selection mode restores the global key bindings
! that were replaced by turning on the mode.
!
! ---
! ** `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.
---
** Support for `magic cookie' standout modes has been removed.
***************
*** 2771,3736 ****
mode-lines in inverse-video.
---
! ** cplus-md.el has been removed to avoid problems with Custom.
! +++
! ** New package benchmark.el contains simple support for convenient
! timing measurements of code (including the garbage collection component).
---
! ** The new Lisp library fringe.el controls the appearance of fringes.
---
! ** `cfengine-mode' is a major mode for editing GNU Cfengine
! configuration files.
!
! * Incompatible Lisp Changes in Emacs 22.1
! +++
! ** 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.
+++
! ** `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'.)
! +++
! ** 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.
!
! * Lisp Changes in Emacs 22.1
! ** New functions, macros, and commands
! +++
! *** 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.
! +++
! *** (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 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.
+++
! *** 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 primitive `get-internal-run-time' returns the processor
! run time used by Emacs since start-up.
! +++
! *** 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 `assoc-string' replaces `assoc-ignore-case' and
! `assoc-ignore-representation', which are still available, but have
! been declared obsolete.
---
! *** New function quail-find-key returns a list of keys to type in the
! current input method to input a character.
!
! +++
! *** 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.
! +++
! *** The new primitive `set-file-times' sets a file's access and
! modification times. Magic file name handlers can handle this
! operation.
! +++
! *** 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.
! +++
! *** `syntax-class' extracts the class of a syntax code (as returned
! by syntax-after).
! +++
! *** 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.
! +++
! *** 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'.
! +++
! *** 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 function `rassq-delete-all' deletes all elements from an
! alist whose cdr is `eq' to a specified value.
! +++
! *** New macros define-obsolete-variable-alias to combine defvaralias and
! make-obsolete-variable and define-obsolete-function-alias to combine defalias
! and make-obsolete.
+++
! ** copy-file now takes an additional option arg MUSTBENEW.
!
! This argument works like the MUSTBENEW argument of write-file.
---
! ** easy-mmode-define-global-mode has been renamed to
! define-global-minor-mode. The old name remains as an alias.
+++
! ** 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).
!
! 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.
! +++
! ** 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.
! +++
! ** 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).
+++
! ** The function symbol-file tells you which file defined
! a certain function or variable.
! +++
! ** 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.
! +++
! ** `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'.
---
! ** 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.
! +++
! ** read-from-minibuffer now accepts an additional argument KEEP-ALL
! saying to put all inputs in the history list, even empty ones.
+++
! ** 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.
! Spaces inside of constructs such as [..] and *, +, ? are never
! replaced with search-spaces-regexp.
! ---
! ** list-buffers-noselect now takes an additional argument, BUFFER-LIST.
! If it is non-nil, it specifies which buffers to 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.
+++
! ** 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.
! +++
! ** Function `translate-region' accepts also a char-table as TABLE
! argument.
! +++
! ** Major mode functions now run the new normal hook
! `after-change-major-mode-hook', at their very end, after the mode hooks.
! +++
! ** `auto-save-file-format' has been renamed to
! `buffer-auto-save-file-format' and made into a permanent local.
! +++
! ** 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.
! +++
! ** 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.
! +++
! ** `visited-file-modtime' and `calendar-time-from-absolute' now return
! a list of two integers, instead of a cons.
+++
! ** 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.
! +++
! ** Cleaner way to enter key sequences.
! 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"
+++
! ** 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 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.
! +++
! ** skip-chars-forward and skip-chars-backward now handle
! character classes such as [:alpha:], along with individual characters
! and ranges.
! +++
! ** 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.
+++
! ** The function `eql' is now available without requiring the CL package.
+++
! ** The display space :width and :align-to text properties are now
! supported on text terminals.
+++
! ** 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).
+++
! ** 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 buffer local line-spacing variable may now have a float value,
! which is used as a height relative to the default frame line height.
+++
! ** 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.
+++
! ** 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 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).
+++
! ** 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.
+++
! ** Customizable fringe bitmaps
! *** New function 'define-fringe-bitmap' can now be used to create new
! fringe bitmaps, as well as change the built-in fringe bitmaps.
! To change a built-in bitmap, do (require 'fringe) and use the symbol
! identifing the bitmap such as `left-truncation or `continued-line'.
! *** New function 'destroy-fringe-bitmap' may be used to destroy a
! previously created bitmap, or restore a built-in bitmap.
! *** 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.
! *** 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.
! 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.
+++
! ** 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 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 `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'.
+++
! ** 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.
+++
! ** 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.
+++
! ** `declare' is now a macro. This change was made mostly for
! documentation purposes and should have no real effect on Lisp code.
+++
! ** A file name handler can declare which operations it handles.
! 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.
! This is useful for autoloaded handlers, to prevent them from being
! autoloaded when not really necessary.
+++
! ** 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.
+++
! ** 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.
! +++
! ** 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.
! +++ (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.
+++
! ** The mouse pointer shape over ordinary text or images may now be
! controlled/overriden via the `pointer' text property.
+++
! ** 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'.
! ** 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.
! +++
! *** Mouse events may now include image object in addition to string object.
! +++
! *** Mouse events include relative x and y pixel coordinates relative to
! the top left corner of the object (image or character) clicked on.
! +++
! *** Mouse events include the pixel width and height of the object
! (image or character) clicked on.
! +++
! *** 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.
! +++
! ** 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.
! ---
! ** New function `redirect-debugging-output' can be used to redirect
! debugging output on the stderr file handle to a file.
+++
! ** `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.
! +++
! ** `makehash' is now obsolete. Use `make-hash-table' instead.
! +++
! ** 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.
! +++
! ** Major modes can define `eldoc-documentation-function'
! locally to provide Eldoc functionality by some method appropriate to
! the language.
! ---
! ** 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.
! +++
! ** The argument to forward-word, backward-word, forward-to-indentation
! and backward-to-indentation is now optional, and defaults to 1.
! +++
! ** (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.
! Fontsets can specify a font on a per-character basis; when the fontset
! does that, this value may not be accurate.
! +++
! ** 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.
! +++
! ** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
! return window edges in units of pixels, rather than columns and lines.
! +++
! ** The kill-buffer-hook is now permanent-local.
! +++
! ** `select-window' takes an optional second argument `norecord', like
! `switch-to-buffer'.
! +++
! ** The new macro `with-selected-window' temporarily switches the
! selected window without impacting the order of buffer-list.
+++
! ** 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.
+++
! ** (map-keymap FUNCTION KEYMAP) applies the function to each binding
! in the keymap.
! ---
! ** 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.
! +++
! ** The new macro dynamic-completion-table supports using functions
! as a dynamic completion table.
! (dynamic-completion-table FUN)
! 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 new macro lazy-completion-table initializes a variable
! as a lazy completion table.
! (lazy-completion-table VAR FUN &rest 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.
+++
! ** `minor-mode-list' now holds a list of minor mode commands.
! +++
! ** The new function `modify-all-frames-parameters' modifies parameters
! for all (existing and future) frames.
+++
! ** `sit-for' can now be called with args (SECONDS &optional NODISP).
+++
! ** New standard font-lock face `font-lock-preprocessor-face'.
! +++
! ** The macro `with-syntax-table' does not copy the table any more.
! +++
! ** 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.
! +++
! ** 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).
! +++
! ** `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.
! ---
! ** `set-fontset-font', `fontset-info', `fontset-font' now operate on
! the default fontset if the argument NAME is nil..
! +++
! ** 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 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.
! +++
! ** 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
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.
! +++
! ** New variables `gc-elapsed' and `gcs-done' provide extra information
! on garbage collection.
! +++
! ** New function `decode-coding-inserted-region' decodes a region as if
! it is read from a file without decoding.
! +++
! ** New function `locale-info' accesses locale information.
! +++
! ** `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'.
! ---
! ** `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.
! ** Byte compiler changes:
! ---
! *** `(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.
! +++
! *** 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:
! (if (fboundp 'foo) <then> <else>)
! (if (boundp 'foo) <then> <else)
! 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.
! +++
! *** The new macro `with-no-warnings' suppresses all compiler warnings
! inside its body. In terms of execution, it is equivalent to `progn'.
! +++
! ** The new translation table `translation-table-for-input'
! is used for customizing self-insertion. The character to
! be inserted is translated through it.
! +++
! ** `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).
! +++
! ** `load-history' now records (defun . FUNNAME) when a function is
! defined. For a variable, it records just the variable name.
! +++
! ** 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.
! +++
! ** 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).
! +++
! ** 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.
! When you bind `print-continuous-numbering' to t, you should
! also bind `print-number-table' to nil.
! +++
! ** When using non-toolkit scroll bars with the default width,
! the scroll-bar-width frame parameter value is nil.
+++
! ** The new function copy-abbrev-table returns a new abbrev table that
! is a copy of a given abbrev table.
+++
! ** 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:
! #!/usr/bin/emacs --script
+++
! ** 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:
! emacs -batch -L .. -L /tmp --eval "(require 'foo)"
! 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.)
+++
! ** 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 CCL functions `lookup-character' and `lookup-integer' access
! hash tables defined by the Lisp function `define-translation-hash-table'.
+++
! ** 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.
+++
! ** There is a new Warnings facility; see the functions `warn'
! and `display-warning'.
+++
! ** 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.
! ---
! ** When pure storage overflows while dumping, Emacs now prints how
! much pure storage it will approximately need.
+++
! ** 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.)
! ---
! ** The new function `merge-coding-systems' fills in unspecified aspects
! of one coding system from another coding system.
! +++
! ** 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.
! ---
! ** 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.
! If the form is not "ok to call", that means Emacs asks for
! confirmation as before.
+++
** Controlling the default left and right fringe widths.
--- 2461,3440 ----
mode-lines in inverse-video.
---
! ** The game `mpuz' is enhanced.
! `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.
---
! ** display-battery has been replaced by display-battery-mode.
---
! ** 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'.
! ---
! ** global-whitespace-mode is a new alias for whitespace-global-mode.
+++
! ** The command `list-text-properties-at' has been deleted because
! C-u C-x = gives the same information and more.
! ---
! ** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead.
! ---
! ** iso-acc.el is now obsolete. Use one of the latin input methods instead.
! ---
! ** cplus-md.el has been removed to avoid problems with Custom.
!
! * New modes and packages in Emacs 22.1
+++
! ** New package benchmark.el contains simple support for convenient
! timing measurements of code (including the garbage collection component).
+++
! ** Calc is now part of the Emacs distribution.
! 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'.
! ---
! ** `cfengine-mode' is a major mode for editing GNU Cfengine
! configuration files.
+++
! ** 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.
---
! ** 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 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 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'.
+++
! ** 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 new Lisp library fringe.el controls the appearance of fringes.
! ---
! ** GDB-Script-mode is used for files like .gdbinit.
+++
! ** 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.
! Use M-x gdba to start GDB-UI.
! ---
! ** The new package ibuffer provides a powerful, completely
! customizable replacement for buff-menu.el.
---
! ** 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.
+++
! ** 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 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.
! There is now a keyboard macro ring which stores the most recently
! defined macros.
! 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 normal macro bindings C-x (, C-x ), and C-x e now interfaces to
! the keyboard macro ring.
! The C-x e command now automatically terminates the current macro
! before calling it, if used while defining a macro.
! 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.
! 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.
+++
! ** 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 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.
! ** The printing package is now part of the Emacs distribution.
! 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.
+++
! ** The new python.el package is used to edit Python and Jython programs.
! ---
! ** 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, ...
! There is also Global Reveal mode which affects all buffers.
! ---
! ** 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.
+++
! ** 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.
+++
! ** The new global minor mode `size-indication-mode' (off by default)
! shows the size of accessible part of the buffer on the mode line.
+++
! ** 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.
! +++
! ** The thumbs.el package allows you to preview image files as thumbnails
! and can be invoked from a Dired buffer.
+++
! ** Tramp is now part of the distribution.
! 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).
! Shell connections can be acquired via `rsh', `ssh', `telnet' and also
! `su' and `sudo'. Ange-FTP is still supported via the `ftp' method.
! If you want to disable Tramp you should set
! (setq tramp-default-method "ftp")
! ---
! ** 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 URL package (which had been part of W3) is now part of Emacs.
! ---
! ** 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'.
! +++
! ** The wdired.el package allows you to use normal editing commands on Dired
! buffers to change filenames, permissions, etc...
!
! * Incompatible Lisp Changes in Emacs 22.1
+++
! ** 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.
+++
! ** `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'.)
! +++
! ** 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.
!
! * Lisp Changes in Emacs 22.1
! +++
! ** 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:
! #!/usr/bin/emacs --script
! +++
! ** 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:
! emacs -batch -L .. -L /tmp --eval "(require 'foo)"
! 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 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 `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'.
+++
! ** The argument to forward-word, backward-word, forward-to-indentation
! and backward-to-indentation is now optional, and defaults to 1.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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).
! ---
! ** list-buffers-noselect now takes an additional argument, BUFFER-LIST.
! If it is non-nil, it specifies which buffers to list.
! +++
! ** The kill-buffer-hook is now permanent-local.
! +++
! ** `auto-save-file-format' has been renamed to
! `buffer-auto-save-file-format' and made into a permanent local.
! +++
! ** 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.
! +++
! ** copy-file now takes an additional option arg MUSTBENEW.
! This argument works like the MUSTBENEW argument of write-file.
! +++
! ** 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.
+++
! ** `visited-file-modtime' and `calendar-time-from-absolute' now return
! a list of two integers, instead of a cons.
! +++
! ** `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 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.
+++
! ** 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.
+++
! ** read-from-minibuffer now accepts an additional argument KEEP-ALL
! saying to put all inputs in the history list, even empty ones.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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.
! +++
! ** 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.
! Spaces inside of constructs such as [..] and *, +, ? are never
! replaced with search-spaces-regexp.
+++
! ** 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.
+++
! ** skip-chars-forward and skip-chars-backward now handle
! character classes such as [:alpha:], along with individual characters
! and ranges.
! ---
! ** In `replace-match', the replacement text no longer inherits
! properties from surrounding text.
! +++
! ** 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.
+++
! ** 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 macro define-obsolete-variable-alias combines defvaralias and
! make-obsolete-variable. The macro define-obsolete-function-alias
! combines defalias and make-obsolete.
+++
! ** Enhancements to keymaps.
! *** Cleaner way to enter key sequences.
! 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.
! - The new function `command-remapping' returns the binding for a
! remapped command in the current keymaps, or nil if not remapped.
! - key-binding now remaps interactive commands unless the optional
! third argument NO-REMAP is non-nil.
! - 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).
! - The new variable `this-original-command' contains the original
! command before remapping. It is equal to `this-command' when the
! command was not remapped.
! *** If text has a `keymap' property, that keymap takes precedence
! over minor mode keymaps.
! *** 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.
! *** Dense keymaps now handle inheritance correctly.
! Previously a dense keymap would hide all of the simple-char key
! bindings of the parent keymap.
! *** `define-key-after' now accepts keys longer than 1.
! *** New function `current-active-maps' returns a list of currently
! active keymaps.
! *** New function `describe-buffer-bindings' inserts the list of all
! defined keys and their definitions.
! *** New function `keymap-prompt' returns the prompt-string of a keymap
! *** (map-keymap FUNCTION KEYMAP) applies the function to each binding
! in the keymap.
! *** New variable emulation-mode-map-alists.
! 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.
+++
! ** Atomic change groups.
! 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:
! (atomic-change-group
! (insert foo)
! (delete-region x y))
! 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 you need something more sophisticated, you can directly call the
! lower-level functions that `atomic-change-group' uses. Here is how.
! 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.
! Before you change the buffer again, you must activate the change
! group. Pass the handle to `activate-change-group' afterward to
! do this.
! 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.
! 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.
! 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:
! (nconc (prepare-change-group buffer-1)
! (prepare-change-group buffer-2))
! 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'.
! 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.
+++
! ** 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.
+++
! ** New `yank-handler' text property may be used to control how
! previously killed text on the kill-ring is reinserted.
! The value of the yank-handler property must be a list with one to four
! elements with the following format:
! (FUNCTION PARAM NOEXCLUDE UNDO).
! 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:
! 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 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.
! *** 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.
! *** 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 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.
+++
! ** 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).
! 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.
+++
! ** 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.
+++
! ** Enhancements to process support
! *** Function list-processes now has an optional argument; if non-nil,
! only the processes whose query-on-exit flag is set are listed.
! *** 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 new low-level functions process-plist and set-process-plist are
! used to access and replace the entire property list of a process.
! *** 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.
! *** Adaptive read buffering of subprocess output.
! 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 new function `call-process-shell-command' executes a shell
! command command synchronously in a separate process.
!
! *** The new function `process-file' is similar to `call-process', but
! obeys file handlers. The file handler is chosen based on
! default-directory.
!
! *** The new function `set-process-filter-multibyte' sets the
! multibyteness of a string given to a process's filter.
!
! *** 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
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
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.
+++
! ** Enhanced networking support.
! *** 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.
! - 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.
! To test for the availability of a given feature, use featurep like this:
! (featurep 'make-network-process '(:type datagram))
! *** Original open-network-stream is now emulated using make-network-process.
! *** New function open-network-stream-nowait.
! 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".
! *** New function open-network-stream-server.
! 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.
! *** New functions process-datagram-address and set-process-datagram-address.
! These functions are used with datagram-based network processes to get
! and set the current address of the remote partner.
! *** New function format-network-address.
! 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.
! *** 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.
! 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.
! *** 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.
! *** New function network-interface-list.
! This function returns a list of network interface names and their
! current network addresses.
! *** New function network-interface-info.
! This function returns the network address, hardware address, current
! status, and other information about a specific network interface.
! *** 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".
+++
! ** 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.
+++
! ** 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 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.
! +++
! ** 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.
! +++
! ** 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.
+++
! ** 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.
! +++
! ** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
! return window edges in units of pixels, rather than columns and lines.
+++
! ** The new macro `with-selected-window' temporarily switches the
! selected window without impacting the order of buffer-list.
+++
! ** `select-window' takes an optional second argument `norecord', like
! `switch-to-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'.
! +++
! ** 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.
+++
! ** Customizable fringe bitmaps
!
! *** New function 'define-fringe-bitmap' can now be used to create new
! fringe bitmaps, as well as change the built-in fringe bitmaps.
!
! To change a built-in bitmap, do (require 'fringe) and use the symbol
! identifing the bitmap such as `left-truncation or `continued-line'.
!
! *** New function 'destroy-fringe-bitmap' may be used to destroy a
! previously created bitmap, or restore a built-in bitmap.
! *** 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.
! *** 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.
! 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.
***************
*** 3753,3762 ****
fringe bitmaps is 8 pixels.
+++
! ** Per-window fringes 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
--- 3457,3466 ----
fringe bitmaps is 8 pixels.
+++
! ** Per-window fringe and scrollbar 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
***************
*** 3773,3782 ****
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
controlling the width and position of scroll-bars.
To control the scroll-bar of a window, either set the buffer-local
--- 3477,3483 ----
displaying the buffer in a window, or use `set-window-buffer' to force
an update of the display margins.
! *** 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
***************
*** 3788,4263 ****
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.
+++
! ** 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').
+++
! ** 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.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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.
!
! ---
! ** 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.
+++
! ** 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
! (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
! DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The
! declaration specifiers supported are:
! (indent INDENT)
! Set NAME's `lisp-indent-function' property to INDENT.
! (edebug DEBUG)
! Set NAME's `edebug-form-spec' property to DEBUG. (This is
! equivalent to writing a `def-edebug-spec' for the macro.
+++
! ** 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.
! - The new function `command-remapping' returns the binding for a
! remapped command in the current keymaps, or nil if not remapped.
! - key-binding now remaps interactive commands unless the optional
! third argument NO-REMAP is non-nil.
! - 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).
! - The new variable `this-original-command' contains the original
! command before remapping. It is equal to `this-command' when the
! command was not remapped.
+++
! ** New variable emulation-mode-map-alists.
! 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.
+++
! ** Atomic change groups.
! 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:
! (atomic-change-group
! (insert foo)
! (delete-region x y))
! 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 you need something more sophisticated, you can directly call the
! lower-level functions that `atomic-change-group' uses. Here is how.
! 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.
! Before you change the buffer again, you must activate the change
! group. Pass the handle to `activate-change-group' afterward to
! do this.
! 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.
! 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.
! 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:
! (nconc (prepare-change-group buffer-1)
! (prepare-change-group buffer-2))
! 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'.
! 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.
+++
! ** New variable char-property-alias-alist.
! 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.
+++
! ** 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'.
+++
! ** New function remove-list-of-text-properties.
! 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.
+++
! ** New function insert-for-yank.
! 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.
+++
! ** New function insert-buffer-substring-as-yank.
! This function works like `insert-buffer-substring', but removes the
! text properties in the `yank-excluded-properties' list.
+++
! ** New function insert-buffer-substring-no-properties.
! This function is like insert-buffer-substring, but removes all
! text properties from the inserted substring.
+++
! ** New `yank-handler' text property may be used to control how
! previously killed text on the kill-ring is reinserted.
! The value of the yank-handler property must be a list with one to four
! elements with the following format:
! (FUNCTION PARAM NOEXCLUDE UNDO).
! 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:
! 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 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.
+++
! *** 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.
+++
! ** New function display-supports-face-attributes-p may be used to test
! whether a given set of face attributes is actually displayable.
! 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.
! ---
! ** 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).
! +++
! ** 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.
! +++
! ** New functions face-attribute-relative-p and merge-face-attribute
! help with handling relative face attributes.
+++
! ** 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.
+++
! ** Enhancements to process support
! *** Function list-processes now has an optional argument; if non-nil,
! only the processes whose query-on-exit flag is set are listed.
! *** 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 new low-level functions process-plist and set-process-plist are
! used to access and replace the entire property list of a process.
! *** 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.
---
! *** Adaptive read buffering of subprocess output.
! 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.
+++
! ** Enhanced networking support.
! *** 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.
! - 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.
! To test for the availability of a given feature, use featurep like this:
! (featurep 'make-network-process '(:type datagram))
! *** Original open-network-stream is now emulated using make-network-process.
! *** New function open-network-stream-nowait.
! 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".
! *** New function open-network-stream-server.
! 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.
! *** New functions process-datagram-address and set-process-datagram-address.
! These functions are used with datagram-based network processes to get
! and set the current address of the remote partner.
! *** New function format-network-address.
! 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.
! *** 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.
! 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.
! *** 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.
! *** New function network-interface-list.
! This function returns a list of network interface names and their
! current network addresses.
! *** New function network-interface-info.
! This function returns the network address, hardware address, current
! status, and other information about a specific network interface.
+++
! ** New function copy-tree.
+++
! ** New function substring-no-properties.
+++
! ** New function minibuffer-selected-window.
! +++
! ** New function `call-process-shell-command'.
+++
! ** New function `process-file'.
!
! This is similar to `call-process', but obeys file handlers. The file
! handler is chosen based on default-directory.
---
! ** 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.
+++
! ** 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.
! ---
! ** 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))))
+++
** File local variables.
--- 3489,4193 ----
of the display margins.
+++
! ** When using non-toolkit scroll bars with the default width,
! the scroll-bar-width frame parameter value is nil.
+++
! ** 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.
+++
! ** 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 buffer local line-spacing variable may now have a float value,
! which is used as a height relative to the default frame line height.
! +++
! ** 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.
!
! +++
! *** Mouse events may now include image object in addition to string object.
+++
! *** Mouse events include relative x and y pixel coordinates relative to
! the top left corner of the object (image or character) clicked on.
+++
! *** Mouse events include the pixel width and height of the object
! (image or character) clicked on.
+++
! *** 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.
+++
! ** 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.
! +++
! ** 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 display space :width and :align-to text properties are now
! supported on text terminals.
! +++
! ** Arguments for remove-overlays are now optional, so that you can
! remove all overlays in the buffer by just calling (remove-overlay).
+++
! ** New variable char-property-alias-alist.
! 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.
! +++
! ** 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.
! +++
! ** 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.
! +++
! ** 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.
! +++
! ** (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.
! Fontsets can specify a font on a per-character basis; when the fontset
! does that, this value may not be accurate.
! +++
! ** New function display-supports-face-attributes-p may be used to test
! whether a given set of face attributes is actually displayable.
! 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.
! ---
! ** 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 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).
! +++
! ** 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.
! ---
! ** `set-fontset-font', `fontset-info', `fontset-font' now operate on
! the default fontset if the argument NAME is nil..
! ---
! ** 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).
+++
! ** 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.
! +++
! ** New functions face-attribute-relative-p and merge-face-attribute
! help with handling relative face attributes.
+++
! ** 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.
! +++
! ** New standard font-lock face `font-lock-preprocessor-face'.
! +++
! ** 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'.
! ---
! ** 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:
! s{
! foo
! }{
! bar
! }e
! 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.
! +++
! ** 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.
! ---
! ** 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.
! +++
! ** A file name handler can declare which operations it handles.
! 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.
! This is useful for autoloaded handlers, to prevent them from being
! autoloaded when not really necessary.
! +++
! ** `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'.
+++
! ** Major mode functions now run the new normal hook
! `after-change-major-mode-hook', at their very end, after the mode hooks.
! ---
! ** 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.
+++
! ** Major modes can define `eldoc-documentation-function'
! locally to provide Eldoc functionality by some method appropriate to
! the language.
+++
! ** define-derived-mode by default creates a new empty abbrev table.
! It does not copy abbrevs from the parent mode's abbrev table.
! +++
! ** define-minor-mode now accepts arbitrary additional keyword arguments
! and simply passes them to defcustom, if applicable.
+++
! ** 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.
! +++
! ** `minor-mode-list' now holds a list of minor mode 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 function `eql' is now available without requiring the CL package.
+++
! ** 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.
! +++
! ** 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.
+++
! ** A hex escape in a string forces the string to be multibyte.
! An octal escape makes it unibyte.
! +++
! ** `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.
! +++
! ** New function `string-to-multibyte' converts a unibyte string to a
! multibyte string with the same individual character codes.
! +++
! ** 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).
+++
! ** `sit-for' can now be called with args (SECONDS &optional NODISP).
+++
! ** 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 `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
! (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
! DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The
! declaration specifiers supported are:
! (indent INDENT)
! Set NAME's `lisp-indent-function' property to INDENT.
! (edebug DEBUG)
! Set NAME's `edebug-form-spec' property to DEBUG. (This is
! equivalent to writing a `def-edebug-spec' for the macro.
+++
! ** 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.
+++
! ** The new macro dynamic-completion-table supports using functions
! as a dynamic completion table.
! (dynamic-completion-table FUN)
! 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 new macro lazy-completion-table initializes a variable
! as a lazy completion table.
! (lazy-completion-table VAR FUN &rest 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.
! +++
! ** `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).
! +++
! ** `load-history' now records (defun . FUNNAME) when a function is
! defined. For a variable, it records just the variable name.
---
! ** 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.
! +++
! ** The function symbol-file can now search specifically for function or
! variable definitions.
+++
! ** `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.
! +++
! ** `declare' is now a macro. This change was made mostly for
! documentation purposes and should have no real effect on Lisp code.
! +++
! ** Byte compiler changes:
! *** 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.
! *** The new macro `with-no-warnings' suppresses all compiler warnings
! inside its body. In terms of execution, it is equivalent to `progn'.
! *** 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:
! (if (fboundp 'foo) <then> <else>)
! (if (boundp 'foo) <then> <else)
! 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.
! *** `(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).
! +++
! ** There is a new Warnings facility; see the functions `warn'
! and `display-warning'.
! ---
! ** 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.
! +++
! ** 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.
! ---
! ** set-buffer-file-coding-system now takes an additional argument,
! NOMODIFY. If it is non-nil, it means don't mark the buffer modified.
! +++
! ** 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.)
! ---
! ** The new function `merge-coding-systems' fills in unspecified aspects
! of one coding system from another coding system.
! ---
! ** 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 `decode-coding-inserted-region' decodes a region as if
! it is read from a file without decoding.
+++
! ** Function `translate-region' accepts also a char-table as TABLE
! argument.
+++
! ** The new translation table `translation-table-for-input'
! is used for customizing self-insertion. The character to
! be inserted is translated through it.
! ---
! ** New CCL functions `lookup-character' and `lookup-integer' access
! hash tables defined by the Lisp function `define-translation-hash-table'.
+++
! ** 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.
---
! ** New function `redirect-debugging-output' can be used to redirect
! debugging output on the stderr file handle to a file.
! +++
! ** `makehash' is now obsolete. Use `make-hash-table' instead.
+++
! ** The macro `with-syntax-table' does not copy the table any more.
! +++
! ** New variables `gc-elapsed' and `gcs-done' provide extra information
! on garbage collection.
! +++
! ** New function `locale-info' accesses locale information.
! +++
! ** 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.
! 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.
***************
*** 4266,4299 ****
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.
! +++
! ** New function format-mode-line.
! This returns the mode-line or header-line of the selected (or a
! specified) window as a string with or without text properties.
+++
! ** Functions `get' and `plist-get' no longer signals an error for
! a malformed property list. They also detect cyclic lists.
+++
! ** 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'.
+++
! ** New function `tool-bar-local-item-from-menu'
! 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 function `atan' now accepts an optional second argument.
--- 4196,4242 ----
properties--any specified text properties are discarded.
+++
! ** 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.
! ---
! ** 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.
! If the form is not "ok to call", that means Emacs asks for
! confirmation as before.
+++
! ** 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').
+++
! ** 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.
+++
! ** 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.
! +++
! ** 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.
***************
*** 4303,4321 ****
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.
! +++
! ** 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.
+++
** The new mode-line construct `(:propertize ELT PROPS...)' can be
--- 4246,4255 ----
equivalent to the standard C library function `atan2'.)
+++
! ** New function format-mode-line.
! 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
***************
*** 4334,4425 ****
indentation of keywords and forms in loop forms.
---
! ** 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:
! s{
! foo
! }{
! bar
! }e
! 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.
---
** describe-vector now takes a second argument `describer' which is
--- 4268,4286 ----
indentation of keywords and forms in loop forms.
---
! ** Indentation of backquoted forms has been made customizable in the
! cl-indent package. See the new user option `lisp-backquote-indentation'.
! +++
! ** 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.
---
** describe-vector now takes a second argument `describer' which is
***************
*** 4429,4597 ****
** defcustom and other custom declarations now use a default group
(the last prior group defined in the same file) when no :group was given.
+++
** 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.
! ---
! ** 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.
! ---
! ** In `replace-match', the replacement text no longer inherits
! properties from surrounding text.
+++
! ** 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.
+++
! ** New function `buffer-local-value'.
! 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.
---
! ** 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.
! +++
! ** 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.
---
! ** 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 `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.
+++
! ** define-minor-mode now accepts arbitrary additional keyword arguments
! and simply passes them to defcustom, if applicable.
+++
! ** define-derived-mode by default creates a new empty abbrev table.
! It does not copy abbrevs from the parent mode's 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.
+++
! ** 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.
+++
! ** 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.
! ---
! ** `define-key-after' now accepts keys longer than 1.
+++
! ** The local variable `no-byte-compile' in elisp files is now obeyed.
+++
! ** 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.
+++
! ** New functions `keymap-prompt' and `current-active-maps'.
! ---
! ** New function `describe-buffer-bindings'.
+++
! ** New vars `exec-suffixes' and `load-suffixes' used when
! searching for an executable resp. an elisp file.
+++
! ** 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.
+++
! ** 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.
+++
! ** 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 variables most-positive-fixnum and most-negative-fixnum
! hold the largest and smallest possible integer values.
! ---
! ** 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.
! ---
! ** 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.
! ---
! ** New function x-send-client-message sends a client message when
! running under X.
+++
! ** Arguments for remove-overlays are now optional, so that you can remove
! all overlays in the buffer by just calling (remove-overlay).
! ** New packages:
+++
! *** 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.
! Use M-x gdba to start GDB-UI.
*** The new package syntax.el provides an efficient way to find the
current syntactic context (as returned by parse-partial-sexp).
--- 4290,4515 ----
** 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.
---
! ** 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.
! +++
! ** 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.
! +++
! ** New vars `exec-suffixes' and `load-suffixes' used when
! searching for an executable resp. an elisp file.
+++
! ** 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 variables most-positive-fixnum and most-negative-fixnum
! hold the largest and smallest possible integer values.
! ---
! ** 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 x-send-client-message sends a client message when
! running under X.
! ---
! ** easy-mmode-define-global-mode has been renamed to
! define-global-minor-mode. The old name remains as an alias.
---
! ** 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 `assoc-string' replaces `assoc-ignore-case' and
! `assoc-ignore-representation', which are still available, but have
! been declared obsolete.
+++
! *** 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.
+++
! *** 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.
+++
! *** New function copy-tree makes a copy of a tree, recursively copying
! both cars and cdrs.
+++
! *** 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 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.
! +++
! *** 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 new primitive `get-internal-run-time' returns the processor
! run time used by Emacs since start-up.
+++
! *** The new function insert-buffer-substring-as-yank works like
! `insert-buffer-substring', but removes the text properties in the
! `yank-excluded-properties' list.
+++
! *** The new function insert-buffer-substring-no-properties is like
! insert-buffer-substring, but removes all text properties from the
! inserted substring.
! +++
! *** 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 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.
+++
! *** 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.
! +++
! *** 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'.
! *** 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.
! +++
! *** New function minibuffer-selected-window returns the window which
! was selected when entering the minibuffer.
! +++
! *** The new function `modify-all-frames-parameters' modifies parameters
! for all (existing and future) frames.
! +++
! *** 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.
! ---
! *** New function quail-find-key returns a list of keys to type in the
! current input method to input a character.
+++
! *** The new function `rassq-delete-all' deletes all elements from an
! alist whose cdr is `eq' to a specified value.
+++
! *** 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 new primitive `set-file-times' sets a file's access and
! modification times. Magic file name handlers can handle this
! operation.
! +++
! *** New function substring-no-properties returns a substring without
! text properties.
! +++
! *** 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.
! +++
! *** `syntax-class' extracts the class of a syntax code (as returned
! by syntax-after).
+++
! *** New function `tool-bar-local-item-from-menu'
! 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.
+++
! *** New function window-body-height.
! This is like window-height but does not count the mode line
! or the header line.
! +++
! *** (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).
***************
*** 4611,4616 ****
--- 4529,4582 ----
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.
* Installation changes in Emacs 21.3
- [Emacs-diffs] Changes to emacs/etc/NEWS, Lars Hansen, 2005/05/01
- [Emacs-diffs] Changes to emacs/etc/NEWS, Richard M . Stallman, 2005/05/01
- [Emacs-diffs] Changes to emacs/etc/NEWS, Nick Roberts, 2005/05/01
- [Emacs-diffs] Changes to emacs/etc/NEWS, Kim F . Storm, 2005/05/02
- [Emacs-diffs] Changes to emacs/etc/NEWS,
Richard M . Stallman <=
- [Emacs-diffs] Changes to emacs/etc/NEWS, Richard M . Stallman, 2005/05/02
- [Emacs-diffs] Changes to emacs/etc/NEWS, Kim F . Storm, 2005/05/03
- [Emacs-diffs] Changes to emacs/etc/NEWS, Richard M . Stallman, 2005/05/04
- [Emacs-diffs] Changes to emacs/etc/NEWS, Daniel Pfeiffer, 2005/05/05
- [Emacs-diffs] Changes to emacs/etc/NEWS, Nick Roberts, 2005/05/06
- [Emacs-diffs] Changes to emacs/etc/NEWS, Eli Zaretskii, 2005/05/07
- [Emacs-diffs] Changes to emacs/etc/NEWS, Luc Teirlinck, 2005/05/07
- [Emacs-diffs] Changes to emacs/etc/NEWS, Richard M . Stallman, 2005/05/08
- [Emacs-diffs] Changes to emacs/etc/NEWS, Richard M . Stallman, 2005/05/09
- [Emacs-diffs] Changes to emacs/etc/NEWS, Daniel Pfeiffer, 2005/05/13