\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.
+** New translations of the Emacs Tutorial are available in the following
+ languages: Brasilian, Bulgarian, Chinese (both with simplified and
+ traditional characters), French, and Italian. Type `C-u C-h t' to
+ choose one of them in case your language setup doesn't automatically
+ select the right one.
** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
when you run configure. This requires Gtk+ 2.0 or newer. This port
** 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
+** 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.
+
++++
+** `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' and `progress-reporter-done' provide
+a simple and efficient way of printing progress messages to the user.
+
++++
+** In Enriched mode, `set-left-margin' and `set-right-margin' are now
+by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
+and `C-c C-r'.
+
++++
+** In processing a local variables list, Emacs strips the prefix and
+suffix are from every line before processing all the lines.
+
++++
+** `apply-macro-to-region-lines' now operates on all lines that begin
+in the region, rather than on all complete lines in the region.
+
+** global-whitespace-mode is a new alias for whitespace-global-mode.
+
++++
+** There are now two new regular expression operators, \_< and \_>,
+for matching the beginning and end of a symbol. A symbol is a
+non-empty sequence of either word or symbol constituent characters, as
+specified by the syntax table.
+
+** 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-funcion' and `describe-key' now show function
-arguments in italics. To change the default highlighting customize the
-face `help-argument-name'.
+** 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
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
+read-only and field properties. Hence, it always kill entire
lines, including any prompts.
`comint-kill-region' is like `kill-region', except that it ignores
** 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.
+** Telnet now prompts you for a port number with C-u M-x telnet.
+++
** New command line option -Q.
** 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
+displayed at the end of a file buffer in any window, it stays at
the end of the buffer in that window. This allows to tail a file:
-just put point at the end of the buffer and it will stay there. This
+just put point at the end of the buffer and it stays there. This
rule applies to file buffers. For non-file buffers, the behavior may
be mode dependent.
+If you are sure that the file will only change by growing at the end,
+then you can tail the file more efficiently by using the new minor
+mode Auto Revert Tail mode. The function `auto-revert-tail-mode'
+toggles this mode.
+
** Auto Revert mode is now more careful to avoid excessive reverts and
other potential problems when deciding which non-file buffers to
revert. This matters especially if Global Auto Revert mode is enabled
and `global-auto-revert-non-file-buffers' is non-nil. Auto Revert
-mode will only revert a non-file buffer if the buffer has a non-nil
+mode only reverts a non-file buffer if the buffer has a non-nil
`revert-buffer-function' and a non-nil `buffer-stale-function', which
decides whether the buffer should be reverted. Currently, this means
that auto reverting works for Dired buffers (although this may not
The new file etc/compilation.txt gives examples of each type of message.
-** M-x grep has been adapted to new compile
+** Compilation mode enhancements:
+
++++
+*** New user option `compilation-environment'.
+This option allows you to specify environment variables for inferior
+compilation processes without affecting the environment that all
+subprocesses inherit.
+
+** Grep has been decoupled from compilation mode setup.
+
+*** There's a new separate package grep.el.
+
+*** M-x grep has been adapted to new compile
Hits are fontified in green, and hits in binary files in orange. Grep buffers
-can be saved and will again be loaded with the new `grep-mode'.
+can be saved and automatically revisited with the new Grep mode.
+
+*** Grep commands now have their own submenu and customization group.
+
+*** The new variables `grep-window-height', `grep-auto-highlight', and
+`grep-scroll-output' can be used to override the corresponding
+compilation mode settings for grep commands.
+
+*** New option `grep-highlight-matches' highlightes matches in *grep*
+buffer. It uses a special feature of some grep programs which accept
+--color option to output markers around matches. When going to the next
+match with `next-error' the exact match is highlighted in the source
+buffer. Otherwise, if `grep-highlight-matches' is nil, the whole
+source line is highlighted.
+
+*** New key bindings in grep output window:
+SPC and DEL scrolls window up and down. C-n and C-p moves to next and
+previous match in the grep window. RET jumps to the source line of
+the current match. `n' and `p' shows next and previous match in
+other window, but does not switch buffer. `{' and `}' jumps to the
+previous or next file in the grep output. TAB also jumps to the next
+file.
+
+** New options `next-error-highlight' and `next-error-highlight-no-select'
+specify the method of highlighting of the corresponding source line
+in new face `next-error'.
+
+** A new minor mode `next-error-follow-minor-mode' can be used in
+compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the
+modes that can use `next-error'). In this mode, cursor motion in the
+buffer causes automatic display in another window of the corresponding
+matches, compilation errors, etc. This minor mode can be toggled with
+C-c C-f.
** M-x diff uses diff-mode instead of compilation-mode.
the stroke directly to a string to insert. This is convenient for
using strokes as an input method.
+** Gnus package
+
+*** Gnus now includes Sieve and PGG
+Sieve is a library for managing Sieve scripts. PGG is a library to handle
+PGP/MIME.
+
+*** There are many news features, bug fixes and improvements.
+See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details.
+
++++
+** Desktop package
+
+*** Desktop saving is now a minor mode, desktop-save-mode. Variable
+desktop-enable is obsolete. Customize desktop-save-mode to enable desktop
+saving.
+
+*** Buffers are saved in the desktop file in the same order as that in the
+buffer list.
+
+*** 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
% 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).
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
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
** Enhancements to apropos commands:
-*** The apropos commands will now accept a list of words to match.
+*** The apropos commands now accept a list of words to match.
When more than one word is specified, at least two of those words must
be present for an item to match. Regular expression matching is still
available.
** 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' to mark files with
-different file attributes in two dired buffers.
+*** 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
what external viewers to use and when.
*** In Dired, the w command now copies the current line's file name
-into the kill ring.
+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.
+
++++
+** 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.
+
+*** Regexp isearch (C-M-s and C-M-r) can search through multiple nodes.
+Failed isearch wraps to the top/final node.
+
+*** New search commands: `Info-search-case-sensitively' (bound to S),
+`Info-search-backward', and `Info-search-next' which repeats the last
+search without prompting for a new search string.
+
+*** New command `Info-history' (bound to L) displays a menu of visited nodes.
+
+*** New command `Info-toc' (bound to T) creates a node with table of contents
+from the tree structure of menus of the current Info file.
+
+*** New command `info-apropos' searches the indices of the known
+Info files on your system for a string, and builds a menu of the
+possible matches.
+
+*** New command `Info-copy-current-node-name' (bound to w) copies
+the current Info node name into the kill ring. With a zero prefix
+arg, puts the node name inside the `info' function call.
+
+*** New face `info-xref-visited' distinguishes visited nodes from unvisited
+and a new option `Info-fontify-visited-nodes' to control this.
+
+*** http and ftp links in Info are now operational: they look like cross
+references and following them calls `browse-url'.
+
+++
*** Info now hides node names in menus and cross references by default.
If you prefer the old behavior, you can set the new user option
`Info-hide-note-references' to nil.
-*** The 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.
-
*** 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
'sql-sqlite'.
** BibTeX mode:
+*** The new command bibtex-url browses a URL for the BibTeX entry at
+point (bound to C-c C-l and mouse-2, RET on clickable fields).
+
*** The new command bibtex-entry-update (bound to C-c C-u) updates
an existing BibTeX entry.
+
*** New `bibtex-entry-format' option `required-fields', enabled by default.
+
*** bibtex-maintain-sorted-entries can take values `plain',
`crossref', and `entry-class' which control the sorting scheme used
-for BibTeX entries. `bibtex-sort-entry-class' controls the sorting
-scheme `entry-class'. TAB completion for reference keys and
+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.
`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
** If the user visits a file larger than `large-file-warning-threshold',
-Emacs will prompt her for confirmation.
+Emacs prompts her for confirmation.
** A UTF-7 coding system is available in the library `utf-7'.
** MH-E changes.
-Upgraded to MH-E version 7.3. There have been major changes since
+Upgraded to MH-E version 7.82. There have been major changes since
version 5.0.2; see MH-E-NEWS for details.
+++
+++
** When you are root, and you visit a file whose modes specify
read-only, the Emacs buffer is now read-only too. Type C-x C-q if you
-want to make the buffer writable. (As root, you will in fact be able
-to alter the file.)
+want to make the buffer writable. (As root, you can in fact alter the
+file.)
** The new command `revert-buffer-with-coding-system' (C-x RET r)
revisits the current file using a coding system that you specify.
`buffers-menu-show-directories' controls whether the menu displays
leading directories as part of the file name visited by the buffer.
-If its value is `unless-uniquify', the default, directories will be
+If its value is `unless-uniquify', the default, directories are
shown unless uniquify-buffer-name-style' is non-nil. The value of nil
and t turn the display of directories off and on, respectively.
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
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.
translation works amongst the Emacs ...-iso8859-... charsets and the
mule-unicode-... ones.
-By default this translation will happen automatically on encoding.
+By default this translation happens automatically on encoding.
Self-inserting characters are translated to make the input conformant
with the encoding of the buffer in which it's being used, where
possible.
---
** 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.
+
+---
+** 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
will horizontally scroll the window. The default value is 5.
The variable `hscroll-step' determines how many columns automatic
-hscrolling will scroll the window when point gets too close to the
+hscrolling scrolls the window when point gets too close to the
window edge. If its value is zero, the default, Emacs scrolls the
window so as to center point. If its value is an integer, it says how
many columns to scroll. If the value is a floating-point number, it
+++
** 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
buffers to search by their filename. Internally, Occur mode has been
rewritten, and now uses font-lock, among other changes.
+** The default values of paragraph-start and indent-line-function have
+been changed to reflect those used in Text mode rather than those used
+in Indented-Text mode.
+
+** New user option `query-replace-skip-read-only': when non-nil,
+`query-replace' and related functions simply ignore
+a match if part of it has a read-only property.
+
+** When used interactively, the commands `query-replace-regexp' and
+`replace-regexp' allow \,expr to be used in a replacement string,
+where expr is an arbitrary Lisp expression evaluated at replacement
+time. In many cases, this will be more convenient than using
+`query-replace-regexp-eval'. `\#' in a replacement string now refers
+to the count of replacements already made by the replacement command.
+All regular expression replacement commands now allow `\?' in the
+replacement string to specify a position where the replacement string
+can be edited for each replacement.
+
+** query-replace uses isearch lazy highlighting when the new user option
+`query-replace-lazy-highlight' is non-nil.
+
+** The current match in query-replace is highlighted in new face
+`query-replace' which by default inherits from isearch face.
+
+++
** Emacs normally highlights mouse sensitive text whenever the mouse
is over the text. By setting the new variable `mouse-highlight', you
- C-h w and C-h f new-kill-line reports:
new-kill-line is on C-k
++++
+** Vertical scrolling is now possible within incremental search.
+To enable this feature, customize the new user option
+`isearch-allow-scroll'. User written commands which satisfy stringent
+constraints can be marked as "scrolling commands". See the Emacs manual
+for details.
+
+++
** C-w in incremental search now grabs either a character or a word,
making the decision in a heuristic way. This new job is done by the
command `isearch-yank-word-or-char'. To restore the old behavior,
bind C-w to `isearch-yank-word' in `isearch-mode-map'.
++++
+** C-y in incremental search now grabs the next line if point is already
+at the end of a line.
+
++++
+** C-M-w deletes and C-M-y grabs a character in isearch mode.
+Another method to grab a character is to enter the minibuffer by `M-e'
+and to type `C-f' at the end of the search string in the minibuffer.
+
++++
+** M-% typed in isearch mode invokes `query-replace' or
+`query-replace-regexp' (depending on search mode) with the current
+search string used as the string to replace.
+
++++
+** Isearch no longer adds `isearch-resume' commands to the command
+history by default. To enable this feature, customize the new
+user option `isearch-resume-in-command-history'.
+
++++
+** New user option `history-delete-duplicates'.
+If set to t when adding a new history element, all previous identical
+elements are deleted.
+
+++
** Yanking text now discards certain text properties that can
be inconvenient when you did not expect them. The variable
+++
** M-x grep now tries to avoid appending `/dev/null' to the command line
-by using GNU grep `-H' option instead. M-x grep will automatically
-detect whether this is possible or not the first time it is invoked.
+by using GNU grep `-H' option instead. M-x grep automatically
+detects whether this is possible or not the first time it is invoked.
When `-H' is used, the grep command line supplied by the user is passed
unchanged to the system to execute, which allows more complicated
command lines to be used than was possible before.
Minor Improvements
+*** The STARTTLS elisp wrapper (starttls.el) can now use GNUTLS
+instead of the OpenSSL based "starttls" tool. For backwards
+compatibility, it prefers "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.
+++
+++
** Marking commands extend the region when invoked multiple times. If
you hit M-C-SPC (mark-sexp), M-@ (mark-word), M-h (mark-paragraph), or
-C-M-h (mark-defun) repeatedly, the marked region will now be extended
-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.
+C-M-h (mark-defun) repeatedly, the marked region extends each time, so
+you can mark the next two sexps with M-C-SPC M-C-SPC, for example.
+This feature also works for mark-end-of-sentence, if you bind that to
+a key. It also extends the region when the mark is active in Transient
+Mark mode, regardless of the last command. To start a new region with
+one of marking commands in Transient Mark mode, you can deactivate the
+active region with C-g, or set the new mark with C-SPC.
+++
** Some commands do something special in Transient Mark mode when the
+++
** A prefix argument is no longer required to repeat a jump to a
-previous mark, i.e. C-u C-SPC C-SPC C-SPC ... will cycle through 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
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 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.
+
+**** In Makefiles, constants are tagged.
+If you want the old behavior instead, thus avoiding to increase the
+size of the tags file, use the --no-globals option.
+
+**** 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
as you did before, by the sub name, or additionally by looking for
package::sub.
+**** In Prolog, etags creates tags for rules in addition to predicates.
+
**** New language PHP.
Tags are functions, classes and defines.
-If the --members option is specified to etags, tags are vars also.
-
-**** 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 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
renewenvironment.
-**** In Makefiles, constants are tagged.
-If you want the old behavior instead, thus avoiding to increase the
-size of the tags file, use the --no-globals option.
-
-**** In Prolog, etags creates tags for rules in addition to predicates.
-
*** Honour #line directives.
When Etags parses an input file that contains C preprocessor's #line
directives, it creates tags using the file name and line number
*** New option --parse-stdin=FILE.
This option is mostly useful when calling etags from programs. It can
be used (only once) in place of a file name on the command line. Etags
-will read from standard input and mark the produced tags as belonging to
+reads from standard input and marks the produced tags as belonging to
the file FILE.
+++
+++
** New user option `add-log-always-start-new-record'.
-When this option is enabled, M-x add-change-log-entry will always
-start a new record regardless of when the last record is.
+When this option is enabled, M-x add-change-log-entry always
+starts a new record regardless of when the last record is.
+++
** SGML mode has indentation and supports XML syntax.
+++
** `xml-mode' is now an alias for `sgml-mode', which has XML support.
-+++
-** New user option `isearch-resume-enabled'.
-This option can be disabled, to avoid the normal behavior of isearch
-which puts calls to `isearch-resume' in the command history.
-
---
** Lisp mode now uses font-lock-doc-face for the docstrings.
** 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.
+
+---
+** 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.
When loading many files, for instance with `emacs *', Emacs normally
displays a buffer menu. This option turns the buffer menu off.
-** Compilation mode enhancements:
-
-*** New user option `compilation-environment'.
-This option allows you to specify environment variables for inferior
-compilation processes without affecting the environment that all
-subprocesses inherit.
-
-*** `next-error' now temporarily highlights the corresponding source line.
-
-** Grep has been decoupled from compilation mode setup.
-
-*** Grep commands now have their own submenu and customization group.
-
-*** 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.
-
-*** Source line is temporarily highlighted when going to next match.
-
-*** New key bindings in grep output window:
-SPC and DEL scrolls window up and down. C-n and C-p moves to next and
-previous match in the grep window. RET jumps to the source line of
-the current match. `n' and `p' shows next and previous match in
-other window, but does not switch buffer. `{' and `}' jumps to the
-previous or next file in the grep output. TAB also jumps to the next
-file.
-
---
** Rmail now displays 5-digit message ids in its summary buffer.
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.
---
** Emacs takes note of colors defined in Control Panel on MS-Windows.
-The Control Panel defines some default colors for applications in
-much the same way as wildcard X Resources do on X. Emacs now
-adds these colors to the colormap prefixed by System (eg SystemMenu
-for the default Menu background, SystemMenuText for the foreground),
-and uses some of them to initialize some of the default faces.
-`list-colors-display' will show the list of System color names if you
-wish to use them in other faces.
+The Control Panel defines some default colors for applications in much
+the same way as wildcard X Resources do on X. Emacs now adds these
+colors to the colormap prefixed by System (eg SystemMenu for the
+default Menu background, SystemMenuText for the foreground), and uses
+some of them to initialize some of the default faces.
+`list-colors-display' shows the list of System color names, in case
+you wish to use them in other faces.
+++
** Under X11, it is possible to swap Alt and Meta (and Super and Hyper).
D: shows the diff of the revision at line with its previous revision
L: shows the log of the revision at line
W: annotates the workfile (most up to date) version
+
++++
+** In pcl-cvs mode, there is a new `d y' command to view the diffs
+between the local version of the file and yesterday's head revision
+in the repository.
+
++++
+** In pcl-cvs mode, there is a new `d r' command to view the changes
+anyone has committed to the repository since you last executed
+"checkout", "update" or "commit". That means using cvs diff options
+-rBASE -rHEAD.
+
\f
* New modes and packages in Emacs 21.4
-** The wdired.el package allows you to use normal editing commands on dired
+** 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.
+
+** The library tree-widget.el provides a new widget to display a set
+of hierarchical data as an outline. For example, the tree-widget is
+well suited to display a hierarchy of directories and files.
+
+** The wdired.el package allows you to use normal editing commands on Dired
buffers to change filenames, permissions, etc...
+** The thumbs.el package allows you to preview image files as thumbnails
+and can be invoked from a Dired buffer.
+
** 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.
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.
kmacro-call-repeat-with-arg.
Keyboard macros can now be debugged and edited interactively.
-C-x C-k SPC will step through the last keyboard macro one key sequence
+C-x C-k SPC steps through the last keyboard macro one key sequence
at a time, prompting for the actions to take.
---
** New package benchmark.el contains simple support for convenient
timing measurements of code (including the garbage collection component).
-** The default values of paragraph-start and indent-line-function have
-been changed to reflect those used in Text mode rather than those used
-in Indented-Text mode.
-
-** If you set `query-replace-skip-read-only' non-nil,
-`query-replace' and related functions simply ignore
-a match if part of it has a read-only property.
-
-** The new Lisp library fringe.el controls the apperance of fringes.
+** The new Lisp library fringe.el controls the appearance of fringes.
** `cfengine-mode' is a major mode for editing GNU Cfengine
configuration files.
\f
* Lisp Changes in Emacs 21.4
-** New functions posn-at-point and posn-at-x-y returns
+** (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.
+
+---
+** 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
+`buffer-auto-save-file-format' and made into a permanent local.
+
++++
+** Both the variable and the function `disabled-command-hook' have
+been renamed to `disabled-command-function'. The variable
+`disabled-command-hook' has been kept as an obsolete alias.
+
+** Function `compute-motion' now calculates the usable window
+width if the WIDTH argument is nil. If the TOPOS argument is nil,
+the usable window height and width is used.
+
++++
+** `visited-file-modtime' and `calendar-time-from-absolute' now return
+a list of two integers, instead of a cons.
+
+** If a command sets transient-mark-mode to `only', that
+enables Transient Mark mode for the following command only.
+During that following command, the value of transient-mark-mode
+is `identity'. If it is still `identity' at the end of the command,
+it changes to nil.
+
++++
+** Cleaner way to enter key sequences.
+
+You can enter a constant key sequence in a more natural format, the
+same one used for saving keyboard macros, using the macro `kbd'. For
+example,
+
+(kbd "C-x C-f") => "\^x\^f"
+
+** The sentinel is now called when a network process is deleted with
+delete-process. The status message passed to the sentinel for a
+deleted network process is "deleted". The message passed to the
+sentinel when the connection is closed by the remote peer has been
+changed to "connection broken by remote peer".
+
+** If the buffer's undo list for the current command gets longer than
+undo-outer-limit, garbage collection empties it. This is to prevent
+it from using up the available memory and choking Emacs.
+
+---
+** 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.
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
*** 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
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
+strings by giving that character a non-nil `cursor' text property.
+
** New macro with-local-quit temporarily sets inhibit-quit to nil for use
around potentially blocking or long-running code in timers
and post-command-hooks.
+** The 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
-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 'define-fringe-bitmap' can now be used to create new
+fringe bitmaps, as well as change the built-in fringe bitmaps.
-** New function 'destroy-fringe-bitmap' may be used to destroy a
+To change a built-in bitmap, do (require 'fringe) and use the symbol
+identifing the bitmap such as `left-truncation or `continued-line'.
+
+*** New function 'destroy-fringe-bitmap' may be used to destroy a
previously created bitmap, or restore a built-in bitmap.
-** New function 'set-fringe-bitmap-face' can now be used to set a
+*** 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).
#!/usr/bin/emacs --script
+** The option --directory DIR now modifies `load-path' immediately.
+Directories are added to the front of `load-path' in the order they
+appear on the command line. For example, with this command line:
+
+ emacs -batch -L .. -L /tmp --eval "(require 'foo)"
+
+Emacs looks for library `foo' in the parent directory, then in /tmp, then
+in the other directories in `load-path'. (-L is short for --directory.)
+
+++
** A function's docstring can now hold the function's usage info on
its last line. It should match the regexp "\n\n(fn.*)\\'".
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 variable `read-file-name-function' can be used by lisp code
to override the internal read-file-name function.
+
+** The new variable `read-file-name-completion-ignore-case' specifies
+whether completion ignores case when reading a file name with the
+`read-file-name' function.
+
+++
** The new function `read-directory-name' can be used instead of
`read-file-name' to read a directory name; when used, completion
** 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
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
The new low-level functions process-plist and set-process-plist are
used to access and replace the entire property list of a process.
-???
+*** Function accept-process-output now has an optional fourth arg
+`just-this-one'. If non-nil, only output from the specified process
+is handled, suspending output from other processes. If value is an
+integer, also inhibit running timers. This feature is generally not
+recommended, but may be necessary for specific applications, such as
+speech synthesis.
+
*** Adaptive read buffering of subprocess output.
On some systems, when emacs reads the output from a subprocess, the
+++
** 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'.
** In `replace-match', the replacement text no longer inherits
properties from surrounding text.
++++
+** The list returned by `(match-data t)' now has the buffer as a final
+element, if the last match was on a buffer. `set-match-data'
+accepts such a list for restoring the match state.
+
+++
** New function `buffer-local-value'.
** 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