From 30b0da81df830271b6e5ce3902d28917e396fe59 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 2 May 2005 20:58:54 +0000 Subject: [PATCH] *** empty log message *** --- etc/ChangeLog | 4 + etc/NEWS | 6334 ++++++++++++++++++++++++------------------------- 2 files changed, 3154 insertions(+), 3184 deletions(-) diff --git a/etc/ChangeLog b/etc/ChangeLog index 902dcfb64a2..07a3c4d8297 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,7 @@ +2005-05-02 Chong Yidong + + * NEWS: Items rearranged in logical order. + 2005-05-01 Lars Hansen * NEWS: Correct key binding for dired-mark-omitted. diff --git a/etc/NEWS b/etc/NEWS index 045a6e53731..82b23e90f88 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -18,34 +18,21 @@ so we will look at it and add it to the manual. * Installation Changes in Emacs 22.1 --- -** Emacs includes now support for loading image libraries on demand. -(Currently this feature is only used on MS Windows.) You can configure -the supported image types and their associated dynamic libraries by -setting the variable `image-library-alist'. +** Emacs now supports new configure options `--program-prefix', +`--program-suffix' and `--program-transform-name' that affect the names of +installed programs. --- -** 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. +** Emacs can now be built without sound support. --- ** 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 provides a way to display multilingual text in menus (with some caveats). ---- -** Emacs can now be built without sound support. - --- ** The `emacsserver' program has been removed, replaced with elisp code. ---- -** Emacs now supports new configure options `--program-prefix', -`--program-suffix' and `--program-transform-name' that affect the names of -installed programs. - --- ** By default, Emacs now uses a setgid helper program to update game scores. The directory ${localstatedir}/games/emacs is the normal @@ -77,6 +64,22 @@ together with the Emacs User Manual, into the Info directory. A menu item was added to the menu bar that makes it easy accessible (Help->More Manuals->Introduction to Emacs Lisp). +--- +** 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. + +--- +** A French translation of the `Emacs Survival Guide' is available. + +--- +** Emacs now includes 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'. + --- ** Support for Cygwin was added. @@ -98,9 +101,6 @@ See the files mac/README and mac/INSTALL for build instructions. create non-Carbon build by specifying `NonCarbon' as a target. See the files mac/README and mac/INSTALL for build instructions. ---- -** A French translation of the `Emacs Survival Guide' is available. - --- ** Building with -DENABLE_CHECKING does not automatically build with union types any more. Add -DUSE_LISP_UNION_TYPE if you want union types. @@ -108,90 +108,73 @@ types any more. Add -DUSE_LISP_UNION_TYPE if you want union types. * Changes in Emacs 22.1 -** Moving or scrolling through images (and other lines) taller that -the window now works sensible, by automatically adjusting the window's -vscroll property. +** New command line option -Q or --quick. +This is like using -q --no-site-file, but in addition it also disables +the fancy startup screen. +++ -** In graphical mode, with a C program, GUD Tooltips have been extended to -display the #define directive associated with an identifier when program is -not executing. +** New command line option -D or --basic-display. +Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and +the blinking cursor. +++ -** `comint-use-prompt-regexp-instead-of-fields' has been renamed -`comint-use-prompt-regexp'. The old name has been kept as an alias, -but declared obsolete. - -** Improved key bindings support when running in an xterm. -When emacs is running in an xterm more key bindings are available. The -following should work: -{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}. -These key bindings work on xterm from X.org 6.8, they might not work on -some older versions of xterm, or on some proprietary versions. - -** Improved Thai support. A new minor mode `thai-word-mode' (which is -automatically activated if you select Thai as a language -environment) changes key bindings of most word-oriented commands to -versions which recognize Thai words. Affected commands are - M-f (forward-word) - M-b (backward-word) - M-d (kill-word) - M-DEL (backward-kill-word) - M-t (transpose-words) - M-q (fill-paragraph) +** New command line option -nbc or --no-blinking-cursor disables +the blinking cursor on graphical terminals. +++ -** Auto Compression mode is now enabled by default. - -** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case. +** The command line option --no-windows has been changed to +--no-window-system. The old one still works, but is deprecated. -Since the default input is the current directory, this has the effect -of specifying the current directory. Normally that means to visit the -directory with Dired. ++++ +** The -f option, used from the command line to call a function, +now reads arguments for the function interactively if it is +an interactively callable function. ---- -** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead. ++++ +** Emacs can now be invoked in full-screen mode on a windowed display. +When Emacs is invoked on a window system, the new command-line options +`--fullwidth', `--fullheight', and `--fullscreen' produce a frame +whose width, height, or both width and height take up the entire +screen size. (For now, this does not work with some window managers.) ---- -** The default settings for JIT stealth lock parameters are changed. -The default value for the user option jit-lock-stealth-time is now 16 -instead of 3, and the default value of jit-lock-stealth-nice is now -0.5 instead of 0.125. The new defaults should lower the CPU usage -when Emacs is fontifying in the background. ++++ +** Emacs now displays a splash screen by default even if command-line +arguments were given. The new command-line option --no-splash +disables the splash screen; see also the variable +`inhibit-startup-message' (which is also aliased as +`inhibit-splash-screen'). ---- -** iso-acc.el is now obsolete. Use one of the latin input methods instead. ++++ +** New user option `inhibit-startup-buffer-menu'. +When loading many files, for instance with `emacs *', Emacs normally +displays a buffer menu. This option turns the buffer menu off. ---- -** Language environment and various default coding systems are setup -more correctly according to the current locale name. If the locale -name doesn't specify a charset, the default is what glibc defines. -This change may result in using the different coding systems as -default in some locale (e.g. vi_VN). ++++ +** Init file changes +You can now put the init files .emacs and .emacs_SHELL under +~/.emacs.d or directly under ~. Emacs will find them in either place. +++ -** The commands copy-file, rename-file, make-symbolic-link and -add-name-to-file, when given a directory as the "new name" argument, -convert it to a file name by merging in the within-directory part of -the existing file's name. (This is the same convention that shell -commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET -/tmp RET copies ~/foo to /tmp/foo. +** Emacs now reads the standard abbrevs file ~/.abbrev_defs +automatically at startup, if it exists. When Emacs offers to save +modified buffers, it saves the abbrevs too if they have changed. It +can do this either silently or asking for confirmation first, +according to the value of `save-abbrevs'. +++ -** M-o now is the prefix key for setting text properties; -M-o M-o requests refontification. +** The mode line position information now comes before the major mode. +When the file is maintained under version control, that information +appears between the position information and the major mode. +++ ** M-g is now a prefix key. - M-g g and M-g M-g run goto-line. M-g n and M-g M-n run next-error (like C-x `). M-g p and M-g M-p run previous-error. +++ -** font-lock-lines-before specifies a number of lines before the -current line that should be refontified when you change the buffer. -The default value is 1. +** M-o now is the prefix key for setting text properties; +M-o M-o requests refontification. +++ ** C-u M-x goto-line now switches to the most recent previous buffer, @@ -200,86 +183,46 @@ and goes to the specified line in that buffer. When goto-line starts to execute, if there's a number in the buffer at point then it acts as the default argument for the minibuffer. ---- -** Emacs now responds to mouse-clicks on the mode-line, header-line and -display margin, when run in an xterm. - +++ -** M-SPC (just-one-space) when given a numeric argument N -converts whitespace around point to N spaces. +** You can now switch buffers in a cyclic order with C-x C-left and +(prev-buffer) and C-x C-right (next-buffer). C-x left and C-x right +can be used as well. +++ -** Control characters and escape glyphs are now shown in the new -escape-glyph face. +** New command `Buffer-menu-toggle-files-only' toggles display of file +buffers only in the Buffer Menu. It is bound to `T' in Buffer Menu +mode. +++ -** Non-breaking space and hyphens are now prefixed with an escape -character, unless the new user variable `show-nonbreak-escape' is set -to nil. - ---- -** The type-break package now allows `type-break-file-name' to be nil -and if so, doesn't store any data across sessions. This is handy if -you don't want the .type-break file in your home directory or are -annoyed by the need for interaction when you kill Emacs. - ---- -** display-battery has been replaced by display-battery-mode. +** `buffer-menu' and `list-buffers' now list buffers whose names begin +with a space, when those buffers are visiting files. Normally buffers +whose names begin with space are omitted. --- -** calculator.el now has radix grouping mode, which is available when -`calculator-output-radix' is non-nil. In this mode a separator -character is used every few digits, making it easier to see byte -boundries etc. For more info, see the documentation of the variable -`calculator-radix-grouping-mode'. - -+++ -** You can now follow links by clicking Mouse-1 on the link. - -Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2 -click to follow a link, whereas most other applications use a Mouse-1 -click for both purposes, depending on whether you click outside or -inside a link. Now the behavior of a Mouse-1 click has been changed -to match this context-sentitive dual behavior. - -Depending on the current mode, a Mouse-2 click in Emacs may do much -more than just follow a link, so the new Mouse-1 behavior is only -activated for modes which explicitly mark a clickable text as a "link" -(see the new function `mouse-on-link-p' for details). The Lisp -packages that are included in release 22.1 have been adapted to do -this, but external packages may not yet support this. However, there -is no risk in using such packages, as the worst thing that could -happen is that you get the original Mouse-1 behavior when you click -on a link, which typically means that you set point where you click. +** The new options `buffers-menu-show-directories' and +`buffers-menu-show-status' let you control how buffers are displayed +in the menu dropped down when you click "Buffers" from the menu bar. -If you want to get the original Mouse-1 action also inside a link, you -just need to press the Mouse-1 button a little longer than a normal -click (i.e. press and hold the Mouse-1 button for half a second before -you release it). +`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 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. -Dragging the Mouse-1 inside a link still performs the original -drag-mouse-1 action, typically copy the text. +`buffers-menu-show-status' controls whether the Buffers menu includes +the modified and read-only status of the buffers. By default it is +t, and the status is shown. -You can customize the new Mouse-1 behavior via the new user options -`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'. +Setting these variables directly does not take effect until next time +the Buffers menu is regenerated. +++ -** require-final-newline now has two new possible values: - -`visit' means add a newline (as an undoable change) if it's needed -when visiting the file. - -`visit-save' means add a newline (as an undoable change) if it's -needed when visiting the file, and also add a newline if it's needed -when saving the file. +** The old bindings C-M-delete and C-M-backspace have been deleted, +since there are situations where one or the other will shut down +the operating system or your X server. +++ -** The new option mode-require-final-newline controls how certain -major modes enable require-final-newline. Any major mode that's -designed for a kind of file that should normally end in a newline -sets require-final-newline based on mode-require-final-newline. -So you can customize mode-require-final-newline to control what these -modes do. +** `undo-only' does an undo which does not redo any previous undo. +++ ** When the undo information of the current command gets really large @@ -287,358 +230,322 @@ modes do. you about it. +++ -** line-move-ignore-invisible now defaults to t. +** M-SPC (just-one-space) when given a numeric argument N +converts whitespace around point to N spaces. -+++ -** In Outline mode, hide-body no longer hides lines at the top -of the file that precede the first header line. +--- +** New command `kill-whole-line' kills an entire line at once. +By default, it is bound to C-S-. +++ -** 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'. +** Yanking text now discards certain text properties that can +be inconvenient when you did not expect them. The variable +`yank-excluded-properties' specifies which ones. Insertion +of register contents and rectangles also discards these properties. +++ -** In processing a local variables list, Emacs strips the prefix and -suffix are from every line before processing all the lines. +** 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. +++ -** `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. ---- -*** rx.el has new corresponding `symbol-end' and `symbol-start' elements. +** 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. +++ -** 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. +** The parameters of automatic hscrolling can now be customized. +The variable `hscroll-margin' determines how many columns away from +the window edge point is allowed to get before automatic hscrolling +will horizontally scroll the window. The default value is 5. ---- -** The terminal emulation code in term.el has been improved, it can -run most curses applications now. +The variable `hscroll-step' determines how many columns automatic +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 +gives the fraction of the window's width to scroll the window. -** New features in evaluation commands +The variable `automatic-hscrolling' was renamed to +`auto-hscroll-mode'. The old name is still available as an alias. +++ -*** The function `eval-defun' (C-M-x) called on defface reinitializes -the face to the value specified in the defface expression. +** 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 ... cycles through the +mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump. +++ -*** 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. +** 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 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. +++ -** New command quail-show-key shows what key (or key sequence) to type -in the current input method to input a character at point. +** M-h (mark-paragraph) now accepts a prefix arg. +With positive arg, M-h marks the current and the following paragraphs; +if the arg is negative, it marks the current and the preceding +paragraphs. +++ -** You can now switch buffers in a cyclic order with C-x C-left and -(prev-buffer) and C-x C-right (next-buffer). C-x left and C-x right -can be used as well. - ---- -** Commands winner-redo and winner-undo, from winner.el, are now bound to -C-c and C-c , respectively. This is an incompatible change. - ---- -** 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 -option `comint-prompt-read-only'. This is not enabled by default, -except in IELM buffers. The read-only status of IELM prompts can be -controlled with the new user option `ielm-prompt-read-only', which -overrides `comint-prompt-read-only'. - -The new commands `comint-kill-whole-line' and `comint-kill-region' -support editing comint buffers with read-only prompts. +** Some commands do something special in Transient Mark mode when the +mark is active--for instance, they limit their operation to the +region. Even if you don't normally use Transient Mark mode, you might +want to get this behavior from a particular command. There are two +ways you can enable Transient Mark mode and activate the mark, for one +command only. -`comint-kill-whole-line' is like `kill-whole-line', but ignores both -read-only and field properties. Hence, it always kill entire -lines, including any prompts. +One method is to type C-SPC C-SPC; this enables Transient Mark mode +and sets the mark at point. The other method is to type C-u C-x C-x. +This enables Transient Mark mode temporarily but does not alter the +mark or the region. -`comint-kill-region' is like `kill-region', except that it ignores -read-only properties, if it is safe to do so. This means that if any -part of a prompt is deleted, then the entire prompt must be deleted -and that all prompts must stay at the beginning of a line. If this is -not the case, then `comint-kill-region' behaves just like -`kill-region' if read-only are involved: it copies the text to the -kill-ring, but does not delete it. +After these commands, Transient Mark mode remains enabled until you +deactivate the mark. That typically happens when you type a command +that alters the buffer, but you can also deactivate the mark by typing +C-g. +++ -** You can now use next-error (C-x `) and previous-error to advance to -the next/previous matching line found by M-x occur. +** find-file-read-only visits multiple files in read-only mode, +when the file name contains wildcard characters. +++ -** Telnet now prompts you for a port number with C-u M-x telnet. +** find-alternate-file replaces the current file with multiple files, +when the file name contains wildcard characters. +++ -** New command line option -Q or --quick. +** Auto Compression mode is now enabled by default. -This is like using -q --no-site-file, but in addition it also disables -the fancy startup screen. +--- +** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case. -+++ -** New command line option -D or --basic-display. +Since the default input is the current directory, this has the effect +of specifying the current directory. Normally that means to visit the +directory with Dired. -Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and -the blinking cursor. ++++ +** 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 can in fact alter the +file.) +++ -** New command line option -nbc or --no-blinking-cursor disables -the blinking cursor on graphical terminals. +** C-x s (save-some-buffers) now offers an option `d' to diff a buffer +against its file, so you can see what changes you would be saving. +++ -** C-h v and C-h f commands now include a hyperlink to the C source for -variables and functions defined in C (if the C source is available). +** The commands copy-file, rename-file, make-symbolic-link and +add-name-to-file, when given a directory as the "new name" argument, +convert it to a file name by merging in the within-directory part of +the existing file's name. (This is the same convention that shell +commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET +/tmp RET copies ~/foo to /tmp/foo. --- ** When used interactively, `format-write-file' now asks for confirmation before overwriting an existing file, unless a prefix argument is supplied. This behavior is analogous to `write-file'. -+++ -** 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 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 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. +--- +** The variable `auto-save-file-name-transforms' now has a third element that +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). +++ -** 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 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 -work properly on all operating systems) and for the Buffer Menu. +** The max size of buffers and integers has been doubled. +On 32bit machines, it is now 256M (i.e. 268435455). +++ -** If the new user option `auto-revert-check-vc-info' is non-nil, Auto -Revert mode reliably updates version control info (such as the version -control number in the mode line), in all version controlled buffers in -which it is active. If the option is nil, the default, then this info -only gets updated whenever the buffer gets reverted. +** If the user visits a file larger than `large-file-warning-threshold', +Emacs prompts her for confirmation. +++ -** New command `Buffer-menu-toggle-files-only' toggles display of file -buffers only in the Buffer Menu. It is bound to `T' in Buffer Menu -mode. +** There's a new face `minibuffer-prompt'. +Emacs adds this face to the list of text properties stored in the +variable `minibuffer-prompt-properties', which is used to display the +prompt string. --- -** M-x compile has become more robust and reliable - -Quite a few more kinds of messages are recognized. Messages that are -recognized as warnings or informational come in orange or green, instead of -red. Informational messages are by default skipped with `next-error' -(controlled by `compilation-skip-threshold'). +** Enhanced visual feedback in *Completions* buffer. -Location data is collected on the fly as the *compilation* buffer changes. -This means you could modify messages to make them point to different files. -This also means you can not go to locations of messages you may have deleted. +Completions lists use faces to highlight what all completions +have in common and where they begin to differ. -The variable `compilation-error-regexp-alist' has now become customizable. If -you had added your own regexps to this, you'll probably need to include a -leading `^', otherwise they'll match anywhere on a line. There is now also a -`compilation-mode-font-lock-keywords' and it nicely handles all the checks -that configure outputs and -o options so you see at a glance where you are. +The common prefix shared by all possible completions uses the face +`completions-common-part', while the first character that isn't the +same uses the face `completions-first-difference'. By default, +`completions-common-part' inherits from `default', and +`completions-first-difference' inherits from `bold'. The idea of +`completions-common-part' is that you can use it to make the common +parts less visible than normal, so that the rest of the differing +parts is, by contrast, slightly highlighted. -The new file etc/compilation.txt gives examples of each type of message. ++++ +** File-name completion can now ignore directories. +If an element of the list in `completion-ignored-extensions' ends in a +slash `/', it indicates a subdirectory that should be ignored when +completing file names. Elements of `completion-ignored-extensions' +which do not end in a slash are never considered when a completion +candidate is a directory. -** Compilation mode enhancements: ++++ +** The completion commands TAB, SPC and ? in the minibuffer apply only +to the text before point. If there is text in the buffer after point, +it remains unchanged. +++ -*** 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. +** New user option `history-delete-duplicates'. +If set to t when adding a new history element, all previous identical +elements are deleted. +++ -** Grep has been decoupled from compilation mode setup. +** You can now customize fill-nobreak-predicate to control where +filling can break lines. The value is now normally a list of +functions, but it can also be a single function, for compatibility. ---- -*** There's a new separate package grep.el. +We provide two sample predicates, fill-single-word-nobreak-p and +fill-french-nobreak-p, for use in the value of fill-nobreak-predicate. ---- -*** M-x grep has been adapted to new compile ++++ +** require-final-newline now has two new possible values: -Hits are fontified in green, and hits in binary files in orange. Grep buffers -can be saved and automatically revisited with the new Grep mode. +`visit' means add a newline (as an undoable change) if it's needed +when visiting the file. ---- -*** Grep commands now have their own submenu and customization group. +`visit-save' means add a newline (as an undoable change) if it's +needed when visiting the file, and also add a newline if it's needed +when saving the file. +++ -*** `grep-find' is now also available under the name `find-grep' where -people knowing `find-grep-dired' would probably expect it. - ---- -*** The new variables `grep-window-height', `grep-auto-highlight', and -`grep-scroll-output' can be used to override the corresponding -compilation mode settings for grep commands. +** The new option mode-require-final-newline controls how certain +major modes enable require-final-newline. Any major mode that's +designed for a kind of file that should normally end in a newline +sets require-final-newline based on mode-require-final-newline. +So you can customize mode-require-final-newline to control what these +modes do. +++ -*** 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. +** Control characters and escape glyphs are now shown in the new +escape-glyph face. +++ -*** 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. +** Non-breaking space and hyphens are now prefixed with an escape +character, unless the new user variable `show-nonbreak-escape' is set +to nil. +++ -** 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'. +** In graphical mode, with a C program, GUD Tooltips have been extended to +display the #define directive associated with an identifier when program is +not executing. + +** Moving or scrolling through images (and other lines) taller that +the window now works sensible, by automatically adjusting the window's +vscroll property. +++ -** 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. +** font-lock-lines-before specifies a number of lines before the +current line that should be refontified when you change the buffer. +The default value is 1. -+++ -** M-x diff uses diff-mode instead of compilation-mode. +--- +** JIT-lock changes -+++ -** M-x compare-windows now can automatically skip non-matching text to -resync points in both windows. +*** The default settings for JIT stealth lock parameters are changed. +The default value for the user option jit-lock-stealth-time is now 16 +instead of 3, and the default value of jit-lock-stealth-nice is now +0.5 instead of 0.125. The new defaults should lower the CPU usage +when Emacs is fontifying in the background. ---- -** New command `strokes-global-set-stroke-string'. -This is like `strokes-global-set-stroke', but it allows you to bind -the stroke directly to a string to insert. This is convenient for -using strokes as an input method. -** Gnus package +*** jit-lock can now be delayed with `jit-lock-defer-time'. ---- -*** Gnus now includes Sieve and PGG -Sieve is a library for managing Sieve scripts. PGG is a library to handle -PGP/MIME. +If this variable is non-nil, its value should be the amount of Emacs +idle time in seconds to wait before starting fontification. For +example, if you set `jit-lock-defer-time' to 0.25, fontification will +only happen after 0.25s of idle time. ---- -*** 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. +*** contextual refontification is now separate from stealth fontification. -+++ -** Desktop package +jit-lock-defer-contextually is renamed jit-lock-contextually and +jit-lock-context-time determines the delay after which contextual +refontification takes place. +++ -*** Desktop saving is now a minor mode, desktop-save-mode. Variable -desktop-enable is obsolete. Customize desktop-save-mode to enable desktop -saving. +** line-move-ignore-invisible now defaults to t. --- -*** Buffers are saved in the desktop file in the same order as that in the -buffer list. +** A menu item "Show/Hide" was added to the top-level menu "Options". +This menu allows you to turn various display features on and off (such +as the fringes, the tool bar, the speedbar, and the menu bar itself). +You can also move the vertical scroll bar to either side here or turn +it off completely. There is also a menu-item to toggle displaying of +current date and time, current line and column number in the +mode-line. + +--- +** Speedbar has moved from the "Tools" top level menu to "Show/Hide". +++ -*** The desktop package can be customized to restore only some buffers immediately, -remaining buffers are restored lazily (when Emacs is idle). +** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is +now controlled by the variable `blink-cursor-alist'. +++ -*** New commands: - - desktop-revert reverts to the last loaded desktop. - - desktop-change-dir kills current desktop and loads a new. - - desktop-save-in-desktop-dir saves desktop in the directory from which - it was loaded. - - desktop-lazy-complete runs the desktop load to completion. - - desktop-lazy-abort aborts lazy loading of the desktop. +** The X resource cursorBlink can be used to turn off cursor blinking. ---- -*** New customizable variables: - - desktop-save. Determins whether the desktop should be saved when it is - killed. - - desktop-file-name-format. Format in which desktop file names should be saved. - - desktop-path. List of directories in which to lookup the desktop file. - - desktop-locals-to-save. List of local variables to save. - - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear. - - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear' - should not delete. - - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are - restored lazily (when Emacs is idle). - - desktop-lazy-verbose. Verbose reporting of lazily created buffers. - - desktop-lazy-idle-delay. Idle delay before starting to create buffers. ++++ +** Emacs can produce an underscore-like (horizontal bar) cursor. +The underscore cursor is set by putting `(cursor-type . hbar)' in +default-frame-alist. It supports variable heights, like the `bar' +cursor does. +++ -*** New command line option --no-desktop +** Display of hollow cursors now obeys the buffer-local value (if any) +of `cursor-in-non-selected-windows' in the buffer that the cursor +appears in. ---- -*** 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 variable `cursor-in-non-selected-windows' can now be set to any +of the recognized cursor types. ---- -** The saveplace.el package now filters out unreadable files. -When you exit Emacs, the saved positions in visited files no longer -include files that aren't readable, e.g. files that don't exist. -Customize the new option `save-place-forget-unreadable-files' to nil -to get the old behavior. The new options `save-place-save-skipped' -and `save-place-skip-check-regexp' allow further fine-tuning of this -feature. ++++ +** The new face `mode-line-inactive' is used to display the mode line +of non-selected windows. The `mode-line' face is now used to display +the mode line of the currently selected window. + +The new variable `mode-line-in-non-selected-windows' controls whether +the `mode-line-inactive' face is used. +++ -** You can have several Emacs servers on the same machine. +** New display feature: focus follows the mouse from one Emacs window +to another, even within a frame. If you set the variable +mouse-autoselect-window to non-nil value, moving the mouse to a +different Emacs window will select that window (minibuffer window can +be selected only when it is active). The default is nil, so that this +feature is not enabled. - % emacs --eval '(setq server-name "foo")' -f server-start & - % emacs --eval '(setq server-name "bar")' -f server-start & - % emacsclient -s foo file1 - % emacsclient -s bar file2 ++++ +** On X, when the window manager requires that you click on a frame to +select it (give it focus), the selected window and cursor position +normally changes according to the mouse click position. If you set +the variable x-mouse-click-focus-ignore-position to t, the selected +window and cursor position do not change when you click on a frame +to give it focus. +++ -** 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). -Instead, the newline now "overflows" into the right fringe, and the -cursor will be displayed in the fringe when positioned on that newline. +** When you specify a frame size with --geometry, the size applies to +all frames you create. A position specified with --geometry only +affects the initial frame. -The new user option 'overflow-newline-into-fringe' may be set to nil to -revert to the old behavior of continuing such lines. ++++ +** You can now customize the use of window fringes. To control this +for all frames, use M-x fringe-mode or the Show/Hide submenu of the +top-level Options menu, or customize the `fringe-mode' variable. To +control this for a specific frame, use the command M-x +set-fringe-style. +++ ** The buffer boundaries (i.e. first and last line in the buffer) may @@ -662,989 +569,1158 @@ 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 -same string that would be displayed on mouse-over using the -`help-echo' property, but, in certain cases, it can display a more -keyboard oriented alternative. +** 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). +Instead, the newline now "overflows" into the right fringe, and the +cursor will be displayed in the fringe when positioned on that newline. -+++ -** New user option `help-at-pt-display-when-idle' allows to -automatically show the help provided by `display-local-help' on -point-over, after suitable idle time. The amount of idle time is -determined by the user option `help-at-pt-timer-delay' and defaults -to one second. This feature is turned off by default. +The new user option 'overflow-newline-into-fringe' may be set to nil to +revert to the old behavior of continuing such lines. ---- -** New commands `scan-buf-next-region' and `scan-buf-previous-region' -move to the start of the next (previous, respectively) region with -non-nil help-echo property and display any help found there in the -echo area, using `display-local-help'. ++++ +** 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. +++ -** Help mode now only makes hyperlinks for faces when the face name is -preceded or followed by the word `face'. It no longer makes -hyperlinks for variables without variable documentation, unless -preceded by one of the words `variable' or `option'. It now makes -hyperlinks to Info anchors (or nodes) if the anchor (or node) name is -enclosed in single quotes and preceded by `info anchor' or `Info -anchor' (in addition to earlier `info node' and `Info node'). +** A window may now have individual fringe and scroll-bar settings, +in addition to the individual display margin settings. + +Such individual settings are now preserved when windows are split +horizontally or vertically, a saved window configuration is restored, +or when the frame is resized. +++ -** The max size of buffers and integers has been doubled. -On 32bit machines, it is now 256M (i.e. 268435455). +** `special-display-buffer-names' and `special-display-regexps' now +understand two new boolean pseudo-frame-parameters `same-frame' and +`same-window'. +++ -** The -f option, used from the command line to call a function, -now reads arguments for the function interactively if it is -an interactively callable function. +** Changes in C-h bindings: ---- -** sql changes. +C-h e displays the *Messages* buffer. -*** The variable `sql-product' controls the highlightng of different -SQL dialects. This variable can be set globally via Customize, on a -buffer-specific basis via local variable settings, or for the current -session using the new SQL->Product submenu. (This menu replaces the -SQL->Highlighting submenu.) +C-h followed by a control character is used for displaying files + that do not change: -The following values are supported: +C-h C-f displays the FAQ. +C-h C-e displays the PROBLEMS file. - ansi ANSI Standard (default) - db2 DB2 - informix Informix - ingres Ingres - interbase Interbase - linter Linter - ms Microsoft - mysql MySQL - oracle Oracle - postgres Postgres - solid Solid - sqlite SQLite - sybase Sybase - -The current product name will be shown on the mode line following the -SQL mode indicator. - -The technique of setting `sql-mode-font-lock-defaults' directly in -your .emacs will no longer establish the default highlighting -- Use -`sql-product' to accomplish this. - -ANSI keywords are always highlighted. - -*** The function `sql-add-product-keywords' can be used to add -font-lock rules to the product specific rules. For example, to have -all identifiers ending in "_t" under MS SQLServer treated as a type, -you would use the following line in your .emacs file: - - (sql-add-product-keywords 'ms - '(("\\<\\w+_t\\>" . font-lock-type-face))) +The info-search bindings on C-h C-f, C-h C-k and C-h C-i +have been moved to C-h F, C-h K and C-h S. -*** Oracle support includes keyword highlighting for Oracle 9i. Most -SQL and PL/SQL keywords are implemented. SQL*Plus commands are -highlighted in `font-lock-doc-face'. +C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands. -*** Microsoft SQLServer support has been significantly improved. -Keyword highlighting for SqlServer 2000 is implemented. -sql-interactive-mode defaults to use osql, rather than isql, because -osql flushes its error stream more frequently. Thus error messages -are displayed when they occur rather than when the session is -terminated. +- C-h c and C-h k report the actual command (after possible remapping) + run by the key sequence. -If the username and password are not provided to `sql-ms', osql is -called with the -E command line argument to use the operating system -credentials to authenticate the user. +- C-h w and C-h f on a command which has been remapped now report the + command it is remapped to, and the keys which can be used to run + that command. -*** Postgres support is enhanced. -Keyword highlighting of Postgres 7.3 is implemented. Prompting for -the username and the pgsql `-U' option is added. +For example, if C-k is bound to kill-line, and kill-line is remapped +to new-kill-line, these commands now report: -*** MySQL support is enhanced. -Keyword higlighting of MySql 4.0 is implemented. +- C-h c and C-h k C-k reports: + C-k runs the command new-kill-line -*** Imenu support has been enhanced to locate tables, views, indexes, -packages, procedures, functions, triggers, sequences, rules, and -defaults. +- C-h w and C-h f kill-line reports: + kill-line is remapped to new-kill-line which is on C-k, -*** Added SQL->Start SQLi Session menu entry which calls the -appropriate sql-interactive-mode wrapper for the current setting of -`sql-product'. +- C-h w and C-h f new-kill-line reports: + new-kill-line is on C-k --- -** M-x view-file and commands that use it now avoid interfering -with special modes such as Tar mode. +** 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'. -** Enhancements to apropos commands: ++++ +** C-h v and C-h f commands now include a hyperlink to the C source for +variables and functions defined in C (if the C source is available). +++ -*** 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. +** Help mode now only makes hyperlinks for faces when the face name is +preceded or followed by the word `face'. It no longer makes +hyperlinks for variables without variable documentation, unless +preceded by one of the words `variable' or `option'. It now makes +hyperlinks to Info anchors (or nodes) if the anchor (or node) name is +enclosed in single quotes and preceded by `info anchor' or `Info +anchor' (in addition to earlier `info node' and `Info node'). +++ -*** The new option `apropos-sort-by-scores' causes the matching items -to be sorted according to their score. The score for an item is a -number calculated to indicate how well the item matches the words or -regular expression that you entered to the apropos command. The best -match is listed first, and the calculated score is shown for each -matching item. +** 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, 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 old bindings C-M-delete and C-M-backspace have been deleted, -since there are situations where one or the other will shut down -the operating system or your X server. +** 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 +same string that would be displayed on mouse-over using the +`help-echo' property, but, in certain cases, it can display a more +keyboard oriented alternative. --- -** New minor mode, Visible mode, toggles invisibility in the current buffer. -When enabled, it makes all invisible text visible. When disabled, it -restores the previous value of `buffer-invisibility-spec'. +** New commands `scan-buf-next-region' and `scan-buf-previous-region' +move to the start of the next (previous, respectively) region with +non-nil help-echo property and display any help found there in the +echo area, using `display-local-help'. ---- -** New command `kill-whole-line' kills an entire line at once. -By default, it is bound to C-S-. ++++ +** New user option `help-at-pt-display-when-idle' allows to +automatically show the help provided by `display-local-help' on +point-over, after suitable idle time. The amount of idle time is +determined by the user option `help-at-pt-timer-delay' and defaults +to one second. This feature is turned off by default. --- ** 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. +** In processing a local variables list, Emacs strips the prefix and +suffix are from every line before processing all the lines. -** Dired mode: ++++ +** `apply-macro-to-region-lines' now operates on all lines that begin +in the region, rather than on all complete lines in the region. ---- -*** 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. ++++ +** You can now follow links by clicking Mouse-1 on the link. + +Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2 +click to follow a link, whereas most other applications use a Mouse-1 +click for both purposes, depending on whether you click outside or +inside a link. Now the behavior of a Mouse-1 click has been changed +to match this context-sentitive dual behavior. + +Depending on the current mode, a Mouse-2 click in Emacs may do much +more than just follow a link, so the new Mouse-1 behavior is only +activated for modes which explicitly mark a clickable text as a "link" +(see the new function `mouse-on-link-p' for details). The Lisp +packages that are included in release 22.1 have been adapted to do +this, but external packages may not yet support this. However, there +is no risk in using such packages, as the worst thing that could +happen is that you get the original Mouse-1 behavior when you click +on a link, which typically means that you set point where you click. + +If you want to get the original Mouse-1 action also inside a link, you +just need to press the Mouse-1 button a little longer than a normal +click (i.e. press and hold the Mouse-1 button for half a second before +you release it). + +Dragging the Mouse-1 inside a link still performs the original +drag-mouse-1 action, typically copy the text. + +You can customize the new Mouse-1 behavior via the new user options +`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'. +++ -*** New Dired command `dired-compare-directories' marks files -with different file attributes in two dired buffers. +** Emacs normally highlights mouse sensitive text whenever the mouse +is over the text. By setting the new variable `mouse-highlight', you +can optionally enable mouse highlighting only after you move the +mouse, so that highlighting disappears when you press a key. You can +also disable mouse highlighting. +++ -*** New Dired command `dired-do-touch' (bound to T) changes timestamps -of marked files with the value entered in the minibuffer. +** You can now customize if selecting a region by dragging the mouse +shall not copy the selected text to the kill-ring by setting the new +variable mouse-drag-copy-region to nil. + +--- +** mouse-wheels can now scroll a specific fraction of the window +(rather than a fixed number of lines) and the scrolling is `progressive'. + +--- +** Unexpected yanking of text due to accidental clicking on the mouse +wheel button (typically mouse-2) during wheel scrolling is now avoided. +This behavior can be customized via the mouse-wheel-click-event and +mouse-wheel-inhibit-click-time variables. +++ -*** In Dired's ! command (dired-do-shell-command), `*' and `?' now -control substitution of the file names only when they are surrounded -by whitespace. This means you can now use them as shell wildcards -too. If you want to use just plain `*' as a wildcard, type `*""'; the -doublequotes make no difference in the shell, but they prevent -special treatment in `dired-do-shell-command'. +** Under X, mouse-wheel-mode is turned on by default. +++ -*** In Dired, the w command now copies the current line's file name -into the kill ring. With a zero prefix arg, copies absolute file names. +** M-x setenv now expands environment variables of the form `$foo' and +`${foo}' in the specified new value of the environment variable. To +include a `$' in the value, use `$$'. +++ -** Dired-x: +** Unquoted `$' in file names do not signal an error any more when +the corresponding environment variable does not exist. +Instead, the `$ENVVAR' text is left as is, so that `$$' quoting +is only rarely needed. + +--- +** Language environment and various default coding systems are setup +more correctly according to the current locale name. If the locale +name doesn't specify a charset, the default is what glibc defines. +This change may result in using the different coding systems as +default in some locale (e.g. vi_VN). +++ -*** 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 * O, -marks omitted files. The variable dired-omit-files-p is obsoleted, use the -mode toggling function instead. +** The default for the paper size (variable ps-paper-type) is taken +from the locale. +++ -** find-file-read-only visits multiple files in read-only mode, -when the file name contains wildcard characters. +** The keyboard-coding-system is now automatically set based on your +current locale settings if you are not using a window system. This +may mean that the META key doesn't work but generates non-ASCII +characters instead, depending on how the terminal (or terminal +emulator) works. Use `set-keyboard-coding-system' (or customize +keyboard-coding-system) if you prefer META to work (the old default) +or if the locale doesn't describe the character set actually generated +by the keyboard. See Info node `Single-Byte Character Support'. +++ -** find-alternate-file replaces the current file with multiple files, -when the file name contains wildcard characters. +** The new command `revert-buffer-with-coding-system' (C-x RET r) +revisits the current file using a coding system that you specify. -** FFAP ++++ +** New command `recode-region' decodes the region again by a specified +coding system. +++ -*** 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'). +** The new command `recode-file-name' changes the encoding of the name +of a file. --- -*** 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'. +** New command `ucs-insert' inserts a character specified by its +unicode. -** Info mode: ++++ +** The new command `set-file-name-coding-system' (C-x RET F) sets +coding system for encoding and decoding file names. A new menu item +(Options->Mule->Set Coding Systems->For File Name) invokes this +command. +++ -*** A numeric prefix argument of `info' selects an Info buffer -with the number appended to the *info* buffer name (e.g. "*info*<2>"). +** New command quail-show-key shows what key (or key sequence) to type +in the current input method to input a character at point. ---- -*** isearch in Info uses Info-search and searches through multiple nodes. -Before leaving the initial Info node isearch fails once with the error -message [initial node], and with subsequent C-s/C-r continues through -other nodes. When isearch fails for the rest of the manual, it wraps -aroung the whole manual to the top/final node. The user option -`Info-isearch-search' controls whether to use Info-search for isearch, -or the default isearch search function that wraps around the current -Info 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-forward' (bound to r and new toolbar icon) -moves forward in history to the node you returned from after using -`Info-history-back' (renamed from `Info-last'). - -*** New command `Info-history' (bound to L) displays a menu of visited nodes. - -*** New command `Info-toc' (bound to T) creates a node with table of contents -from the tree structure of menus of the current Info file. ++++ +** Limited support for character `unification' has been added. +Emacs now knows how to translate between different representations of +the same characters in various Emacs charsets according to standard +Unicode mappings. This applies mainly to characters in the ISO 8859 +sets plus some other 8-bit sets, but can be extended. For instance, +translation works amongst the Emacs ...-iso8859-... charsets and the +mule-unicode-... ones. -*** 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. +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. -*** 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. +You can force a more complete unification with the user option +unify-8859-on-decoding-mode. That maps all the Latin-N character sets +into Unicode characters (from the latin-iso8859-1 and +mule-unicode-0100-24ff charsets) on decoding. Note that this mode +will often effectively clobber data with an iso-2022 encoding. --- -*** 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. +** There is support for decoding Greek and Cyrillic characters into +either Unicode (the mule-unicode charsets) or the iso-8859 charsets, +when possible. The latter are more space-efficient. This is +controlled by user option utf-fragment-on-decoding. --- -*** 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 -version 4.7 or newer, compiles to Info pages with embedded images. - -+++ -*** The default value for `Info-scroll-prefer-subnodes' is now nil. +** New language environments: French, Ukrainian, Tajik, +Bulgarian, Belarusian, Ukrainian, UTF-8, Windows-1255, Welsh, Latin-6, +Latin-7, Lithuanian, Latvian, Swedish, Slovenian, Croatian, Georgian, +Italian, Russian, Malayalam, Tamil, Russian, Chinese-EUC-TW. (Set up +automatically according to the locale.) --- -*** Info-index offers completion. +** New input methods: latin-alt-postfix, latin-postfix, latin-prefix, +ukrainian-computer, belarusian, bulgarian-bds, russian-computer, +vietnamese-telex, lithuanian-numeric, lithuanian-keyboard, +latvian-keyboard, welsh, georgian, rfc1345, ucs, sgml, +bulgarian-phonetic, dutch, slovenian, croatian, malayalam-inscript, +tamil-inscript. --- -** Support for the SQLite interpreter has been added to sql.el by calling -'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 -automatic detection of duplicates does not require anymore that -bibtex-maintain-sorted-entries is non-nil. - -*** If the new variable bibtex-parse-keys-fast is non-nil, -use fast but simplified algorithm for parsing BibTeX keys. +** New input method chinese-sisheng for inputting Chinese Pinyin +characters. -*** If the new variable bibtex-autoadd-commas is non-nil, -automatically add missing commas at end of BibTeX fields. +--- +** Improved Thai support. A new minor mode `thai-word-mode' (which is +automatically activated if you select Thai as a language +environment) changes key bindings of most word-oriented commands to +versions which recognize Thai words. Affected commands are + M-f (forward-word) + M-b (backward-word) + M-d (kill-word) + M-DEL (backward-kill-word) + M-t (transpose-words) + M-q (fill-paragraph) -*** The new variable bibtex-autofill-types contains a list of entry -types for which fields are filled automatically (if possible). +--- +** Indian support has been updated. +The in-is13194 coding system is now Unicode-based. CDAC fonts are +assumed. There is a framework for supporting various +Indian scripts, but currently only Devanagari, Malayalam and Tamil are +supported. -*** The new command bibtex-complete completes word fragment before -point according to context (bound to M-tab). +--- +** A UTF-7 coding system is available in the library `utf-7'. -*** The new commands bibtex-find-entry and bibtex-find-crossref -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). +--- +** The utf-8/16 coding systems have been enhanced. +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. -*** In BibTeX mode the command fill-paragraph (bound to M-q) fills -individual fields of a BibTeX entry. +--- +** A new coding system `euc-tw' has been added for traditional Chinese +in CNS encoding; it accepts both Big 5 and CNS as input; on saving, +Big 5 is then converted to CNS. -*** The new variables bibtex-files and bibtex-file-path define a set -of BibTeX files that are searched for entry keys. +--- +** Many new coding systems are available by loading the `code-pages' +library. These include complete versions of most of those in +codepage.el, based on Unicode mappings. `codepage-setup' is now +obsolete and is used only in the MS-DOS port of Emacs. windows-1252 +and windows-1251 are preloaded since the former is so common and the +latter is used by GNU locales. -*** The new command bibtex-validate-globally checks for duplicate keys -in multiple BibTeX files. +--- +** New variable `utf-translate-cjk-unicode-range' controls which +Unicode characters to translate in `utf-translate-cjk-mode'. -*** The new command bibtex-copy-summary-as-kill pushes summary -of BibTeX entry to kill ring (bound to C-c C-t). +--- +** 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. +++ -** 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. +** 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. +++ -** A window may now have individual fringe and scroll-bar settings, -in addition to the individual display margin settings. +** 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'. -Such individual settings are now preserved when windows are split -horizontally or vertically, a saved window configuration is restored, -or when the frame is resized. ++++ +** C-y in incremental search now grabs the next line if point is already +at the end of a line. +++ -** New functions frame-current-scroll-bars and window-current-scroll-bars. +** 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. -These functions return the current locations of the vertical and -horizontal scroll bars in a frame or window. ++++ +** 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. +++ -** Emacs now supports drag and drop for X. Dropping a file on a window - opens it, dropping text inserts the text. Dropping a file on a dired - buffer copies or moves the file to that directory. +** 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 `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. +++ -** Under X, mouse-wheel-mode is turned on by default. +** 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. +++ -** The X resource useXIM can be used to turn off use of XIM, which may -speed up Emacs with slow networking to the X server. +** query-replace uses isearch lazy highlighting when the new user option +`query-replace-lazy-highlight' is non-nil. -If the configure option `--without-xim' was used to turn off use of -XIM by default, the X resource useXIM can be used to turn it on. +--- +** The current match in query-replace is highlighted in new face +`query-replace' which by default inherits from isearch face. +++ -** The X resource cursorBlink can be used to turn off cursor blinking. +** M-x compare-windows now can automatically skip non-matching text to +resync points in both windows. +++ -** `undo-only' does an undo which does not redo any previous undo. +** The commands M-x customize-face and M-x customize-face-other-window +now look at the character after point. If a face or faces are +specified for that character, the commands by default customize those +faces. --- -** `uniquify-strip-common-suffix' tells uniquify to prefer -`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'. +** The face-customization widget has been reworked to be less confusing. +In particular, when you enable a face attribute using the corresponding +check-box, there's no longer a redundant `*' option in value selection +for that attribute; the values you can choose are only those which make +sense for the attribute. When an attribute is de-selected by unchecking +its check-box, then the (now ignored, but still present temporarily in +case you re-select the attribute) value is hidden. +++ -** If the user visits a file larger than `large-file-warning-threshold', -Emacs prompts her for confirmation. +** When you set or reset a variable's value in a Customize buffer, +the previous value becomes the "backup value" of the variable. +You can go back to that backup value by selecting "Use Backup Value" +under the "[State]" button. ---- -** A UTF-7 coding system is available in the library `utf-7'. +** Dired mode: --- -** GUD mode has its own tool bar for controlling execution of the inferior -and other common debugger commands. +*** 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. ---- -** recentf changes. ++++ +*** New Dired command `dired-compare-directories' marks files +with different file attributes in two dired buffers. -The recent file list is now automatically cleanup when recentf mode is -enabled. The new option `recentf-auto-cleanup' controls when to do -automatic cleanup. ++++ +*** New Dired command `dired-do-touch' (bound to T) changes timestamps +of marked files with the value entered in the minibuffer. -The `recentf-keep' option replaces `recentf-keep-non-readable-files-p' -and provides a more general mechanism to customize which file names to -keep in the recent list. ++++ +*** In Dired's ! command (dired-do-shell-command), `*' and `?' now +control substitution of the file names only when they are surrounded +by whitespace. This means you can now use them as shell wildcards +too. If you want to use just plain `*' as a wildcard, type `*""'; the +doublequotes make no difference in the shell, but they prevent +special treatment in `dired-do-shell-command'. -With the more advanced option: `recentf-filename-handler', you can -specify a function that transforms filenames handled by recentf. For -example, if set to `file-truename', the same file will not be in the -recent list with different symbolic links. ++++ +*** In Dired, the w command now copies the current line's file name +into the kill ring. With a zero prefix arg, copies absolute file names. -To follow naming convention, `recentf-menu-append-commands-flag' -replaces the misnamed option `recentf-menu-append-commands-p'. The -old name remains available as alias, but has been marked obsolete. ++++ +** The variables dired-free-space-program and dired-free-space-args +have been renamed to directory-free-space-program and +directory-free-space-args, and they now apply whenever Emacs puts a +directory listing into a buffer. +++ -** The default for the paper size (variable ps-paper-type) is taken -from the locale. +** Dired-x: +++ -** Init file changes +*** 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 * O, +marks omitted files. The variable dired-omit-files-p is obsoleted, use the +mode toggling function instead. -You can now put the init files .emacs and .emacs_SHELL under -~/.emacs.d or directly under ~. Emacs will find them in either place. ++++ +** In Outline mode, hide-body no longer hides lines at the top +of the file that precede the first header line. ---- -** partial-completion-mode now does partial completion on directory names. ++++ +** Occur, Info, and comint-derived modes now support using +M-x font-lock-mode to toggle fontification. The variable +`Info-fontify' is no longer applicable; to disable fontification, +remove `turn-on-font-lock' from `Info-mode-hook'. --- -** skeleton.el now supports using - to mark the skeleton-point without - interregion interaction. @ has reverted to only setting - skeleton-positions and no longer sets skeleton-point. Skeletons - which used @ to mark skeleton-point independent of _ should now use - - instead. The updated skeleton-insert docstring explains these new - features along with other details of skeleton construction. +** The terminal emulation code in term.el has been improved, it can +run most curses applications now. --- -** MH-E changes. - -Upgraded to MH-E version 7.82. There have been major changes since -version 5.0.2; see MH-E-NEWS for details. - -+++ -** The `emacsclient' command understands the options `--eval' and -`--display' which tell Emacs respectively to evaluate the given elisp -expression and to use the given display when visiting files. - -+++ -** User option `server-mode' can be used to start a server process. - -+++ -** The mode line position information now comes before the major mode. -When the file is maintained under version control, that information -appears between the position information and the major mode. +** The comint prompt can now be made read-only, using the new user +option `comint-prompt-read-only'. This is not enabled by default, +except in IELM buffers. The read-only status of IELM prompts can be +controlled with the new user option `ielm-prompt-read-only', which +overrides `comint-prompt-read-only'. -+++ -** C-x s (save-some-buffers) now offers an option `d' to diff a buffer -against its file, so you can see what changes you would be saving. +The new commands `comint-kill-whole-line' and `comint-kill-region' +support editing comint buffers with read-only prompts. -+++ -** You can now customize the use of window fringes. To control this -for all frames, use M-x fringe-mode or the Show/Hide submenu of the -top-level Options menu, or customize the `fringe-mode' variable. To -control this for a specific frame, use the command M-x -set-fringe-style. +`comint-kill-whole-line' is like `kill-whole-line', but ignores both +read-only and field properties. Hence, it always kill entire +lines, including any prompts. -+++ -** There is a new user option `mail-default-directory' that allows you -to specify the value of `default-directory' for mail buffers. This -directory is used for auto-save files of mail buffers. It defaults to -"~/". +`comint-kill-region' is like `kill-region', except that it ignores +read-only properties, if it is safe to do so. This means that if any +part of a prompt is deleted, then the entire prompt must be deleted +and that all prompts must stay at the beginning of a line. If this is +not the case, then `comint-kill-region' behaves just like +`kill-region' if read-only are involved: it copies the text to the +kill-ring, but does not delete it. +++ -** 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 can in fact alter the -file.) +** The new command `comint-insert-previous-argument' in comint-derived +modes (shell-mode etc) inserts arguments from previous command lines, +like bash's `ESC .' binding. It is bound by default to `C-c .', but +otherwise behaves quite similarly to the bash version. -+++ -** The new command `revert-buffer-with-coding-system' (C-x RET r) -revisits the current file using a coding system that you specify. +** `comint-use-prompt-regexp-instead-of-fields' has been renamed +`comint-use-prompt-regexp'. The old name has been kept as an alias, +but declared obsolete. +++ -** The new command `recode-file-name' changes the encoding of the name -of a file. +** Telnet now prompts you for a port number with C-u M-x telnet. --- -** `ps-print' can now print characters from the mule-unicode charsets. +** M-x compile has become more robust and reliable -Printing text with characters from the mule-unicode-* sets works with -ps-print, provided that you have installed the appropriate BDF fonts. -See the file INSTALL for URLs where you can find these fonts. +Quite a few more kinds of messages are recognized. Messages that are +recognized as warnings or informational come in orange or green, instead of +red. Informational messages are by default skipped with `next-error' +(controlled by `compilation-skip-threshold'). ---- -** The new options `buffers-menu-show-directories' and -`buffers-menu-show-status' let you control how buffers are displayed -in the menu dropped down when you click "Buffers" from the menu bar. +Location data is collected on the fly as the *compilation* buffer changes. +This means you could modify messages to make them point to different files. +This also means you can not go to locations of messages you may have deleted. -`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 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. +The variable `compilation-error-regexp-alist' has now become customizable. If +you had added your own regexps to this, you'll probably need to include a +leading `^', otherwise they'll match anywhere on a line. There is now also a +`compilation-mode-font-lock-keywords' and it nicely handles all the checks +that configure outputs and -o options so you see at a glance where you are. -`buffers-menu-show-status' controls whether the Buffers menu includes -the modified and read-only status of the buffers. By default it is -t, and the status is shown. +The new file etc/compilation.txt gives examples of each type of message. -Setting these variables directly does not take effect until next time -the Buffers menu is regenerated. +** Compilation mode enhancements: +++ -** The commands M-x customize-face and M-x customize-face-other-window -now look at the character after point. If a face or faces are -specified for that character, the commands by default customize those -faces. +*** 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. ---- -** New language environments: French, Ukrainian, Tajik, -Bulgarian, Belarusian, Ukrainian, UTF-8, Windows-1255, Welsh, Latin-6, -Latin-7, Lithuanian, Latvian, Swedish, Slovenian, Croatian, Georgian, -Italian, Russian, Malayalam, Tamil, Russian, Chinese-EUC-TW. (Set up -automatically according to the locale.) ++++ +** Grep has been decoupled from compilation mode setup. --- -** Indian support has been updated. -The in-is13194 coding system is now Unicode-based. CDAC fonts are -assumed. There is a framework for supporting various -Indian scripts, but currently only Devanagari, Malayalam and Tamil are -supported. +*** There's a new separate package grep.el. --- -** New input methods: latin-alt-postfix, latin-postfix, latin-prefix, -ukrainian-computer, belarusian, bulgarian-bds, russian-computer, -vietnamese-telex, lithuanian-numeric, lithuanian-keyboard, -latvian-keyboard, welsh, georgian, rfc1345, ucs, sgml, -bulgarian-phonetic, dutch, slovenian, croatian, malayalam-inscript, -tamil-inscript. +*** M-x grep has been adapted to new compile ---- -** A new coding system `euc-tw' has been added for traditional Chinese -in CNS encoding; it accepts both Big 5 and CNS as input; on saving, -Big 5 is then converted to CNS. +Hits are fontified in green, and hits in binary files in orange. Grep buffers +can be saved and automatically revisited with the new Grep mode. --- -** Many new coding systems are available by loading the `code-pages' -library. These include complete versions of most of those in -codepage.el, based on Unicode mappings. `codepage-setup' is now -obsolete and is used only in the MS-DOS port of Emacs. windows-1252 -and windows-1251 are preloaded since the former is so common and the -latter is used by GNU locales. +*** Grep commands now have their own submenu and customization group. ---- -** The utf-8/16 coding systems have been enhanced. -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. ++++ +*** `grep-find' is now also available under the name `find-grep' where +people knowing `find-grep-dired' would probably expect it. --- -** New variable `utf-translate-cjk-unicode-range' controls which -Unicode characters to translate in `utf-translate-cjk-mode'. +*** 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. ---- -** 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. ++++ +*** 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 command `ucs-insert' inserts a character specified by its -unicode. ++++ +*** 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. +++ -** Limited support for character `unification' has been added. -Emacs now knows how to translate between different representations of -the same characters in various Emacs charsets according to standard -Unicode mappings. This applies mainly to characters in the ISO 8859 -sets plus some other 8-bit sets, but can be extended. For instance, -translation works amongst the Emacs ...-iso8859-... charsets and the -mule-unicode-... ones. +** M-x grep now tries to avoid appending `/dev/null' to the command line +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. -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. - -You can force a more complete unification with the user option -unify-8859-on-decoding-mode. That maps all the Latin-N character sets -into Unicode characters (from the latin-iso8859-1 and -mule-unicode-0100-24ff charsets) on decoding. Note that this mode -will often effectively clobber data with an iso-2022 encoding. ++++ +** 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'. ---- -** There is support for decoding Greek and Cyrillic characters into -either Unicode (the mule-unicode charsets) or the iso-8859 charsets, -when possible. The latter are more space-efficient. This is -controlled by user option utf-fragment-on-decoding. ++++ +** 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. +++ -** The new command `set-file-name-coding-system' (C-x RET F) sets -coding system for encoding and decoding file names. A new menu item -(Options->Mule->Set Coding Systems->For File Name) invokes this -command. +** M-x diff uses diff-mode instead of compilation-mode. ---- -** The scrollbar under LessTif or Motif has a smoother drag-scrolling. -On the other hand, the size of the thumb does not represent the actual -amount of text shown any more (only a crude approximation of it). ++++ +** In the *Occur* buffer, `o' switches to it in another window, and +C-o displays the current line's occurrence in another window without +switching to it. ---- -** 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+, Mac and W32). ++++ +** You can now use next-error (C-x `) and previous-error to advance to +the next/previous matching line found by M-x occur. +++ -** The Lucid menus can display multilingual text in your locale. You have -to explicitly specify a fontSet resource for this to work, for example -`-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'. +** The new command `multi-occur' is just like `occur', except it can +search multiple buffers. There is also a new command +`multi-occur-by-filename-regexp' which allows you to specify the +buffers to search by their filename. Internally, Occur mode has been +rewritten, and now uses font-lock, among other changes. ---- -** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing -ESC, like they do for Gtk+, Mac and W32. ++++ +** font-lock: in modes like C and Lisp where the fontification assumes that +an open-paren in column 0 is always outside of any string or comment, +font-lock now highlights any such open-paren-in-column-zero in bold-red +if it is inside a string or a comment, to indicate that it can cause +trouble with fontification and/or indentation. ---- -** Dialogs and menus pop down when pressing C-g. +** Enhancements to apropos commands: ---- -** 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 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. +++ -** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be -disabled by customizing the variable `use-file-dialog'. +*** The new option `apropos-sort-by-scores' causes the matching items +to be sorted according to their score. The score for an item is a +number calculated to indicate how well the item matches the words or +regular expression that you entered to the apropos command. The best +match is listed first, and the calculated score is shown for each +matching item. +++ -** 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. +** You can have several Emacs servers on the same machine. + + % emacs --eval '(setq server-name "foo")' -f server-start & + % emacs --eval '(setq server-name "bar")' -f server-start & + % emacsclient -s foo file1 + % emacsclient -s bar file2 +++ -** Emacs can produce an underscore-like (horizontal bar) cursor. -The underscore cursor is set by putting `(cursor-type . hbar)' in -default-frame-alist. It supports variable heights, like the `bar' -cursor does. +** The `emacsclient' command understands the options `--eval' and +`--display' which tell Emacs respectively to evaluate the given elisp +expression and to use the given display when visiting files. +++ -** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is -now controlled by the variable `blink-cursor-alist'. +** User option `server-mode' can be used to start a server process. +++ -** Filesets are collections of files. You can define a fileset in -various ways, such as based on a directory tree or based on -program files that include other program files. +** New user option `add-log-always-start-new-record'. +When this option is enabled, M-x add-change-log-entry always +starts a new record regardless of when the last record is. -Once you have defined a fileset, you can perform various operations on -all the files in it, such as visiting them or searching and replacing -in them. +** Info mode: ---- -** PO translation files are decoded according to their MIME headers -when Emacs visits them. ++++ +*** A numeric prefix argument of `info' selects an Info buffer +with the number appended to the *info* buffer name (e.g. "*info*<2>"). --- -** The game `mpuz' is enhanced. +*** isearch in Info uses Info-search and searches through multiple nodes. +Before leaving the initial Info node isearch fails once with the error +message [initial node], and with subsequent C-s/C-r continues through +other nodes. When isearch fails for the rest of the manual, it wraps +aroung the whole manual to the top/final node. The user option +`Info-isearch-search' controls whether to use Info-search for isearch, +or the default isearch search function that wraps around the current +Info node. -`mpuz' now allows the 2nd factor not to have two identical digits. By -default, all trivial operations involving whole lines are performed -automatically. The game uses faces for better visual feedback. +*** 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. ---- -** The new variable `x-select-request-type' controls how Emacs -requests X selection. The default value is nil, which means that -Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING, -and use the more appropriately result. +*** New command `Info-history-forward' (bound to r and new toolbar icon) +moves forward in history to the node you returned from after using +`Info-history-back' (renamed from `Info-last'). -+++ -** The parameters of automatic hscrolling can now be customized. -The variable `hscroll-margin' determines how many columns away from -the window edge point is allowed to get before automatic hscrolling -will horizontally scroll the window. The default value is 5. +*** New command `Info-history' (bound to L) displays a menu of visited nodes. -The variable `hscroll-step' determines how many columns automatic -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 -gives the fraction of the window's width to scroll the window. +*** 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. -The variable `automatic-hscrolling' was renamed to -`auto-hscroll-mode'. The old name is still available as an alias. +*** 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. -** TeX modes: +*** 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. -+++ -*** C-c C-c prompts for a command to run, and tries to offer a good default. +--- +*** 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'. +++ -*** The user option `tex-start-options-string' has been replaced -by two new user options: `tex-start-options', which should hold -command-line options to feed to TeX, and `tex-start-commands' which should hold -TeX commands to use at startup. +*** 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. --- -*** verbatim environments are now highlighted in courier by font-lock -and super/sub-scripts are made into super/sub-scripts. +*** 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 +version 4.7 or newer, compiles to Info pages with embedded images. +++ -*** New major mode doctex-mode for *.dtx files. +*** The default value for `Info-scroll-prefer-subnodes' is now nil. -+++ -** New display feature: focus follows the mouse from one Emacs window -to another, even within a frame. If you set the variable -mouse-autoselect-window to non-nil value, moving the mouse to a -different Emacs window will select that window (minibuffer window can -be selected only when it is active). The default is nil, so that this -feature is not enabled. +--- +*** Info-index offers completion. -+++ -** On X, when the window manager requires that you click on a frame to -select it (give it focus), the selected window and cursor position -normally changes according to the mouse click position. If you set -the variable x-mouse-click-focus-ignore-position to t, the selected -window and cursor position do not change when you click on a frame -to give it focus. +--- +** Lisp mode now uses font-lock-doc-face for the docstrings. +++ -** 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, 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. +** A prefix argument of C-M-q in Emacs Lisp mode pretty-printifies the +list starting after point. -+++ -** The new command `multi-occur' is just like `occur', except it can -search multiple buffers. There is also a new command -`multi-occur-by-filename-regexp' which allows you to specify the -buffers to search by their filename. Internally, Occur mode has been -rewritten, and now uses font-lock, among other changes. +** New features in evaluation commands +++ -** 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. +*** The function `eval-defun' (C-M-x) called on defface reinitializes +the face to the value specified in the defface expression. +++ -** 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. +*** 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. +++ -** query-replace uses isearch lazy highlighting when the new user option -`query-replace-lazy-highlight' is non-nil. +** CC Mode changes. ---- -** The current match in query-replace is highlighted in new face -`query-replace' which by default inherits from isearch face. +*** Font lock support. +CC Mode now provides font lock support for all its languages. This +supersedes the font lock patterns that have been in the core font lock +package for C, C++, Java and Objective-C. Like indentation, font +locking is done in a uniform way across all languages (except the new +AWK mode - see below). That means that the new font locking will be +different from the old patterns in various details for most languages. -+++ -** Emacs normally highlights mouse sensitive text whenever the mouse -is over the text. By setting the new variable `mouse-highlight', you -can optionally enable mouse highlighting only after you move the -mouse, so that highlighting disappears when you press a key. You can -also disable mouse highlighting. +The main goal of the font locking in CC Mode is accuracy, to provide a +dependable aid in recognizing the various constructs. Some, like +strings and comments, are easy to recognize while others like +declarations and types can be very tricky. CC Mode can go to great +lengths to recognize declarations and casts correctly, especially when +the types aren't recognized by standard patterns. This is a fairly +demanding analysis which can be slow on older hardware, and it can +therefore be disabled by choosing a lower decoration level with the +variable font-lock-maximum-decoration. -+++ -** You can now customize if selecting a region by dragging the mouse -shall not copy the selected text to the kill-ring by setting the new -variable mouse-drag-copy-region to nil. +Note that the most demanding font lock level has been tuned with lazy +fontification in mind, i.e. there should be a support mode that waits +with the fontification until the text is actually shown +(e.g. Just-in-time Lock mode, which is the default, or Lazy Lock +mode). Fontifying a file with several thousand lines in one go can +take the better part of a minute. -+++ -** font-lock: in modes like C and Lisp where the fontification assumes that -an open-paren in column 0 is always outside of any string or comment, -font-lock now highlights any such open-paren-in-column-zero in bold-red -if it is inside a string or a comment, to indicate that it can cause -trouble with fontification and/or indentation. +**** The (c|c++|objc|java|idl|pike)-font-lock-extra-types variables +are now used by CC Mode to recognize identifiers that are certain to +be types. (They are also used in cases that aren't related to font +locking.) At the maximum decoration level, types are often recognized +properly anyway, so these variables should be fairly restrictive and +not contain patterns for uncertain types. -+++ -** There's a new face `minibuffer-prompt'. -Emacs adds this face to the list of text properties stored in the -variable `minibuffer-prompt-properties', which is used to display the -prompt string. +**** Support for documentation comments. +There is a "plugin" system to fontify documentation comments like +Javadoc and the markup within them. It's independent of the host +language, so it's possible to e.g. turn on Javadoc font locking in C +buffers. See the variable c-doc-comment-style for details. -+++ -** The new face `mode-line-inactive' is used to display the mode line -of non-selected windows. The `mode-line' face is now used to display -the mode line of the currently selected window. +Currently two kinds of doc comment styles are recognized: Suns Javadoc +and Autodoc which is used in Pike. This is by no means a complete +list of the most common tools; if your doc comment extractor of choice +is missing then please drop a note to bug-cc-mode@gnu.org. -The new variable `mode-line-in-non-selected-windows' controls whether -the `mode-line-inactive' face is used. +**** Better handling of C++ templates. +As a side effect of the more accurate font locking, C++ templates are +now handled much better. The angle brackets that delimit them are +given parenthesis syntax so that they can be navigated like other +parens. ---- -** A menu item "Show/Hide" was added to the top-level menu "Options". -This menu allows you to turn various display features on and off (such -as the fringes, the tool bar, the speedbar, and the menu bar itself). -You can also move the vertical scroll bar to either side here or turn -it off completely. There is also a menu-item to toggle displaying of -current date and time, current line and column number in the -mode-line. +This also improves indentation of templates, although there still is +work to be done in that area. E.g. it's required that multiline +template clauses are written in full and then refontified to be +recognized, and the indentation of nested templates is a bit odd and +not as configurable as it ought to be. ---- -** Speedbar has moved from the "Tools" top level menu to "Show/Hide". +**** Improved handling of Objective-C and CORBA IDL. +Especially the support for Objective-C and IDL has gotten an overhaul. +The special "@" declarations in Objective-C are handled correctly. +All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and +handled correctly, also wrt indentation. -+++ -** Emacs can now indicate in the mode-line the presence of new e-mail -in a directory or in a file. See the documentation of the user option -`display-time-mail-directory'. +*** Support for the AWK language. +Support for the AWK language has been introduced. The implementation is +based around GNU AWK version 3.1, but it should work pretty well with +any AWK. As yet, not all features of CC Mode have been adapted for AWK. +Here is a summary: ---- -** LDAP support now defaults to ldapsearch from OpenLDAP version 2. +**** Indentation Engine +The CC Mode indentation engine fully supports AWK mode. -+++ -** You can now disable pc-selection-mode after enabling it. -M-x pc-selection-mode behaves like a proper minor mode, and with no -argument it toggles the mode. +AWK mode handles code formatted in the conventional AWK fashion: `{'s +which start actions, user-defined functions, or compound statements are +placed on the same line as the associated construct; the matching `}'s +are normally placed under the start of the respective pattern, function +definition, or structured statement. -Turning off PC-Selection mode restores the global key bindings -that were replaced by turning on the mode. +The predefined indentation functions haven't yet been adapted for AWK +mode, though some of them may work serendipitously. There shouldn't be +any problems writing custom indentation functions for AWK mode. -+++ -** Emacs now displays a splash screen by default even if command-line -arguments were given. The new command-line option --no-splash -disables the splash screen; see also the variable -`inhibit-startup-message' (which is also aliased as -`inhibit-splash-screen'). +The command C-c C-q (c-indent-defun) hasn't yet been adapted for AWK, +though in practice it works properly nearly all the time. Should it +fail, explicitly set the region around the function (using C-u C-SPC: +C-M-h probably won't work either) then do C-M-\ (indent-region). -** Changes in support of colors on character terminals +**** Font Locking +There is a single level of font locking in AWK mode, rather than the +three distinct levels the other modes have. There are several +idiosyncrasies in AWK mode's font-locking due to the peculiarities of +the AWK language itself. -+++ -*** The new command-line option --color=MODE lets you specify a standard -mode for a tty color support. It is meant to be used on character -terminals whose capabilities are not set correctly in the terminal -database, or with terminal emulators which support colors, but don't -set the TERM environment variable to a name of a color-capable -terminal. "emacs --color" uses the same color commands as GNU `ls' -when invoked with "ls --color", so if your terminal can support colors -in "ls --color", it will support "emacs --color" as well. See the -user manual for the possible values of the MODE parameter. +**** Comment Commands +M-; (indent-for-comment) works fine. None of the other CC Mode +comment formatting commands have yet been adapted for AWK mode. ---- -*** Emacs now supports several character terminals which provide more -than 8 colors. For example, for `xterm', 16-color, 88-color, and -256-color modes are supported. Emacs automatically notes at startup -the extended number of colors, and defines the appropriate entries for -all of these colors. +**** Movement Commands +Most of the movement commands work in AWK mode. The most important +exceptions are M-a (c-beginning-of-statement) and M-e +(c-end-of-statement) which haven't yet been adapted. -+++ -*** Emacs now uses the full range of available colors for the default -faces when running on a color terminal, including 16-, 88-, and -256-color xterms. This means that when you run "emacs -nw" on an -88-color or 256-color xterm, you will see essentially the same face -colors as on X. +The notion of "defun" has been augmented to include AWK pattern-action +pairs. C-M-a (c-awk-beginning-of-defun) and C-M-e (c-awk-end-of-defun) +recognise these pattern-action pairs, as well as user defined +functions. ---- -*** There's a new support for colors on `rxvt' terminal emulator. +**** Auto-newline Insertion and Clean-ups +Auto-newline insertion hasn't yet been adapted for AWK. Some of +the clean-ups can actually convert good AWK code into syntactically +invalid code. These features are best disabled in AWK buffers. -+++ -** Emacs can now be invoked in full-screen mode on a windowed display. +*** New syntactic symbols in IDL mode. +The top level constructs "module" and "composition" (from CIDL) are +now handled like "namespace" in C++: They are given syntactic symbols +module-open, module-close, inmodule, composition-open, +composition-close, and incomposition. -When Emacs is invoked on a window system, the new command-line options -`--fullwidth', `--fullheight', and `--fullscreen' produce a frame -whose width, height, or both width and height take up the entire -screen size. (For now, this does not work with some window managers.) +*** New functions to do hungry delete without enabling hungry delete mode. +The functions c-hungry-backspace and c-hungry-delete-forward can be +bound to keys to get this feature without toggling a mode. +Contributed by Kevin Ryde. ---- -** Emacs now tries to set up buffer coding systems for HTML/XML files -automatically. +*** Better control over require-final-newline. The variable that +controls how to handle a final newline when the buffer is saved, +require-final-newline, is now customizable on a per-mode basis through +c-require-final-newline. That is a list of modes, and only those +modes set require-final-newline. By default that's C, C++ and +Objective-C. -+++ -** The new command `comint-insert-previous-argument' in comint-derived -modes (shell-mode etc) inserts arguments from previous command lines, -like bash's `ESC .' binding. It is bound by default to `C-c .', but -otherwise behaves quite similarly to the bash version. +The specified modes set require-final-newline based on +mode-require-final-newline, as usual. -+++ -** Changes in C-h bindings: +*** Format change for syntactic context elements. +The elements in the syntactic context returned by c-guess-basic-syntax +and stored in c-syntactic-context has been changed somewhat to allow +attaching more information. They are now lists instead of single cons +cells. E.g. a line that previously had the syntactic analysis -C-h e displays the *Messages* buffer. +((inclass . 11) (topmost-intro . 13)) -C-h followed by a control character is used for displaying files - that do not change: +is now analysed as -C-h C-f displays the FAQ. -C-h C-e displays the PROBLEMS file. +((inclass 11) (topmost-intro 13)) -The info-search bindings on C-h C-f, C-h C-k and C-h C-i -have been moved to C-h F, C-h K and C-h S. +In some cases there are more than one position given for a syntactic +symbol. -C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands. +This change might affect code that call c-guess-basic-syntax directly, +and custom lineup functions if they use c-syntactic-context. However, +the argument given to lineup functions is still a single cons cell +with nil or an integer in the cdr. -- C-h c and C-h k report the actual command (after possible remapping) - run by the key sequence. +*** API changes for derived modes. +There have been extensive changes "under the hood" which can affect +derived mode writers. Some of these changes are likely to cause +incompatibilities with existing derived modes, but on the other hand +care has now been taken to make it possible to extend and modify CC +Mode with less risk of such problems in the future. -- C-h w and C-h f on a command which has been remapped now report the - command it is remapped to, and the keys which can be used to run - that command. +**** New language variable system. +See the comment blurb near the top of cc-langs.el. -For example, if C-k is bound to kill-line, and kill-line is remapped -to new-kill-line, these commands now report: +**** New initialization functions. +The initialization procedure has been split up into more functions to +give better control: c-basic-common-init, c-font-lock-init, and +c-init-language-vars. -- C-h c and C-h k C-k reports: - C-k runs the command new-kill-line +*** Changes in analysis of nested syntactic constructs. +The syntactic analysis engine has better handling of cases where +several syntactic constructs appear nested on the same line. They are +now handled as if each construct started on a line of its own. -- C-h w and C-h f kill-line reports: - kill-line is remapped to new-kill-line which is on C-k, +This means that CC Mode now indents some cases differently, and +although it's more consistent there might be cases where the old way +gave results that's more to one's liking. So if you find a situation +where you think that the indentation has become worse, please report +it to bug-cc-mode@gnu.org. -- C-h w and C-h f new-kill-line reports: - new-kill-line is on C-k +**** New syntactic symbol substatement-label. +This symbol is used when a label is inserted between a statement and +its substatement. E.g: + + if (x) + x_is_true: + do_stuff(); + +*** Better handling of multiline macros. + +**** Syntactic indentation inside macros. +The contents of multiline #define's are now analyzed and indented +syntactically just like other code. This can be disabled by the new +variable c-syntactic-indentation-in-macros. A new syntactic symbol +cpp-define-intro has been added to control the initial indentation +inside #define's. + +**** New lineup function c-lineup-cpp-define. +Now used by default to line up macro continuation lines. The behavior +of this function closely mimics the indentation one gets if the macro +is indented while the line continuation backslashes are temporarily +removed. If syntactic indentation in macros is turned off, it works +much line c-lineup-dont-change, which was used earlier, but handles +empty lines within the macro better. + +**** Automatically inserted newlines continues the macro if used within one. +This applies to the newlines inserted by the auto-newline mode, and to +c-context-line-break and c-context-open-line. + +**** Better alignment of line continuation backslashes. +c-backslash-region tries to adapt to surrounding backslashes. New +variable c-backslash-max-column which put a limit on how far out +backslashes can be moved. + +**** Automatic alignment of line continuation backslashes. +This is controlled by the new variable c-auto-align-backslashes. It +affects c-context-line-break, c-context-open-line and newlines +inserted in auto-newline mode. + +**** Line indentation works better inside macros. +Regardless whether syntactic indentation and syntactic indentation +inside macros are enabled or not, line indentation now ignores the +line continuation backslashes. This is most noticeable when syntactic +indentation is turned off and there are empty lines (save for the +backslash) in the macro. + +*** indent-for-comment is more customizable. +The behavior of M-; (indent-for-comment) is now configurable through +the variable c-indent-comment-alist. The indentation behavior based +on the preceding code on the line, e.g. to get two spaces after #else +and #endif but indentation to comment-column in most other cases +(something which was hardcoded earlier). + +*** New function c-context-open-line. +It's the open-line equivalent of c-context-line-break. + +*** New lineup functions + +**** c-lineup-string-cont +This lineup function lines up a continued string under the one it +continues. E.g: + +result = prefix + "A message " + "string."; <- c-lineup-string-cont + +**** c-lineup-cascaded-calls +Lines up series of calls separated by "->" or ".". + +**** c-lineup-knr-region-comment +Gives (what most people think is) better indentation of comments in +the "K&R region" between the function header and its body. + +**** c-lineup-gcc-asm-reg +Provides better indentation inside asm blocks. Contributed by Kevin +Ryde. + +**** c-lineup-argcont +Lines up continued function arguments after the preceding comma. +Contributed by Kevin Ryde. + +*** Better caching of the syntactic context. +CC Mode caches the positions of the opening parentheses (of any kind) +of the lists surrounding the point. Those positions are used in many +places as anchor points for various searches. The cache is now +improved so that it can be reused to a large extent when the point is +moved. The less it moves, the less needs to be recalculated. + +The effect is that CC Mode should be fast most of the time even when +opening parens are hung (i.e. aren't in column zero). It's typically +only the first time after the point is moved far down in a complex +file that it'll take noticeable time to find out the syntactic +context. + +*** Statements are recognized in a more robust way. +Statements are recognized most of the time even when they occur in an +"invalid" context, e.g. in a function argument. In practice that can +happen when macros are involved. + +*** Improved the way c-indent-exp chooses the block to indent. +It now indents the block for the closest sexp following the point +whose closing paren ends on a different line. This means that the +point doesn't have to be immediately before the block to indent. +Also, only the block and the closing line is indented; the current +line is left untouched. + +*** Added toggle for syntactic indentation. +The function c-toggle-syntactic-indentation can be used to toggle +syntactic indentation. + +--- +** Perl mode has a new variable `perl-indent-continued-arguments'. + +--- +** Fortran mode does more font-locking by default. Use level 3 +highlighting for the old default. +++ -** 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. +** Fortran mode has a new variable `fortran-directive-re'. +Adapt this to match the format of any compiler directives you use. +Lines that match are never indented, and are given distinctive font-locking. +++ -** 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'. +** F90 mode and Fortran mode have new navigation commands +`f90-end-of-block', `f90-beginning-of-block', `f90-next-block', +`f90-previous-block', `fortran-end-of-block', +`fortran-beginning-of-block'. + +--- +** F90 mode and Fortran mode have 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. + +--- +** Emacs now tries to set up buffer coding systems for HTML/XML files +automatically. +++ -** C-y in incremental search now grabs the next line if point is already -at the end of a line. +** SGML mode has indentation and supports XML syntax. +The new variable `sgml-xml-mode' tells SGML mode to use XML syntax. +When this option is enabled, SGML tags are inserted in XML style, +i.e., there is always a closing tag. +By default, its setting is inferred on a buffer-by-buffer basis +from the file name or buffer contents. +++ -** 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. +** `xml-mode' is now an alias for `sgml-mode', which has XML support. + +** TeX modes: +++ -** 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. +*** C-c C-c prompts for a command to run, and tries to offer a good default. +++ -** 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'. +*** The user option `tex-start-options-string' has been replaced +by two new user options: `tex-start-options', which should hold +command-line options to feed to TeX, and `tex-start-commands' which should hold +TeX commands to use at startup. + +--- +*** verbatim environments are now highlighted in courier by font-lock +and super/sub-scripts are made into super/sub-scripts. +++ -** New user option `history-delete-duplicates'. -If set to t when adding a new history element, all previous identical -elements are deleted. +*** New major mode doctex-mode for *.dtx files. + +** 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 +automatic detection of duplicates does not require anymore that +bibtex-maintain-sorted-entries is non-nil. + +*** If the new variable bibtex-parse-keys-fast is non-nil, +use fast but simplified algorithm for parsing BibTeX keys. + +*** If the new variable bibtex-autoadd-commas is non-nil, +automatically add missing commas at end of BibTeX fields. + +*** The new variable bibtex-autofill-types contains a list of entry +types for which fields are filled automatically (if possible). + +*** The new command bibtex-complete completes word fragment before +point according to context (bound to M-tab). + +*** The new commands bibtex-find-entry and bibtex-find-crossref +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). -+++ -** Yanking text now discards certain text properties that can -be inconvenient when you did not expect them. The variable -`yank-excluded-properties' specifies which ones. Insertion -of register contents and rectangles also discards these properties. +*** In BibTeX mode the command fill-paragraph (bound to M-q) fills +individual fields of a BibTeX entry. -+++ -** Occur, Info, and comint-derived modes now support using -M-x font-lock-mode to toggle fontification. The variable -`Info-fontify' is no longer applicable; to disable fontification, -remove `turn-on-font-lock' from `Info-mode-hook'. +*** The new variables bibtex-files and bibtex-file-path define a set +of BibTeX files that are searched for entry keys. -+++ -** M-x grep now tries to avoid appending `/dev/null' to the command line -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. +*** The new command bibtex-validate-globally checks for duplicate keys +in multiple BibTeX files. ---- -** The face-customization widget has been reworked to be less confusing. -In particular, when you enable a face attribute using the corresponding -check-box, there's no longer a redundant `*' option in value selection -for that attribute; the values you can choose are only those which make -sense for the attribute. When an attribute is de-selected by unchecking -its check-box, then the (now ignored, but still present temporarily in -case you re-select the attribute) value is hidden. +*** The new command bibtex-copy-summary-as-kill pushes summary +of BibTeX entry to kill ring (bound to C-c C-t). +++ -** When you set or reset a variable's value in a Customize buffer, -the previous value becomes the "backup value" of the variable. -You can go back to that backup value by selecting "Use Backup Value" -under the "[State]" button. - ---- -** The new customization type `float' specifies numbers with floating -point (no integers are allowed). +** 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 GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program counter to the specified source line (the one where point is). +--- +** GUD mode has its own tool bar for controlling execution of the inferior +and other common debugger commands. + --- ** GUD mode improvements for jdb: @@ -1689,210 +1765,114 @@ compatibility, it prefers "starttls", but you can toggle *** Do not allow debugger output history variable to grow without bounds. +++ -** hide-ifdef-mode now uses overlays rather than selective-display -to hide its text. This should be mostly transparent but slightly -changes the behavior of motion commands like C-e and C-p. - -+++ -** Unquoted `$' in file names do not signal an error any more when -the corresponding environment variable does not exist. -Instead, the `$ENVVAR' text is left as is, so that `$$' quoting -is only rarely needed. - ---- -** JIT-lock changes -*** jit-lock can now be delayed with `jit-lock-defer-time'. - -If this variable is non-nil, its value should be the amount of Emacs -idle time in seconds to wait before starting fontification. For -example, if you set `jit-lock-defer-time' to 0.25, fontification will -only happen after 0.25s of idle time. - -*** contextual refontification is now separate from stealth fontification. - -jit-lock-defer-contextually is renamed jit-lock-contextually and -jit-lock-context-time determines the delay after which contextual -refontification takes place. - -+++ -** 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 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 -mark is active--for instance, they limit their operation to the -region. Even if you don't normally use Transient Mark mode, you might -want to get this behavior from a particular command. There are two -ways you can enable Transient Mark mode and activate the mark, for one -command only. - -One method is to type C-SPC C-SPC; this enables Transient Mark mode -and sets the mark at point. The other method is to type C-u C-x C-x. -This enables Transient Mark mode temporarily but does not alter the -mark or the region. - -After these commands, Transient Mark mode remains enabled until you -deactivate the mark. That typically happens when you type a command -that alters the buffer, but you can also deactivate the mark by typing -C-g. - -+++ -** 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 ... 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 -switching to it. - -+++ -** When you specify a frame size with --geometry, the size applies to -all frames you create. A position specified with --geometry only -affects the initial frame. - -+++ -** M-h (mark-paragraph) now accepts a prefix arg. -With positive arg, M-h marks the current and the following paragraphs; -if the arg is negative, it marks the current and the preceding -paragraphs. - -+++ -** The variables dired-free-space-program and dired-free-space-args -have been renamed to directory-free-space-program and -directory-free-space-args, and they now apply whenever Emacs puts a -directory listing into a buffer. - ---- -** mouse-wheels can now scroll a specific fraction of the window -(rather than a fixed number of lines) and the scrolling is `progressive'. - ---- -** Unexpected yanking of text due to accidental clicking on the mouse -wheel button (typically mouse-2) during wheel scrolling is now avoided. -This behavior can be customized via the mouse-wheel-click-event and -mouse-wheel-inhibit-click-time variables. - -+++ -** The keyboard-coding-system is now automatically set based on your -current locale settings if you are not using a window system. This -may mean that the META key doesn't work but generates non-ASCII -characters instead, depending on how the terminal (or terminal -emulator) works. Use `set-keyboard-coding-system' (or customize -keyboard-coding-system) if you prefer META to work (the old default) -or if the locale doesn't describe the character set actually generated -by the keyboard. See Info node `Single-Byte Character Support'. +** 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 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 stays there. This +rule applies to file buffers. For non-file buffers, the behavior may +be mode dependent. -+++ -** Emacs now reads the standard abbrevs file ~/.abbrev_defs -automatically at startup, if it exists. When Emacs offers to save -modified buffers, it saves the abbrevs too if they have changed. It -can do this either silently or asking for confirmation first, -according to the value of `save-abbrevs'. +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. +++ -** Display of hollow cursors now obeys the buffer-local value (if any) -of `cursor-in-non-selected-windows' in the buffer that the cursor -appears in. +** 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 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 +work properly on all operating systems) and for the Buffer Menu. +++ -** The variable `cursor-in-non-selected-windows' can now be set to any -of the recognized cursor types. +** If the new user option `auto-revert-check-vc-info' is non-nil, Auto +Revert mode reliably updates version control info (such as the version +control number in the mode line), in all version controlled buffers in +which it is active. If the option is nil, the default, then this info +only gets updated whenever the buffer gets reverted. --- -** The variable `auto-save-file-name-transforms' now has a third element that -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 -`diary-block' or `diary-cyclic') now take an optional parameter MARK, -which is the name of a face or a single-character string indicating -how to highlight the day in the calendar display. Specifying a -single-character string as @var{mark} places the character next to the -day in the calendar. Specifying a face highlights the day with that -face. This lets you have different colors or markings for vacations, -appointments, paydays or anything else using a sexp. - -+++ -** The new function `calendar-goto-day-of-year' (g D) prompts for a -year and day number, and moves to that date. Negative day numbers -count backward from the end of the year. +** recentf changes. -+++ -** 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 recent file list is now automatically cleanup when recentf mode is +enabled. The new option `recentf-auto-cleanup' controls when to do +automatic cleanup. ---- -** The new variable `calendar-minimum-window-height' affects the -window generated by the function `generate-calendar-window'. +The `recentf-keep' option replaces `recentf-keep-non-readable-files-p' +and provides a more general mechanism to customize which file names to +keep in the recent list. ---- -** 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. +With the more advanced option: `recentf-filename-handler', you can +specify a function that transforms filenames handled by recentf. For +example, if set to `file-truename', the same file will not be in the +recent list with different symbolic links. ---- -** 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'. +To follow naming convention, `recentf-menu-append-commands-flag' +replaces the misnamed option `recentf-menu-append-commands-p'. The +old name remains available as alias, but has been marked obsolete. +++ -** The procedure for activating appointment reminders has changed: use -the new function `appt-activate'. The new variable -`appt-display-format' controls how reminders are displayed, replacing -appt-issue-message, appt-visible, and appt-msg-window. +** Desktop package +++ -** The new functions `diary-from-outlook', `diary-from-outlook-gnus', -and `diary-from-outlook-rmail' can be used to import diary entries -from Outlook-format appointments in mail messages. The variable -`diary-outlook-formats' can be customized to recognize additional -formats. - +*** Desktop saving is now a minor mode, desktop-save-mode. Variable +desktop-enable is obsolete. Customize desktop-save-mode to enable desktop +saving. -** VC Changes +--- +*** Buffers are saved in the desktop file in the same order as that in the +buffer list. +++ -*** The key C-x C-q no longer checks files in or out, it only changes -the read-only state of the buffer (toggle-read-only). We made this -change because we held a poll and found that many users were unhappy -with the previous behavior. If you do prefer this behavior, you -can bind `vc-toggle-read-only' to C-x C-q in your .emacs: +*** The desktop package can be customized to restore only some buffers immediately, +remaining buffers are restored lazily (when Emacs is idle). - (global-set-key "\C-x\C-q" 'vc-toggle-read-only) ++++ +*** New commands: + - desktop-revert reverts to the last loaded desktop. + - desktop-change-dir kills current desktop and loads a new. + - desktop-save-in-desktop-dir saves desktop in the directory from which + it was loaded. + - desktop-lazy-complete runs the desktop load to completion. + - desktop-lazy-abort aborts lazy loading of the desktop. -The function `vc-toggle-read-only' will continue to exist. +--- +*** New customizable variables: + - desktop-save. Determins whether the desktop should be saved when it is + killed. + - desktop-file-name-format. Format in which desktop file names should be saved. + - desktop-path. List of directories in which to lookup the desktop file. + - desktop-locals-to-save. List of local variables to save. + - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear. + - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear' + should not delete. + - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are + restored lazily (when Emacs is idle). + - desktop-lazy-verbose. Verbose reporting of lazily created buffers. + - desktop-lazy-idle-delay. Idle delay before starting to create buffers. +++ -*** There is a new user option `vc-cvs-global-switches' that allows -you to specify switches that are passed to any CVS command invoked -by VC. These switches are used as "global options" for CVS, which -means they are inserted before the command name. For example, this -allows you to specify a compression level using the "-z#" option for -CVS. +*** New command line option --no-desktop -+++ -*** New backends for Subversion and Meta-CVS. +--- +*** 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 +include files that aren't readable, e.g. files that don't exist. +Customize the new option `save-place-forget-unreadable-files' to nil +to get the old behavior. The new options `save-place-save-skipped' +and `save-place-skip-check-regexp' allow further fine-tuning of this +feature. ** EDiff changes. @@ -1990,419 +1970,264 @@ be used (only once) in place of a file name on the command line. Etags reads from standard input and marks the produced tags as belonging to the file FILE. -+++ -** CC Mode changes. - -*** Font lock support. -CC Mode now provides font lock support for all its languages. This -supersedes the font lock patterns that have been in the core font lock -package for C, C++, Java and Objective-C. Like indentation, font -locking is done in a uniform way across all languages (except the new -AWK mode - see below). That means that the new font locking will be -different from the old patterns in various details for most languages. - -The main goal of the font locking in CC Mode is accuracy, to provide a -dependable aid in recognizing the various constructs. Some, like -strings and comments, are easy to recognize while others like -declarations and types can be very tricky. CC Mode can go to great -lengths to recognize declarations and casts correctly, especially when -the types aren't recognized by standard patterns. This is a fairly -demanding analysis which can be slow on older hardware, and it can -therefore be disabled by choosing a lower decoration level with the -variable font-lock-maximum-decoration. - -Note that the most demanding font lock level has been tuned with lazy -fontification in mind, i.e. there should be a support mode that waits -with the fontification until the text is actually shown -(e.g. Just-in-time Lock mode, which is the default, or Lazy Lock -mode). Fontifying a file with several thousand lines in one go can -take the better part of a minute. - -**** The (c|c++|objc|java|idl|pike)-font-lock-extra-types variables -are now used by CC Mode to recognize identifiers that are certain to -be types. (They are also used in cases that aren't related to font -locking.) At the maximum decoration level, types are often recognized -properly anyway, so these variables should be fairly restrictive and -not contain patterns for uncertain types. - -**** Support for documentation comments. -There is a "plugin" system to fontify documentation comments like -Javadoc and the markup within them. It's independent of the host -language, so it's possible to e.g. turn on Javadoc font locking in C -buffers. See the variable c-doc-comment-style for details. - -Currently two kinds of doc comment styles are recognized: Suns Javadoc -and Autodoc which is used in Pike. This is by no means a complete -list of the most common tools; if your doc comment extractor of choice -is missing then please drop a note to bug-cc-mode@gnu.org. - -**** Better handling of C++ templates. -As a side effect of the more accurate font locking, C++ templates are -now handled much better. The angle brackets that delimit them are -given parenthesis syntax so that they can be navigated like other -parens. - -This also improves indentation of templates, although there still is -work to be done in that area. E.g. it's required that multiline -template clauses are written in full and then refontified to be -recognized, and the indentation of nested templates is a bit odd and -not as configurable as it ought to be. - -**** Improved handling of Objective-C and CORBA IDL. -Especially the support for Objective-C and IDL has gotten an overhaul. -The special "@" declarations in Objective-C are handled correctly. -All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and -handled correctly, also wrt indentation. - -*** Support for the AWK language. -Support for the AWK language has been introduced. The implementation is -based around GNU AWK version 3.1, but it should work pretty well with -any AWK. As yet, not all features of CC Mode have been adapted for AWK. -Here is a summary: - -**** Indentation Engine -The CC Mode indentation engine fully supports AWK mode. - -AWK mode handles code formatted in the conventional AWK fashion: `{'s -which start actions, user-defined functions, or compound statements are -placed on the same line as the associated construct; the matching `}'s -are normally placed under the start of the respective pattern, function -definition, or structured statement. - -The predefined indentation functions haven't yet been adapted for AWK -mode, though some of them may work serendipitously. There shouldn't be -any problems writing custom indentation functions for AWK mode. - -The command C-c C-q (c-indent-defun) hasn't yet been adapted for AWK, -though in practice it works properly nearly all the time. Should it -fail, explicitly set the region around the function (using C-u C-SPC: -C-M-h probably won't work either) then do C-M-\ (indent-region). - -**** Font Locking -There is a single level of font locking in AWK mode, rather than the -three distinct levels the other modes have. There are several -idiosyncrasies in AWK mode's font-locking due to the peculiarities of -the AWK language itself. - -**** Comment Commands -M-; (indent-for-comment) works fine. None of the other CC Mode -comment formatting commands have yet been adapted for AWK mode. - -**** Movement Commands -Most of the movement commands work in AWK mode. The most important -exceptions are M-a (c-beginning-of-statement) and M-e -(c-end-of-statement) which haven't yet been adapted. - -The notion of "defun" has been augmented to include AWK pattern-action -pairs. C-M-a (c-awk-beginning-of-defun) and C-M-e (c-awk-end-of-defun) -recognise these pattern-action pairs, as well as user defined -functions. - -**** Auto-newline Insertion and Clean-ups -Auto-newline insertion hasn't yet been adapted for AWK. Some of -the clean-ups can actually convert good AWK code into syntactically -invalid code. These features are best disabled in AWK buffers. - -*** New syntactic symbols in IDL mode. -The top level constructs "module" and "composition" (from CIDL) are -now handled like "namespace" in C++: They are given syntactic symbols -module-open, module-close, inmodule, composition-open, -composition-close, and incomposition. - -*** New functions to do hungry delete without enabling hungry delete mode. -The functions c-hungry-backspace and c-hungry-delete-forward can be -bound to keys to get this feature without toggling a mode. -Contributed by Kevin Ryde. - -*** Better control over require-final-newline. The variable that -controls how to handle a final newline when the buffer is saved, -require-final-newline, is now customizable on a per-mode basis through -c-require-final-newline. That is a list of modes, and only those -modes set require-final-newline. By default that's C, C++ and -Objective-C. - -The specified modes set require-final-newline based on -mode-require-final-newline, as usual. - -*** Format change for syntactic context elements. -The elements in the syntactic context returned by c-guess-basic-syntax -and stored in c-syntactic-context has been changed somewhat to allow -attaching more information. They are now lists instead of single cons -cells. E.g. a line that previously had the syntactic analysis - -((inclass . 11) (topmost-intro . 13)) - -is now analysed as - -((inclass 11) (topmost-intro 13)) - -In some cases there are more than one position given for a syntactic -symbol. - -This change might affect code that call c-guess-basic-syntax directly, -and custom lineup functions if they use c-syntactic-context. However, -the argument given to lineup functions is still a single cons cell -with nil or an integer in the cdr. - -*** API changes for derived modes. -There have been extensive changes "under the hood" which can affect -derived mode writers. Some of these changes are likely to cause -incompatibilities with existing derived modes, but on the other hand -care has now been taken to make it possible to extend and modify CC -Mode with less risk of such problems in the future. - -**** New language variable system. -See the comment blurb near the top of cc-langs.el. - -**** New initialization functions. -The initialization procedure has been split up into more functions to -give better control: c-basic-common-init, c-font-lock-init, and -c-init-language-vars. - -*** Changes in analysis of nested syntactic constructs. -The syntactic analysis engine has better handling of cases where -several syntactic constructs appear nested on the same line. They are -now handled as if each construct started on a line of its own. - -This means that CC Mode now indents some cases differently, and -although it's more consistent there might be cases where the old way -gave results that's more to one's liking. So if you find a situation -where you think that the indentation has become worse, please report -it to bug-cc-mode@gnu.org. - -**** New syntactic symbol substatement-label. -This symbol is used when a label is inserted between a statement and -its substatement. E.g: - - if (x) - x_is_true: - do_stuff(); - -*** Better handling of multiline macros. +** VC Changes -**** Syntactic indentation inside macros. -The contents of multiline #define's are now analyzed and indented -syntactically just like other code. This can be disabled by the new -variable c-syntactic-indentation-in-macros. A new syntactic symbol -cpp-define-intro has been added to control the initial indentation -inside #define's. ++++ +*** The key C-x C-q no longer checks files in or out, it only changes +the read-only state of the buffer (toggle-read-only). We made this +change because we held a poll and found that many users were unhappy +with the previous behavior. If you do prefer this behavior, you +can bind `vc-toggle-read-only' to C-x C-q in your .emacs: -**** New lineup function c-lineup-cpp-define. -Now used by default to line up macro continuation lines. The behavior -of this function closely mimics the indentation one gets if the macro -is indented while the line continuation backslashes are temporarily -removed. If syntactic indentation in macros is turned off, it works -much line c-lineup-dont-change, which was used earlier, but handles -empty lines within the macro better. + (global-set-key "\C-x\C-q" 'vc-toggle-read-only) -**** Automatically inserted newlines continues the macro if used within one. -This applies to the newlines inserted by the auto-newline mode, and to -c-context-line-break and c-context-open-line. +The function `vc-toggle-read-only' will continue to exist. -**** Better alignment of line continuation backslashes. -c-backslash-region tries to adapt to surrounding backslashes. New -variable c-backslash-max-column which put a limit on how far out -backslashes can be moved. ++++ +*** There is a new user option `vc-cvs-global-switches' that allows +you to specify switches that are passed to any CVS command invoked +by VC. These switches are used as "global options" for CVS, which +means they are inserted before the command name. For example, this +allows you to specify a compression level using the "-z#" option for +CVS. -**** Automatic alignment of line continuation backslashes. -This is controlled by the new variable c-auto-align-backslashes. It -affects c-context-line-break, c-context-open-line and newlines -inserted in auto-newline mode. ++++ +*** New backends for Subversion and Meta-CVS. -**** Line indentation works better inside macros. -Regardless whether syntactic indentation and syntactic indentation -inside macros are enabled or not, line indentation now ignores the -line continuation backslashes. This is most noticeable when syntactic -indentation is turned off and there are empty lines (save for the -backslash) in the macro. ++++ +** vc-annotate-mode enhancements -*** indent-for-comment is more customizable. -The behavior of M-; (indent-for-comment) is now configurable through -the variable c-indent-comment-alist. The indentation behavior based -on the preceding code on the line, e.g. to get two spaces after #else -and #endif but indentation to comment-column in most other cases -(something which was hardcoded earlier). +In vc-annotate mode, you can now use the following key bindings for +enhanced functionality to browse the annotations of past revisions, or +to view diffs or log entries directly from vc-annotate-mode: -*** New function c-context-open-line. -It's the open-line equivalent of c-context-line-break. + P: annotates the previous revision + N: annotates the next revision + J: annotates the revision at line + A: annotates the revision previous to line + 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 -*** New lineup functions ++++ +** 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. -**** c-lineup-string-cont -This lineup function lines up a continued string under the one it -continues. E.g: ++++ +** 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. -result = prefix + "A message " - "string."; <- c-lineup-string-cont ++++ +** There is a new user option `mail-default-directory' that allows you +to specify the value of `default-directory' for mail buffers. This +directory is used for auto-save files of mail buffers. It defaults to +"~/". -**** c-lineup-cascaded-calls -Lines up series of calls separated by "->" or ".". ++++ +** Emacs can now indicate in the mode-line the presence of new e-mail +in a directory or in a file. See the documentation of the user option +`display-time-mail-directory'. -**** c-lineup-knr-region-comment -Gives (what most people think is) better indentation of comments in -the "K&R region" between the function header and its body. +--- +** PO translation files are decoded according to their MIME headers +when Emacs visits them. -**** c-lineup-gcc-asm-reg -Provides better indentation inside asm blocks. Contributed by Kevin -Ryde. +** Gnus package -**** c-lineup-argcont -Lines up continued function arguments after the preceding comma. -Contributed by Kevin Ryde. +--- +*** Gnus now includes Sieve and PGG +Sieve is a library for managing Sieve scripts. PGG is a library to handle +PGP/MIME. -*** Better caching of the syntactic context. -CC Mode caches the positions of the opening parentheses (of any kind) -of the lists surrounding the point. Those positions are used in many -places as anchor points for various searches. The cache is now -improved so that it can be reused to a large extent when the point is -moved. The less it moves, the less needs to be recalculated. +--- +*** 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. -The effect is that CC Mode should be fast most of the time even when -opening parens are hung (i.e. aren't in column zero). It's typically -only the first time after the point is moved far down in a complex -file that it'll take noticeable time to find out the syntactic -context. +--- +** Rmail now displays 5-digit message ids in its summary buffer. -*** Statements are recognized in a more robust way. -Statements are recognized most of the time even when they occur in an -"invalid" context, e.g. in a function argument. In practice that can -happen when macros are involved. ++++ +** Support for `movemail' from GNU mailutils was added to Rmail. +This version of `movemail' allows to read mail from a wide range of +mailbox formats, including remote POP3 and IMAP4 mailboxes with or +without TLS encryption. If GNU mailutils is installed on the system +and its version of `movemail' can be found in exec-path, it will be +used instead of the native one. -*** Improved the way c-indent-exp chooses the block to indent. -It now indents the block for the closest sexp following the point -whose closing paren ends on a different line. This means that the -point doesn't have to be immediately before the block to indent. -Also, only the block and the closing line is indented; the current -line is left untouched. +--- +** MH-E changes. -*** Added toggle for syntactic indentation. -The function c-toggle-syntactic-indentation can be used to toggle -syntactic indentation. +Upgraded to MH-E version 7.82. There have been major changes since +version 5.0.2; see MH-E-NEWS for details. +++ -** The command line option --no-windows has been changed to ---no-window-system. The old one still works, but is deprecated. +** There is a new calendar package, icalendar.el, that can be used to +convert Emacs diary entries to/from the iCalendar format. +++ -** The command `list-text-properties-at' has been deleted because -C-u C-x = gives the same information and more. +** Diary sexp entries can have custom marking in the calendar. +Diary sexp functions which only apply to certain days (such as +`diary-block' or `diary-cyclic') now take an optional parameter MARK, +which is the name of a face or a single-character string indicating +how to highlight the day in the calendar display. Specifying a +single-character string as @var{mark} places the character next to the +day in the calendar. Specifying a face highlights the day with that +face. This lets you have different colors or markings for vacations, +appointments, paydays or anything else using a sexp. +++ -** `buffer-menu' and `list-buffers' now list buffers whose names begin -with a space, when those buffers are visiting files. Normally buffers -whose names begin with space are omitted. +** The new function `calendar-goto-day-of-year' (g D) prompts for a +year and day number, and moves to that date. Negative day numbers +count backward from the end of the year. +++ -** You can now customize fill-nobreak-predicate to control where -filling can break lines. The value is now normally a list of -functions, but it can also be a single function, for compatibility. +** 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. -We provide two sample predicates, fill-single-word-nobreak-p and -fill-french-nobreak-p, for use in the value of fill-nobreak-predicate. +--- +** The new variable `calendar-minimum-window-height' affects the +window generated by the function `generate-calendar-window'. + +--- +** The functions `holiday-easter-etc' and `holiday-advent' now take +optional arguments, in order to only report on the specified holiday +rather than all. This makes customization of variables such as +`christian-holidays' simpler. + +--- +** The function `simple-diary-display' now by default sets a header line. +This can be controlled through the variables `diary-header-line-flag' +and `diary-header-line-format'. +++ -** New user option `add-log-always-start-new-record'. -When this option is enabled, M-x add-change-log-entry always -starts a new record regardless of when the last record is. +** The procedure for activating appointment reminders has changed: use +the new function `appt-activate'. The new variable +`appt-display-format' controls how reminders are displayed, replacing +appt-issue-message, appt-visible, and appt-msg-window. +++ -** SGML mode has indentation and supports XML syntax. -The new variable `sgml-xml-mode' tells SGML mode to use XML syntax. -When this option is enabled, SGML tags are inserted in XML style, -i.e., there is always a closing tag. -By default, its setting is inferred on a buffer-by-buffer basis -from the file name or buffer contents. +** The new functions `diary-from-outlook', `diary-from-outlook-gnus', +and `diary-from-outlook-rmail' can be used to import diary entries +from Outlook-format appointments in mail messages. The variable +`diary-outlook-formats' can be customized to recognize additional +formats. +++ -** `xml-mode' is now an alias for `sgml-mode', which has XML support. +** Emacs now supports drag and drop for X. Dropping a file on a window + opens it, dropping text inserts the text. Dropping a file on a dired + buffer copies or moves the file to that directory. ---- -** Lisp mode now uses font-lock-doc-face for the docstrings. ++++ +** Under X11, it is possible to swap Alt and Meta (and Super and Hyper). +The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym', +and `x-super-keysym' can be used to choose which keysyms Emacs should +use for the modifiers. For example, the following two lines swap +Meta and Alt: + (setq x-alt-keysym 'meta) + (setq x-meta-keysym 'alt) + ++++ +** The X resource useXIM can be used to turn off use of XIM, which may +speed up Emacs with slow networking to the X server. + +If the configure option `--without-xim' was used to turn off use of +XIM by default, the X resource useXIM can be used to turn it on. --- -** Perl mode has a new variable `perl-indent-continued-arguments'. +** The new variable `x-select-request-type' controls how Emacs +requests X selection. The default value is nil, which means that +Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING, +and use the more appropriately result. --- -** Fortran mode does more font-locking by default. Use level 3 -highlighting for the old default. +** The scrollbar under LessTif or Motif has a smoother drag-scrolling. +On the other hand, the size of the thumb does not represent the actual +amount of text shown any more (only a crude approximation of it). -+++ -** Fortran mode has a new variable `fortran-directive-re'. -Adapt this to match the format of any compiler directives you use. -Lines that match are never indented, and are given distinctive font-locking. +--- +** 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+, Mac and W32). +++ -** F90 mode and Fortran mode have new navigation commands -`f90-end-of-block', `f90-beginning-of-block', `f90-next-block', -`f90-previous-block', `fortran-end-of-block', -`fortran-beginning-of-block'. +** The Lucid menus can display multilingual text in your locale. You have +to explicitly specify a fontSet resource for this to work, for example +`-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'. --- -** F90 mode and Fortran mode have support for hs-minor-mode (hideshow). -It cannot deal with every code format, but ought to handle a sizeable -majority. +** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing +ESC, like they do for Gtk+, Mac and W32. ---- -** The new function `f90-backslash-not-special' can be used to change -the syntax of backslashes in F90 buffers. +--- +** Dialogs and menus pop down if you type C-g. --- -** Prolog mode has a new variable `prolog-font-lock-keywords' -to support use of font-lock. +** 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. +++ -** `special-display-buffer-names' and `special-display-regexps' now -understand two new boolean pseudo-frame-parameters `same-frame' and -`same-window'. +** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be +disabled by customizing the variable `use-file-dialog'. +++ -** M-x setenv now expands environment variables of the form `$foo' and -`${foo}' in the specified new value of the environment variable. To -include a `$' in the value, use `$$'. +** 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. -+++ -** File-name completion can now ignore directories. -If an element of the list in `completion-ignored-extensions' ends in a -slash `/', it indicates a subdirectory that should be ignored when -completing file names. Elements of `completion-ignored-extensions' -which do not end in a slash are never considered when a completion -candidate is a directory. +--- +** Emacs now responds to mouse-clicks on the mode-line, header-line and +display margin, when run in an xterm. -+++ -** The completion commands TAB, SPC and ? in the minibuffer apply only -to the text before point. If there is text in the buffer after point, -it remains unchanged. +** Improved key bindings support when running in an xterm. +When emacs is running in an xterm more key bindings are available. The +following should work: +{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}. +These key bindings work on xterm from X.org 6.8, they might not work on +some older versions of xterm, or on some proprietary versions. ---- -** Enhanced visual feedback in *Completions* buffer. +** Changes in support of colors on character terminals -Completions lists use faces to highlight what all completions -have in common and where they begin to differ. ++++ +*** The new command-line option --color=MODE lets you specify a standard +mode for a tty color support. It is meant to be used on character +terminals whose capabilities are not set correctly in the terminal +database, or with terminal emulators which support colors, but don't +set the TERM environment variable to a name of a color-capable +terminal. "emacs --color" uses the same color commands as GNU `ls' +when invoked with "ls --color", so if your terminal can support colors +in "ls --color", it will support "emacs --color" as well. See the +user manual for the possible values of the MODE parameter. -The common prefix shared by all possible completions uses the face -`completions-common-part', while the first character that isn't the -same uses the face `completions-first-difference'. By default, -`completions-common-part' inherits from `default', and -`completions-first-difference' inherits from `bold'. The idea of -`completions-common-part' is that you can use it to make the common -parts less visible than normal, so that the rest of the differing -parts is, by contrast, slightly highlighted. +--- +*** Emacs now supports several character terminals which provide more +than 8 colors. For example, for `xterm', 16-color, 88-color, and +256-color modes are supported. Emacs automatically notes at startup +the extended number of colors, and defines the appropriate entries for +all of these colors. +++ -** New user option `inhibit-startup-buffer-menu'. -When loading many files, for instance with `emacs *', Emacs normally -displays a buffer menu. This option turns the buffer menu off. +*** Emacs now uses the full range of available colors for the default +faces when running on a color terminal, including 16-, 88-, and +256-color xterms. This means that when you run "emacs -nw" on an +88-color or 256-color xterm, you will see essentially the same face +colors as on X. --- -** Rmail now displays 5-digit message ids in its summary buffer. +*** There's a new support for colors on `rxvt' terminal emulator. +++ -** Support for `movemail' from GNU mailutils was added to Rmail. -This version of `movemail' allows to read mail from a wide range of -mailbox formats, including remote POP3 and IMAP4 mailboxes with or -without TLS encryption. If GNU mailutils is installed on the system -and its version of `movemail' can be found in exec-path, it will be -used instead of the native one. +** 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. --- ** On MS Windows, the "system caret" now follows the cursor. @@ -2457,1280 +2282,1159 @@ MS Windows, Emacs now uses the appropriate locale coding-system, so the clipboard should work correctly for your local language without any customizations. -+++ -** Under X11, it is possible to swap Alt and Meta (and Super and Hyper). -The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym', -and `x-super-keysym' can be used to choose which keysyms Emacs should -use for the modifiers. For example, the following two lines swap -Meta and Alt: - (setq x-alt-keysym 'meta) - (setq x-meta-keysym 'alt) - -+++ -** vc-annotate-mode enhancements - -In vc-annotate mode, you can now use the following key bindings for -enhanced functionality to browse the annotations of past revisions, or -to view diffs or log entries directly from vc-annotate-mode: - - P: annotates the previous revision - N: annotates the next revision - J: annotates the revision at line - A: annotates the revision previous to line - 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. - ---- -** New variable `hs-set-up-overlay' allows customization of the overlay -used to effect hiding for hideshow minor mode. Integration with isearch -handles the overlay property `display' specially, preserving it during -temporary overlay showing in the course of an isearch operation. - -+++ -** New command `recode-region' decodes the region again by a specified -coding system. - --- ** On Mac OS, the value of the variable `keyboard-coding-system' is now dynamically changed according to the current keyboard script. The variable `mac-keyboard-text-encoding' and the constants -`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and -`kTextEncodingISOLatin2' are obsolete. - -* New modes and packages in Emacs 22.1 - -+++ -** The new package longlines.el provides a minor mode for editing text -files composed of long lines, based on the `use-hard-newlines' -mechanism. The long lines are broken up by inserting soft newlines, -which are automatically removed when saving the file to disk or -copying into the kill ring, clipboard, etc. By default, Longlines -mode inserts soft newlines automatically during editing, a behavior -referred to as "soft word wrap" in other text editors. This is -similar to Refill mode, but more reliable. To turn the word wrap -feature off, set `longlines-auto-wrap' to nil. - -+++ -** 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 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. - -+++ -** Image files are normally visited in Image mode, which lets you toggle -between viewing the image and viewing the text using C-c C-c. - -+++ -** 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. - -+++ -** The new global minor mode `size-indication-mode' (off by default) -shows the size of accessible part of the buffer on the mode line. - ---- -** GDB-Script-mode is used for files like .gdbinit. - ---- -** Ido mode is now part of the Emacs distribution. - -The ido (interactively do) package is an extension of the iswitchb -package to do interactive opening of files and directories in addition -to interactive buffer switching. Ido is a superset of iswitchb (with -a few exceptions), so don't enable both packages. - ---- -** CUA mode is now part of the Emacs distribution. - -The new cua package provides CUA-like keybindings using C-x for -cut (kill), C-c for copy, C-v for paste (yank), and C-z for undo. -With cua, the region can be set and extended using shifted movement -keys (like pc-selection-mode) and typed text replaces the active -region (like delete-selection-mode). Do not enable these modes with -cua-mode. Customize the variable `cua-mode' to enable cua. - -In addition, cua provides unified rectangle support with visible -rectangle highlighting: Use S-return to start a rectangle, extend it -using the movement commands (or mouse-3), and cut or copy it using C-x -or C-c (using C-w and M-w also works). - -Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to -fill it with blanks or another character, use M-u or M-l to upcase or -downcase the rectangle, use M-i to increment the numbers in the -rectangle, use M-n to fill the rectangle with a numeric sequence (such -as 10 20 30...), use M-r to replace a regexp in the rectangle, and use -M-' or M-/ to restrict command on the rectangle to a subset of the -rows. See the commentary in cua-base.el for more rectangle commands. - -Cua also provides unified support for registers: Use a numeric -prefix argument between 0 and 9, i.e. M-0 .. M-9, for C-x, C-c, and -C-v to cut or copy into register 0-9, or paste from register 0-9. - -The last text deleted (not killed) is automatically stored in -register 0. This includes text deleted by typing text. - -Finally, cua provides a global mark which is set using S-C-space. -When the global mark is active, any text which is cut or copied is -automatically inserted at the global mark position. See the -commentary in cua-base.el for more global mark related commands. - -The features of cua also works with the standard emacs bindings for -kill, copy, yank, and undo. If you want to use cua mode, but don't -want the C-x, C-c, C-v, and C-z bindings, you may customize the -`cua-enable-cua-keys' variable. - -Note: This version of cua mode is not backwards compatible with older -versions of cua.el and cua-mode.el. To ensure proper operation, you -must remove older versions of cua.el or cua-mode.el as well as the -loading and customization of those packages from the .emacs file. - -+++ -** The new keypad setup package provides several common bindings for -the numeric keypad which is available on most keyboards. The numeric -keypad typically has the digits 0 to 9, a decimal point, keys marked -+, -, /, and *, an Enter key, and a NumLock toggle key. The keypad -package only controls the use of the digit and decimal keys. +`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and +`kTextEncodingISOLatin2' are obsolete. -By customizing the variables `keypad-setup', `keypad-shifted-setup', -`keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by -using the function `keypad-setup', you can rebind all digit keys and -the decimal key of the keypad in one step for each of the four -possible combinations of the Shift key state (not pressed/pressed) and -the NumLock toggle state (off/on). +--- +** sql changes. -The choices for the keypad keys in each of the above states are: -`Plain numeric keypad' where the keys generates plain digits, -`Numeric keypad with decimal key' where the character produced by the -decimal key can be customized individually (for internationalization), -`Numeric Prefix Arg' where the keypad keys produce numeric prefix args -for emacs editing commands, `Cursor keys' and `Shifted Cursor keys' -where the keys work like (shifted) arrow keys, home/end, etc., and -`Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.) -are left unspecified and can be bound individually through the global -or local keymaps. +*** The variable `sql-product' controls the highlightng of different +SQL dialects. This variable can be set globally via Customize, on a +buffer-specific basis via local variable settings, or for the current +session using the new SQL->Product submenu. (This menu replaces the +SQL->Highlighting submenu.) -+++ -** The new kmacro package provides a simpler user interface to -emacs' keyboard macro facilities. +The following values are supported: -Basically, it uses two function keys (default F3 and F4) like this: -F3 starts a macro, F4 ends the macro, and pressing F4 again executes -the last macro. While defining the macro, F3 inserts a counter value -which automatically increments every time the macro is executed. + ansi ANSI Standard (default) + db2 DB2 + informix Informix + ingres Ingres + interbase Interbase + linter Linter + ms Microsoft + mysql MySQL + oracle Oracle + postgres Postgres + solid Solid + sqlite SQLite + sybase Sybase -There is now a keyboard macro ring which stores the most recently -defined macros. +The current product name will be shown on the mode line following the +SQL mode indicator. -The C-x C-k sequence is now a prefix for the kmacro keymap which -defines bindings for moving through the keyboard macro ring, -C-x C-k C-p and C-x C-k C-n, editing the last macro C-x C-k C-e, -manipulating the macro counter and format via C-x C-k C-c, -C-x C-k C-a, and C-x C-k C-f. See the commentary in kmacro.el -for more commands. +The technique of setting `sql-mode-font-lock-defaults' directly in +your .emacs will no longer establish the default highlighting -- Use +`sql-product' to accomplish this. -The normal macro bindings C-x (, C-x ), and C-x e now interfaces to -the keyboard macro ring. +ANSI keywords are always highlighted. -The C-x e command now automatically terminates the current macro -before calling it, if used while defining a macro. +*** The function `sql-add-product-keywords' can be used to add +font-lock rules to the product specific rules. For example, to have +all identifiers ending in "_t" under MS SQLServer treated as a type, +you would use the following line in your .emacs file: -In addition, when ending or calling a macro with C-x e, the macro can -be repeated immediately by typing just the `e'. You can customize -this behavior via the variable kmacro-call-repeat-key and -kmacro-call-repeat-with-arg. + (sql-add-product-keywords 'ms + '(("\\<\\w+_t\\>" . font-lock-type-face))) -Keyboard macros can now be debugged and edited interactively. -C-x C-k SPC steps through the last keyboard macro one key sequence -at a time, prompting for the actions to take. +*** Oracle support includes keyword highlighting for Oracle 9i. Most +SQL and PL/SQL keywords are implemented. SQL*Plus commands are +highlighted in `font-lock-doc-face'. ---- -** The old Octave mode bindings C-c f and C-c i have been changed -to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate -bindings on control characters--thus, C-c C-i C-b is the same as -C-c C-i b, and so on. +*** Microsoft SQLServer support has been significantly improved. +Keyword highlighting for SqlServer 2000 is implemented. +sql-interactive-mode defaults to use osql, rather than isql, because +osql flushes its error stream more frequently. Thus error messages +are displayed when they occur rather than when the session is +terminated. -** The printing package is now part of the Emacs distribution. +If the username and password are not provided to `sql-ms', osql is +called with the -E command line argument to use the operating system +credentials to authenticate the user. -If you enable the printing package by including (require 'printing) in -the .emacs file, the normal Print item on the File menu is replaced -with a Print sub-menu which allows you to preview output through -ghostview, use ghostscript to print (if you don't have a PostScript -printer) or send directly to printer a PostScript code generated by -`ps-print' package. Use M-x pr-help for more information. +*** Postgres support is enhanced. +Keyword highlighting of Postgres 7.3 is implemented. Prompting for +the username and the pgsql `-U' option is added. -+++ -** Calc is now part of the Emacs distribution. +*** MySQL support is enhanced. +Keyword higlighting of MySql 4.0 is implemented. -Calc is an advanced desk calculator and mathematical tool written in -Emacs Lisp. Its documentation is in a separate manual; within Emacs, -type "C-h i m calc RET" to read that manual. A reference card is -available in `etc/calccard.tex' and `etc/calccard.ps'. +*** Imenu support has been enhanced to locate tables, views, indexes, +packages, procedures, functions, triggers, sequences, rules, and +defaults. -+++ -** Tramp is now part of the distribution. +*** Added SQL->Start SQLi Session menu entry which calls the +appropriate sql-interactive-mode wrapper for the current setting of +`sql-product'. -This package is similar to Ange-FTP: it allows you to edit remote -files. But whereas Ange-FTP uses FTP to access the remote host, -Tramp uses a shell connection. The shell connection is always used -for filename completion and directory listings and suchlike, but for -the actual file transfer, you can choose between the so-called -`inline' methods (which transfer the files through the shell -connection using base64 or uu encoding) and the `out-of-band' methods -(which invoke an external copying program such as `rcp' or `scp' or -`rsync' to do the copying). +--- +*** Support for the SQLite interpreter has been added to sql.el by calling +'sql-sqlite'. -Shell connections can be acquired via `rsh', `ssh', `telnet' and also -`su' and `sudo'. Ange-FTP is still supported via the `ftp' method. +--- +** M-x view-file and commands that use it now avoid interfering +with special modes such as Tar mode. -If you want to disable Tramp you should set ++++ +** Filesets are collections of files. You can define a fileset in +various ways, such as based on a directory tree or based on +program files that include other program files. - (setq tramp-default-method "ftp") +Once you have defined a fileset, you can perform various operations on +all the files in it, such as visiting them or searching and replacing +in them. --- -** The new global minor mode `file-name-shadow-mode' modifies the way -filenames being entered by the user in the minibuffer are displayed, so -that it's clear when part of the entered filename will be ignored due to -emacs' filename parsing rules. The ignored portion can be made dim, -invisible, or otherwise less visually noticable. The display method may -be displayed by customizing the variable `file-name-shadow-properties'. +** Commands winner-redo and winner-undo, from winner.el, are now bound to +C-c and C-c , respectively. This is an incompatible change. ---- -** The ruler-mode.el library provides a minor mode for displaying an -"active" ruler in the header line. You can use the mouse to visually -change the `fill-column', `window-margins' and `tab-stop-list' -settings. +** 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'). --- -** The minor mode Reveal mode makes text visible on the fly as you -move your cursor into hidden regions of the buffer. -It should work with any package that uses overlays to hide parts -of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ... +*** 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'. -There is also Global Reveal mode which affects all buffers. +--- +** skeleton.el now supports using - to mark the skeleton-point without + interregion interaction. @ has reverted to only setting + skeleton-positions and no longer sets skeleton-point. Skeletons + which used @ to mark skeleton-point independent of _ should now use - + instead. The updated skeleton-insert docstring explains these new + features along with other details of skeleton construction. --- -** The new package ibuffer provides a powerful, completely -customizable replacement for buff-menu.el. +** New variable `hs-set-up-overlay' allows customization of the overlay +used to effect hiding for hideshow minor mode. Integration with isearch +handles the overlay property `display' specially, preserving it during +temporary overlay showing in the course of an isearch operation. +++ -** The new package table.el implements editable, WYSIWYG, embedded -`text tables' in Emacs buffers. It simulates the effect of putting -these tables in a special major mode. The package emulates WYSIWYG -table editing available in modern word processors. The package also -can generate a table source in typesetting and markup languages such -as latex and html from the visually laid out text table. +** hide-ifdef-mode now uses overlays rather than selective-display +to hide its text. This should be mostly transparent but slightly +changes the behavior of motion commands like C-e and C-p. -+++ -** SES mode (ses-mode) is a new major mode for creating and editing -spreadsheet files. Besides the usual Emacs features (intuitive command -letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers -viral immunity and import/export of tab-separated values. +--- +** partial-completion-mode now does partial completion on directory names. --- -** Support for `magic cookie' standout modes has been removed. -Emacs will still work on terminals that require magic cookies in order -to use standout mode, however they will not be able to display -mode-lines in inverse-video. +** The type-break package now allows `type-break-file-name' to be nil +and if so, doesn't store any data across sessions. This is handy if +you don't want the .type-break file in your home directory or are +annoyed by the need for interaction when you kill Emacs. --- -** cplus-md.el has been removed to avoid problems with Custom. +** `ps-print' can now print characters from the mule-unicode charsets. -+++ -** New package benchmark.el contains simple support for convenient -timing measurements of code (including the garbage collection component). +Printing text with characters from the mule-unicode-* sets works with +ps-print, provided that you have installed the appropriate BDF fonts. +See the file INSTALL for URLs where you can find these fonts. --- -** The new Lisp library fringe.el controls the appearance of fringes. +** New command `strokes-global-set-stroke-string'. +This is like `strokes-global-set-stroke', but it allows you to bind +the stroke directly to a string to insert. This is convenient for +using strokes as an input method. --- -** `cfengine-mode' is a major mode for editing GNU Cfengine -configuration files. - -* Incompatible Lisp Changes in Emacs 22.1 +** LDAP support now defaults to ldapsearch from OpenLDAP version 2. +++ -** The new interactive-specification `G' reads a file name -much like `F', but if the input is a directory name (even defaulted), -it returns just the directory name. +** You can now disable pc-selection-mode after enabling it. +M-x pc-selection-mode behaves like a proper minor mode, and with no +argument it toggles the mode. -+++ -** `suppress-keymap' now works by remapping `self-insert-command' to -the command `undefined'. (In earlier Emacs versions, it used -`substitute-key-definition' to rebind self inserting characters to -`undefined'.) +Turning off PC-Selection mode restores the global key bindings +that were replaced by turning on the mode. -+++ -** Mode line display ignores text properties as well as the -:propertize and :eval forms in the value of a variable whose -`risky-local-variable' property is nil. - -* Lisp Changes in Emacs 22.1 +--- +** `uniquify-strip-common-suffix' tells uniquify to prefer +`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'. + +--- +** rx.el has new corresponding `symbol-end' and `symbol-start' elements. -** New functions, macros, and commands +--- +** Support for `magic cookie' standout modes has been removed. +Emacs will still work on terminals that require magic cookies in order +to use standout mode, however they will not be able to display +mode-lines in inverse-video. -+++ -*** The new function `filter-buffer-substring' extracts a buffer -substring, passes it through a set of filter functions, and returns -the filtered substring. It is used instead of `buffer-substring' or -`delete-and-extract-region' when copying text into a user-accessible -data structure, like the kill-ring, X clipboard, or a register. The -list of filter function is specified by the new variable -`buffer-substring-filters'. For example, Longlines mode uses -`buffer-substring-filters' to remove soft newlines from the copied -text. +--- +** The game `mpuz' is enhanced. -+++ -*** (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. +`mpuz' now allows the 2nd factor not to have two identical digits. By +default, all trivial operations involving whole lines are performed +automatically. The game uses faces for better visual feedback. -+++ -*** 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. +--- +** display-battery has been replaced by display-battery-mode. -+++ -*** New functions `make-progress-reporter', `progress-reporter-update', -`progress-reporter-force-update', `progress-reporter-done', and -`dotimes-with-progress-reporter' provide a simple and efficient way for -a command to present progress messages for the user. +--- +** calculator.el now has radix grouping mode, which is available when +`calculator-output-radix' is non-nil. In this mode a separator +character is used every few digits, making it easier to see byte +boundries etc. For more info, see the documentation of the variable +`calculator-radix-grouping-mode'. -+++ -*** The new primitive `get-internal-run-time' returns the processor -run time used by Emacs since start-up. +--- +** global-whitespace-mode is a new alias for whitespace-global-mode. +++ -*** 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 command `list-text-properties-at' has been deleted because +C-u C-x = gives the same information and more. -+++ -*** The new function `assoc-string' replaces `assoc-ignore-case' and -`assoc-ignore-representation', which are still available, but have -been declared obsolete. +--- +** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead. --- -*** New function quail-find-key returns a list of keys to type in the -current input method to input a character. +** iso-acc.el is now obsolete. Use one of the latin input methods instead. -+++ -*** 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. +--- +** cplus-md.el has been removed to avoid problems with Custom. -+++ -*** The new primitive `set-file-times' sets a file's access and -modification times. Magic file name handlers can handle this -operation. + +* New modes and packages in Emacs 22.1 +++ -*** 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. +** New package benchmark.el contains simple support for convenient +timing measurements of code (including the garbage collection component). +++ -*** `syntax-class' extracts the class of a syntax code (as returned -by syntax-after). +** Calc is now part of the Emacs distribution. -+++ -*** New function `line-number-at-pos' returns line number of current -line in current buffer, or if optional buffer position is given, line -number of corresponding line in current buffer. +Calc is an advanced desk calculator and mathematical tool written in +Emacs Lisp. Its documentation is in a separate manual; within Emacs, +type "C-h i m calc RET" to read that manual. A reference card is +available in `etc/calccard.tex' and `etc/calccard.ps'. -+++ -*** New function `macroexpand-all' expands all macros in a form. -It is similar to the Common-Lisp function of the same name. -One difference is that it guarantees to return the original argument -if no expansion is done, which may be tested using `eq'. +--- +** `cfengine-mode' is a major mode for editing GNU Cfengine +configuration files. +++ -*** 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 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 function `rassq-delete-all' deletes all elements from an -alist whose cdr is `eq' to a specified value. +--- +** CUA mode is now part of the Emacs distribution. -+++ -*** New macros define-obsolete-variable-alias to combine defvaralias and -make-obsolete-variable and define-obsolete-function-alias to combine defalias -and make-obsolete. +The new cua package provides CUA-like keybindings using C-x for +cut (kill), C-c for copy, C-v for paste (yank), and C-z for undo. +With cua, the region can be set and extended using shifted movement +keys (like pc-selection-mode) and typed text replaces the active +region (like delete-selection-mode). Do not enable these modes with +cua-mode. Customize the variable `cua-mode' to enable cua. -+++ -** copy-file now takes an additional option arg MUSTBENEW. +In addition, cua provides unified rectangle support with visible +rectangle highlighting: Use S-return to start a rectangle, extend it +using the movement commands (or mouse-3), and cut or copy it using C-x +or C-c (using C-w and M-w also works). -This argument works like the MUSTBENEW argument of write-file. +Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to +fill it with blanks or another character, use M-u or M-l to upcase or +downcase the rectangle, use M-i to increment the numbers in the +rectangle, use M-n to fill the rectangle with a numeric sequence (such +as 10 20 30...), use M-r to replace a regexp in the rectangle, and use +M-' or M-/ to restrict command on the rectangle to a subset of the +rows. See the commentary in cua-base.el for more rectangle commands. ---- -** easy-mmode-define-global-mode has been renamed to -define-global-minor-mode. The old name remains as an alias. +Cua also provides unified support for registers: Use a numeric +prefix argument between 0 and 9, i.e. M-0 .. M-9, for C-x, C-c, and +C-v to cut or copy into register 0-9, or paste from register 0-9. -+++ -** An element of buffer-undo-list can now have the form (apply FUNNAME -. ARGS), where FUNNAME is a symbol other than t or nil. That stands -for a high-level change that should be undone by evaluating (apply -FUNNAME ARGS). +The last text deleted (not killed) is automatically stored in +register 0. This includes text deleted by typing text. -These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS) -which indicates that the change which took place was limited to the -range BEG...END and increased the buffer size by DELTA. +Finally, cua provides a global mark which is set using S-C-space. +When the global mark is active, any text which is cut or copied is +automatically inserted at the global mark position. See the +commentary in cua-base.el for more global mark related commands. -+++ -** The line-move, scroll-up, and scroll-down functions will now -modify the window vscroll to scroll through display rows that are -taller that the height of the window, for example in the presense of -large images. To disable this feature, Lisp code may bind the new -variable `auto-window-vscroll' to nil. +The features of cua also works with the standard emacs bindings for +kill, copy, yank, and undo. If you want to use cua mode, but don't +want the C-x, C-c, C-v, and C-z bindings, you may customize the +`cua-enable-cua-keys' variable. -+++ -** If a buffer sets buffer-save-without-query to non-nil, -save-some-buffers will always save that buffer without asking -(if it's modified). +Note: This version of cua mode is not backwards compatible with older +versions of cua.el and cua-mode.el. To ensure proper operation, you +must remove older versions of cua.el or cua-mode.el as well as the +loading and customization of those packages from the .emacs file. +++ -** The function symbol-file tells you which file defined -a certain function or variable. +** 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. -+++ -** Lisp code can now test if a given buffer position is inside a -clickable link with the new function `mouse-on-link-p'. This is the -function used by the new `mouse-1-click-follows-link' functionality. +--- +** The new global minor mode `file-name-shadow-mode' modifies the way +filenames being entered by the user in the minibuffer are displayed, so +that it's clear when part of the entered filename will be ignored due to +emacs' filename parsing rules. The ignored portion can be made dim, +invisible, or otherwise less visually noticable. The display method may +be displayed by customizing the variable `file-name-shadow-properties'. +++ -** `set-auto-mode' now gives the interpreter magic line (if present) -precedence over the file name. Likewise an "\^x\^f" +** The printing package is now part of the Emacs distribution. -+++ -** 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 you enable the printing package by including (require 'printing) in +the .emacs file, the normal Print item on the File menu is replaced +with a Print sub-menu which allows you to preview output through +ghostview, use ghostscript to print (if you don't have a PostScript +printer) or send directly to printer a PostScript code generated by +`ps-print' package. Use M-x pr-help for more information. +++ -** 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. +** The new python.el package is used to edit Python and Jython programs. -+++ -** skip-chars-forward and skip-chars-backward now handle -character classes such as [:alpha:], along with individual characters -and ranges. +--- +** The minor mode Reveal mode makes text visible on the fly as you +move your cursor into hidden regions of the buffer. +It should work with any package that uses overlays to hide parts +of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ... -+++ -** 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. +There is also Global Reveal mode which affects all buffers. -+++ -** The function `eql' is now available without requiring the CL package. +--- +** The ruler-mode.el library provides a minor mode for displaying an +"active" ruler in the header line. You can use the mouse to visually +change the `fill-column', `window-margins' and `tab-stop-list' +settings. +++ -** The display space :width and :align-to text properties are now -supported on text terminals. +** SES mode (ses-mode) is a new major mode for creating and editing +spreadsheet files. Besides the usual Emacs features (intuitive command +letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers +viral immunity and import/export of tab-separated values. +++ -** Support for displaying image slices - -*** New display property (slice X Y WIDTH HEIGHT) may be used with -an image property to display only a specific slice of the image. +** The new global minor mode `size-indication-mode' (off by default) +shows the size of accessible part of the buffer on the mode line. -*** Function insert-image has new optional fourth arg to -specify image slice (X Y WIDTH HEIGHT). ++++ +** The new package table.el implements editable, WYSIWYG, embedded +`text tables' in Emacs buffers. It simulates the effect of putting +these tables in a special major mode. The package emulates WYSIWYG +table editing available in modern word processors. The package also +can generate a table source in typesetting and markup languages such +as latex and html from the visually laid out text table. -*** New function insert-sliced-image inserts a given image as a -specified number of evenly sized slices (rows x columns). ++++ +** The thumbs.el package allows you to preview image files as thumbnails +and can be invoked from a Dired buffer. +++ -** New line-height and line-spacing properties for newline characters +** Tramp is now part of the distribution. -A newline may now have line-height and line-spacing text or overlay -properties that control the height of the corresponding display row. +This package is similar to Ange-FTP: it allows you to edit remote +files. But whereas Ange-FTP uses FTP to access the remote host, +Tramp uses a shell connection. The shell connection is always used +for filename completion and directory listings and suchlike, but for +the actual file transfer, you can choose between the so-called +`inline' methods (which transfer the files through the shell +connection using base64 or uu encoding) and the `out-of-band' methods +(which invoke an external copying program such as `rcp' or `scp' or +`rsync' to do the copying). -If the line-height property value is t, the newline does not -contribute to the height of the display row; instead the height of the -newline glyph is reduced. Also, a line-spacing property on this -newline is ignored. This can be used to tile small images or image -slices without adding blank areas between the images. +Shell connections can be acquired via `rsh', `ssh', `telnet' and also +`su' and `sudo'. Ange-FTP is still supported via the `ftp' method. -If the line-height property value is a positive integer, the value -specifies the minimum line height in pixels. If necessary, the line -height it increased by increasing the line's ascent. +If you want to disable Tramp you should set -If the line-height property value is a float, the minimum line height -is calculated by multiplying the default frame line height by the -given value. + (setq tramp-default-method "ftp") -If the line-height property value is a cons (FACE . RATIO), the -minimum line height is calculated as RATIO * height of named FACE. -RATIO is int or float. If FACE is t, it specifies the current face. +--- +** 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. -If the line-height property value is a cons (nil . RATIO), the line -height is calculated as RATIO * actual height of the line's contents. +--- +** The URL package (which had been part of W3) is now part of Emacs. -If the line-height value is a cons (HEIGHT . TOTAL), HEIGHT specifies -the line height as described above, while TOTAL is any of the forms -described above and specifies the total height of the line, causing a -varying number of pixels to be inserted after the line to make it line -exactly that many pixels high. +--- +** New minor mode, Visible mode, toggles invisibility in the current buffer. +When enabled, it makes all invisible text visible. When disabled, it +restores the previous value of `buffer-invisibility-spec'. -If the line-spacing property value is an positive integer, the value -is used as additional pixels to insert after the display line; this -overrides the default frame line-spacing and any buffer local value of -the line-spacing variable. ++++ +** The wdired.el package allows you to use normal editing commands on Dired +buffers to change filenames, permissions, etc... -If the line-spacing property may be a float or cons, the line spacing -is calculated as specified above for the line-height property. + +* Incompatible Lisp Changes in Emacs 22.1 +++ -** 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. +** The new interactive-specification `G' reads a file name +much like `F', but if the input is a directory name (even defaulted), +it returns just the directory name. +++ -** Enhancements to stretch display properties - -The display property stretch specification form `(space PROPS)', where -PROPS is a property list now allows pixel based width and height -specifications, as well as enhanced horizontal text alignment. - -The value of these properties can now be a (primitive) expression -which is evaluated during redisplay. The following expressions -are supported: +** `suppress-keymap' now works by remapping `self-insert-command' to +the command `undefined'. (In earlier Emacs versions, it used +`substitute-key-definition' to rebind self inserting characters to +`undefined'.) -EXPR ::= NUM | (NUM) | UNIT | ELEM | POS | IMAGE | FORM -NUM ::= INTEGER | FLOAT | SYMBOL -UNIT ::= in | mm | cm | width | height -ELEM ::= left-fringe | right-fringe | left-margin | right-margin - | scroll-bar | text -POS ::= left | center | right -FORM ::= (NUM . EXPR) | (OP EXPR ...) -OP ::= + | - ++++ +** Mode line display ignores text properties as well as the +:propertize and :eval forms in the value of a variable whose +`risky-local-variable' property is nil. + +* Lisp Changes in Emacs 22.1 -The form `NUM' specifies a fractional width or height of the default -frame font size. The form `(NUM)' specifies an absolute number of -pixels. If a symbol is specified, its buffer-local variable binding -is used. The `in', `mm', and `cm' units specifies the number of -pixels per inch, milli-meter, and centi-meter, resp. The `width' and -`height' units correspond to the width and height of the current face -font. An image specification corresponds to the width or height of -the image. ++++ +** The option --script FILE runs Emacs in batch mode and loads FILE. +It is useful for writing Emacs Lisp shell script files, because they +can start with this line: -The `left-fringe', `right-fringe', `left-margin', `right-margin', -`scroll-bar', and `text' elements specify to the width of the -corresponding area of the window. + #!/usr/bin/emacs --script -The `left', `center', and `right' positions can be used with :align-to -to specify a position relative to the left edge, center, or right edge -of the text area. One of the above window elements (except `text') -can also be used with :align-to to specify that the position is -relative to the left edge of the given area. Once the base offset for -a relative position has been set (by the first occurrence of one of -these symbols), further occurences of these symbols are interpreted as -the width of the area. ++++ +** 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: -For example, to align to the center of the left-margin, use - :align-to (+ left-margin (0.5 . left-margin)) + emacs -batch -L .. -L /tmp --eval "(require 'foo)" -If no specific base offset is set for alignment, it is always relative -to the left edge of the text area. For example, :align-to 0 in a -header-line aligns with the first text column in the text area. +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.) -The value of the form `(NUM . EXPR)' is the value of NUM multiplied by -the value of the expression EXPR. For example, (2 . in) specifies a -width of 2 inches, while (0.5 . IMAGE) specifies half the width (or -height) of the specified image. ++++ +** 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 form `(+ EXPR ...)' adds up the value of the expressions. -The form `(- EXPR ...)' negates or subtracts the value of the expressions. +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 +`sentence-end-without-period', `sentence-end-double-space' and +`sentence-end-without-space'. +++ -** 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. +** The argument to forward-word, backward-word, forward-to-indentation +and backward-to-indentation is now optional, and defaults to 1. +++ -** 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). +** 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. +++ -** 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 -foreground and background colors accordingly so that they look best on -a terminal that supports at least this many colors. This is now the -preferred method for defining default faces in a way that makes a good -use of the capabilities of the display. +** The new hook `before-save-hook' is invoked by `basic-save-buffer' +before saving buffers. This allows packages to perform various final +tasks, for example; it can be used by the copyright package to make +sure saved files have the current year in any copyright headers. +++ -** Customizable fringe bitmaps +** If a buffer sets buffer-save-without-query to non-nil, +save-some-buffers will always save that buffer without asking +(if it's modified). -*** New function 'define-fringe-bitmap' can now be used to create new -fringe bitmaps, as well as change the built-in fringe bitmaps. +--- +** list-buffers-noselect now takes an additional argument, BUFFER-LIST. +If it is non-nil, it specifies which buffers to list. -To change a built-in bitmap, do (require 'fringe) and use the symbol -identifing the bitmap such as `left-truncation or `continued-line'. ++++ +** The kill-buffer-hook is now permanent-local. -*** New function 'destroy-fringe-bitmap' may be used to destroy a -previously created bitmap, or restore a built-in bitmap. ++++ +** `auto-save-file-format' has been renamed to +`buffer-auto-save-file-format' and made into a permanent local. -*** New function 'set-fringe-bitmap-face' can now be used to set a -specific face to be used for a specific fringe bitmap. The face is -automatically merged with the `fringe' face, so normally, the face -should only specify the foreground color of the bitmap. ++++ +** Functions `file-name-sans-extension' and `file-name-extension' now +ignore the leading dots in file names, so that file names such as +`.emacs' are treated as extensionless. -*** 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. ++++ +** copy-file now takes an additional option arg MUSTBENEW. -Format is 'display '(left-fringe BITMAP [FACE]), where BITMAP is a -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 instead of the default `fringe' face. -When specified, FACE is automatically merged with the `fringe' face. +This argument works like the MUSTBENEW argument of write-file. -*** New function `fringe-bitmaps-at-pos' returns the current fringe -bitmaps in the display line at a given buffer position. ++++ +** If the second argument to `copy-file' is the name of a directory, +the file is copied to that directory instead of signaling an error. +++ -** Multiple overlay arrows can now be defined and managed via the new -variable `overlay-arrow-variable-list'. It contains a list of -varibles which contain overlay arrow position markers, including -the original `overlay-arrow-position' variable. +** `visited-file-modtime' and `calendar-time-from-absolute' now return +a list of two integers, instead of a cons. -Each variable on this list may have individual `overlay-arrow-string' -and `overlay-arrow-bitmap' properties that specify an overlay arrow -string (for non-window terminals) or fringe bitmap (for window -systems) to display at the corresponding overlay arrow position. -If either property is not set, the default `overlay-arrow-string' or -'overlay-arrow-fringe-bitmap' will be used. ++++ +** `file-chase-links' now takes an optional second argument LIMIT which +specifies the maximum number of links to chase through. If after that +many iterations the file name obtained is still a symbolic link, +`file-chase-links' returns it anyway. +++ -** 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 `commandp' takes an additional optional +argument. If it is non-nil, then `commandp' checks +for a function that could be called with `call-interactively', +and does not return t for keyboard macros. +++ -** 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 -`sentence-end-without-period', `sentence-end-double-space' and -`sentence-end-without-space'. +** 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. + +--- +** Functions y-or-n-p, read-char, read-key-sequence and the like, that +display a prompt but don't use the minibuffer, now display the prompt +using the text properties (esp. the face) of the prompt string. +++ -** The flags, width, and precision options for %-specifications in function -`format' are now documented. Some flags that were accepted but not -implemented (such as "*") are no longer accepted. +** read-from-minibuffer now accepts an additional argument KEEP-ALL +saying to put all inputs in the history list, even empty ones. +++ -** New function `delete-dups' destructively removes `equal' duplicates -from a list. Of several `equal' occurrences of an element in the list, -the first one is kept. +** The `read-file-name' function now takes an additional argument which +specifies a predicate which the file name read must satify. The +new variable `read-file-name-predicate' contains the predicate argument +while reading the file name from the minibuffer; the predicate in this +variable is used by read-file-name-internal to filter the completion list. + +--- +** The new variable `read-file-name-function' can be used by lisp code +to override the internal read-file-name function. +++ -** `declare' is now a macro. This change was made mostly for -documentation purposes and should have no real effect on Lisp code. +** 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. +++ -** A file name handler can declare which operations it handles. +** The new function `read-directory-name' can be used instead of +`read-file-name' to read a directory name; when used, completion +will only show directories. -You do this by putting an `operation' property on the handler name -symbol. The property value should be a list of the operations that -the handler really handles. It won't be called for any other -operations. ++++ +** 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. -This is useful for autoloaded handlers, to prevent them from being -autoloaded when not really necessary. +Spaces inside of constructs such as [..] and *, +, ? are never +replaced with search-spaces-regexp. +++ -** The new hook `before-save-hook' is invoked by `basic-save-buffer' -before saving buffers. This allows packages to perform various final -tasks, for example; it can be used by the copyright package to make -sure saved files have the current year in any copyright headers. +** 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. +++ -** The function `insert-for-yank' now supports strings where the -`yank-handler' property does not span the first character of the -string. The old behavior is available if you call -`insert-for-yank-1' instead. +** skip-chars-forward and skip-chars-backward now handle +character classes such as [:alpha:], along with individual characters +and ranges. -+++ -** New function `get-char-property-and-overlay' accepts the same -arguments as `get-char-property' and returns a cons whose car is the -return value of `get-char-property' called with those arguments and -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. +--- +** In `replace-match', the replacement text no longer inherits +properties from surrounding text. -+++ (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 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. +++ -** The mouse pointer shape over an image can now be controlled by the -:pointer image property. +** Variable aliases have been implemented: + +*** defvaralias ALIAS-VAR BASE-VAR [DOCSTRING] + +This function defines the symbol ALIAS-VAR as a variable alias for +symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR +returns the value of BASE-VAR, and changing the value of ALIAS-VAR +changes the value of BASE-VAR. + +DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has +the same documentation as BASE-VAR. + +*** indirect-variable VARIABLE + +This function returns the variable at the end of the chain of aliases +of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not +defined as an alias, the function returns VARIABLE. + +It might be noteworthy that variables aliases work for all kinds of +variables, including buffer-local and frame-local variables. +++ -** The mouse pointer shape over ordinary text or images may now be -controlled/overriden via the `pointer' text property. +*** The macro define-obsolete-variable-alias combines defvaralias and +make-obsolete-variable. The macro define-obsolete-function-alias +combines defalias and make-obsolete. +++ -** Images may now have an associated image map via the :map property. +** Enhancements to keymaps. -An image map is an alist where each element has the format (AREA ID PLIST). -An AREA is specified as either a rectangle, a circle, or a polygon: -A rectangle is a cons (rect . ((x0 . y0) . (x1 . y1))) specifying the -pixel coordinates of the upper left and bottom right corners. -A circle is a cons (circle . ((x0 . y0) . r)) specifying the center -and the radius of the circle; r may be a float or integer. -A polygon is a cons (poly . [x0 y0 x1 y1 ...]) where each pair in the -vector describes one corner in the polygon. +*** Cleaner way to enter key sequences. -When the mouse pointer is above a hot-spot area of an image, the -PLIST of that hot-spot is consulted; if it contains a `help-echo' -property it defines a tool-tip for the hot-spot, and if it contains -a `pointer' property, it defines the shape of the mouse cursor when -it is over the hot-spot. See the variable 'void-area-text-pointer' -for possible pointer shapes. +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" + +*** Interactive commands can be remapped through keymaps. + +This is an alternative to using defadvice or substitute-key-definition +to modify the behavior of a key binding using the normal keymap +binding and lookup functionality. + +When a key sequence is bound to a command, and that command is +remapped to another command, that command is run instead of the +original command. + +Example: +Suppose that minor mode my-mode has defined the commands +my-kill-line and my-kill-word, and it wants C-k (and any other key +bound to kill-line) to run the command my-kill-line instead of +kill-line, and likewise it wants to run my-kill-word instead of +kill-word. + +Instead of rebinding C-k and the other keys in the minor mode map, +command remapping allows you to directly map kill-line into +my-kill-line and kill-word into my-kill-word through the minor mode +map using define-key: + + (define-key my-mode-map [remap kill-line] 'my-kill-line) + (define-key my-mode-map [remap kill-word] 'my-kill-word) + +Now, when my-mode is enabled, and the user enters C-k or M-d, +the commands my-kill-line and my-kill-word are run. + +Notice that only one level of remapping is supported. In the above +example, this means that if my-kill-line is remapped to other-kill, +then C-k still runs my-kill-line. + +The following changes have been made to provide command remapping: + +- Command remappings are defined using `define-key' with a prefix-key + `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD + to definition DEF in keymap MAP. The definition is not limited to + another command; it can be anything accepted for a normal binding. -When you click the mouse when the mouse pointer is over a hot-spot, -an event is composed by combining the ID of the hot-spot with the -mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'. +- The new function `command-remapping' returns the binding for a + remapped command in the current keymaps, or nil if not remapped. -** Mouse event enhancements: +- key-binding now remaps interactive commands unless the optional + third argument NO-REMAP is non-nil. -+++ -*** Mouse clicks on fringes now generates left-fringe or right-fringes -events, rather than a text area click event. +- where-is-internal now returns nil for a remapped command (e.g. + kill-line if my-mode is enabled), and the actual key binding for + the command it is remapped to (e.g. C-k for my-kill-line). + It also has a new optional fifth argument, NO-REMAP, which inhibits + remapping if non-nil (e.g. it returns C-k for kill-line and + for my-kill-line). -+++ -*** Mouse clicks in the left and right marginal areas now includes a -sensible buffer position corresponding to the first character in the -corresponding text row. +- The new variable `this-original-command' contains the original + command before remapping. It is equal to `this-command' when the + command was not remapped. -+++ -*** Function `mouse-set-point' now works for events outside text area. +*** If text has a `keymap' property, that keymap takes precedence +over minor mode keymaps. -+++ -*** Mouse events now includes buffer position for all event types. +*** The `keymap' property now also works at the ends of overlays and +text-properties, according to their stickiness. This also means that it +works with empty overlays. The same hold for the `local-map' property. -+++ -*** `posn-point' now returns buffer position for non-text area events. +*** Dense keymaps now handle inheritance correctly. +Previously a dense keymap would hide all of the simple-char key +bindings of the parent keymap. -+++ -*** New function `posn-area' returns window area clicked on (nil means -text area). +*** `define-key-after' now accepts keys longer than 1. -+++ -*** Mouse events include actual glyph column and row for all event types. +*** New function `current-active-maps' returns a list of currently +active keymaps. -+++ -*** New function `posn-actual-col-row' returns actual glyph coordinates. +*** New function `describe-buffer-bindings' inserts the list of all +defined keys and their definitions. -+++ -*** Mouse events may now include image object in addition to string object. +*** New function `keymap-prompt' returns the prompt-string of a keymap -+++ -*** Mouse events include relative x and y pixel coordinates relative to -the top left corner of the object (image or character) clicked on. +*** (map-keymap FUNCTION KEYMAP) applies the function to each binding +in the keymap. -+++ -*** Mouse events include the pixel width and height of the object -(image or character) clicked on. +*** New variable emulation-mode-map-alists. -+++ -*** New functions 'posn-object', 'posn-object-x-y', and -'posn-object-width-height' return the image or string object of a mouse -click, the x and y pixel coordinates relative to the top left corner -of that object, and the total width and height of that object. +Lisp packages using many minor mode keymaps can now maintain their own +keymap alist separate from minor-mode-map-alist by adding their keymap +alist to this list. +++ -** New function `force-window-update' can initiate a full redisplay of -one or all windows. Normally, this is not needed as changes in window -contents are detected automatically. However, certain implicit -changes to mode lines, header lines, or display properties may require -forcing an explicit window update. +** Atomic change groups. ---- -** New function `redirect-debugging-output' can be used to redirect -debugging output on the stderr file handle to a file. +To perform some changes in the current buffer "atomically" so that +they either all succeed or are all undone, use `atomic-change-group' +around the code that makes changes. For instance: -+++ -** `split-string' now includes null substrings in the returned list if -the optional argument SEPARATORS is non-nil and there are matches for -SEPARATORS at the beginning or end of the string. If SEPARATORS is -nil, or if the new optional third argument OMIT-NULLS is non-nil, all -empty matches are omitted from the returned list. + (atomic-change-group + (insert foo) + (delete-region x y)) -+++ -** `makehash' is now obsolete. Use `make-hash-table' instead. +If an error (or other nonlocal exit) occurs inside the body of +`atomic-change-group', it unmakes all the changes in that buffer that +were during the execution of the body. The change group has no effect +on any other buffers--any such changes remain. -+++ -** If optional third argument APPEND to `add-to-list' is non-nil, a -new element gets added at the end of the list instead of at the -beginning. This change actually occurred in Emacs-21.1, but was not -documented. +If you need something more sophisticated, you can directly call the +lower-level functions that `atomic-change-group' uses. Here is how. -+++ -** Major modes can define `eldoc-documentation-function' -locally to provide Eldoc functionality by some method appropriate to -the language. +To set up a change group for one buffer, call `prepare-change-group'. +Specify the buffer as argument; it defaults to the current buffer. +This function returns a "handle" for the change group. You must save +the handle to activate the change group and then finish it. ---- -** New coding system property `mime-text-unsuitable' indicates that -the coding system's `mime-charset' is not suitable for MIME text -parts, e.g. utf-16. +Before you change the buffer again, you must activate the change +group. Pass the handle to `activate-change-group' afterward to +do this. -+++ -** The argument to forward-word, backward-word, forward-to-indentation -and backward-to-indentation is now optional, and defaults to 1. +After you make the changes, you must finish the change group. You can +either accept the changes or cancel them all. Call +`accept-change-group' to accept the changes in the group as final; +call `cancel-change-group' to undo them all. -+++ -** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able -to display CHAR. More precisely, if the selected frame's fontset has -a font to display the character set that CHAR belongs to. +You should use `unwind-protect' to make sure the group is always +finished. The call to `activate-change-group' should be inside the +`unwind-protect', in case the user types C-g just after it runs. +(This is one reason why `prepare-change-group' and +`activate-change-group' are separate functions.) Once you finish the +group, don't use the handle again--don't try to finish the same group +twice. -Fontsets can specify a font on a per-character basis; when the fontset -does that, this value may not be accurate. +To make a multibuffer change group, call `prepare-change-group' once +for each buffer you want to cover, then use `nconc' to combine the +returned values, like this: -+++ -** The new function `window-inside-edges' returns the edges of the -actual text portion of the window, not including the scroll bar or -divider line, the fringes, the display margins, the header line and -the mode line. + (nconc (prepare-change-group buffer-1) + (prepare-change-group buffer-2)) -+++ -** The new functions `window-pixel-edges' and `window-inside-pixel-edges' -return window edges in units of pixels, rather than columns and lines. +You can then activate the multibuffer change group with a single call +to `activate-change-group', and finish it with a single call to +`accept-change-group' or `cancel-change-group'. -+++ -** The kill-buffer-hook is now permanent-local. +Nested use of several change groups for the same buffer works as you +would expect. Non-nested use of change groups for the same buffer +will lead to undesirable results, so don't let it happen; the first +change group you start for any given buffer should be the last one +finished. +++ -** `select-window' takes an optional second argument `norecord', like -`switch-to-buffer'. +** Progress reporters. +The new functions `make-progress-reporter', `progress-reporter-update', +`progress-reporter-force-update', `progress-reporter-done', and +`dotimes-with-progress-reporter' provide a simple and efficient way for +a command to present progress messages for the user. +++ -** The new macro `with-selected-window' temporarily switches the -selected window without impacting the order of buffer-list. +** New `yank-handler' text property may be used to control how +previously killed text on the kill-ring is reinserted. -+++ -** The `keymap' property now also works at the ends of overlays and -text-properties, according to their stickiness. This also means that it -works with empty overlays. The same hold for the `local-map' property. +The value of the yank-handler property must be a list with one to four +elements with the following format: + (FUNCTION PARAM NOEXCLUDE UNDO). -+++ -** (map-keymap FUNCTION KEYMAP) applies the function to each binding -in the keymap. +The `insert-for-yank' function looks for a yank-handler property on +the first character on its string argument (typically the first +element on the kill-ring). If a yank-handler property is found, +the normal behavior of `insert-for-yank' is modified in various ways: ---- -** VC changes for backends: -*** (vc-switches BACKEND OPERATION) is a new function for use by backends. -*** The new `find-version' backend function replaces the `destfile' -parameter of the `checkout' backend function. -Old code still works thanks to a default `find-version' behavior that -uses the old `destfile' parameter. + When FUNCTION is present and non-nil, it is called instead of `insert' +to insert the string. FUNCTION takes one argument--the object to insert. + If PARAM is present and non-nil, it replaces STRING as the object +passed to FUNCTION (or `insert'); for example, if FUNCTION is +`yank-rectangle', PARAM should be a list of strings to insert as a +rectangle. + If NOEXCLUDE is present and non-nil, the normal removal of the +yank-excluded-properties is not performed; instead FUNCTION is +responsible for removing those properties. This may be necessary +if FUNCTION adjusts point before or after inserting the object. + If UNDO is present and non-nil, it is a function that will be called +by `yank-pop' to undo the insertion of the current object. It is +called with two arguments, the start and end of the current region. +FUNCTION may set `yank-undo-function' to override the UNDO value. -+++ -** The new macro dynamic-completion-table supports using functions -as a dynamic completion table. +*** The functions kill-new, kill-append, and kill-region now have an +optional argument to specify the yank-handler text property to put on +the killed text. - (dynamic-completion-table FUN) +*** The function yank-pop will now use a non-nil value of the variable +`yank-undo-function' (instead of delete-region) to undo the previous +yank or yank-pop command (or a call to insert-for-yank). The function +insert-for-yank automatically sets that variable according to the UNDO +element of the string argument's yank-handler text property if present. -FUN is called with one argument, the string for which completion is required, -and it should return an alist containing all the intended possible -completions. This alist may be a full list of possible completions so that FUN -can ignore the value of its argument. If completion is performed in the -minibuffer, FUN will be called in the buffer from which the minibuffer was -entered. dynamic-completion-table then computes the completion. +*** The function `insert-for-yank' now supports strings where the +`yank-handler' property does not span the first character of the +string. The old behavior is available if you call +`insert-for-yank-1' instead. -+++ -** The new macro lazy-completion-table initializes a variable -as a lazy completion table. +*** The new function insert-for-yank normally works like `insert', but +removes the text properties in the `yank-excluded-properties' list. +However, the insertion of the text may be modified by a `yank-handler' +text property. - (lazy-completion-table VAR FUN &rest ARGS) ++++ +** An element of buffer-undo-list can now have the form (apply FUNNAME +. ARGS), where FUNNAME is a symbol other than t or nil. That stands +for a high-level change that should be undone by evaluating (apply +FUNNAME ARGS). -If the completion table VAR is used for the first time (e.g., by passing VAR -as an argument to `try-completion'), the function FUN is called with arguments -ARGS. FUN must return the completion table that will be stored in VAR. If -completion is requested in the minibuffer, FUN will be called in the buffer -from which the minibuffer was entered. The return value of -`lazy-completion-table' must be used to initialize the value of VAR. +These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS) +which indicates that the change which took place was limited to the +range BEG...END and increased the buffer size by DELTA. +++ -** `minor-mode-list' now holds a list of minor mode commands. +** 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. +++ -** The new function `modify-all-frames-parameters' modifies parameters -for all (existing and future) frames. +** Enhancements to process support -+++ -** `sit-for' can now be called with args (SECONDS &optional NODISP). +*** Function list-processes now has an optional argument; if non-nil, +only the processes whose query-on-exit flag is set are listed. -+++ -** New standard font-lock face `font-lock-preprocessor-face'. +*** New set-process-query-on-exit-flag and process-query-on-exit-flag +functions. The existing process-kill-without-query function is still +supported, but new code should use the new functions. + +*** Function signal-process now accepts a process object or process +name in addition to a process id to identify the signalled process. + +*** Processes now have an associated property list where programs can +maintain process state and other per-process related information. + +The new functions process-get and process-put are used to access, add, +and modify elements on this property list. -+++ -** The macro `with-syntax-table' does not copy the table any more. +The new low-level functions process-plist and set-process-plist are +used to access and replace the entire property list of a process. -+++ -** The variable `face-font-rescale-alist' specifies how much larger -(or smaller) font we should use. For instance, if the value is -'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10 -point, we actually use a font of 13 point if the font matches -SOME-FONTNAME-PATTERN. +*** 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. -+++ -** The function `number-sequence' returns a list of equally-separated -numbers. For instance, (number-sequence 4 9) returns (4 5 6 7 8 9). -By default, the separation is 1, but you can specify a different separation -as the third argument. (number-sequence 1.5 6 2) returns (1.5 3.5 5.5). +*** Adaptive read buffering of subprocess output. -+++ -** `file-chase-links' now takes an optional second argument LIMIT which -specifies the maximum number of links to chase through. If after that -many iterations the file name obtained is still a symbolic link, -`file-chase-links' returns it anyway. +On some systems, when emacs reads the output from a subprocess, the +output data is read in very small blocks, potentially resulting in +very poor performance. This behavior can be remedied to some extent +by setting the new variable process-adaptive-read-buffering to a +non-nil value (the default), as it will automatically delay reading +from such processes, to allowing them to produce more output before +emacs tries to read it. ---- -** `set-fontset-font', `fontset-info', `fontset-font' now operate on -the default fontset if the argument NAME is nil.. +*** The new function `call-process-shell-command' executes a shell +command command synchronously in a separate process. -+++ -** The escape sequence \s is now interpreted as a SPACE character, -unless it is followed by a `-' in a character constant (e.g. ?\s-A), -in which case it is still interpreted as the super modifier. -In strings, \s is always interpreted as a space. +*** The new function `process-file' is similar to `call-process', but +obeys file handlers. The file handler is chosen based on +default-directory. -+++ -** New function `set-process-filter-multibyte' sets the multibyteness -of a string given to a process's filter. +*** The new function `set-process-filter-multibyte' sets the +multibyteness of a string given to a process's filter. -+++ -** New function `process-filter-multibyte-p' returns t if -a string given to a process's filter is multibyte. +*** The new function `process-filter-multibyte-p' returns t if a +string given to a process's filter is multibyte. -+++ -** A filter function of a process is called with a multibyte string if -the filter's multibyteness is t. That multibyteness is decided by the -value of `default-enable-multibyte-characters' when the process is +*** A filter function of a process is called with a multibyte string +if the filter's multibyteness is t. That multibyteness is decided by +the value of `default-enable-multibyte-characters' when the process is created and can be changed later by `set-process-filter-multibyte'. -+++ -** If a process's coding system is raw-text or no-conversion and its +*** If a process's coding system is raw-text or no-conversion and its buffer is multibyte, the output of the process is at first converted to multibyte by `string-to-multibyte' then inserted in the buffer. Previously, it was converted to multibyte by `string-as-multibyte', which was not compatible with the behavior of file reading. +++ -** New function `string-to-multibyte' converts a unibyte string to a -multibyte string with the same individual character codes. +** Enhanced networking support. -+++ -** New variables `gc-elapsed' and `gcs-done' provide extra information -on garbage collection. +*** There is a new `make-network-process' function which supports +opening of stream and datagram connections to a server, as well as +create a stream or datagram server inside emacs. -+++ -** New function `decode-coding-inserted-region' decodes a region as if -it is read from a file without decoding. +- A server is started using :server t arg. +- Datagram connection is selected using :type 'datagram arg. +- A server can open on a random port using :service t arg. +- Local sockets are supported using :family 'local arg. +- Non-blocking connect is supported using :nowait t arg. +- The process' property list may be initialized using :plist PLIST arg; + a copy of the server process' property list is automatically inherited + by new client processes created to handle incoming connections. -+++ -** New function `locale-info' accesses locale information. +To test for the availability of a given feature, use featurep like this: + (featurep 'make-network-process '(:type datagram)) -+++ -** `save-selected-window' now saves and restores the selected window -of every frame. This way, it restores everything that can be changed -by calling `select-window'. +*** Original open-network-stream is now emulated using make-network-process. ---- -** `easy-menu-define' now allows you to use nil for the symbol name -if you don't need to give the menu a name. If you install the menu -into other keymaps right away (MAPS is non-nil), it usually doesn't -need to have a name. +*** New function open-network-stream-nowait. -** Byte compiler changes: +This function initiates a non-blocking connect and returns immediately +without waiting for the connection to be established. It takes the +filter and sentinel functions as arguments; when the non-blocking +connect completes, the sentinel is called with a status string +matching "open" or "failed". ---- -*** `(featurep 'xemacs)' is treated by the compiler as nil. This -helps to avoid noisy compiler warnings in code meant to run under both -Emacs and XEmacs and may sometimes make the result significantly more -efficient. Since byte code from recent versions of XEmacs won't -generally run in Emacs and vice versa, this optimization doesn't lose -you anything. +*** New function open-network-stream-server. -+++ -*** You can avoid warnings for possibly-undefined symbols with a -simple convention that the compiler understands. (This is mostly -useful in code meant to be portable to different Emacs versions.) -Write forms like the following, or code that macroexpands into such -forms: +This function creates a network server process for a TCP service. +When a client connects to the specified service, a new subprocess +is created to handle the new connection, and the sentinel function +is called for the new process. - (if (fboundp 'foo) ) - (if (boundp 'foo) form -won't produce a warning if it's not defined as a function, and in the -second case, using `foo' as a variable won't produce a warning if it's -unbound. The test must be in exactly one of the above forms (after -macro expansion), but such tests may be nested. Note that `when' and -`unless' expand to `if', but `cond' doesn't. +These functions are used with datagram-based network processes to get +and set the current address of the remote partner. -+++ -*** The new macro `with-no-warnings' suppresses all compiler warnings -inside its body. In terms of execution, it is equivalent to `progn'. +*** New function format-network-address. -+++ -** The new translation table `translation-table-for-input' -is used for customizing self-insertion. The character to -be inserted is translated through it. +This function reformats the lisp representation of a network address +to a printable string. For example, an IP address A.B.C.D and port +number P is represented as a five element vector [A B C D P], and the +printable string returned for this vector is "A.B.C.D:P". See the doc +string for other formatting options. -+++ -** `load-history' can now have elements of the form (t . FUNNAME), -which means FUNNAME was previously defined as an autoload (before the -current file redefined it). +*** By default, the function process-contact still returns (HOST SERVICE) +for a network process. Using the new optional KEY arg, the complete list +of network process properties or a specific property can be selected. -+++ -** `load-history' now records (defun . FUNNAME) when a function is -defined. For a variable, it records just the variable name. +Using :local and :remote as the KEY, the address of the local or +remote end-point is returned. An Inet address is represented as a 5 +element vector, where the first 4 elements contain the IP address and +the fifth is the port number. -+++ -** New Lisp library testcover.el works with edebug to help you determine -whether you've tested all your Lisp code. Function testcover-start -instruments all functions in a given file. Then test your code. Function -testcover-mark-all adds overlay "splotches" to the Lisp file's buffer to -show where coverage is lacking. Command testcover-next-mark (bind it to -a key!) will move point forward to the next spot that has a splotch. +*** Network processes can now be stopped and restarted with +`stop-process' and `continue-process'. For a server process, no +connections are accepted in the stopped state. For a client process, +no input is received in the stopped state. -*** Normally, a red splotch indicates the form was never completely evaluated; -a brown splotch means it always evaluated to the same value. The red -splotches are skipped for forms that can't possibly complete their evaluation, -such as `error'. The brown splotches are skipped for forms that are expected -to always evaluate to the same value, such as (setq x 14). +*** New function network-interface-list. -*** For difficult cases, you can add do-nothing macros to your code to help -out the test coverage tool. The macro `noreturn' suppresses a red splotch. -It is an error if the argument to `noreturn' does return. The macro 1value -suppresses a brown splotch for its argument. This macro is a no-op except -during test-coverage -- then it signals an error if the argument actually -returns differing values. +This function returns a list of network interface names and their +current network addresses. -+++ -** New function unsafep returns nil if the given Lisp form can't possibly -do anything dangerous; otherwise it returns a reason why the form might be -unsafe (calls dangerous function, alters global variable, etc). +*** New function network-interface-info. -+++ -** The new variable `print-continuous-numbering', when non-nil, says -that successive calls to print functions should use the same -numberings for circular structure references. This is only relevant -when `print-circle' is non-nil. +This function returns the network address, hardware address, current +status, and other information about a specific network interface. -When you bind `print-continuous-numbering' to t, you should -also bind `print-number-table' to nil. +*** 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". +++ -** When using non-toolkit scroll bars with the default width, -the scroll-bar-width frame parameter value is nil. +** New function `force-window-update' can initiate a full redisplay of +one or all windows. Normally, this is not needed as changes in window +contents are detected automatically. However, certain implicit +changes to mode lines, header lines, or display properties may require +forcing an explicit window update. +++ -** The new function copy-abbrev-table returns a new abbrev table that -is a copy of a given abbrev table. +** You can now make a window as short as one line. + +A window that is just one line tall does not display either a mode +line or a header line, even if the variables `mode-line-format' and +`header-line-format' call for them. A window that is two lines tall +cannot display both a mode line and a header line at once; if the +variables call for both, only the mode line actually appears. +++ -** The option --script FILE runs Emacs in batch mode and loads FILE. -It is useful for writing Emacs Lisp shell script files, because they -can start with this line: +** The line-move, scroll-up, and scroll-down functions will now +modify the window vscroll to scroll through display rows that are +taller that the height of the window, for example in the presense of +large images. To disable this feature, Lisp code may bind the new +variable `auto-window-vscroll' to nil. - #!/usr/bin/emacs --script ++++ +** 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. +++ -** 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: +** 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. - emacs -batch -L .. -L /tmp --eval "(require 'foo)" ++++ +** The new function `window-inside-edges' returns the edges of the +actual text portion of the window, not including the scroll bar or +divider line, the fringes, the display margins, the header line and +the mode line. -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.) ++++ +** The new functions `window-pixel-edges' and `window-inside-pixel-edges' +return window edges in units of pixels, rather than columns and lines. +++ -** A function's docstring can now hold the function's usage info on -its last line. It should match the regexp "\n\n(fn.*)\\'". +** The new macro `with-selected-window' temporarily switches the +selected window without impacting the order of buffer-list. ---- -** New CCL functions `lookup-character' and `lookup-integer' access -hash tables defined by the Lisp function `define-translation-hash-table'. ++++ +** `select-window' takes an optional second argument `norecord', like +`switch-to-buffer'. +++ -** The new function `minibufferp' returns non-nil if its optional buffer -argument is a minibuffer. If the argument is omitted it defaults to -the current buffer. +** `save-selected-window' now saves and restores the selected window +of every frame. This way, it restores everything that can be changed +by calling `select-window'. +++ -** There is a new Warnings facility; see the functions `warn' -and `display-warning'. +** The function `set-window-buffer' now has an optional third argument +KEEP-MARGINS which will preserve the window's current margin, fringe, +and scroll-bar settings if non-nil. +++ -** The functions all-completions and try-completion now accept lists -of strings as well as hash-tables additionally to alists, obarrays -and functions. Furthermore, the function `test-completion' is now -exported to Lisp. The keys in alists and hash tables may be either -strings or symbols, which are automatically converted with to strings. +** Customizable fringe bitmaps ---- -** When pure storage overflows while dumping, Emacs now prints how -much pure storage it will approximately need. +*** New function 'define-fringe-bitmap' can now be used to create new +fringe bitmaps, as well as change the built-in fringe bitmaps. -+++ -** The new variable `auto-coding-functions' lets you specify functions -to examine a file being visited and deduce the proper coding system -for it. (If the coding system is detected incorrectly for a specific -file, you can put a `coding:' tags to override it.) +To change a built-in bitmap, do (require 'fringe) and use the symbol +identifing the bitmap such as `left-truncation or `continued-line'. ---- -** The new function `merge-coding-systems' fills in unspecified aspects -of one coding system from another coding system. +*** New function 'destroy-fringe-bitmap' may be used to destroy a +previously created bitmap, or restore a built-in bitmap. -+++ -** The variable `safe-local-eval-forms' specifies a list of forms that -are ok to evaluate when they appear in an `eval' local variables -specification. Normally Emacs asks for confirmation before evaluating -such a form, but if the form appears in this list, no confirmation is -needed. +*** New function 'set-fringe-bitmap-face' can now be used to set a +specific face to be used for a specific fringe bitmap. The face is +automatically merged with the `fringe' face, so normally, the face +should only specify the foreground color of the bitmap. ---- -** If a function has a non-nil `safe-local-eval-function' property, -that means it is ok to evaluate some calls to that function when it -appears in an `eval' local variables specification. If the property -is t, then any form calling that function with constant arguments is -ok. If the property is a function or list of functions, they are called -with the form as argument, and if any returns t, the form is ok to call. +*** 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. -If the form is not "ok to call", that means Emacs asks for -confirmation as before. +Format is 'display '(left-fringe BITMAP [FACE]), where BITMAP is a +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 instead of the default `fringe' face. +When specified, FACE is automatically merged with the `fringe' face. + +*** New function `fringe-bitmaps-at-pos' returns the current fringe +bitmaps in the display line at a given buffer position. +++ ** Controlling the default left and right fringe widths. @@ -3753,10 +3457,10 @@ of the currently defined fringe bitmaps. The width of the built-in fringe bitmaps is 8 pixels. +++ -** Per-window fringes settings +** Per-window fringe and scrollbar settings -Windows can now have their own individual fringe widths and position -settings. +*** Windows can now have their own individual fringe widths and +position settings. To control the fringe widths of a window, either set the buffer-local variables `left-fringe-width', `right-fringe-width', or call @@ -3773,10 +3477,7 @@ settings. To make `left-fringe-width', `right-fringe-width', and displaying the buffer in a window, or use `set-window-buffer' to force an update of the display margins. -+++ -** Per-window vertical scroll-bar settings - -Windows can now have their own individual scroll-bar settings +*** Windows can now have their own individual scroll-bar settings controlling the width and position of scroll-bars. To control the scroll-bar of a window, either set the buffer-local @@ -3788,476 +3489,705 @@ the buffer in a window, or use `set-window-buffer' to force an update of the display margins. +++ -** The function `set-window-buffer' now has an optional third argument -KEEP-MARGINS which will preserve the window's current margin, fringe, -and scroll-bar settings if non-nil. +** When using non-toolkit scroll bars with the default width, +the scroll-bar-width frame parameter value is nil. +++ -** 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, -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'). +** Multiple overlay arrows can now be defined and managed via the new +variable `overlay-arrow-variable-list'. It contains a list of +varibles which contain overlay arrow position markers, including +the original `overlay-arrow-position' variable. + +Each variable on this list may have individual `overlay-arrow-string' +and `overlay-arrow-bitmap' properties that specify an overlay arrow +string (for non-window terminals) or fringe bitmap (for window +systems) to display at the corresponding overlay arrow position. +If either property is not set, the default `overlay-arrow-string' or +'overlay-arrow-fringe-bitmap' will be used. +++ -** The new variable `delete-frame-functions' replaces `delete-frame-hook'. -It was renamed to follow the naming conventions for abnormal hooks. The old -name remains available as an alias, but has been marked obsolete. +** New line-height and line-spacing properties for newline characters + +A newline may now have line-height and line-spacing text or overlay +properties that control the height of the corresponding display row. + +If the line-height property value is t, the newline does not +contribute to the height of the display row; instead the height of the +newline glyph is reduced. Also, a line-spacing property on this +newline is ignored. This can be used to tile small images or image +slices without adding blank areas between the images. + +If the line-height property value is a positive integer, the value +specifies the minimum line height in pixels. If necessary, the line +height it increased by increasing the line's ascent. + +If the line-height property value is a float, the minimum line height +is calculated by multiplying the default frame line height by the +given value. + +If the line-height property value is a cons (FACE . RATIO), the +minimum line height is calculated as RATIO * height of named FACE. +RATIO is int or float. If FACE is t, it specifies the current face. + +If the line-height property value is a cons (nil . RATIO), the line +height is calculated as RATIO * actual height of the line's contents. + +If the line-height value is a cons (HEIGHT . TOTAL), HEIGHT specifies +the line height as described above, while TOTAL is any of the forms +described above and specifies the total height of the line, causing a +varying number of pixels to be inserted after the line to make it line +exactly that many pixels high. + +If the line-spacing property value is an positive integer, the value +is used as additional pixels to insert after the display line; this +overrides the default frame line-spacing and any buffer local value of +the line-spacing variable. + +If the line-spacing property may be a float or cons, the line spacing +is calculated as specified above for the line-height property. +++ -** The `read-file-name' function now takes an additional argument which -specifies a predicate which the file name read must satify. The -new variable `read-file-name-predicate' contains the predicate argument -while reading the file name from the minibuffer; the predicate in this -variable is used by read-file-name-internal to filter the completion list. +** 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. ---- -** The new variable `read-file-name-function' can be used by lisp code -to override the internal read-file-name function. ++++ +** Enhancements to stretch display properties + +The display property stretch specification form `(space PROPS)', where +PROPS is a property list now allows pixel based width and height +specifications, as well as enhanced horizontal text alignment. + +The value of these properties can now be a (primitive) expression +which is evaluated during redisplay. The following expressions +are supported: + +EXPR ::= NUM | (NUM) | UNIT | ELEM | POS | IMAGE | FORM +NUM ::= INTEGER | FLOAT | SYMBOL +UNIT ::= in | mm | cm | width | height +ELEM ::= left-fringe | right-fringe | left-margin | right-margin + | scroll-bar | text +POS ::= left | center | right +FORM ::= (NUM . EXPR) | (OP EXPR ...) +OP ::= + | - + +The form `NUM' specifies a fractional width or height of the default +frame font size. The form `(NUM)' specifies an absolute number of +pixels. If a symbol is specified, its buffer-local variable binding +is used. The `in', `mm', and `cm' units specifies the number of +pixels per inch, milli-meter, and centi-meter, resp. The `width' and +`height' units correspond to the width and height of the current face +font. An image specification corresponds to the width or height of +the image. + +The `left-fringe', `right-fringe', `left-margin', `right-margin', +`scroll-bar', and `text' elements specify to the width of the +corresponding area of the window. + +The `left', `center', and `right' positions can be used with :align-to +to specify a position relative to the left edge, center, or right edge +of the text area. One of the above window elements (except `text') +can also be used with :align-to to specify that the position is +relative to the left edge of the given area. Once the base offset for +a relative position has been set (by the first occurrence of one of +these symbols), further occurences of these symbols are interpreted as +the width of the area. + +For example, to align to the center of the left-margin, use + :align-to (+ left-margin (0.5 . left-margin)) + +If no specific base offset is set for alignment, it is always relative +to the left edge of the text area. For example, :align-to 0 in a +header-line aligns with the first text column in the text area. + +The value of the form `(NUM . EXPR)' is the value of NUM multiplied by +the value of the expression EXPR. For example, (2 . in) specifies a +width of 2 inches, while (0.5 . IMAGE) specifies half the width (or +height) of the specified image. + +The form `(+ EXPR ...)' adds up the value of the expressions. +The form `(- EXPR ...)' negates or subtracts the value of the expressions. + ++++ +** Support for displaying image slices + +*** New display property (slice X Y WIDTH HEIGHT) may be used with +an image property to display only a specific slice of the image. + +*** Function insert-image has new optional fourth arg to +specify image slice (X Y WIDTH HEIGHT). + +*** New function insert-sliced-image inserts a given image as a +specified number of evenly sized slices (rows x columns). + ++++ +** 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). +An AREA is specified as either a rectangle, a circle, or a polygon: +A rectangle is a cons (rect . ((x0 . y0) . (x1 . y1))) specifying the +pixel coordinates of the upper left and bottom right corners. +A circle is a cons (circle . ((x0 . y0) . r)) specifying the center +and the radius of the circle; r may be a float or integer. +A polygon is a cons (poly . [x0 y0 x1 y1 ...]) where each pair in the +vector describes one corner in the polygon. + +When the mouse pointer is above a hot-spot area of an image, the +PLIST of that hot-spot is consulted; if it contains a `help-echo' +property it defines a tool-tip for the hot-spot, and if it contains +a `pointer' property, it defines the shape of the mouse cursor when +it is over the hot-spot. See the variable 'void-area-text-pointer' +for possible pointer shapes. + +When you click the mouse when the mouse pointer is over a hot-spot, +an event is composed by combining the ID of the hot-spot with the +mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'. + ++++ (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. + ++++ +** Lisp code can now test if a given buffer position is inside a +clickable link with the new function `mouse-on-link-p'. This is the +function used by the new `mouse-1-click-follows-link' functionality. + ++++ +** The mouse pointer shape over ordinary text or images may now be +controlled/overriden via the `pointer' text property. + +** Mouse event enhancements: + ++++ +*** Mouse clicks on fringes now generates left-fringe or right-fringes +events, rather than a text area click event. + ++++ +*** Mouse clicks in the left and right marginal areas now includes a +sensible buffer position corresponding to the first character in the +corresponding text row. + ++++ +*** Function `mouse-set-point' now works for events outside text area. + ++++ +*** Mouse events now includes buffer position for all event types. + ++++ +*** `posn-point' now returns buffer position for non-text area events. + ++++ +*** New function `posn-area' returns window area clicked on (nil means +text area). + ++++ +*** Mouse events include actual glyph column and row for all event types. + ++++ +*** New function `posn-actual-col-row' returns actual glyph coordinates. +++ -** 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. +*** Mouse events may now include image object in addition to string object. +++ -** The new function `read-directory-name' can be used instead of -`read-file-name' to read a directory name; when used, completion -will only show directories. +*** Mouse events include relative x and y pixel coordinates relative to +the top left corner of the object (image or character) clicked on. +++ -** 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. +*** Mouse events include the pixel width and height of the object +(image or character) clicked on. ---- -** When a Lisp file uses CL functions at run-time, compiling the file -now issues warnings about these calls, unless the file performs -(require 'cl) when loaded. ++++ +*** New functions 'posn-object', 'posn-object-x-y', and +'posn-object-width-height' return the image or string object of a mouse +click, the x and y pixel coordinates relative to the top left corner +of that object, and the total width and height of that object. +++ -** The `defmacro' form may contain declarations specifying how to -indent the macro in Lisp mode and how to debug it with Edebug. The -syntax of defmacro has been extended to +** At the end of a command, point moves out from within invisible +text, in the same way it moves out from within text covered by an +image or composition property. - (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...) +This makes it generally unnecessary to mark invisible text as intangible. +This is particularly good because the intangible property often has +unexpected side-effects since the property applies to everything +(including `goto-char', ...) whereas this new code is only run after +post-command-hook and thus does not care about intermediate states. -DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The -declaration specifiers supported are: ++++ +** 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. -(indent INDENT) - Set NAME's `lisp-indent-function' property to INDENT. ++++ +** The display space :width and :align-to text properties are now +supported on text terminals. -(edebug DEBUG) - Set NAME's `edebug-form-spec' property to DEBUG. (This is - equivalent to writing a `def-edebug-spec' for the macro. ++++ +** Arguments for remove-overlays are now optional, so that you can +remove all overlays in the buffer by just calling (remove-overlay). +++ -** Interactive commands can be remapped through keymaps. +** New variable char-property-alias-alist. -This is an alternative to using defadvice or substitute-key-definition -to modify the behavior of a key binding using the normal keymap -binding and lookup functionality. +This variable allows you to create alternative names for text +properties. It works at the same level as `default-text-properties', +although it applies to overlays as well. This variable was introduced +to implement the `font-lock-face' property. -When a key sequence is bound to a command, and that command is -remapped to another command, that command is run instead of the -original command. ++++ +** New function `get-char-property-and-overlay' accepts the same +arguments as `get-char-property' and returns a cons whose car is the +return value of `get-char-property' called with those arguments and +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. -Example: -Suppose that minor mode my-mode has defined the commands -my-kill-line and my-kill-word, and it wants C-k (and any other key -bound to kill-line) to run the command my-kill-line instead of -kill-line, and likewise it wants to run my-kill-word instead of -kill-word. ++++ +** The new frame parameter `tty-color-mode' specifies the mode to use +for color support on character terminal frames. Its value can be a +number of colors to support, or a symbol. See the Emacs Lisp +Reference manual for more detailed documentation. -Instead of rebinding C-k and the other keys in the minor mode map, -command remapping allows you to directly map kill-line into -my-kill-line and kill-word into my-kill-word through the minor mode -map using define-key: ++++ +** The 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 +foreground and background colors accordingly so that they look best on +a terminal that supports at least this many colors. This is now the +preferred method for defining default faces in a way that makes a good +use of the capabilities of the display. - (define-key my-mode-map [remap kill-line] 'my-kill-line) - (define-key my-mode-map [remap kill-word] 'my-kill-word) ++++ +** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able +to display CHAR. More precisely, if the selected frame's fontset has +a font to display the character set that CHAR belongs to. -Now, when my-mode is enabled, and the user enters C-k or M-d, -the commands my-kill-line and my-kill-word are run. +Fontsets can specify a font on a per-character basis; when the fontset +does that, this value may not be accurate. -Notice that only one level of remapping is supported. In the above -example, this means that if my-kill-line is remapped to other-kill, -then C-k still runs my-kill-line. ++++ +** New function display-supports-face-attributes-p may be used to test +whether a given set of face attributes is actually displayable. -The following changes have been made to provide command remapping: +A new predicate `supports' has also been added to the `defface' face +specification language, which can be used to do this test for faces +defined with defface. -- Command remappings are defined using `define-key' with a prefix-key - `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD - to definition DEF in keymap MAP. The definition is not limited to - another command; it can be anything accepted for a normal binding. +--- +** The special treatment of faces whose names are of the form `fg:COLOR' +or `bg:COLOR' has been removed. Lisp programs should use the +`defface' facility for defining faces with specific colors, or use +the feature of specifying the face attributes :foreground and :background +directly in the `face' property instead of using a named face. -- The new function `command-remapping' returns the binding for a - remapped command in the current keymaps, or nil if not remapped. ++++ +** 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). -- key-binding now remaps interactive commands unless the optional - third argument NO-REMAP is non-nil. ++++ +** The variable `face-font-rescale-alist' specifies how much larger +(or smaller) font we should use. For instance, if the value is +'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10 +point, we actually use a font of 13 point if the font matches +SOME-FONTNAME-PATTERN. -- where-is-internal now returns nil for a remapped command (e.g. - kill-line if my-mode is enabled), and the actual key binding for - the command it is remapped to (e.g. C-k for my-kill-line). - It also has a new optional fifth argument, NO-REMAP, which inhibits - remapping if non-nil (e.g. it returns C-k for kill-line and - for my-kill-line). +--- +** `set-fontset-font', `fontset-info', `fontset-font' now operate on +the default fontset if the argument NAME is nil.. -- The new variable `this-original-command' contains the original - command before remapping. It is equal to `this-command' when the - command was not remapped. +--- +** 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). +++ -** New variable emulation-mode-map-alists. +** face-attribute, face-foreground, face-background, and face-stipple now +accept a new optional argument, INHERIT, which controls how face +inheritance is used when determining the value of a face attribute. -Lisp packages using many minor mode keymaps can now maintain their own -keymap alist separate from minor-mode-map-alist by adding their keymap -alist to this list. ++++ +** New functions face-attribute-relative-p and merge-face-attribute +help with handling relative face attributes. +++ -** Atomic change groups. +** 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. -To perform some changes in the current buffer "atomically" so that -they either all succeed or are all undone, use `atomic-change-group' -around the code that makes changes. For instance: ++++ +** New standard font-lock face `font-lock-preprocessor-face'. - (atomic-change-group - (insert foo) - (delete-region x y)) ++++ +** New special text property `font-lock-face'. -If an error (or other nonlocal exit) occurs inside the body of -`atomic-change-group', it unmakes all the changes in that buffer that -were during the execution of the body. The change group has no effect -on any other buffers--any such changes remain. +This property acts like the `face' property, but it is controlled by +M-x font-lock-mode. It is not, strictly speaking, a builtin text +property. Instead, it is implemented inside font-core.el, using the +new variable `char-property-alias-alist'. -If you need something more sophisticated, you can directly call the -lower-level functions that `atomic-change-group' uses. Here is how. +--- +** jit-lock obeys a new text-property `jit-lock-defer-multiline'. +If a piece of text with that property gets contextually refontified +(see jit-lock-defer-contextually), then all of that text will +be refontified. This is useful when the syntax of a textual element +depends on text several lines further down (and when font-lock-multiline +is not appropriate to solve that problem). For example in Perl: -To set up a change group for one buffer, call `prepare-change-group'. -Specify the buffer as argument; it defaults to the current buffer. -This function returns a "handle" for the change group. You must save -the handle to activate the change group and then finish it. + s{ + foo + }{ + bar + }e -Before you change the buffer again, you must activate the change -group. Pass the handle to `activate-change-group' afterward to -do this. +Adding/removing the last `e' changes the `bar' from being a piece of +text to being a piece of code, so you'd put a jit-lock-defer-multiline +property over the second half of the command to force (deferred) +refontification of `bar' whenever the `e' is added/removed. -After you make the changes, you must finish the change group. You can -either accept the changes or cancel them all. Call -`accept-change-group' to accept the changes in the group as final; -call `cancel-change-group' to undo them all. ++++ +** font-lock can manage arbitrary text-properties beside `face'. +*** the FACENAME returned in font-lock-keywords can be a list +of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set +other properties than `face'. +*** font-lock-extra-managed-props can be set to make sure those extra +properties are automatically cleaned up by font-lock. -You should use `unwind-protect' to make sure the group is always -finished. The call to `activate-change-group' should be inside the -`unwind-protect', in case the user types C-g just after it runs. -(This is one reason why `prepare-change-group' and -`activate-change-group' are separate functions.) Once you finish the -group, don't use the handle again--don't try to finish the same group -twice. +--- +** The precedence of file-name-handlers has been changed. +Instead of blindly choosing the first handler that matches, +find-file-name-handler now gives precedence to a file-name handler +that matches near the end of the file name. More specifically, the +handler whose (match-beginning 0) is the largest is chosen. +In case of ties, the old "first matched" rule applies. -To make a multibuffer change group, call `prepare-change-group' once -for each buffer you want to cover, then use `nconc' to combine the -returned values, like this: ++++ +** A file name handler can declare which operations it handles. - (nconc (prepare-change-group buffer-1) - (prepare-change-group buffer-2)) +You do this by putting an `operation' property on the handler name +symbol. The property value should be a list of the operations that +the handler really handles. It won't be called for any other +operations. -You can then activate the multibuffer change group with a single call -to `activate-change-group', and finish it with a single call to -`accept-change-group' or `cancel-change-group'. +This is useful for autoloaded handlers, to prevent them from being +autoloaded when not really necessary. -Nested use of several change groups for the same buffer works as you -would expect. Non-nested use of change groups for the same buffer -will lead to undesirable results, so don't let it happen; the first -change group you start for any given buffer should be the last one -finished. ++++ +** `set-auto-mode' now gives the interpreter magic line (if present) +precedence over the file name. Likewise an ) + (if (boundp 'foo) form +won't produce a warning if it's not defined as a function, and in the +second case, using `foo' as a variable won't produce a warning if it's +unbound. The test must be in exactly one of the above forms (after +macro expansion), but such tests may be nested. Note that `when' and +`unless' expand to `if', but `cond' doesn't. -This function creates a network server process for a TCP service. -When a client connects to the specified service, a new subprocess -is created to handle the new connection, and the sentinel function -is called for the new process. +*** `(featurep 'xemacs)' is treated by the compiler as nil. This +helps to avoid noisy compiler warnings in code meant to run under both +Emacs and XEmacs and may sometimes make the result significantly more +efficient. Since byte code from recent versions of XEmacs won't +generally run in Emacs and vice versa, this optimization doesn't lose +you anything. + +*** The local variable `no-byte-compile' in elisp files is now obeyed. + +--- +** When a Lisp file uses CL functions at run-time, compiling the file +now issues warnings about these calls, unless the file performs +(require 'cl) when loaded. + ++++ +** New function unsafep returns nil if the given Lisp form can't possibly +do anything dangerous; otherwise it returns a reason why the form might be +unsafe (calls dangerous function, alters global variable, etc). -*** New functions process-datagram-address and set-process-datagram-address. ++++ +** There is a new Warnings facility; see the functions `warn' +and `display-warning'. -These functions are used with datagram-based network processes to get -and set the current address of the remote partner. +--- +** VC changes for backends: +*** (vc-switches BACKEND OPERATION) is a new function for use by backends. +*** The new `find-version' backend function replaces the `destfile' +parameter of the `checkout' backend function. +Old code still works thanks to a default `find-version' behavior that +uses the old `destfile' parameter. -*** New function format-network-address. ++++ +** Already true in Emacs 21.1, but not emphasized clearly enough: -This function reformats the lisp representation of a network address -to a printable string. For example, an IP address A.B.C.D and port -number P is represented as a five element vector [A B C D P], and the -printable string returned for this vector is "A.B.C.D:P". See the doc -string for other formatting options. +Multibyte buffers can now faithfully record all 256 character codes +from 0 to 255. As a result, most of the past reasons to use unibyte +buffers no longer exist. We only know of three reasons to use them +now: -*** By default, the function process-contact still returns (HOST SERVICE) -for a network process. Using the new optional KEY arg, the complete list -of network process properties or a specific property can be selected. +1. If you prefer to use unibyte text all of the time. -Using :local and :remote as the KEY, the address of the local or -remote end-point is returned. An Inet address is represented as a 5 -element vector, where the first 4 elements contain the IP address and -the fifth is the port number. +2. For reading files into temporary buffers, when you want to avoid +the time it takes to convert the format. -*** Network processes can now be stopped and restarted with -`stop-process' and `continue-process'. For a server process, no -connections are accepted in the stopped state. For a client process, -no input is received in the stopped state. +3. For binary files where format conversion would be pointless and +wasteful. -*** New function network-interface-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. -This function returns a list of network interface names and their -current network addresses. ++++ +** The new variable `auto-coding-functions' lets you specify functions +to examine a file being visited and deduce the proper coding system +for it. (If the coding system is detected incorrectly for a specific +file, you can put a `coding:' tags to override it.) -*** New function network-interface-info. +--- +** The new function `merge-coding-systems' fills in unspecified aspects +of one coding system from another coding system. -This function returns the network address, hardware address, current -status, and other information about a specific network interface. +--- +** New coding system property `mime-text-unsuitable' indicates that +the coding system's `mime-charset' is not suitable for MIME text +parts, e.g. utf-16. +++ -** New function copy-tree. +** New function `decode-coding-inserted-region' decodes a region as if +it is read from a file without decoding. +++ -** New function substring-no-properties. +** Function `translate-region' accepts also a char-table as TABLE +argument. +++ -** New function minibuffer-selected-window. +** The new translation table `translation-table-for-input' +is used for customizing self-insertion. The character to +be inserted is translated through it. -+++ -** New function `call-process-shell-command'. +--- +** New CCL functions `lookup-character' and `lookup-integer' access +hash tables defined by the Lisp function `define-translation-hash-table'. +++ -** New function `process-file'. - -This is similar to `call-process', but obeys file handlers. The file -handler is chosen based on default-directory. +** The flags, width, and precision options for %-specifications in function +`format' are now documented. Some flags that were accepted but not +implemented (such as "*") are no longer accepted. --- -** The dummy function keys made by easymenu -are now always lower case. If you specify the -menu item name "Ada", for instance, it uses `ada' -as the "key" bound by that key binding. +** New function `redirect-debugging-output' can be used to redirect +debugging output on the stderr file handle to a file. -This is relevant only if Lisp code looks for -the bindings that were made with easymenu. ++++ +** `makehash' is now obsolete. Use `make-hash-table' instead. +++ -** The function `commandp' takes an additional optional -argument. If it is non-nil, then `commandp' checks -for a function that could be called with `call-interactively', -and does not return t for keyboard macros. +** The macro `with-syntax-table' does not copy the table any more. ---- -** master-mode.el implements a minor mode for scrolling a slave -buffer without leaving your current buffer, the master buffer. ++++ +** New variables `gc-elapsed' and `gcs-done' provide extra information +on garbage collection. -It can be used by sql.el, for example: the SQL buffer is the master -and its SQLi buffer is the slave. This allows you to scroll the SQLi -buffer containing the output from the SQL buffer containing the -commands. ++++ +** New function `locale-info' accesses locale information. -This is how to use sql.el and master.el together: the variable -sql-buffer contains the slave buffer. It is a local variable in the -SQL buffer. ++++ +** The new variable `print-continuous-numbering', when non-nil, says +that successive calls to print functions should use the same +numberings for circular structure references. This is only relevant +when `print-circle' is non-nil. -(add-hook 'sql-mode-hook - (function (lambda () - (master-mode t) - (master-set-slave sql-buffer)))) -(add-hook 'sql-set-sqli-hook - (function (lambda () - (master-set-slave sql-buffer)))) +When you bind `print-continuous-numbering' to t, you should +also bind `print-number-table' to nil. + +--- +** When pure storage overflows while dumping, Emacs now prints how +much pure storage it will approximately need. +++ ** File local variables. @@ -4266,34 +4196,47 @@ A file local variables list cannot specify a string with text properties--any specified text properties are discarded. +++ -** New function window-body-height. - -This is like window-height but does not count the mode line -or the header line. +** The variable `safe-local-eval-forms' specifies a list of forms that +are ok to evaluate when they appear in an `eval' local variables +specification. Normally Emacs asks for confirmation before evaluating +such a form, but if the form appears in this list, no confirmation is +needed. -+++ -** New function format-mode-line. +--- +** If a function has a non-nil `safe-local-eval-function' property, +that means it is ok to evaluate some calls to that function when it +appears in an `eval' local variables specification. If the property +is t, then any form calling that function with constant arguments is +ok. If the property is a function or list of functions, they are called +with the form as argument, and if any returns t, the form is ok to call. -This returns the mode-line or header-line of the selected (or a -specified) window as a string with or without text properties. +If the form is not "ok to call", that means Emacs asks for +confirmation as before. +++ -** Functions `get' and `plist-get' no longer signals an error for -a malformed property list. They also detect cyclic lists. +** 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, +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'). +++ -** New functions `lax-plist-get' and `lax-plist-put'. - -These functions are like `plist-get' and `plist-put' except that they -compare the property name using `equal' rather than `eq'. +** The new variable `delete-frame-functions' replaces `delete-frame-hook'. +It was renamed to follow the naming conventions for abnormal hooks. The old +name remains available as an alias, but has been marked obsolete. +++ -** New function `tool-bar-local-item-from-menu' +** 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. -The `tool-bar-add-item-from-menu' must not be used (as previously -recommended) for making entries in the tool bar for local keymaps. -Instead, use the function `tool-bar-local-item-from-menu', which lets -you specify the map to use as an argument. ++++ +** Functions `get' and `plist-get' no longer signals an error for +a malformed property list. They also detect cyclic lists. +++ ** The function `atan' now accepts an optional second argument. @@ -4303,19 +4246,10 @@ angle in radians between the vector [X, Y] and the X axis. (This is equivalent to the standard C library function `atan2'.) +++ -** You can now make a window as short as one line. - -A window that is just one line tall does not display either a mode -line or a header line, even if the variables `mode-line-format' and -`header-line-format' call for them. A window that is two lines tall -cannot display both a mode line and a header line at once; if the -variables call for both, only the mode line actually appears. +** New function format-mode-line. -+++ -** The new frame parameter `tty-color-mode' specifies the mode to use -for color support on character terminal frames. Its value can be a -number of colors to support, or a symbol. See the Emacs Lisp -Reference manual for more detailed documentation. +This returns the mode-line or header-line of the selected (or a +specified) window as a string with or without text properties. +++ ** The new mode-line construct `(:propertize ELT PROPS...)' can be @@ -4335,91 +4269,18 @@ indentation of keywords and forms in loop forms. --- ** Indentation of backquoted forms has been made customizable in the -cl-indent package. See the new user option `lisp-backquote-indentation'. - -+++ -** Already true in Emacs 21.1, but not emphasized clearly enough: - -Multibyte buffers can now faithfully record all 256 character codes -from 0 to 255. As a result, most of the past reasons to use unibyte -buffers no longer exist. We only know of three reasons to use them -now: - -1. If you prefer to use unibyte text all of the time. - -2. For reading files into temporary buffers, when you want to avoid -the time it takes to convert the format. - -3. For binary files where format conversion would be pointless and -wasteful. - -+++ -** If text has a `keymap' property, that keymap takes precedence -over minor mode keymaps. - -+++ -** A hex escape in a string forces the string to be multibyte. -An octal escape makes it unibyte. - -+++ -** At the end of a command, point moves out from within invisible -text, in the same way it moves out from within text covered by an -image or composition property. - -This makes it generally unnecessary to mark invisible text as intangible. -This is particularly good because the intangible property often has -unexpected side-effects since the property applies to everything -(including `goto-char', ...) whereas this new code is only run after -post-command-hook and thus does not care about intermediate states. - -+++ -** field-beginning and field-end now accept an additional optional -argument, LIMIT. - -+++ -** define-abbrev now accepts an optional argument SYSTEM-FLAG. If -non-nil, this marks the abbrev as a "system" abbrev, which means that -it won't be stored in the user's abbrevs file if he saves the abbrevs. -Major modes that predefine some abbrevs should always specify this -flag. - ---- -** Support for Mocklisp has been removed. - ---- -** The function insert-string is now obsolete. - ---- -** The precedence of file-name-handlers has been changed. -Instead of blindly choosing the first handler that matches, -find-file-name-handler now gives precedence to a file-name handler -that matches near the end of the file name. More specifically, the -handler whose (match-beginning 0) is the largest is chosen. -In case of ties, the old "first matched" rule applies. - ---- -** Dense keymaps now handle inheritance correctly. -Previously a dense keymap would hide all of the simple-char key -bindings of the parent keymap. - ---- -** jit-lock obeys a new text-property `jit-lock-defer-multiline'. -If a piece of text with that property gets contextually refontified -(see jit-lock-defer-contextually), then all of that text will -be refontified. This is useful when the syntax of a textual element -depends on text several lines further down (and when font-lock-multiline -is not appropriate to solve that problem). For example in Perl: +cl-indent package. See the new user option `lisp-backquote-indentation'. - s{ - foo - }{ - bar - }e ++++ +** field-beginning and field-end now accept an additional optional +argument, LIMIT. -Adding/removing the last `e' changes the `bar' from being a piece of -text to being a piece of code, so you'd put a jit-lock-defer-multiline -property over the second half of the command to force (deferred) -refontification of `bar' whenever the `e' is added/removed. ++++ +** define-abbrev now accepts an optional argument SYSTEM-FLAG. If +non-nil, this marks the abbrev as a "system" abbrev, which means that +it won't be stored in the user's abbrevs file if he saves the abbrevs. +Major modes that predefine some abbrevs should always specify this +flag. --- ** describe-vector now takes a second argument `describer' which is @@ -4429,169 +4290,226 @@ called to print the entries' values. It defaults to `princ'. ** defcustom and other custom declarations now use a default group (the last prior group defined in the same file) when no :group was given. +--- +** The new customization type `float' specifies numbers with floating +point (no integers are allowed). + +++ ** emacsserver now runs pre-command-hook and post-command-hook when it receives a request from emacsclient. --- -** The variable `recursive-load-depth-limit' has been deleted. -Emacs now signals an error if the same file is loaded with more -than 3 levels of nesting. +** New function `text-clone-create'. Text clones are chunks of text +that are kept identical by transparently propagating changes from one +clone to the other. ---- -** If a major mode function has a non-nil `no-clone-indirect' -property, `clone-indirect-buffer' signals an error if you use -it in that buffer. ++++ +** Functions `user-uid' and `user-real-uid' now return floats if the +user UID doesn't fit in a Lisp integer. Function `user-full-name' +accepts a float as UID parameter. ---- -** In `replace-match', the replacement text no longer inherits -properties from surrounding text. ++++ +** New vars `exec-suffixes' and `load-suffixes' used when +searching for an executable resp. an elisp file. +++ -** 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. +** Functions from `post-gc-hook' are run at the end of garbage +collection. The hook is run with GC inhibited, so use it with care. +++ -** New function `buffer-local-value'. +** The variables most-positive-fixnum and most-negative-fixnum +hold the largest and smallest possible integer values. -This function returns the buffer-local binding of VARIABLE (a symbol) -in buffer BUFFER. If VARIABLE does not have a buffer-local binding in -buffer BUFFER, it returns the default value of VARIABLE instead. +--- +** On MS Windows, locale-coding-system is used to interact with the OS. +The Windows specific variable w32-system-coding-system, which was +formerly used for that purpose is now an alias for locale-coding-system. --- -** New function `text-clone-create'. Text clones are chunks of text -that are kept identical by transparently propagating changes from one -clone to the other. +** New function x-send-client-message sends a client message when +running under X. -+++ -** font-lock can manage arbitrary text-properties beside `face'. -*** the FACENAME returned in font-lock-keywords can be a list -of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set -other properties than `face'. -*** font-lock-extra-managed-props can be set to make sure those extra -properties are automatically cleaned up by font-lock. +--- +** easy-mmode-define-global-mode has been renamed to +define-global-minor-mode. The old name remains as an alias. --- -** The special treatment of faces whose names are of the form `fg:COLOR' -or `bg:COLOR' has been removed. Lisp programs should use the -`defface' facility for defining faces with specific colors, or use -the feature of specifying the face attributes :foreground and :background -directly in the `face' property instead of using a named face. +** 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. + +--- +** The dummy function keys made by easymenu are now always lower case. +If you specify the menu item name "Ada", for instance, it uses `ada' +as the "key" bound by that key binding. + +This is relevant only if Lisp code looks for the bindings that were +made with easymenu. + +--- +** `easy-menu-define' now allows you to use nil for the symbol name +if you don't need to give the menu a name. If you install the menu +into other keymaps right away (MAPS is non-nil), it usually doesn't +need to have a name. + +** New functions, macros, and commands: +++ -** The new function `run-mode-hooks' and the new macro `delay-mode-hooks' -are used by define-derived-mode to make sure the mode hook for the -parent mode is run at the end of the child mode. +*** The new function `assoc-string' replaces `assoc-ignore-case' and +`assoc-ignore-representation', which are still available, but have +been declared obsolete. +++ -** define-minor-mode now accepts arbitrary additional keyword arguments -and simply passes them to defcustom, if applicable. +*** The new function `buffer-local-value' returns the buffer-local +binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not +have a buffer-local binding in buffer BUFFER, it returns the default +value of VARIABLE instead. +++ -** define-derived-mode by default creates a new empty abbrev table. -It does not copy abbrevs from the parent mode's abbrev table. +*** 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 copy-abbrev-table returns a new abbrev table that +is a copy of a given abbrev table. +++ -** `provide' and `featurep' now accept an optional second argument -to test/provide subfeatures. Also `provide' now checks `after-load-alist' -and runs any code associated with the provided feature. +*** New function copy-tree makes a copy of a tree, recursively copying +both cars and cdrs. +++ -** Functions `file-name-sans-extension' and `file-name-extension' now -ignore the leading dots in file names, so that file names such as -`.emacs' are treated as extensionless. +*** New function `delete-dups' destructively removes `equal' +duplicates from a list. Of several `equal' occurrences of an element +in the list, the first one is kept. +++ -** Functions `user-uid' and `user-real-uid' now return floats if the -user UID doesn't fit in a Lisp integer. Function `user-full-name' -accepts a float as UID parameter. +*** The new function `filter-buffer-substring' extracts a buffer +substring, passes it through a set of filter functions, and returns +the filtered substring. It is used instead of `buffer-substring' or +`delete-and-extract-region' when copying text into a user-accessible +data structure, like the kill-ring, X clipboard, or a register. The +list of filter function is specified by the new variable +`buffer-substring-filters'. For example, Longlines mode uses +`buffer-substring-filters' to remove soft newlines from the copied +text. ---- -** `define-key-after' now accepts keys longer than 1. ++++ +*** New functions frame-current-scroll-bars and window-current-scroll-bars. + +These functions return the current locations of the vertical and +horizontal scroll bars in a frame or window. +++ -** The local variable `no-byte-compile' in elisp files is now obeyed. +*** The new primitive `get-internal-run-time' returns the processor +run time used by Emacs since start-up. +++ -** The Emacs Lisp byte-compiler now displays the actual line and -character position of errors, where possible. Additionally, the form -of its warning and error messages have been brought more in line with -the output of other GNU tools. +*** The new function insert-buffer-substring-as-yank works like +`insert-buffer-substring', but removes the text properties in the +`yank-excluded-properties' list. +++ -** New functions `keymap-prompt' and `current-active-maps'. +*** The new function insert-buffer-substring-no-properties is like +insert-buffer-substring, but removes all text properties from the +inserted substring. ---- -** New function `describe-buffer-bindings'. ++++ +*** The new functions `lax-plist-get' and `lax-plist-put' are like +`plist-get' and `plist-put', except that they compare the property +name using `equal' rather than `eq'. +++ -** New vars `exec-suffixes' and `load-suffixes' used when -searching for an executable resp. an elisp file. +*** New function `line-number-at-pos' returns the line number of the +current line in the current buffer, or if optional buffer position is +given, line number of corresponding line in current buffer. +++ -** Variable aliases have been implemented: +*** 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. -*** defvaralias ALIAS-VAR BASE-VAR [DOCSTRING] ++++ +*** New function `macroexpand-all' expands all macros in a form. +It is similar to the Common-Lisp function of the same name. +One difference is that it guarantees to return the original argument +if no expansion is done, which may be tested using `eq'. -This function defines the symbol ALIAS-VAR as a variable alias for -symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR -returns the value of BASE-VAR, and changing the value of ALIAS-VAR -changes the value of BASE-VAR. +*** The new function `minibufferp' returns non-nil if its optional +buffer argument is a minibuffer. If the argument is omitted, it +defaults to the current buffer. -DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has -the same documentation as BASE-VAR. ++++ +*** New function minibuffer-selected-window returns the window which +was selected when entering the minibuffer. -*** indirect-variable VARIABLE ++++ +*** The new function `modify-all-frames-parameters' modifies parameters +for all (existing and future) frames. -This function returns the variable at the end of the chain of aliases -of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not -defined as an alias, the function returns VARIABLE. ++++ +*** 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. -It might be noteworthy that variables aliases work for all kinds of -variables, including buffer-local and frame-local variables. +--- +*** New function quail-find-key returns a list of keys to type in the +current input method to input a character. +++ -** Functions from `post-gc-hook' are run at the end of garbage -collection. The hook is run with GC inhibited, so use it with care. +*** The new function `rassq-delete-all' deletes all elements from an +alist whose cdr is `eq' to a specified value. +++ -** If the second argument to `copy-file' is the name of a directory, -the file is copied to that directory instead of signaling an error. +*** The new function remove-list-of-text-properties is almost the same +as `remove-text-properties'. The only difference is that it takes a +list of property names as argument rather than a property list. +++ -** The variables most-positive-fixnum and most-negative-fixnum -hold the largest and smallest possible integer values. +*** The new primitive `set-file-times' sets a file's access and +modification times. Magic file name handlers can handle this +operation. ---- -** On MS Windows, locale-coding-system is used to interact with the OS. -The Windows specific variable w32-system-coding-system, which was -formerly used for that purpose is now an alias for locale-coding-system. ++++ +*** New function substring-no-properties returns a substring without +text properties. ---- -** Functions y-or-n-p, read-char, read-key-sequence and the like, that -display a prompt but don't use the minibuffer, now display the prompt -using the text properties (esp. the face) of the prompt string. ++++ +*** 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. ---- -** New function x-send-client-message sends a client message when -running under X. ++++ +*** `syntax-class' extracts the class of a syntax code (as returned +by syntax-after). +++ -** Arguments for remove-overlays are now optional, so that you can remove -all overlays in the buffer by just calling (remove-overlay). +*** New function `tool-bar-local-item-from-menu' -** New packages: +The `tool-bar-add-item-from-menu' must not be used (as previously +recommended) for making entries in the tool bar for local keymaps. +Instead, use the function `tool-bar-local-item-from-menu', which lets +you specify the map to use as an argument. +++ -*** The new package gdb-ui.el provides an enhanced graphical interface to -GDB. You can interact with GDB through the GUD buffer in the usual way, but -there are also further buffers which control the execution and describe the -state of your program. It separates the input/output of your program from -that of GDB and watches expressions in the speedbar. It also uses features of -Emacs 21 such as the display margin for breakpoints, and the toolbar. +*** New function window-body-height. +This is like window-height but does not count the mode line +or the header line. -Use M-x gdba to start GDB-UI. ++++ +*** (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. + ++++ +*** 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. + +** New packages: *** The new package syntax.el provides an efficient way to find the current syntactic context (as returned by parse-partial-sexp). @@ -4611,6 +4529,54 @@ implemented by widget.el, and can be used by lisp code that doesn't require the full power of widgets. Emacs uses buttons for such things as help and apropos buffers. +--- +*** master-mode.el implements a minor mode for scrolling a slave +buffer without leaving your current buffer, the master buffer. + +It can be used by sql.el, for example: the SQL buffer is the master +and its SQLi buffer is the slave. This allows you to scroll the SQLi +buffer containing the output from the SQL buffer containing the +commands. + +This is how to use sql.el and master.el together: the variable +sql-buffer contains the slave buffer. It is a local variable in the +SQL buffer. + +(add-hook 'sql-mode-hook + (function (lambda () + (master-mode t) + (master-set-slave sql-buffer)))) +(add-hook 'sql-set-sqli-hook + (function (lambda () + (master-set-slave sql-buffer)))) + ++++ +*** New Lisp library testcover.el works with edebug to help you determine +whether you've tested all your Lisp code. Function testcover-start +instruments all functions in a given file. Then test your code. Function +testcover-mark-all adds overlay "splotches" to the Lisp file's buffer to +show where coverage is lacking. Command testcover-next-mark (bind it to +a key!) will move point forward to the next spot that has a splotch. + +Normally, a red splotch indicates the form was never completely +evaluated; a brown splotch means it always evaluated to the same +value. The red splotches are skipped for forms that can't possibly +complete their evaluation, such as `error'. The brown splotches are +skipped for forms that are expected to always evaluate to the same +value, such as (setq x 14). + +For difficult cases, you can add do-nothing macros to your code to +help out the test coverage tool. The macro `noreturn' suppresses a +red splotch. It is an error if the argument to `noreturn' does +return. The macro 1value suppresses a brown splotch for its argument. +This macro is a no-op except during test-coverage -- then it signals +an error if the argument actually returns differing values. + +--- +** Support for Mocklisp has been removed. + +--- +** The function insert-string is now obsolete. * Installation changes in Emacs 21.3 -- 2.39.2