Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
For older news, see the file ONEWS
+You can narrow news to the specific version by calling
+`view-emacs-news' with a prefix argument or by typing C-u C-h C-n.
Temporary note:
+++ indicates that the appropriate manual has already been updated.
\f
* Installation Changes in Emacs 21.4
+** 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'.
+
+---
+** A Bulgarian translation of the Emacs Tutorial is available.
+
** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
when you run configure. This requires Gtk+ 2.0 or newer. This port
provides a way to display multilingual text in menus (with some caveats).
---
** Support for GNU/Linux systems on X86-64 machines was added.
----
-** A Bulgarian translation of the Emacs Tutorial is available.
-
---
** A French translation of the `Emacs Survival Guide' is available.
---
** A French translation of the Emacs Tutorial is available.
+** Building with -DENABLE_CHECKING does not automatically build with union
+types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
\f
* Changes in Emacs 21.4
+** 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.
+
+** 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.
+
+** Convenient commands to switch buffers in a cyclic order are C-x <left>
+(prev-buffer) and C-x <right> (next-buffer).
+
+** 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 will 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 will now prompt you for a port number with C-u M-x telnet.
+
++++
+** New command line option -Q.
+
+This is like using -q --no-site-file, but in addition it also disables
+the menu-bar, the tool-bar, the scroll-bars, tool tips, the blinking
+cursor, and the fancy startup screen.
+
+** 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 will stay 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 will stay there. This
+rule applies to file buffers. For non-file buffers, the behavior may
+be mode dependent.
+
+** 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 will only revert 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.
+
+** 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 will again be loaded with the new `grep-mode'.
+
+** 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.
+
++++
+** 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.
+
+*** 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.
+
+*** New customizable variables:
+ - desktop-save. Determins whether the desktop should be saved when it is
+ killed.
+ - desktop-file-name-format.
+ - desktop-path. List of directories in which to lookup the desktop file.
+ - desktop-locals-to-save.
+ - desktop-globals-to-clear.
+ - desktop-clear-preserve-buffers-regexp.
+
+*** 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 behaviour of continuing such lines.
+
+** The buffer boundaries (i.e. first and last line in the buffer) may
+now be marked with angle bitmaps in the fringes. In addition, up and
+down arrow bitmaps may be shown at the top and bottom of the left or
+right fringe if the window can be scrolled in either direction.
+
+This behavior is activated by setting the buffer-local variable
+`indicate-buffer-boundaries' to a non-nil value. The default value of
+this variable is found in `default-indicate-buffer-boundaries'.
+
+If value is `left' or `right', both angle and arrow bitmaps are
+displayed in the left or right fringe, resp. Any other non-nil value
+causes the bitmap on the top line to be displayed in the left fringe,
+and the bitmap on the bottom line in the right fringe.
+
+If value is a cons (ANGLES . ARROWS), the car specifies the position
+of the angle bitmaps, and the cdr specifies the position of the arrow
+bitmaps.
+
+For example, (t . right) places the top angle bitmap in left fringe,
+the bottom angle bitmap in right fringe, and both arrow bitmaps in
+right fringe. To show just the angle bitmaps in the left fringe, but
+no arrow bitmaps, use (left . nil).
+
** 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
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))
+ '(("\\<\\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
*** 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 it's error stream more frequently. Thus error messages
+osql flushes its error stream more frequently. Thus error messages
are displayed when they occur rather than when the session is
terminated.
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.
** 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'.
+
++++
+*** Dired's v command now runs external viewers to view certain
+types of files. The variable `dired-view-command-alist' controls
+what external viewers to use and when.
+
+*** 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 M-O,
+marks omitted files. The variable dired-omit-files-p is obsoleted, use the
+mode toggling function instead.
+
+** Info mode:
+
+*** A numeric prefix argument of `info' selects an Info buffer
+with the number appended to the *info* buffer name.
+
+*** 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 command `Info-search-case-sensitively' (bound to S).
+
+*** New command `Info-search-next' (unbound) repeats the last search
+without prompting for a new search string.
+
+*** 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.
+*** 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-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
** New functions frame-current-scroll-bars and window-current-scroll-bars.
These functions return the current locations of the vertical and
-horisontal scroll bars in a frame or window.
+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.
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.
-** `describe-char' can show data from the Unicode database file. See
-user option `unicode-data'.
-
** `undo-only' does an undo which does not redo any previous undo.
** `uniquify-strip-common-suffix' tells uniquify to prefer
latter is used by GNU locales.
** The utf-8/16 coding systems have been enhanced.
-By default, untranslatable utf-8 sequences (mostly representing CJK
-characters) are simply composed into single quasi-characters. User
-option `utf-translate-cjk' arranges to translate many utf-8 CJK
-character sequences into real Emacs characters in a similar way to the
-Mule-UCS system. This uses significant space, so is not the default.
+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
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, 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.
+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
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,
in a directory or in a file. See the documentation of the user option
`display-time-mail-directory'.
-+++
-** The default value for `Info-scroll-prefer-subnodes' is now nil.
-
---
** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
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.
whose width, height, or both width and height take up the entire
screen size. (For now, this does not work with some window managers.)
----
-** Info-index offers completion.
-
---
** Emacs now tries to set up buffer coding systems for HTML/XML files
automatically.
Minor Improvements
+*** The STARTTLS elisp wrapper (starttls.el) can now use GNUTLS
+instead of the OpenSSL based "starttls" tool. For backwards
+compatibility, it will prefer "starttls", but you can toggle
+`starttls-use-gnutls' to switch to GNUTLS (or simply remove the
+"starttls" tool).
+
*** Do not allow debugger output history variable to grow without bounds.
+++
to hide its text. This should be mostly transparent but slightly
changes the behavior of motion commands like C-e and C-p.
-+++
-** 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'.
-
-+++
-** Dired's v command now runs external viewers to view certain
-types of files. The variable `dired-view-command-alist' controls
-what external viewers to use and when.
-
+++
** Unquoted `$' in file names do not signal an error any more when
the corresponding environment variable does not exist.
is only rarely needed.
---
-** jit-lock can now be delayed with `jit-lock-defer-time'.
+** 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
if the arg is negative, it marks the current and the preceding
paragraphs.
-** In Dired, the w command now copies the current line's file name
-into the kill ring.
-
+++
** The variables dired-free-space-program and dired-free-space-args
have been renamed to directory-free-space-program and
+++
** 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,
+`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
`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
** F90 mode has new navigation commands `f90-end-of-block',
`f90-beginning-of-block', `f90-next-block', `f90-previous-block'.
+** F90 mode now has support for hs-minor-mode (hideshow).
+It cannot deal with every code format, but ought to handle a sizeable
+majority.
+
---
** Prolog mode has a new variable `prolog-font-lock-keywords'
to support use of font-lock.
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
to Windows, and can be found in both source and binary form at
http://gnuwin32.sourceforge.net/. Note that libpng also depends on
zlib, and tiff depends on the version of jpeg that it was compiled
-against.
+against. For additional information, see nt/INSTALL.
---
** Sound is now supported on MS Windows.
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.
+
\f
-* New modes and packages in 21.4
+* New modes and packages in Emacs 21.4
+
+** 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 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)
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.
\f
* Lisp Changes in Emacs 21.4
+** If a command sets transient-mark-mode to `only', that
+enables Transient Mark mode for the following command, only.
+
++++
+** 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.
+
+---
+** 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.
+
+** 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 new primitive `set-file-times' sets a file's access and
+modification times. Magic file name handlers can handle this
+operation.
+
+** 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 0, 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 (RATIO . FACE), 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-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.
+
+If the line-spacing value is a cons (total . SPACING) where SPACING is
+any of the forms described above, the value of SPACING is used as the
+total height of the line, i.e. a varying number of pixels are inserted
+after each line to make each line exactly that many pixels high.
+
+
+** 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.
+
+** 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 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.
+
+** New function 'define-fringe-bitmap' can now be used to change the
+built-in fringe bitmaps, as well as create new fringe bitmaps.
+The return value is a number identifying the new fringe bitmap.
+
+To change a built-in bitmap, do (require 'fringe) and identify the
+bitmap to change with the value of the corresponding symbol, like
+`left-truncation-fringe-bitmap' or `continued-line-fringe-bitmap'.
+
+** 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. Normally,
+this should be a face derived from the `fringe' face, specifying
+the foreground color as the desired 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
+number identifying a fringe bitmap, either built-in or as returned by
+`define-fringe-bitmap', and FACE is an optional face name to be used
+for displaying the bitmap.
+
+** New function `fringe-bitmaps-at-pos' returns a cons (LEFT . RIGHT)
+identifying the current fringe bitmaps in the display line at a given
+buffer position. A nil value means no bitmap.
+
+** 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 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.
+
+** 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 `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 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.
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
** 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
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
** 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
** 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
with Custom.
** UTF-16 coding systems are available, encoding the same characters
-as mule-utf-8. Coding system `utf-16-le-dos' is useful as the value
-of `selection-coding-system' in MS Windows, allowing you to paste
-multilingual text from the clipboard. Set it interactively with
-C-x RET x or in .emacs with `(set-selection-coding-system 'utf-16-le-dos)'.
+as mule-utf-8.
** There is a new language environment for UTF-8 (set up automatically
in UTF-8 locales).