GNU Emacs NEWS -- history of user-visible changes. 2003-05-21
-Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+ Free Software Foundation, Inc.
See the end for copying conditions.
Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
so we will look at it and add it to the manual.
\f
-* Installation Changes in Emacs 21.4
+* 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
---
** Support for GNU/Linux systems on X86-64 machines was added.
+** Mac OS 9 port now uses the Carbon API by default. You can also
+create non-Carbon build by specifying `NonCarbon' as a target. See
+the files mac/README and mac/INSTALL for build instructions.
+
---
** A French translation of the `Emacs Survival Guide' is available.
types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
\f
-* Changes in Emacs 21.4
+* Changes in Emacs 22.1
+
+** C-u M-x goto-line now switches to the most recent previous buffer,
+and goes to the specified line in that buffer.
+
+When goto-line starts to execute, if there's a number in the buffer at
+point then it acts as the default argument for the minibuffer.
+
+** Emacs now responds to mouse-clicks on the mode-line, header-line and
+display margin, when run in an xterm.
+
+** M-SPC (just-one-space) when given a numeric argument N
+converts whitespace around point to N spaces.
+
+** 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
+(beyond the value of `undo-outer-limit'), Emacs discards it and warns
+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
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 menu-bar, the tool-bar, the scroll-bars, tool tips, the blinking
cursor, and the fancy startup screen.
++++
+** 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).
** 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
*** 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.
*** 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.
+ - 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.
- - desktop-globals-to-clear.
- - desktop-clear-preserve-buffers-regexp.
+ - 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
% 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).
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.
+revert to the old behavior 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
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.
+displayed in the left or right fringe, resp.
-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.
+Value may also be an alist which specifies the presense and position
+of each bitmap individually.
-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).
+For example, ((top . left) (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 ((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
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.
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.
+with the number appended to the *info* buffer name (e.g. "*info*<2>").
-*** Regexp isearch (C-M-s and C-M-r) can search through multiple nodes.
-Failed isearch wraps to the top/final node.
+*** isearch in Info uses Info-search and searches through multiple nodes.
+Failed isearch wraps to the top/final node. The user option
+`Info-isearch-search' controls whether to use Info-search or the
+default isearch search function.
*** 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
** 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 on clickable fields).
+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
+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.
point according to context (bound to M-tab).
*** The new commands bibtex-find-entry and bibtex-find-crossref
-locate entries and crossref'd entries.
+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.
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.
---
** 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+ and W32).
+be navigated with the arrow keys (like Gtk+, Mac and W32).
---
-** Dialogs for Lucid/Athena and Lesstif/Motif pops down when pressing ESC.
+** 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+, W32 and Motif/Lesstif can be
+** 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
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
- 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'
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.
+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
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
** Unexpected yanking of text due to accidental clicking on the mouse
wheel button (typically mouse-2) during wheel scrolling is now avoided.
-This behaviour can be customized via the mouse-wheel-click-event and
+This behavior can be customized via the mouse-wheel-click-event and
mouse-wheel-inhibit-click-time variables.
+++
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
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 `::' qualifier triggers C++ parsing in C file.
Previously, only the `template' and `class' keywords had this effect.
+**** The gnucc __attribute__ keyword is now recognised and ignored.
+
**** New language HTML.
Title and h1, h2, h3 are tagged. Also, tags are generated when name= is
used inside an anchor and whenever id= is used.
If you want the old behavior instead, thus avoiding to increase the
size of the tags file, use the --no-globals option.
-**** In Lua, all functions are tagged.
+**** New language Lua.
+All functions are tagged.
**** In Perl, packages are tags.
Subroutine tags are named from their package. You can jump to sub tags
**** New language PHP.
Tags are functions, classes and defines.
-If the --members option is specified to etags, tags are vars also.
+If the --members option is specified to etags, tags are variables also.
**** New default keywords for TeX.
The new keywords are def, newcommand, renewcommand, newenvironment and
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. The default is to set
-it to t only in languages that mandate a final newline in source files
-(C, C++ and Objective-C).
+*** 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
+++
** You can now customize fill-nobreak-predicate to control where
-filling can break lines. We provide two sample predicates,
-fill-single-word-nobreak-p and fill-french-nobreak-p.
+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'.
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.
---
** 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.
This enables Emacs to work better with programs that need to track
`list-colors-display' shows the list of System color names, in case
you wish to use them in other faces.
+---
+** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations.
+Those systems use Unicode internally, so this allows Emacs to share
+multilingual text with other applications. On other versions of
+MS Windows, Emacs now uses the appropriate locale coding-system, so
+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',
"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.
+
\f
-* New modes and packages in Emacs 21.4
+* New modes and packages in Emacs 22.1
+
+** 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 password.el provide a password cache and expiring mechanism.
+
+** 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.
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 behaviour via the variable kmacro-call-repeat-key and
+this behavior via the variable kmacro-call-repeat-key and
kmacro-call-repeat-with-arg.
Keyboard macros can now be debugged and edited interactively.
** `cfengine-mode' is a major mode for editing GNU Cfengine
configuration files.
\f
-* Lisp Changes in Emacs 21.4
+* Incompatible Lisp Changes in Emacs 22.1
+
++++
+** `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.
+\f
+* Lisp Changes in Emacs 22.1
+
+** An element of buffer-undo-list can now have the form (FUNNAME .
+ARGS), where FUNNAME is a symbol other than t or nil. That stands for
+a high-level change that should be undone by evaluating (apply FUNNAME
+ARGS).
+
++++
+** The 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.
+
++++
+** (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.
+
++++
+** `set-auto-mode' now gives the interpreter magic line (if present)
+precedence over the file name. Likewise an <?xml or <!DOCTYPE declaration
+will give the buffer XML or SGML mode, based on the new var
+`magic-mode-alist'.
+
++++
+** New 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.
+
+---
+** 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.
+
++++
+** 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.
+
++++
+** 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.
+
++++
+** 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
modification times. Magic file name handlers can handle this
operation.
-** file-remote-p now returns an identifier for the remote system,
-if the file is indeed remote. (Before, the return value was t in
-this case.)
-
++++
** 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
*** 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
+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
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
+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
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
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
around potentially blocking or long-running code in timers
and post-command-hooks.
+** 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
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.
++++
+** 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 identify the
-bitmap to change with the value of the corresponding symbol, like
-`left-truncation-fringe-bitmap' or `continued-line-fringe-bitmap'.
+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
+*** 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
+*** 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,
+*** 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
+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.
-** 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.
+*** 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
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
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).
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 behaviour of file reading.
+which was not compatible with the behavior of file reading.
+++
** New function `string-to-multibyte' converts a unibyte string to a
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
** 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.
+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
and scroll-bar settings if non-nil.
+++
-** Renamed file hooks to follow the convention:
+** 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.
+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 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
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 behaviour of `insert-for-yank' is modified in various ways:
+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.
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 behaviour can be remedied to some extent
+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
+++
** 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
This returns the mode-line or header-line of the selected (or a
specified) window as a string with or without text properties.
++++
+** New function safe-plist-get.
+
+This function is like plist-get, but never signals an error for
+a malformed property list.
+
+++
** New functions `lax-plist-get' and `lax-plist-put'.
** The new mode-line construct `(:propertize ELT PROPS...)' can be
used to add text properties to mode-line elements.
-+++
-** 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.
-
+++
** The new `%i' and `%I' constructs for `mode-line-format' can be used
to display the size of the accessible part of the buffer on the mode
If you want the old behavior, set selection-coding-system to
compound-text, which may be significantly more efficient. Using
compound-text-with-extensions seems to be necessary only for decoding
-text from applications under XFree86 4.2, whose behaviour is actually
+text from applications under XFree86 4.2, whose behavior is actually
contrary to the compound text specification.
\f
** Function `plist-member' is renamed from `widget-plist-member' (which is
retained as an alias).
-** Easy-menu's :filter now works as in XEmacs.
-It takes the unconverted (i.e. XEmacs) form of the menu and the result
-is automatically converted to Emacs' form.
+** Easy-menu's :filter now takes the unconverted form of the menu and
+the result is automatically converted to Emacs' form.
** The new function `window-list' has been defined