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
-** line-move-ignore-invisible now defaults to t.
+** C-u M-x goto-line now switches to the most recent previous buffer,
+and goes to the specified line in that buffer.
-** In Outline mode, hide-body no longer hides lines at the top
-of the file that precede the first header line.
+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'.
+++
-** `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'.
+** You can now follow links by clicking Mouse-1 on the link.
+
+Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2
+click to follow a link, whereas most other applications use a Mouse-1
+click for both purposes, depending on whether you click outside or
+inside a link. Now the behavior of a Mouse-1 click has been changed
+to match this context-sentitive dual behavior.
+
+Depending on the current mode, a Mouse-2 click in Emacs may do much
+more than just follow a link, so the new Mouse-1 behavior is only
+activated for modes which explicitly mark a clickable text as a "link"
+(see the new function `mouse-on-link-p' for details). The Lisp
+packages that are included in release 22.1 have been adapted to do
+this, but external packages may not yet support this. However, there
+is no risk in using such packages, as the worst thing that could
+happen is that you get the original Mouse-1 behavior when you click
+on a link, which typically means that you set point where you click.
+
+If you want to get the original Mouse-1 action also inside a link, you
+just need to press the Mouse-1 button a little longer than a normal
+click (i.e. press and hold the Mouse-1 button for half a second before
+you release it).
+
+Dragging the Mouse-1 inside a link still performs the original
+drag-mouse-1 action, typically copy the text.
+
+You can customize the new Mouse-1 behavior via the new user options
+`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'.
+++
-** New 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.
+** 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.
+++
-** New functions `make-progress-reporter', `progress-reporter-update',
-`progress-reporter-force-update' and `progress-reporter-done' provide
-a simple and efficient way of printing progress messages to the user.
+** 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
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).
*** 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
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
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
** 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
replacement string to specify a position where the replacement string
can be edited for each replacement.
-** query-replace uses isearch highlighting with lazy highlighting
-when the user option `query-replace-highlight' is set to `isearch'.
-If it is t, it uses old query-replace highlighting method.
+** 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
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 new
-option `inhibit-mark-movement' is non-nil, or if the mark is already
-active in Transient Mark mode.
+`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
** 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.
+++
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
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'.
---
** 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,
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
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.
around potentially blocking or long-running code in timers
and post-command-hooks.
-** An unconditional face specification in defface (one where the DISPLAY part
-is just t) applies to all cases and does not override subsequent entries.
+** 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
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
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
** 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