+++
*** The mode-line displays a `@', instead of `-', if the
default-directory for the current buffer is on a remote machine.
-
+---
*** The mode-line displays a mode menu when mouse-1 is clicked on a
minor mode, in the same way as it already did for major modes.
*** The `mode-line-emphasis' face is used to highlight certain
mode-line information (e.g. waiting for a VC command to finish).
-
+---
*** The mode-line tooltips have been improved to provide more details.
*** The VC, line/colum number and minor mode indicators on the mode
following arguments.
** The abbrev file is no longer read at startup in batch mode.
+
+** Emacs now supports invocation by an X session manager.
+It can save a session and restore it later. See the documentation of
+the functions `emacs-session-save' and `emacs-session-restore'.
+(Actually, this feature was introduced with Emacs 22, but it was not
+documented.)
\f
* Incompatible Editing Changes in Emacs 23.1
supported in `partial-completion-mode'.
** Face changes
-
++++
*** S-down-mouse-1 now pops up a menu for changing the font and text
size of the default face in the current buffer. The face is changed
via face remapping (see below).
*** FIXME face-remap
** Primary selection changes
-
++++
*** If `select-active-regions' is t, setting the mark automatically
makes the new region into the primary selection (for interaction with
other window applications). If you enable this, you might want to
bind `mouse-yank-primary' to Mouse-2.
-
++++
*** You can disable kill ring commands from accessing the primary
selection by setting `x-select-enable-primary' to nil.
*** The new command balance-windows-area balances windows both
vertically and horizontally.
-** Miscellaneous changes:
+*** pop-to-buffer now always sets input focus when the popped-to window
+is on a different frame.
+
+*** New functions window-parameters, window-parameter, set-window-parameter.
+** Miscellaneous changes:
+++
*** C-l is bound to the new command recenter-top-bottom, rather than recenter.
This moves the current line to window center, top and bottom on
successive invokations.
*** scroll-preserve-screen-position also preserves the column position.
-
++++
*** If `yank-pop-change-selection' is t, rotating the kill ring also
updates the selection or clipboard to the current yank, just as M-w
would do so with the text it copies to the kill ring.
-
+++
*** C-M-% now shows replacement as it would look in the buffer, with
`\N' and `\&' substituted according to the match. Old behavior can be
called with a prefix and the default directory is a remote file name.
This is because some file name handlers (like ange-ftp) are not able to
run processes remotely.
-
+++
*** The new command kill-matching-buffers kills buffers whose name
matches a regexp.
*** The new commands `pp-macroexpand-expression' and
`pp-macroexpand-last-sexp' pretty-print macro expansions.
+*** The new command `set-file-modes' allows to set file's mode bits.
+The mode bits can be specified in symbolic notation, like with GNU
+Coreutils, in addition to an octal number.
+
+*** If you set find-file-confirm-nonexistent-file to t, then C-x C-f
+requires confirmation before opening a non-existent file.
+
\f
* New Modes and Packages in Emacs 23.1
** Help mode
*** New macro `with-help-window' should set up help windows better
than `with-output-to-temp-buffer' with `print-help-return-message'.
+
*** New option `help-window-select' permits to customize whether help
window shall be automatically selected when invoking help.
+
*** New variable `help-window-point-marker' permits to specify new
position of point in help window (for example in `view-lossage').
by escaped parens.
** T-mouse Mode
-
+---
*** If the gpm mouse server is running and t-mouse-mode is enabled,
Emacs uses a Unix socket in a GNU/Linux console to talk to server,
rather than faking events using the client program mev. This C level
necessary.
** VC and related modes
-
++++
*** VC now supports applying VC operations to a set of files at a time.
This enables VC to work much more effectively with changeset-oriented
version-control systems such as Subversion, GNU Arch, Mercurial, Git
*** Clicking on the VC mode-line entry now pops the VC menu.
*** The VC mode-line entry now has a tooltip that explains the VC file status.
-
++++
*** In VC Annotate mode, for VC systems that support changesets, you can
see the diff for the whole changeset (not only for the current file)
-by typing the D key.
-
+by typing the D key. Using the "Show changeset diff of revision at
+line" menu entry does the same thing.
++++
*** In VC Annotate mode, you can type v to toggle the annotation visibility.
-
++++
*** In VC Annotate mode, you can type f to show the file revision on
the current line.
-*** In VC Annotate mode, for VC systems that support changesets, you
-can see the diff for the whole changeset (not only for the current
-file) by typing the D key or using the "Show changeset diff of
-revision at line" menu entry.
-
*** Asynchronous VC commands display [Waiting...] in the mode-line
of the corresponding buffer as long as the asynchronous process is
active.
\f
* Lisp Changes in Emacs 23.1
+** New coding system alias `emacs-internal'.
+
+++
** New primitives `list-system-processes' and `system-process-attributes'
let Lisp programs access the processes that are running on the local
** Changes to interactive function handling
++++
*** The new interactive spec code ^ says to first call
handle-shift-selection if shift-select-mode is non-nil, before reading
the command arguments. This is used for shift-selection (see above).
++++
*** Built-in functions can now have an interactive specification that
is not a prompt string. If the `intspec' parameter of a `DEFUN'
starts with a `(', the string is evaluated as a Lisp form.
++++
*** The interactive-form of a function can be added post-facto via the
`interactive-form' symbol property. Mostly useful to add complex
interactive forms to subroutines.
** Region changes
++++
*** Commands should use `use-region-p' to test whether there is
an active region that they should operate on.
to use to test whether a command should operate on the region instead
of the usual behavior -- for that, use `use-region-p'.
++++
*** If a command sets `transient-mark-mode' to (only . OLDVAL), that
means to activate transient-mark-mode temporarily, until the next
unshifted point motion command or mark deactivation. Afterwards,
** Emacs session information
++++
*** The new variables `before-init-time' and `after-init-time' record the
value of `current-time' before and after Emacs loads the init files.
++++
*** The new function `emacs-uptime' returns the uptime of an Emacs instance.
++++
*** The new function `emacs-init-time' returns the duration of the
Emacs initialization.
** Changes affecting display-buffer
++++
*** New value nil for split-height-threshold inhibits vertical splitting
unless there's no other window.
++++
*** New option split-width-threshold controls horizontal splitting.
++++
*** A window can be split horizontally even when it's not full-width.
++++
*** New option split-window-preferred-function can be set to a function
to override the default splitting mechanism of display-buffer.
++++
*** If pop-up-frames has the value `graphic-only', display-buffer only
makes a separate frame on graphic displays.
are available for inserting into the minibuffer by typing `M-n'.
For empty input these functions return the first element of this list.
++++
*** New function `read-regexp' uses the regexp history and some useful
regexp defaults (string at point, last Isearch/replacement regexp/string)
via M-n when reading a regexp in the minibuffer.
++++
*** minibuffer-local-must-match-filename-map is now named
minibuffer-local-filename-must-match-map.
+---
*** `all-completions' may now return the base size in the last cdr.
Since this means the returned list is not properly nil-terminated, this
is an incompatible change and is thus enabled by the new variable
completion-all-completions-with-base-size.
++++
*** The `require-match' argument to `completing-read' accepts a new value
`confirm-only'.
*** New function `match-substitute-replacement' returns the result of
`replace-match' without actually using it in the buffer.
++++
*** The new variable `replace-search-function' determines the function
-to use for searching in query-replace and replace-string.
+to use for searching in query-replace and replace-string. The
+function it specifies is called by `perform-replace' when its 4th
+argument is nil.
++++
*** The new variable `replace-re-search-function' determines the
function to use for searching in `query-replace-regexp',
`replace-regexp', `query-replace-regexp-eval', and
-`map-query-replace-regexp'.
+`map-query-replace-regexp'. The function it specifies is called by
+`perform-replace' when its 4th argument is non-nil.
++++
*** New keymap `search-map' bound to `M-s' provides global bindings
for search related commands.
++++
*** New keymap `multi-query-replace-map' contains additonal keys bound
to `automatic-all' and `exit-current' for multi-buffer interactive replacement.
+---
*** The variable `inhibit-changing-match-data', if non-nil, prevents
the search and match primitives from changing the match data.
+---
*** New functions `word-search-forward-lax' and `word-search-backward-lax'.
These are like `word-search-forward and `word-search-backward', except
that the end of the search string need not match a word boundary,
** File handling changes
++++
*** set-file-modes is now interactive and can take the mode value in
symbolic notation thanks to auxiliary functions.
-*** If you set find-file-confirm-nonexistent-file to t, then C-x C-f
-requires confirmation before opening a non-existent file.
++++
+*** file-local-variables-alist stores an alist of file-local
+variables defined in the current buffer.
** Process changes
+++
and `process-file-shell-command' are also new; they call internally
`start-file-process' and `process-file', respectively.
++++
*** The new function `process-lines' executes an external program and
returns its output as a list of lines.
*** New variables:
-**** file-local-variables-alist stores an alist of file-local
-variables defined in the current buffer.
-
**** `find-word-boundary-function-table' is a char-table of functions to
search for a word boundary.
*** New hooks:
++++
**** before-hack-local-variables-hook is called after setting new
variable file-local-variables-alist, and before actually applying the
file-local variables.
** Miscellaneous new functions
++++
*** `format-seconds' converts a number of seconds into a readable
string of days, hours, etc.
++++
*** `apply-partially' performs a "curried" application of a function.
++++
*** `read-shell-command' does what its name says, with completion. It
uses the minibuffer-local-shell-command-map for that.
++++
*** `buffer-swap-text' swaps text between two buffers. This can be
useful for modes such as tar-mode, archive-mode, RMAIL.
++++
*** `read-color' reads a color name using the minibuffer.
*** `face-all-attributes' returns an alist describing all the basic
*** `window-full-width-p' returns t if a window is as wide as its
frame.
-*** `split-string-and-unquote' does (what?)
++++
+*** `split-string-and-unquote' splits a string into a list of substrings
+on the boundaries of a given delimiter, and unquotes the substrings that
+are quoted. Useful for taking apart shell commands.
-*** `combine-and-quote-strings' does (what?)
++++
+*** `combine-and-quote-strings' produces a single string from a list of strings
+sticking a separator string in between each pair, and quoting those
+strings that include the separator as their substring. Useful for
+consing shell command lines from the individual arguments.
*** `image-refresh' refreshes all images associated with a given image
specification.