-GNU Emacs NEWS -- history of user-visible changes. 2000-10-12
-Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+GNU Emacs NEWS -- history of user-visible changes. 2001-01-16
+Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
See the end for copying conditions.
Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
** You can build a 64-bit Emacs for SPARC/Solaris systems which
support 64-bit executables and also on Irix 6.5. This increases the
-maximum buffer size. See etc/MACHINES for instructions.
+maximum buffer size. See etc/MACHINES for instructions. Changes to
+build on other 64-bit systems should be straightforward modulo any
+necessary changes to unexec.
** Note that the MS-Windows port does not yet implement various of the
new display features described below.
-** There is some code for Macintosh support, but this is from the
-Emacs 20 port. It needs updating before this version of Emacs will
-work on Macintosh.
+** This version can be built for the Macintosh, but does not implement
+all of the new display features described below. The port currently
+lacks unexec, asynchronous processes, and networking support. See the
+"Emacs and the Mac OS" appendix in the Emacs manual, for the
+description of aspects specific to the Mac.
\f
* Changes in Emacs 21.1
-** `browse-url-gnome-moz' is a new option for
-`browse-url-browser-function', invoking Mozilla in GNOME.
+** The user option `backward-delete-char-untabify-method' controls the
+behaviour of `backward-delete-char-untabify'. [This change was made
+in Emacs 20.3 but not mentioned then.]
+
+** The new user-option `confirm-kill-emacs' can be customized to
+let Emacs ask for confirmation before exiting.
+
+** The <home> and <end> keys now move to the beginning or end of the
+current line, respectively. C-<home> and C-<end> move to the
+beginning and end of the buffer.
+
+** In Cperl mode `cperl-invalid-face' should now be a normal face
+symbol, not double-quoted.
+
+** Some packages are declared obsolete, to be removed in a future
+version. They are: auto-show, c-mode, hilit19, hscroll, ooutline,
+rnews, rnewspost. Their implementations have been moved to
+lisp/obsolete.
+++
-** The new global minor mode `auto-image-file-mode' allows image files
-to be visited as images.
+** The new Custom option `keyboard-coding-system' specifies a coding
+system for keyboard input.
+
++++
+** The new user-option `even-window-heights' can be set to nil
+to prevent `display-buffer' from evening out window heights.
+
++++
+** The new command `msdos-set-mouse-buttons' forces Emacs to behave
+as if the mouse had a specified number of buttons. This comes handy
+with mice that don't report their number of buttons correctly. One
+example is the wheeled mice, which report 3 buttons, but clicks on the
+middle button are not passed to the MS-DOS version of Emacs.
+
++++
+** The default for user-option `next-line-add-newlines' has been
+changed to nil, i.e. C-n will no longer add newlines at the end of a
+buffer by default.
+
+** The new command M-x delete-trailing-whitespace RET will delete the
+trailing whitespace within the current restriction. You can also add
+this function to `write-file-hooks' or `local-write-file-hooks'.
+
+** When visiting a file with M-x find-file-literally, no newlines will
+be added to the end of the buffer because of `require-final-newline'.
+
+** auto-compression mode is no longer enabled just by loading jka-compr.el.
+To control it, set `auto-compression-mode' via Custom or use the
+`auto-compression-mode' command.
+
+** `browse-url-gnome-moz' is a new option for
+`browse-url-browser-function', invoking Mozilla in GNOME.
+++
** The functions `keep-lines', `flush-lines' and `how-many' now
*** Gnus is now a MIME-capable reader. This affects many parts of
Gnus, and adds a slew of new commands. See the manual for details.
+Separate MIME packages like RMIME, mime-compose etc., will probably no
+longer work; remove them and use the native facilities.
+
+The FLIM/SEMI package still works with Emacs 21, but if you want to
+use the native facilities, you must remove any mailcap.el[c] that was
+installed by FLIM/SEMI version 1.13 or earlier.
*** Gnus has also been multilingualized. This also affects too many
-parts of Gnus to summarize here, and adds many new variables.
-Separate MIME packages like SEMI will not work. There are built-in
-facilities equivalent to those of gnus-mule.el, which is now just a
-compatibility layer.
+parts of Gnus to summarize here, and adds many new variables. There
+are built-in facilities equivalent to those of gnus-mule.el, which is
+now just a compatibility layer.
*** gnus-auto-select-first can now be a function to be
called to position point.
*** Gnus can now read IMAP mail via nnimap.
-*** There is image support.
+*** There is image support of various kinds and some sound support.
** When your terminal can't display characters from some of the ISO
8859 character sets but can display Latin-1, you can display
** When an error is signaled during the loading of the user's init
file, Emacs now pops up the *Messages* buffer.
-** Polish and German translations of Emacs' reference card have been
-added. They are named `pl-refcard.tex' and `de-refcard.tex'.
-Postscript files are included.
+** Polish, German, and French translations of Emacs' reference card
+have been added. They are named `pl-refcard.tex', `de-refcard.tex' and
+`fr-refcard.tex'. Postscript files are included.
+
+** An `Emacs Survival Guide', etc/survival.tex, is available.
** A reference card for Dired has been added. Its name is
-`dired-ref.tex'.
+`dired-ref.tex'. A French translation is available in
+`fr-drdref.tex'.
** The new variable `auto-mode-interpreter-regexp' contains a regular
expression matching interpreters, for file mode determination.
** Variable `load-path' is no longer customizable because it contains
a version-dependent component.
-** The <delete> function key is now bound to `delete-char' by default.
-Note that this takes effect only on window systems. On TTYs, Emacs
-will receive ASCII 127 when the DEL key is pressed. This
-character is still bound as before.
+** The new user-option `delete-key-deletes-forward' can be set to
+let the Delete function key delete forward instead of backward.
+
+On window systems, the default value of this option is chosen
+according to the keyboard used. If the keyboard has both a Backspace
+key and a Delete key, and both are mapped to their usual meanings, the
+option's default value is set to t, so that Backspace can be used to
+delete backward, and Delete can be used used to delete forward
+
+If not running under a window system, setting this option accomplishes
+a similar effect by mapping C-h, which is usually generated by the
+Backspace key, to DEL, and by mapping DEL to C-d via
+`keyboard-translate'. The former functionality of C-h is available on
+the F1 key. You should probably not use this setting if you don't
+have both Backspace, Delete and F1 keys.
+
+Programmatically, you can call function
+delete-key-deletes-forward-mode to toggle the behavior of the Delete
+key.
** Item Save Options on the Options menu allows saving options set
using that menu.
+++
** M-; now calls comment-dwim which tries to do something clever based
on the context. M-x kill-comment is now an alias to comment-kill,
-defined on newcomment.el.
+defined in newcomment.el. You can choose different styles of region
+commenting with the variable `comment-style'.
+++
** The function `getenv' is now callable interactively.
+++
- By setting X resource `lineSpacing', class `LineSpacing'. This is
-equivalent ot specifying the frame parameter.
+equivalent to specifying the frame parameter.
- By specifying `--line-spacing=N' or `-lsp N' on the command line.
more CUA-compliant. The most significant change is that Options is
now a separate menu-bar item, with Mule and Customize as its submenus.
++++
** User-option `show-cursor-in-non-selected-windows' controls how to
display the cursor in non-selected windows. If nil, no cursor is
shown, if non-nil a hollow box cursor is shown. This option can
** Changes in Texinfo mode.
-** A couple of new key bindings have been added for inserting Texinfo
+*** A couple of new key bindings have been added for inserting Texinfo
macros
Key binding Macro
-------------------------
C-c C-c C-s @strong
C-c C-c C-e @emph
- C-c C-c u @url
+ C-c C-c u @uref
C-c C-c q @quotation
C-c C-c m @email
+ C-c C-o @<block> ... @end <block>
+ M-RET @item
+
+*** The " key now inserts either " or `` or '' depending on context.
** Changes in Outline mode.
These terminal capabilities are auto-detected. Details can be found
under Lisp changes, below.
-** New default font is Courier 12pt.
+** New default font is Courier 12pt under X.
+++
** When using a windowing terminal, each Emacs window now has a cursor
foreground, background, and stipple of these areas can be changed by
customizing face `fringe'.
-** The mode line under X is now drawn with shadows by default. You
-can change its appearance by modifying the face `modeline'.
+** The mode line under X is now drawn with shadows by default.
+You can change its appearance by modifying the face `mode-line'.
+In particular, setting the `:box' attribute to nil turns off the 3D
+appearance of the mode line. (The 3D appearance makes the mode line
+occupy more space, and thus might cause the first or the last line of
+the window to be partially obscured.)
+
+The variable `mode-line-inverse-video', which was used in older
+versions of emacs to make the mode-line stand out, now defaults to nil,
+and its use is deprecated.
** LessTif support.
`automatic-hscrolling' is set (the default). This setting can be
customized.
+If a window is scrolled horizontally with set-window-hscroll, or
+scroll-left/scroll-right (C-x <, C-x >), this serves as a lower bound
+for automatic horizontal scrolling. Automatic scrolling will scroll
+the text more to the left if necessary, but won't scroll the text more
+to the right than the column set with set-window-hscroll etc.
+
+++
** Tool bar support.
Emacs supports a tool bar at the top of a frame under X. For details
of how to define a tool bar, see the page describing Lisp-level
changes. Tool-bar global minor mode controls whether or not it is
-displayed. To make the tool bar more useful, we need contributions of
-extra icons for specific modes (with copyright assignments).
+displayed and is on by default. The appearance of the bar is improved
+if Emacs has been built with XPM image support. Otherwise monochrome
+icons will be used.
+
+To make the tool bar more useful, we need contributions of extra icons
+for specific modes (with copyright assignments). Contributions would
+also be useful manually to touch up some of the PBM icons.
+++
** Mouse-sensitive mode line.
- Mouse-2 on the read-only or modified status in the mode line (`%' or
`*') toggles the status.
-- Mouse-3 on the mode name display a minor-mode menu.
+- Mouse-3 on the mode name displays a minor-mode menu.
** LessTif/Motif file selection dialog.
attributes such as `overline', `strike-through', and `box' are ignored
on terminals.
+The command-line options `-fg COLOR', `-bg COLOR', and `-rv' are now
+supported on character terminals.
+
** Sound support
Emacs supports playing sound files on GNU/Linux and FreeBSD (Voxware
** There is a new "aggressive" scrolling method.
When scrolling up because point is above the window start, if the
-value of the buffer-local variable `scroll-up-aggessively' is a
+value of the buffer-local variable `scroll-up-aggressively' is a
number, Emacs chooses a new window start so that point ends up that
fraction of the window's height from the top of the window.
** Emacs now resizes mini-windows if appropriate.
If a message is longer than one line, or minibuffer contents are
-longer than one line, Emacs now resizes the minibuffer window unless
-it is on a frame of its own. You can control the maximum minibuffer
-window size by setting the following variable:
+longer than one line, Emacs can resize the minibuffer window unless it
+is on a frame of its own. You can control resizing and the maximum
+minibuffer window size by setting the following variables:
- User option: max-mini-window-height
Maximum height for resizing mini-windows. If a float, it specifies a
fraction of the mini-window frame's height. If an integer, it
-specifies a number of lines. If nil, don't resize.
+specifies a number of lines.
Default is 0.25.
+- User option: resize-mini-windows
+
+How to resize mini-windows. If nil, don't resize. If t, always
+resize to fit the size of the text. If `grow-only', let mini-windows
+grow only, until they become empty, at which point they are shrunk
+again.
+
+Default is `grow-only'.
+
** The command `Info-search' now uses a search history.
** Changes to hideshow.el
`change-log-version-number-regexp-list' which can be cutomized.
Version numbers are only found in the first 10 percent of a file.
-*** Change Log mode now defines its own faces for font-lock
-highlighting.
+*** Change Log mode now defines its own faces for font-lock highlighting.
+
+** Changes to cmuscheme
+
+*** The user-option `scheme-program-name' has been renamed
+`cmuscheme-program-name' due to conflicts with xscheme.el.
** Changes in Font Lock
*** The new function `font-lock-remove-keywords' can be used to remove
-font-lock keywords from the current buffer or from a specific major
-mode.
+font-lock keywords from the current buffer or from a specific major mode.
+
+*** Multiline patterns are now supported. Modes using this, should
+set font-lock-multiline to t in their font-lock-defaults.
+
+*** `font-lock-syntactic-face-function' allows major-modes to choose
+the face used for each string/comment.
+
+*** A new standard face `font-lock-doc-face'.
+Meant for Lisp docstrings, Javadoc comments and other "documentation in code".
** Comint (subshell) changes
-By default, comint no longer uses the variable `comint-prompt-regexp' to
-distinguish prompts from user-input. Instead, it notices which parts of
-the text were output by the process, and which entered by the user, and
-attaches `field' properties to allow emacs commands to use this information.
-Common movement commands, notably beginning-of-line, respect field
-boundaries in a fairly natural manner.
-To disable this feature, and use the old behavior, set the variable
-`comint-use-prompt-regexp-instead-of-fields' to a non-nil value.
+These changes generally affect all modes derived from comint mode, which
+include shell-mode, gdb-mode, scheme-interaction-mode, etc.
-Comint now includes new features to send commands to running processes
+*** By default, comint no longer uses the variable `comint-prompt-regexp'
+to distinguish prompts from user-input. Instead, it notices which
+parts of the text were output by the process, and which entered by the
+user, and attaches `field' properties to allow emacs commands to use
+this information. Common movement commands, notably beginning-of-line,
+respect field boundaries in a fairly natural manner. To disable this
+feature, and use the old behavior, customize the user option
+`comint-use-prompt-regexp-instead-of-fields'.
+
+*** Comint now includes new features to send commands to running processes
and redirect the output to a designated buffer or buffers.
-The command M-x comint-redirect-send-command reads a command and
+*** The command M-x comint-redirect-send-command reads a command and
buffer name from the mini-buffer. The command is sent to the current
buffer's process, and its output is inserted into the specified buffer.
M-x comint-redirect-send-command but additionally reads the name of
the buffer whose process should be used from the mini-buffer.
-Packages based on comint.el like shell-mode, and scheme-interaction-mode
-now highlight user input and program prompts, and support choosing
-previous input with mouse-2. To control these feature, see the
-user-options `comint-highlight-input' and `comint-highlight-prompt'.
+*** Packages based on comint now highlight user input and program prompts,
+and support choosing previous input with mouse-2. To control these features,
+see the user-options `comint-highlight-input' and `comint-highlight-prompt'.
+
+*** The new command `comint-write-output' (usually bound to `C-c C-s')
+saves the output from the most recent command to a file. With a prefix
+argument, it appends to the file.
+
+*** The command `comint-kill-output' has been renamed `comint-delete-output'
+(usually bound to `C-c C-o'); the old name is aliased to it for
+compatibility.
+
+*** The new function `comint-add-to-input-history' adds commands to the input
+ring (history).
+
+*** The new variable `comint-input-history-ignore' is a regexp for
+identifying history lines that should be ignored, like tcsh time-stamp
+strings, starting with a `#'. The default value of this variable is "^#".
** Changes to Rmail mode
-*** The new user-option rmail-rmail-user-mail-address-regexp can be
+*** The new user-option rmail-user-mail-address-regexp can be
set to fine tune the identification of of the correspondent when
receiving new mail. If it matches the address of the sender, the
recipient is taken as correspondent of a mail. If nil, the default,
** Changes to TeX mode
-The default mode has been changed from `plain-tex-mode' to
+*** The default mode has been changed from `plain-tex-mode' to
`latex-mode'.
+*** latex-mode now has a simple indentation algorithm.
+
+*** M-f and M-p jump around \begin...\end pairs.
+
+*** Added support for outline-minor-mode.
+
** Changes to RefTeX mode
*** RefTeX has new support for index generation. Index entries can be
** Tooltips.
Tooltips are small X windows displaying a help string at the current
-mouse position. To use them, use the Lisp package `tooltip' which you
-can access via the user option `tooltip-mode'.
+mouse position. The Lisp package `tooltip' implements them. You can
+turn them off via the user option `tooltip-mode'.
Tooltips also provides support for GUD debugging. If activated,
variable values can be displayed in tooltips by pointing at them with
*** Dired now properly handles undo changes of adding/removing `-R'
from ls switches.
+*** Dired commands that prompt for a destination file now allow the use
+of the `M-n' command in the minibuffer to insert the source filename,
+which the user can then edit. This only works if there is a single
+source file, not when operating on multiple marked files.
+
** The variable mail-specify-envelope-from controls whether to
use the -f option when sending mail.
*** In Lisp, "(defstruct (foo", "(defun (operator" and similar constructs
are now tagged.
+*** In makefiles, tags the targets.
+
*** In Perl, the --globals option tags global variables. my and local
variables are tagged.
*** Setting tags-apropos-verbose to a non-nil value displays the
names of tags files in the *Tags List* buffer.
+*** You can now search for tags that are part of the filename itself.
+If you have tagged the files topfile.c subdir/subfile.c
+/tmp/tempfile.c, you can now search for tags "topfile.c", "subfile.c",
+"dir/sub", "tempfile", "tempfile.c". If the tag matches the filename,
+point will go to the beginning of the file.
+
+++
** Emacs now attempts to determine the initial language environment
and preferred and locale coding systems systematically from the
releases have 8859-15. There are new Latin-8 and Latin-9 prefix
(only) and Polish slash input methods in Leim.
++++
+** New language environments `Dutch' and `Spanish'.
+These new environments mainly select appropriate translations
+of the tutorial.
+
+++
** Fortran mode has a new command `fortran-strip-sequence-nos' to
remove text past column 72. The syntax class of `\' in Fortran is now
VC Dired buffers are now kept up-to-date during all version control
operations.
+`vc-diff' output is now displayed in `diff-mode'.
+`vc-print-log' uses `log-view-mode'.
+`vc-log-mode' (used for *VC-Log*) has been replaced by `log-edit-mode'.
+
+The command C-x v m (vc-merge) now accepts an empty argument as the
+first revision number. This means that any recent changes on the
+current branch should be picked up from the repository and merged into
+the working file (``merge news'').
+
+The commands C-x v s (vc-create-snapshot) and C-x v r
+(vc-retrieve-snapshot) now ask for a directory name from which to work
+downwards.
+
+*** Multiple Backends
+
+VC now lets you register files in more than one backend. This is
+useful, for example, if you are working with a slow remote CVS
+repository. You can then use RCS for local editing, and occasionally
+commit your changes back to CVS, or pick up changes from CVS into your
+local RCS archives.
+
+To make this work, the ``more local'' backend (RCS in our example)
+should come first in `vc-handled-backends', and the ``more remote''
+backend (CVS) should come later. (The default value of
+`vc-handled-backends' already has it that way.)
+
+If you have a file registered in one backend already, you can register
+it in a second one by using C-x v i (vc-register) again.
+Alternatively, you can commit changes to another backend (say, RCS),
+by typing C-u C-x v v RCS RET (i.e. vc-next-action now accepts a
+backend name as a revision number). When using the latter approach,
+VC registers the file in the more local backend if that hasn't already
+happened, and commits to a branch based on the current revision number
+from the more remote backend.
+
+If a file is registered in multiple backends, you can switch to
+another one using C-x v b (vc-switch-backend). This does not change
+any files, it only changes VC's perspective on the file. Use this to
+pick up changes from CVS while working under RCS locally.
+
+After you are done with your local RCS editing, you can commit your
+changes back to CVS using C-u C-x v v CVS RET. In this case, the
+local RCS archive is removed after the commit, and the log entry
+buffer is initialized to contain the entire RCS change log of the file.
+
*** Changes for CVS
There is a new user option, `vc-cvs-stay-local'. If it is `t' (the
that match it are treated locally. If the variable is nil, then VC
queries the repository just as often as it does for local files.
+If `vc-cvs-stay-local' is on, then VC also makes local backups of
+repository versions. This means that ordinary diffs (C-x v =) and
+revert operations (C-x v u) can be done completely locally, without
+any repository interactions at all. The name of a local version
+backup of FILE is FILE.~REV.~, where REV is the repository version
+number. This format is similar to that used by C-x v ~
+(vc-version-other-window), except for the trailing dot. As a matter
+of fact, the two features can each use the files created by the other,
+the only difference being that files with a trailing `.' are deleted
+automatically after commit. (This feature doesn't work on MS-DOS,
+since DOS disallows more than a single dot in the trunk of a file
+name.)
+
If `vc-cvs-stay-local' is on, and there have been changes in the
repository, VC notifies you about it when you actually try to commit.
If you want to check for updates from the repository without trying to
-commit, you can either use C-u C-x v m to perform an update on the
+commit, you can either use C-x v m RET to perform an update on the
current file, or you can use C-x v r RET to get an update for an
entire directory tree.
is only meaningful if the CVSREAD variable is set, or if files are
"watched" by other developers.)
+The commands C-x v s (vc-create-snapshot) and C-x v r
+(vc-retrieve-snapshot) are now also implemented for CVS. If you give
+an empty argument to the latter, that performs a `cvs update',
+starting at the given directory.
+
*** Lisp Changes in VC
VC has been restructured internally to make it modular. You can now
you need to put it somewhere into Emacs' load path and add the atom
`FOO' to the list `vc-handled-backends'.
+*** The customizable EDT emulation package now supports the EDT
+SUBS command and EDT scroll margins. It also works with more
+terminal/keyboard configurations and it now works under XEmacs.
+See etc/edt-user.doc for more information.
+
** New modes and packages
+*** The new global minor mode `minibuffer-electric-default-mode'
+automatically hides the `(default ...)' part of minibuffer prompts when
+the default is not applicable.
+
+*** Artist is an Emacs lisp package that allows you to draw lines,
+rectangles and ellipses by using your mouse and/or keyboard. The
+shapes are made up with the ascii characters |, -, / and \.
+
+Features are:
+
+- Intersecting: When a `|' intersects with a `-', a `+' is
+ drawn, like this: | \ /
+ --+-- X
+ | / \
+
+- Rubber-banding: When drawing lines you can interactively see the
+ result while holding the mouse button down and moving the mouse. If
+ your machine is not fast enough (a 386 is a bit too slow, but a
+ pentium is well enough), you can turn this feature off. You will
+ then see 1's and 2's which mark the 1st and 2nd endpoint of the line
+ you are drawing.
+
+- Arrows: After having drawn a (straight) line or a (straight)
+ poly-line, you can set arrows on the line-ends by typing < or >.
+
+- Flood-filling: You can fill any area with a certain character by
+ flood-filling.
+
+- Cut copy and paste: You can cut, copy and paste rectangular
+ regions. Artist also interfaces with the rect package (this can be
+ turned off if it causes you any trouble) so anything you cut in
+ artist can be yanked with C-x r y and vice versa.
+
+- Drawing with keys: Everything you can do with the mouse, you can
+ also do without the mouse.
+
+- Aspect-ratio: You can set the variable artist-aspect-ratio to
+ reflect the height-width ratio for the font you are using. Squares
+ and circles are then drawn square/round. Note, that once your
+ ascii-file is shown with font with a different height-width ratio,
+ the squares won't be square and the circles won't be round.
+
+- Drawing operations: The following drawing operations are implemented:
+
+ lines straight-lines
+ rectangles squares
+ poly-lines straight poly-lines
+ ellipses circles
+ text (see-thru) text (overwrite)
+ spray-can setting size for spraying
+ vaporize line vaporize lines
+ erase characters erase rectangles
+
+ Straight lines are lines that go horizontally, vertically or
+ diagonally. Plain lines go in any direction. The operations in
+ the right column are accessed by holding down the shift key while
+ drawing.
+
+ It is possible to vaporize (erase) entire lines and connected lines
+ (rectangles for example) as long as the lines being vaporized are
+ straight and connected at their endpoints. Vaporizing is inspired
+ by the drawrect package by Jari Aalto <jari.aalto@poboxes.com>.
+
+- Picture mode compatibility: Artist is picture mode compatible (this
+ can be turned off).
+
++++
+*** The new package Eshell is an operating system command shell
+implemented entirely in Emacs Lisp. Use `M-x eshell' to invoke it.
+It functions similarly to bash and zsh, and allows running of Lisp
+functions and external commands using the same syntax. It supports
+history lists, aliases, extended globbing, smart scrolling, etc. It
+will work on any platform Emacs has been ported to. And since most of
+the basic commands -- ls, rm, mv, cp, ln, du, cat, etc. -- have been
+rewritten in Lisp, it offers an operating-system independent shell,
+all within the scope of your Emacs process.
+
+++
*** The new package timeclock.el is a mode is for keeping track of time
intervals. You can use it for whatever purpose you like, but the
*** The comment operations are now provided by the newcomment.el
package which allows different styles of comment-region and should
be more robust while offering the same functionality.
+`comment-region' now doesn't always comment a-line-at-a-time, but only
+comments the region, breaking the line at point if necessary.
+++
*** The Ebrowse package implements a C++ class browser and tags
*** ansi-color.el translates ANSI terminal escapes into text-properties.
-Please note: if `ansi-color-for-shell-mode' and
+Please note: if `ansi-color-for-comint-mode and
`global-font-lock-mode' are non-nil, loading ansi-color.el will
disable font-lock and add `ansi-color-apply' to
`comint-preoutput-filter-functions' for all shell-mode buffers. This
+++
*** fortune.el uses the fortune program to create mail/news signatures.
-*** whitespace.el ???
+*** whitespace.el is a package for warning about and cleaning bogus
+whitespace in a file.
*** PostScript mode (ps-mode) is a new major mode for editing PostScript
files. It offers: interaction with a PostScript interpreter, including
*** gnus-mule.el is now just a compatibility layer over the built-in
Gnus facilities.
+*** pcomplete.el is a library that provides programmable completion
+facilities for Emacs, similar to what zsh and tcsh offer. The main
+difference is that completion functions are written in Lisp, meaning
+they can be profiled, debugged, etc.
+
++++
+** Refill minor mode provides preliminary support for keeping
+paragraphs filled as you modify them.
+
++++
+** The new global minor mode `auto-image-file-mode' allows image files
+to be visited as images.
+
** Withdrawn packages
*** mldrag.el has been removed. mouse.el provides the same
*** ph.el has been obsoleted by EUDC and removed.
\f
+* Incompatible Lisp changes
+
+There are a few Lisp changes which are not backwards-compatible and
+may require changes to existing code. Here is a list for reference.
+See the sections below for details.
+
+** Since `format' preserves text properties, the idiom
+`(format %s foo)' no longer works to copy and remove properties.
+Use `copy-sequence' and `set-text-properties'.
+
+** Since the `keymap' text property now has significance, some code
+which uses both `local-map' and `keymap' properties (for portability)
+may, for instance, give rise to duplicate menus when the keymaps from
+these properties are active.
+
+** The change in the treatment of non-ASCII characters in search
+ranges may affect some code.
+
+** A non-nil value for the LOCAL arg of add-hook makes the hook
+buffer-local even if `make-local-hook' hasn't been called, which might
+make a difference to some code.
+
+** The new treatment of the minibuffer prompt might affect code which
+operates on the minibuffer.
+
+** The new character sets `eight-bit-control' and `eight-bit-graphic'
+cause `no-conversion' and `emacs-mule-unix' coding systems to produce
+different results when reading files with non-ASCII characters
+(previously, both coding systems would produce the same results).
+Specifically, `no-conversion' interprets each 8-bit byte as a separate
+character. This makes `no-conversion' inappropriate for reading
+multibyte text, e.g. buffers written to disk in their internal MULE
+encoding (auto-saving does that, for example). If a Lisp program
+reads such files with `no-conversion', each byte of the multibyte
+sequence, including the MULE leading codes such as \201, is treated as
+a separate character, which prevents them from being interpreted in
+the buffer as multibyte characters.
+
+Therefore, Lisp programs that read files which contain the internal
+MULE encoding should use `emacs-mule-unix'. `no-conversion' is only
+appropriate for reading truly binary files.
+
+** Code that relies on the obsolete `before-change-function' and
+`after-change-function' to detect buffer changes will now fail. Use
+`before-change-functions' and `after-change-functions' instead.
+
+** Code that uses `concat' with integer args now gets an error, as
+long promised.
+
+** `scroll-left' and `scroll-right' are only effective when
+`automatic-hscrolling' is nil.
+
+\f
* Lisp changes made after edition 2.6 of the Emacs Lisp Manual,
(Display-related features are described in a page of their own below.)
+** The new hook `kbd-macro-termination-hook' is run at the end of of
+function execute-kbd-macro. Functions on this hook are called with no
+args. The hook is run independent of how the macro was terminated
+(signal or normal termination).
+
++++
+** Functions `butlast' and `nbutlast' for removing trailing elements
+from a list are now available without requiring the CL package.
+
++++
+** The new user-option `even-window-heights' can be set to nil
+to prevent `display-buffer' from evening out window heights.
+
++++
+** The user-option `face-font-registry-alternatives' specifies
+alternative font registry names to try when looking for a font.
+
+** Function `md5' calculates the MD5 "message digest"/"checksum".
+
++++
+** Function `delete-frame' runs `delete-frame-hook' before actually
+deleting the frame. The hook is called with one arg, the frame
+being deleted.
+
++++
+** `add-hook' now makes the hook local if called with a non-nil LOCAL arg.
+
++++
+** The treatment of non-ASCII characters in search ranges has changed.
+If a range in a regular expression or the arg of
+skip-chars-forward/backward starts with a unibyte character C and ends
+with a multibyte character C2, the range is divided into two: one is
+C..?\377, the other is C1..C2, where C1 is the first character of C2's
+charset.
+
+++
** The new function `display-message-or-buffer' displays a message in
the echo area or pops up a buffer, depending on the length of the
** The new macro `with-auto-compression-mode' allows evaluating an
expression with auto-compression-mode enabled.
++++
** In image specifications, `:heuristic-mask' has been replaced
with the more general `:mask' property.
-** Image specifications accept more `:algorithm's.
++++
+** Image specifications accept more `:conversion's.
** A `?' can be used in a symbol name without escaping it with a
backslash.
Return a copy of LIST with all occurences of ELT removed. The
comparison is done with `eq'.
++++
** The function `delete' now also works with vectors and strings.
** The meaning of the `:weakness WEAK' argument of make-hash-table
without signaling "Attempt to change char length of a string". It may
convert a unibyte string to multibyte if necessary.
++++
** The value of the `help-echo' text property is called as a function
or evaluated, if it is not a string already, to obtain a help string.
** Function `make-obsolete' now has an optional arg to say when the
function was declared obsolete.
++++
** Function `plist-member' is renamed from `widget-plist-member' (which is
retained as an alias).
** The new function `window-list' has been defined
-- Function: window-list &optional WINDOW MINIBUF ALL-FRAMES
+- Function: window-list &optional FRAME WINDOW MINIBUF
-Return a list of windows in canonical order. The parameters WINDOW,
-MINIBUF and ALL-FRAMES are defined like for `next-window'.
+Return a list of windows on FRAME, starting with WINDOW. FRAME nil or
+omitted means use the selected frame. WINDOW nil or omitted means use
+the selected window. MINIBUF t means include the minibuffer window,
+even if it isn't active. MINIBUF nil or omitted means include the
+minibuffer window only if it's active. MINIBUF neither nil nor t
+means never include the minibuffer window.
** There's a new function `some-window' defined as follows
coding-system if buffer-file-coding-system is `undecided' and
DEFAULT-CODING-SYSTEM is not specified,
-** The function `subr-arity' provides information on the argument list
-of a primitive.
++++
+** The function `subr-arity' provides information about the argument
+list of a primitive.
+
+** `where-is-internal' now also accepts a list of keymaps.
++++
** The text property `keymap' specifies a key map which overrides the
buffer's local map and the map specified by the `local-map' property.
This is probably what most current uses of `local-map' want, rather
than replacing the local map.
-** The obsolete variables before-change-function and
-after-change-function are no longer acted upon and have been removed.
+** The obsolete variables `before-change-function' and
+`after-change-function' are no longer acted upon and have been
+removed. Use `before-change-functions' and `after-change-functions'
+instead.
** The function `apropos-mode' runs the hook `apropos-mode-hook'.
+++
-** `concat' no longer accepts individual integer arguments, as
-promised long ago.
+** `concat' no longer accepts individual integer arguments,
+as promised long ago.
** The new function `float-time' returns the current time as a float.
\f
*** The function `decompose-composite-char' is now labeled as
obsolete.
-** The new character set `mule-unicode-0100-24ff' is introduced for
-Unicode characters of the range U+0100..U+24FF. Currently, this
-character set is not used.
+** The new character sets `mule-unicode-0100-24ff',
+`mule-unicode-2500-33ff', and `mule-unicode-e000-ffff' are introduced
+for Unicode characters in the range U+0100..U+24FF, U+2500..U+33FF,
+U+E000..U+FFFF respectively.
** The new character sets `japanese-jisx0213-1' and
`japanese-jisx0213-2' are introduced for the new Japanese standard JIS
+++
** Regular expressions now support intervals \{n,m\} as well as
Perl's shy-groups \(?:...\) and non-greedy *? +? and ?? operators.
+Also backreferences like \2 are now considered as an error if the
+corresponding subgroup does not exist (or is not closed yet).
+Previously it would have been silently turned into `2' (ignoring the `\').
+++
** The optional argument BUFFER of function file-local-copy has been
Then return the value of RESULT, or nil if RESULT is omitted.
+++
-** Regular expressions now support Posix character classes such
-as [:alpha:], [:space:] and so on.
+** Regular expressions now support Posix character classes such as
+[:alpha:], [:space:] and so on. These must be used within a character
+class--for instance, [-[:digit:].+] matches digits or a period
+or a sign.
[:digit:] matches 0 through 9
[:cntrl:] matches ASCII control characters
VOLUME must be an integer in the range 0..100 or a float in the range
0..1. This property is optional.
+- `:device DEVICE'
+
+DEVICE is a string specifying the system device on which to play the
+sound. The default device is system-dependent.
+
Other properties are ignored.
+An alternative interface is called as
+(play-sound-file FILE &optional VOLUME DEVICE).
+
** `multimedia' is a new Finder keyword and Custom group.
++++
** keywordp is a new predicate to test efficiently for an object being
a keyword symbol.
* Lisp-level Display features added after release 2.6 of the Emacs
Lisp Manual
-*** On window systems, `glyph-table' is no longer used.
++++
+** The user-option `resize-mini-windows' controls how Emacs resizes
+mini-windows.
+
++++
+** The function `pos-visible-in-window-p' now has a third optional
+argument, PARTIALLY. If a character is only partially visible, nil is
+returned, unless PARTIALLY is non-nil.
+
+** On window systems, `glyph-table' is no longer used.
+++
** Help strings in menu items are now used to provide `help-echo' text.
++++
** The function `image-size' can be used to determine the size of an
image.
font). FRAME is the frame on which the image will be displayed.
FRAME nil or omitted means use the selected frame.
++++
** The function `image-mask-p' can be used to determine if an image
has a mask bitmap.
registry and encoding `face-default-registry'. This is consistent
with the fact that languages can also be set globally, only.
-++++
++++
**** Clearing face caches.
The Lisp function `clear-face-cache' can be called to clear face caches
width specified by a face, then---within fonts with that width---tries
to find a best match for the specified font height, etc.
-Setting `face-alternative-font-family-alist' allows the user to
-specify alternative font families to try if a family specified by a
-face doesn't exist.
+Setting `face-font-family-alternatives' allows the user to specify
+alternative font families to try if a family specified by a face
+doesn't exist.
+
+Setting `face-font-registry-alternatives' allows the user to specify
+all alternative font registry names to try for a face speciying a
+registry.
+
+Please note that the iterpretations of the above two variables are
+slightly different.
+
+Setting face-ignored-fonts allows the user to ignore specific fonts.
+
+++
**** Scalable fonts
** The minibuffer prompt is now actually inserted in the minibuffer.
This makes it possible to scroll through the prompt, if you want to.
+To disallow this completely (like previous versions of emacs), customize
+the variable `minibuffer-prompt-properties', and turn on the
+`Inviolable' option.
The function minubuffer-prompt-end returns the current position of the
end of the minibuffer prompt, if the minibuffer is current.
`:margin MARGIN'
-MARGIN must be a number >= 0 specifying how many pixels to put as
-margin around the image. Default is 0.
+MARGIN must be either a number >= 0 specifying how many pixels to put
+as margin around the image, or a pair (X . Y) with X specifying the
+horizontal margin and Y specifying the vertical margin. Default is 0.
`:relief RELIEF'
RELIEF is analogous to the `:relief' attribute of faces. Puts a relief
around an image.
-`:algorithm ALGO'
+`:conversion ALGO'
Apply an image algorithm to the image before displaying it.
FG must be a string specifying the image foreground color. Default
is the frame's foreground.
-`:background FG'
+`:background BG'
BG must be a string specifying the image foreground color. Default is
the frame's background color.
**** PBM, image type `pbm'
PBM images don't require an external library. Color, gray-scale and
-mono images are supported. There are no additional image properties
-defined.
+mono images are supported. Additional image properties supported for
+mono images are
+
+`:foreground FG'
+
+FG must be a string specifying the image foreground color. Default
+is the frame's foreground.
+
+`:background FG'
+
+BG must be a string specifying the image foreground color. Default is
+the frame's background color.
**** JPEG, image type `jpeg'
to define a toolbar item with a binding copied from an item on the
menu bar.
+The default bindings use a menu-item :filter to derive the tool-bar
+dynamically from variable `tool-bar-map' which may be set
+buffer-locally to override the global map.
+
*** Tool-bar-related variables.
If `auto-resize-tool-bar' is non-nil, the tool bar will automatically
You can add extra space between tool bar items by setting
`tool-bar-button-margin' to a positive integer specifying a number of
-pixels. Default is 1.
+pixels, or a pair of integers (X . Y) specifying horizontal and
+vertical margins . Default is 1.
You can change the shadow thickness of tool bar buttons by setting
`tool-bar-button-relief' to an integer. Default is 3.
*** Other display properties
-- :space-width FACTOR
+- (space-width FACTOR)
Specifies that space characters in the text having that property
should be displayed FACTOR times as wide as normal; FACTOR must be an
integer or float.
-- :height HEIGHT
+- (height HEIGHT)
Display text having this property in a font that is smaller or larger.
Otherwise, HEIGHT is evaluated to get the new height, with the symbol
`height' bound to the current specified font height.
-- :raise FACTOR
+- (raise FACTOR)
FACTOR must be a number, specifying a multiple of the current
font's height. If it is positive, that means to display the characters
raised. If it is negative, that means to display them lower down. The
amount of raising or lowering is computed without taking account of the
-`:height' subproperty.
+`height' subproperty.
*** Conditional display properties
support a vertical-bar cursor).
-^L
+\f
* Emacs 20.7 is a bug-fix release with few user-visible changes
** It is now possible to use CCL-based coding systems for keyboard
** Support for Macintosh PowerPC-based machines running GNU/Linux has
been added.
-^L
+\f
* Emacs 20.6 is a bug-fix release with one user-visible change
** Support for ARM-based non-RISCiX machines has been added.
-^L
+\f
* Emacs 20.5 is a bug-fix release with no user-visible changes.
** Not new, but not mentioned before:
----------------------------------------------------------------------
Copyright information:
-Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the