# HG changeset patch # User Richard M. Stallman # Date 1115067534 0 # Node ID 54584b534be18fefa23836a9c153cd0aeafdd58d # Parent 82c6429cf333f316c783e846518c134e8b8ea3c3 *** empty log message *** diff -r 82c6429cf333 -r 54584b534be1 etc/ChangeLog --- a/etc/ChangeLog Mon May 02 19:53:48 2005 +0000 +++ b/etc/ChangeLog Mon May 02 20:58:54 2005 +0000 @@ -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 -r 82c6429cf333 -r 54584b534be1 etc/NEWS --- a/etc/NEWS Mon May 02 19:53:48 2005 +0000 +++ b/etc/NEWS Mon May 02 20:58:54 2005 +0000 @@ -18,17 +18,12 @@ * 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'. - ---- -** 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 now supports new configure options `--program-prefix', +`--program-suffix' and `--program-transform-name' that affect the names of +installed programs. + +--- +** Emacs can now be built without sound support. --- ** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk' @@ -36,17 +31,9 @@ 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 place for game scores to be stored. This may be controlled by the @@ -78,6 +65,22 @@ (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. --- @@ -99,75 +102,240 @@ 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. * 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. - -+++ -** 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. - -+++ -** `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 -Q or --quick. +This is like using -q --no-site-file, but in addition it also disables +the fancy startup screen. + ++++ +** New command line option -D or --basic-display. +Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and +the blinking cursor. + ++++ +** New command line option -nbc or --no-blinking-cursor disables +the blinking cursor on graphical terminals. + ++++ +** The command line option --no-windows has been changed to +--no-window-system. The old one still works, but is deprecated. + ++++ +** 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. + ++++ +** 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.) + ++++ +** 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'). + ++++ +** 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. + ++++ +** 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. + ++++ +** 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'. + ++++ +** 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. + ++++ +** 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, +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. + ++++ +** 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. + ++++ +** 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. + ++++ +** `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 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. + +`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. + +`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. + +Setting these variables directly does not take effect until next time +the Buffers menu is regenerated. + ++++ +** 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. + ++++ +** `undo-only' does an undo which does not redo any previous undo. + ++++ +** When the undo information of the current command gets really large +(beyond the value of `undo-outer-limit'), Emacs discards it and warns +you about it. + ++++ +** M-SPC (just-one-space) when given a numeric argument N +converts whitespace around point to N spaces. + +--- +** New command `kill-whole-line' kills an entire line at once. +By default, it is bound to C-S-. + ++++ +** 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. + ++++ +** 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. + ++++ +** 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. + ++++ +** 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 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. + +The variable `automatic-hscrolling' was renamed to +`auto-hscroll-mode'. The old name is still available as an alias. + ++++ +** 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. + ++++ +** 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. + ++++ +** 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. + ++++ +** 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. + ++++ +** find-file-read-only visits multiple files in read-only mode, +when the file name contains wildcard characters. + ++++ +** find-alternate-file replaces the current file with multiple files, +when the file name contains wildcard characters. +++ ** Auto Compression mode is now enabled by default. +--- ** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case. 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. ---- -** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead. - ---- -** 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. - ---- -** iso-acc.el is now obsolete. Use one of the latin input methods instead. - ---- -** 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). ++++ +** 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.) + ++++ +** 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 commands copy-file, rename-file, make-symbolic-link and @@ -177,36 +345,88 @@ commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET /tmp RET copies ~/foo to /tmp/foo. -+++ -** M-o now is the prefix key for setting text properties; -M-o M-o requests refontification. - -+++ -** 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. - -+++ -** C-u M-x goto-line now switches to the most recent previous buffer, -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. +--- +** 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'. + +--- +** 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). + ++++ +** The max size of buffers and integers has been doubled. +On 32bit machines, it is now 256M (i.e. 268435455). + ++++ +** If the user visits a file larger than `large-file-warning-threshold', +Emacs prompts her for confirmation. + ++++ +** 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. + +--- +** Enhanced visual feedback in *Completions* buffer. + +Completions lists use faces to highlight what all completions +have in common and where they begin to differ. + +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. + ++++ +** 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. + ++++ +** 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 `history-delete-duplicates'. +If set to t when adding a new history element, all previous identical +elements are deleted. + ++++ +** 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. + +We provide two sample predicates, fill-single-word-nobreak-p and +fill-french-nobreak-p, for use in the value of fill-nobreak-predicate. + ++++ +** 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 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. +++ ** Control characters and escape glyphs are now shown in the new @@ -217,21 +437,257 @@ character, unless the new user variable `show-nonbreak-escape' is set to nil. ---- -** The type-break package now allows `type-break-file-name' to be nil -and if so, doesn't store any data across sessions. This is handy if -you don't want the .type-break file in your home directory or are -annoyed by the need for interaction when you kill Emacs. - ---- -** display-battery has been replaced by display-battery-mode. - ---- -** calculator.el now has radix grouping mode, which is available when -`calculator-output-radix' is non-nil. In this mode a separator -character is used every few digits, making it easier to see byte -boundries etc. For more info, see the documentation of the variable -`calculator-radix-grouping-mode'. ++++ +** 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. + ++++ +** 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. + +--- +** JIT-lock changes + +*** 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. + + +*** 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. + ++++ +** line-move-ignore-invisible now defaults to t. + +--- +** 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". + ++++ +** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is +now controlled by the variable `blink-cursor-alist'. + ++++ +** The X resource cursorBlink can be used to turn off cursor blinking. + ++++ +** 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. + ++++ +** 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. + ++++ +** The variable `cursor-in-non-selected-windows' can now be set to any +of the recognized cursor types. + ++++ +** 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. + ++++ +** 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. + ++++ +** 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. + ++++ +** 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. + ++++ +** 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 +now be marked with angle bitmaps in the fringes. In addition, up and +down arrow bitmaps may be shown at the top and bottom of the left or +right fringe if the window can be scrolled in either direction. + +This behavior is activated by setting the buffer-local variable +`indicate-buffer-boundaries' to a non-nil value. The default value of +this variable is found in `default-indicate-buffer-boundaries'. + +If value is `left' or `right', both angle and arrow bitmaps are +displayed in the left or right fringe, resp. + +Value may also be an alist which specifies the presense and position +of each bitmap individually. + +For example, ((top . left) (t . right)) places the top angle bitmap +in left fringe, the bottom angle bitmap in right fringe, and both +arrow bitmaps in right fringe. To show just the angle bitmaps in the +left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)). + ++++ +** 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. + +The new user option 'overflow-newline-into-fringe' may be set to nil to +revert to the old behavior of continuing such lines. + ++++ +** 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. + ++++ +** 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. + ++++ +** `special-display-buffer-names' and `special-display-regexps' now +understand two new boolean pseudo-frame-parameters `same-frame' and +`same-window'. + ++++ +** Changes in C-h bindings: + +C-h e displays the *Messages* buffer. + +C-h followed by a control character is used for displaying files + that do not change: + +C-h C-f displays the FAQ. +C-h C-e displays the PROBLEMS file. + +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. + +C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands. + +- C-h c and C-h k report the actual command (after possible remapping) + run by the key sequence. + +- 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. + +For example, if C-k is bound to kill-line, and kill-line is remapped +to new-kill-line, these commands now report: + +- C-h c and C-h k C-k reports: + C-k runs the command new-kill-line + +- C-h w and C-h f kill-line reports: + kill-line is remapped to new-kill-line which is on C-k, + +- C-h w and C-h f new-kill-line reports: + new-kill-line is on C-k + +--- +** 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'. + ++++ +** 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). + ++++ +** 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 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. + ++++ +** 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 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 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'. + ++++ +** In processing a local variables list, Emacs strips the prefix and +suffix are from every line before processing all the lines. + ++++ +** `apply-macro-to-region-lines' now operates on all lines that begin +in the region, rather than on all complete lines in the region. +++ ** You can now follow links by clicking Mouse-1 on the link. @@ -264,109 +720,328 @@ `mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'. +++ -** 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 new option mode-require-final-newline controls how certain -major modes enable require-final-newline. Any major mode that's -designed for a kind of file that should normally end in a newline -sets require-final-newline based on mode-require-final-newline. -So you can customize mode-require-final-newline to control what these -modes do. - -+++ -** When the undo information of the current command gets really large -(beyond the value of `undo-outer-limit'), Emacs discards it and warns -you about it. - -+++ -** line-move-ignore-invisible now defaults to t. +** 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. + ++++ +** 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. + ++++ +** Under X, mouse-wheel-mode is turned on by default. + ++++ +** 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 `$$'. + ++++ +** 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). + ++++ +** The default for the paper size (variable ps-paper-type) is taken +from the locale. + ++++ +** 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'. + ++++ +** The new command `revert-buffer-with-coding-system' (C-x RET r) +revisits the current file using a coding system that you specify. + ++++ +** New command `recode-region' decodes the region again by a specified +coding system. + ++++ +** The new command `recode-file-name' changes the encoding of the name +of a file. + +--- +** New command `ucs-insert' inserts a character specified by its +unicode. + ++++ +** 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. + ++++ +** New command quail-show-key shows what key (or key sequence) to type +in the current input method to input a character at point. + ++++ +** 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. + +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. + +--- +** 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. + +--- +** 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.) + +--- +** 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. + +--- +** New input method chinese-sisheng for inputting Chinese Pinyin +characters. + +--- +** 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) + +--- +** 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. + +--- +** A UTF-7 coding system is available in the library `utf-7'. + +--- +** 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. + +--- +** 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. + +--- +** 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. + +--- +** New variable `utf-translate-cjk-unicode-range' controls which +Unicode characters to translate in `utf-translate-cjk-mode'. + +--- +** iso-10646-1 (`Unicode') fonts can be used to display any range of +characters encodable by the utf-8 coding system. Just specify the +fontset appropriately. + ++++ +** Vertical scrolling is now possible within incremental search. +To enable this feature, customize the new user option +`isearch-allow-scroll'. User written commands which satisfy stringent +constraints can be marked as "scrolling commands". See the Emacs manual +for details. + ++++ +** C-w in incremental search now grabs either a character or a word, +making the decision in a heuristic way. This new job is done by the +command `isearch-yank-word-or-char'. To restore the old behavior, +bind C-w to `isearch-yank-word' in `isearch-mode-map'. + ++++ +** C-y in incremental search now grabs the next line if point is already +at the end of a line. + ++++ +** C-M-w deletes and C-M-y grabs a character in isearch mode. +Another method to grab a character is to enter the minibuffer by `M-e' +and to type `C-f' at the end of the search string in the minibuffer. + ++++ +** M-% typed in isearch mode invokes `query-replace' or +`query-replace-regexp' (depending on search mode) with the current +search string used as the string to replace. + ++++ +** Isearch no longer adds `isearch-resume' commands to the command +history by default. To enable this feature, customize the new +user option `isearch-resume-in-command-history'. + +--- +** New user option `query-replace-skip-read-only': when non-nil, +`query-replace' and related functions simply ignore +a match if part of it has a read-only property. + ++++ +** When used interactively, the commands `query-replace-regexp' and +`replace-regexp' allow \,expr to be used in a replacement string, +where expr is an arbitrary Lisp expression evaluated at replacement +time. In many cases, this will be more convenient than using +`query-replace-regexp-eval'. `\#' in a replacement string now refers +to the count of replacements already made by the replacement command. +All regular expression replacement commands now allow `\?' in the +replacement string to specify a position where the replacement string +can be edited for each replacement. + ++++ +** query-replace uses isearch lazy highlighting when the new user option +`query-replace-lazy-highlight' is non-nil. + +--- +** The current match in query-replace is highlighted in new face +`query-replace' which by default inherits from isearch face. + ++++ +** M-x compare-windows now can automatically skip non-matching text to +resync points in both windows. + ++++ +** 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. + +--- +** 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. + ++++ +** 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. + +** Dired mode: + +--- +*** New faces dired-header, dired-mark, dired-marked, dired-flagged, +dired-ignored, dired-directory, dired-symlink, dired-warning +introduced for Dired mode instead of font-lock faces. + ++++ +*** New Dired command `dired-compare-directories' marks files +with different file attributes in two dired buffers. + ++++ +*** New Dired command `dired-do-touch' (bound to T) changes timestamps +of marked files with the value entered in the minibuffer. + ++++ +*** In Dired's ! command (dired-do-shell-command), `*' and `?' now +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'. + ++++ +*** 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. + ++++ +** 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. + ++++ +** Dired-x: + ++++ +*** Omitting files is now a minor mode, dired-omit-mode. The mode toggling +command is bound to M-o. A new command dired-mark-omitted, bound to * O, +marks omitted files. The variable dired-omit-files-p is obsoleted, use the +mode toggling function instead. +++ ** In Outline mode, hide-body no longer hides lines at the top of the file that precede the first header line. +++ -** In Enriched mode, `set-left-margin' and `set-right-margin' are now -by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l' -and `C-c C-r'. - -+++ -** In processing a local variables list, Emacs strips the prefix and -suffix are from every line before processing all the lines. - -+++ -** `apply-macro-to-region-lines' now operates on all lines that begin -in the region, rather than on all complete lines in the region. - ---- -** global-whitespace-mode is a new alias for whitespace-global-mode. - -+++ -** There are now two new regular expression operators, \_< and \_>, -for matching the beginning and end of a symbol. A symbol is a -non-empty sequence of either word or symbol constituent characters, as -specified by the syntax table. ---- -*** rx.el has new corresponding `symbol-end' and `symbol-start' elements. - -+++ -** 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. +** 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 terminal emulation code in term.el has been improved, it can run most curses applications now. -** New features in evaluation commands - -+++ -*** The function `eval-defun' (C-M-x) called on defface reinitializes -the face to the value specified in the defface expression. - -+++ -*** Typing C-x C-e twice prints the value of the integer result -in additional formats (octal, hexadecimal, character) specified -by the new function `eval-expression-print-format'. The same -function also defines the result format for `eval-expression' (M-:), -`eval-print-last-sexp' (C-j) and some edebug evaluation functions. - ---- -** New input method chinese-sisheng for inputting Chinese Pinyin -characters. - -+++ -** New command quail-show-key shows what key (or key sequence) to type -in the current input method to input a character at point. - -+++ -** 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, @@ -390,75 +1065,18 @@ kill-ring, but does not delete it. +++ -** 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 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. + +** `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. +++ ** Telnet now prompts you for a port number with C-u M-x telnet. -+++ -** 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. - -+++ -** New command line option -D or --basic-display. - -Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and -the blinking cursor. - -+++ -** New command line option -nbc or --no-blinking-cursor disables -the blinking cursor on graphical terminals. - -+++ -** C-h v and C-h f commands now include a hyperlink to the C source for -variables and functions defined in C (if the C source is available). - ---- -** 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. - -+++ -** 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. - -+++ -** 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. - -+++ -** 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. - --- ** M-x compile has become more robust and reliable @@ -529,6 +1147,14 @@ file. +++ +** 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. + ++++ ** 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'. @@ -545,235 +1171,27 @@ ** M-x diff uses diff-mode instead of compilation-mode. +++ -** M-x compare-windows now can automatically skip non-matching text to -resync points in both windows. - ---- -** 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 - ---- -*** Gnus now includes Sieve and PGG -Sieve is a library for managing Sieve scripts. PGG is a library to handle -PGP/MIME. - ---- -*** There are many news features, bug fixes and improvements. -See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details. - -+++ -** Desktop package - -+++ -*** Desktop saving is now a minor mode, desktop-save-mode. Variable -desktop-enable is obsolete. Customize desktop-save-mode to enable desktop -saving. - ---- -*** Buffers are saved in the desktop file in the same order as that in the -buffer list. - -+++ -*** The desktop package can be customized to restore only some buffers immediately, -remaining buffers are restored lazily (when Emacs is idle). - -+++ -*** New commands: - - desktop-revert reverts to the last loaded desktop. - - desktop-change-dir kills current desktop and loads a new. - - desktop-save-in-desktop-dir saves desktop in the directory from which - it was loaded. - - desktop-lazy-complete runs the desktop load to completion. - - desktop-lazy-abort aborts lazy loading of the desktop. - ---- -*** New customizable variables: - - desktop-save. Determins whether the desktop should be saved when it is - killed. - - desktop-file-name-format. 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. - -+++ -*** New command line option --no-desktop - ---- -*** New hooks: - - desktop-after-read-hook run after a desktop is loaded. - - desktop-no-desktop-file-hook run when no desktop file is found. - ---- -** The saveplace.el package now filters out unreadable files. -When you exit Emacs, the saved positions in visited files no longer -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. - -+++ -** 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 - -+++ -** 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. - -The new user option 'overflow-newline-into-fringe' may be set to nil to -revert to the old behavior of continuing such lines. - -+++ -** The buffer boundaries (i.e. first and last line in the buffer) may -now be marked with angle bitmaps in the fringes. In addition, up and -down arrow bitmaps may be shown at the top and bottom of the left or -right fringe if the window can be scrolled in either direction. - -This behavior is activated by setting the buffer-local variable -`indicate-buffer-boundaries' to a non-nil value. The default value of -this variable is found in `default-indicate-buffer-boundaries'. - -If value is `left' or `right', both angle and arrow bitmaps are -displayed in the left or right fringe, resp. - -Value may also be an alist which specifies the presense and position -of each bitmap individually. - -For example, ((top . left) (t . right)) places the top angle bitmap -in left fringe, the bottom angle bitmap in right fringe, and both -arrow bitmaps in right fringe. To show just the angle bitmaps in the -left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)). - -+++ -** New command `display-local-help' displays any local help at point -in the echo area. It is bound to `C-h .'. It normally displays the -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 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 `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'. - -+++ -** 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 max size of buffers and integers has been doubled. -On 32bit machines, it is now 256M (i.e. 268435455). - -+++ -** 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. - ---- -** sql changes. - -*** 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 following values are supported: - - 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))) - -*** 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'. - -*** 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. - -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. - -*** Postgres support is enhanced. -Keyword highlighting of Postgres 7.3 is implemented. Prompting for -the username and the pgsql `-U' option is added. - -*** MySQL support is enhanced. -Keyword higlighting of MySql 4.0 is implemented. - -*** Imenu support has been enhanced to locate tables, views, indexes, -packages, procedures, functions, triggers, sequences, rules, and -defaults. - -*** Added SQL->Start SQLi Session menu entry which calls the -appropriate sql-interactive-mode wrapper for the current setting of -`sql-product'. - ---- -** M-x view-file and commands that use it now avoid interfering -with special modes such as Tar 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. + ++++ +** 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 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. + ++++ +** 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. ** Enhancements to apropos commands: @@ -792,83 +1210,25 @@ matching item. +++ -** 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 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 command `kill-whole-line' kills an entire line at once. -By default, it is bound to C-S-. - ---- -** New commands to operate on pairs of open and close characters: -`insert-pair', `delete-pair', `raise-sexp'. - -+++ -** A prefix argument of C-M-q in Emacs Lisp mode pretty-printifies the -list starting after point. - -** Dired mode: - ---- -*** New faces dired-header, dired-mark, dired-marked, dired-flagged, -dired-ignored, dired-directory, dired-symlink, dired-warning -introduced for Dired mode instead of font-lock faces. - -+++ -*** New Dired command `dired-compare-directories' marks files -with different file attributes in two dired buffers. - -+++ -*** New Dired command `dired-do-touch' (bound to T) changes timestamps -of marked files with the value entered in the minibuffer. - -+++ -*** In Dired's ! command (dired-do-shell-command), `*' and `?' now -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'. - -+++ -*** 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. - -+++ -** Dired-x: - -+++ -*** Omitting files is now a minor mode, dired-omit-mode. The mode toggling -command is bound to M-o. A new command dired-mark-omitted, bound to * O, -marks omitted files. The variable dired-omit-files-p is obsoleted, use the -mode toggling function instead. - -+++ -** find-file-read-only visits multiple files in read-only mode, -when the file name contains wildcard characters. - -+++ -** find-alternate-file replaces the current file with multiple files, -when the file name contains wildcard characters. - -** FFAP - -+++ -*** New ffap commands and keybindings: C-x C-r (`ffap-read-only'), -C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'), -C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'), -C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame'). - ---- -*** FFAP accepts wildcards in a file name by default. C-x C-f passes -it to `find-file' with non-nil WILDCARDS argument, which visits -multiple files, and C-x d passes it to `dired'. +** 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 + ++++ +** 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. + ++++ +** 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. ** Info mode: @@ -932,1063 +1292,24 @@ *** Info-index offers completion. --- -** 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. - -*** 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). - -*** In BibTeX mode the command fill-paragraph (bound to M-q) fills -individual fields of a BibTeX entry. - -*** The new variables bibtex-files and bibtex-file-path define a set -of BibTeX files that are searched for entry keys. - -*** The new command bibtex-validate-globally checks for duplicate keys -in multiple BibTeX files. - -*** The new command bibtex-copy-summary-as-kill pushes summary -of BibTeX entry to kill ring (bound to C-c C-t). - -+++ -** When display margins are present in a window, the fringes are now -displayed between the margins and the buffer's text area, rather than -at the edges of the window. - -+++ -** 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. - -+++ -** 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. - -+++ -** 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. - -+++ -** Under X, mouse-wheel-mode is turned on by default. - -+++ -** 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. - -+++ -** The X resource cursorBlink can be used to turn off cursor blinking. - -+++ -** `undo-only' does an undo which does not redo any previous undo. - ---- -** `uniquify-strip-common-suffix' tells uniquify to prefer -`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'. - -+++ -** If the user visits a file larger than `large-file-warning-threshold', -Emacs prompts her for confirmation. - ---- -** A UTF-7 coding system is available in the library `utf-7'. - ---- -** GUD mode has its own tool bar for controlling execution of the inferior -and other common debugger commands. - ---- -** recentf changes. - -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 `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. - -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. - -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 default for the paper size (variable ps-paper-type) is taken -from the locale. - -+++ -** 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. - ---- -** partial-completion-mode now does partial completion on directory names. - ---- -** 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. - ---- -** 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. - -+++ -** 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. - -+++ -** 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. - -+++ -** 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 -"~/". - -+++ -** 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 `revert-buffer-with-coding-system' (C-x RET r) -revisits the current file using a coding system that you specify. - -+++ -** The new command `recode-file-name' changes the encoding of the name -of a file. - ---- -** `ps-print' can now print characters from the mule-unicode charsets. - -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 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. - -`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. - -`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. - -Setting these variables directly does not take effect until next time -the Buffers menu is regenerated. - -+++ -** 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 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.) - ---- -** 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. - ---- -** 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. - ---- -** 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. - ---- -** 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 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. - ---- -** New variable `utf-translate-cjk-unicode-range' controls which -Unicode characters to translate in `utf-translate-cjk-mode'. - ---- -** iso-10646-1 (`Unicode') fonts can be used to display any range of -characters encodable by the utf-8 coding system. Just specify the -fontset appropriately. - ---- -** New command `ucs-insert' inserts a character specified by its -unicode. - -+++ -** 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. - -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. - ---- -** 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. - -+++ -** 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. - ---- -** 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). - ---- -** 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). - -+++ -** 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-*-*-*-*-*-*,*"'. - ---- -** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing -ESC, like they do for Gtk+, Mac and W32. - ---- -** Dialogs and menus pop down when pressing C-g. - ---- -** The menu item "Open File..." has been split into two items, "New File..." -and "Open File...". "Open File..." now opens only existing files. This is -to support existing GUI file selection dialogs better. - -+++ -** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be -disabled by customizing the variable `use-file-dialog'. - -+++ -** For Gtk+ version 2.4, you can make Emacs use the old file dialog -by setting the variable `x-use-old-gtk-file-dialog' to t. Default is to use -the new dialog. - -+++ -** Emacs can produce an underscore-like (horizontal bar) cursor. -The underscore cursor is set by putting `(cursor-type . hbar)' in -default-frame-alist. It supports variable heights, like the `bar' -cursor does. - -+++ -** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is -now controlled by the variable `blink-cursor-alist'. - -+++ -** 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. - -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. - ---- -** PO translation files are decoded according to their MIME headers -when Emacs visits them. - ---- -** The game `mpuz' is enhanced. - -`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. - ---- -** 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. - -+++ -** 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 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. - -The variable `automatic-hscrolling' was renamed to -`auto-hscroll-mode'. The old name is still available as an alias. - -** TeX modes: - -+++ -*** C-c C-c prompts for a command to run, and tries to offer a good default. - -+++ -*** 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 major mode doctex-mode for *.dtx files. - -+++ -** 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. - -+++ -** 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. - -+++ -** 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 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. - -+++ -** The default values of paragraph-start and indent-line-function have -been changed to reflect those used in Text mode rather than those used -in Indented-Text mode. - ---- -** New user option `query-replace-skip-read-only': when non-nil, -`query-replace' and related functions simply ignore -a match if part of it has a read-only property. - -+++ -** When used interactively, the commands `query-replace-regexp' and -`replace-regexp' allow \,expr to be used in a replacement string, -where expr is an arbitrary Lisp expression evaluated at replacement -time. In many cases, this will be more convenient than using -`query-replace-regexp-eval'. `\#' in a replacement string now refers -to the count of replacements already made by the replacement command. -All regular expression replacement commands now allow `\?' in the -replacement string to specify a position where the replacement string -can be edited for each replacement. - -+++ -** query-replace uses isearch lazy highlighting when the new user option -`query-replace-lazy-highlight' is non-nil. - ---- -** The current match in query-replace is highlighted in new face -`query-replace' which by default inherits from isearch face. - -+++ -** Emacs normally highlights mouse sensitive text whenever the mouse -is over the text. By setting the new variable `mouse-highlight', you -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. - -+++ -** 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. - -+++ -** 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. - -+++ -** 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. - -+++ -** 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. - ---- -** 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". - -+++ -** 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'. - ---- -** LDAP support now defaults to ldapsearch from OpenLDAP version 2. - -+++ -** 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. - -Turning off PC-Selection mode restores the global key bindings -that were replaced by turning on the 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'). - -** Changes in support of colors on character terminals - -+++ -*** 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. - ---- -*** 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. - -+++ -*** 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. - ---- -*** There's a new support for colors on `rxvt' terminal emulator. - -+++ -** 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.) - ---- -** Emacs now tries to set up buffer coding systems for HTML/XML files -automatically. - -+++ -** 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. - -+++ -** Changes in C-h bindings: - -C-h e displays the *Messages* buffer. - -C-h followed by a control character is used for displaying files - that do not change: - -C-h C-f displays the FAQ. -C-h C-e displays the PROBLEMS file. - -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. - -C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands. - -- C-h c and C-h k report the actual command (after possible remapping) - run by the key sequence. - -- 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. - -For example, if C-k is bound to kill-line, and kill-line is remapped -to new-kill-line, these commands now report: - -- C-h c and C-h k C-k reports: - C-k runs the command new-kill-line - -- C-h w and C-h f kill-line reports: - kill-line is remapped to new-kill-line which is on C-k, - -- C-h w and C-h f new-kill-line reports: - new-kill-line is on C-k - -+++ -** Vertical scrolling is now possible within incremental search. -To enable this feature, customize the new user option -`isearch-allow-scroll'. User written commands which satisfy stringent -constraints can be marked as "scrolling commands". See the Emacs manual -for details. - -+++ -** C-w in incremental search now grabs either a character or a word, -making the decision in a heuristic way. This new job is done by the -command `isearch-yank-word-or-char'. To restore the old behavior, -bind C-w to `isearch-yank-word' in `isearch-mode-map'. - -+++ -** C-y in incremental search now grabs the next line if point is already -at the end of a line. - -+++ -** C-M-w deletes and C-M-y grabs a character in isearch mode. -Another method to grab a character is to enter the minibuffer by `M-e' -and to type `C-f' at the end of the search string in the minibuffer. - -+++ -** M-% typed in isearch mode invokes `query-replace' or -`query-replace-regexp' (depending on search mode) with the current -search string used as the string to replace. - -+++ -** Isearch no longer adds `isearch-resume' commands to the command -history by default. To enable this feature, customize the new -user option `isearch-resume-in-command-history'. - -+++ -** New user option `history-delete-duplicates'. -If set to t when adding a new history element, all previous identical -elements are deleted. - -+++ -** Yanking text now discards certain text properties that can -be inconvenient when you did not expect them. The variable -`yank-excluded-properties' specifies which ones. Insertion -of register contents and rectangles also discards these properties. - -+++ -** 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'. - -+++ -** 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 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. - -+++ -** 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 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 improvements for jdb: - -*** Search for source files using jdb classpath and class - information. Fast startup since there is no need to scan all - source files up front. There is also no need to create and maintain - lists of source directories to scan. Look at `gud-jdb-use-classpath' - and `gud-jdb-classpath' customization variables documentation. - -*** Supports the standard breakpoint (gud-break, gud-clear) - set/clear operations from java source files under the classpath, stack - traversal (gud-up, gud-down), and run until current stack finish - (gud-finish). - -*** Supports new jdb (Java 1.2 and later) in addition to oldjdb - (Java 1.1 jdb). - -*** The previous method of searching for source files has been - preserved in case someone still wants/needs to use it. - Set gud-jdb-use-classpath to nil. - - Added Customization Variables - -*** gud-jdb-command-name. What command line to use to invoke jdb. - -*** gud-jdb-use-classpath. Allows selection of java source file searching - method: set to t for new method, nil to scan gud-jdb-directories for - java sources (previous method). - -*** gud-jdb-directories. List of directories to scan and search for java - classes using the original gud-jdb method (if gud-jdb-use-classpath - is nil). - - Minor Improvements - -*** The STARTTLS elisp wrapper (starttls.el) can now use GNUTLS -instead of the OpenSSL based "starttls" tool. For backwards -compatibility, it prefers "starttls", but you can toggle -`starttls-use-gnutls' to switch to GNUTLS (or simply remove the -"starttls" tool). - -*** Do not allow debugger output history variable to grow without bounds. - -+++ -** 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'. - -+++ -** 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'. - -+++ -** 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. - -+++ -** The variable `cursor-in-non-selected-windows' can now be set to any -of the recognized cursor types. - ---- -** 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. - -+++ -** 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 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'. - -+++ -** 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. - -+++ -** 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. - - -** VC Changes - -+++ -*** 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: - - (global-set-key "\C-x\C-q" 'vc-toggle-read-only) - -The function `vc-toggle-read-only' will continue to exist. - -+++ -*** 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 backends for Subversion and Meta-CVS. - -** EDiff changes. - -+++ -*** When comparing directories. -Typing D brings up a buffer that lists the differences between the contents of -directories. Now it is possible to use this buffer to copy the missing files -from one directory to another. - -+++ -*** When comparing files or buffers. -Typing the = key now offers to perform the word-by-word comparison of the -currently highlighted regions in an inferior Ediff session. If you answer 'n' -then it reverts to the old behavior and asks the user to select regions for -comparison. - -*** The new command `ediff-backup' compares a file with its most recent -backup using `ediff'. If you specify the name of a backup file, -`ediff-backup' compares it with the file of which it is a backup. - -+++ -** Etags changes. - -*** New regular expressions features - -**** New syntax for regular expressions, multi-line regular expressions. -The syntax --ignore-case-regexp=/regex/ is now undocumented and retained -only for backward compatibility. The new equivalent syntax is ---regex=/regex/i. More generally, it is --regex=/TAGREGEX/TAGNAME/MODS, -where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or -more characters among `i' (ignore case), `m' (multi-line) and `s' -(single-line). The `m' and `s' modifiers behave as in Perl regular -expressions: `m' allows regexps to match more than one line, while `s' -(which implies `m') means that `.' matches newlines. The ability to -span newlines allows writing of much more powerful regular expressions -and rapid prototyping for tagging new languages. - -**** Regular expressions can use char escape sequences as in Gcc. -The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v, -respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL, -CR, TAB, VT, - -**** Regular expressions can be bound to a given language. -The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags -only for files of language LANGUAGE, and ignored otherwise. This is -particularly useful when storing regexps in a file. - -**** Regular expressions can be read from a file. -The --regex=@regexfile option means read the regexps from a file, one -per line. Lines beginning with space or tab are ignored. - -*** New language parsing features - -**** The `::' qualifier triggers C++ parsing in C file. -Previously, only the `template' and `class' keywords had this effect. - -**** The gnucc __attribute__ keyword is now recognised and ignored. - -**** New language HTML. -Title and h1, h2, h3 are tagged. Also, tags are generated when name= is -used inside an anchor and whenever id= is used. - -**** In Makefiles, constants are tagged. -If you want the old behavior instead, thus avoiding to increase the -size of the tags file, use the --no-globals option. - -**** New language Lua. -All functions are tagged. - -**** In Perl, packages are tags. -Subroutine tags are named from their package. You can jump to sub tags -as you did before, by the sub name, or additionally by looking for -package::sub. - -**** In Prolog, etags creates tags for rules in addition to predicates. - -**** New language PHP. -Tags are functions, classes and defines. -If the --members option is specified to etags, tags are variables also. - -**** New default keywords for TeX. -The new keywords are def, newcommand, renewcommand, newenvironment and -renewenvironment. - -*** Honour #line directives. -When Etags parses an input file that contains C preprocessor's #line -directives, it creates tags using the file name and line number -specified in those directives. This is useful when dealing with code -created from Cweb source files. When Etags tags the generated file, it -writes tags pointing to the source file. - -*** New option --parse-stdin=FILE. -This option is mostly useful when calling etags from programs. It can -be used (only once) in place of a file name on the command line. Etags -reads from standard input and marks the produced tags as belonging to -the file FILE. +** Lisp mode now uses font-lock-doc-face for the docstrings. + ++++ +** A prefix argument of C-M-q in Emacs Lisp mode pretty-printifies the +list starting after point. + +** New features in evaluation commands + ++++ +*** The function `eval-defun' (C-M-x) called on defface reinitializes +the face to the value specified in the defface expression. + ++++ +*** Typing C-x C-e twice prints the value of the integer result +in additional formats (octal, hexadecimal, character) specified +by the new function `eval-expression-print-format'. The same +function also defines the result format for `eval-expression' (M-:), +`eval-print-last-sexp' (C-j) and some edebug evaluation functions. +++ ** CC Mode changes. @@ -2279,46 +1600,6 @@ The function c-toggle-syntactic-indentation can be used to toggle syntactic indentation. -+++ -** The command line option --no-windows has been changed to ---no-window-system. The old one still works, but is deprecated. - -+++ -** The command `list-text-properties-at' has been deleted because -C-u C-x = gives the same information and more. - -+++ -** `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. - -+++ -** 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. - -We provide two sample predicates, fill-single-word-nobreak-p and -fill-french-nobreak-p, for use in the value of fill-nobreak-predicate. - -+++ -** New user option `add-log-always-start-new-record'. -When this option is enabled, M-x add-change-log-entry always -starts a new record regardless of when the last record is. - -+++ -** SGML mode has indentation and supports XML syntax. -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. - -+++ -** `xml-mode' is now an alias for `sgml-mode', which has XML support. - ---- -** Lisp mode now uses font-lock-doc-face for the docstrings. - --- ** Perl mode has a new variable `perl-indent-continued-arguments'. @@ -2350,48 +1631,420 @@ ** Prolog mode has a new variable `prolog-font-lock-keywords' to support use of font-lock. -+++ -** `special-display-buffer-names' and `special-display-regexps' now -understand two new boolean pseudo-frame-parameters `same-frame' and -`same-window'. - -+++ -** 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 `$$'. - -+++ -** 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. - -+++ -** 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. - ---- -** Enhanced visual feedback in *Completions* buffer. - -Completions lists use faces to highlight what all completions -have in common and where they begin to differ. - -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. - -+++ -** 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 tries to set up buffer coding systems for HTML/XML files +automatically. + ++++ +** 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. + ++++ +** `xml-mode' is now an alias for `sgml-mode', which has XML support. + +** TeX modes: + ++++ +*** C-c C-c prompts for a command to run, and tries to offer a good default. + ++++ +*** 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 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). + +*** In BibTeX mode the command fill-paragraph (bound to M-q) fills +individual fields of a BibTeX entry. + +*** The new variables bibtex-files and bibtex-file-path define a set +of BibTeX files that are searched for entry keys. + +*** The new command bibtex-validate-globally checks for duplicate keys +in multiple BibTeX files. + +*** The new command bibtex-copy-summary-as-kill pushes summary +of BibTeX entry to kill ring (bound to C-c C-t). + ++++ +** 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: + +*** Search for source files using jdb classpath and class + information. Fast startup since there is no need to scan all + source files up front. There is also no need to create and maintain + lists of source directories to scan. Look at `gud-jdb-use-classpath' + and `gud-jdb-classpath' customization variables documentation. + +*** Supports the standard breakpoint (gud-break, gud-clear) + set/clear operations from java source files under the classpath, stack + traversal (gud-up, gud-down), and run until current stack finish + (gud-finish). + +*** Supports new jdb (Java 1.2 and later) in addition to oldjdb + (Java 1.1 jdb). + +*** The previous method of searching for source files has been + preserved in case someone still wants/needs to use it. + Set gud-jdb-use-classpath to nil. + + Added Customization Variables + +*** gud-jdb-command-name. What command line to use to invoke jdb. + +*** gud-jdb-use-classpath. Allows selection of java source file searching + method: set to t for new method, nil to scan gud-jdb-directories for + java sources (previous method). + +*** gud-jdb-directories. List of directories to scan and search for java + classes using the original gud-jdb method (if gud-jdb-use-classpath + is nil). + + Minor Improvements + +*** The STARTTLS elisp wrapper (starttls.el) can now use GNUTLS +instead of the OpenSSL based "starttls" tool. For backwards +compatibility, it prefers "starttls", but you can toggle +`starttls-use-gnutls' to switch to GNUTLS (or simply remove the +"starttls" tool). + +*** Do not allow debugger output history variable to grow without bounds. + ++++ +** 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. + ++++ +** 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. + ++++ +** 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. + +--- +** recentf changes. + +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 `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. + +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. + +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. + ++++ +** Desktop package + ++++ +*** Desktop saving is now a minor mode, desktop-save-mode. Variable +desktop-enable is obsolete. Customize desktop-save-mode to enable desktop +saving. + +--- +*** Buffers are saved in the desktop file in the same order as that in the +buffer list. + ++++ +*** The desktop package can be customized to restore only some buffers immediately, +remaining buffers are restored lazily (when Emacs is idle). + ++++ +*** New commands: + - desktop-revert reverts to the last loaded desktop. + - desktop-change-dir kills current desktop and loads a new. + - desktop-save-in-desktop-dir saves desktop in the directory from which + it was loaded. + - desktop-lazy-complete runs the desktop load to completion. + - desktop-lazy-abort aborts lazy loading of the desktop. + +--- +*** New customizable variables: + - desktop-save. Determins whether the desktop should be saved when it is + killed. + - desktop-file-name-format. 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. + ++++ +*** New command line option --no-desktop + +--- +*** New hooks: + - desktop-after-read-hook run after a desktop is loaded. + - desktop-no-desktop-file-hook run when no desktop file is found. + +--- +** The saveplace.el package now filters out unreadable files. +When you exit Emacs, the saved positions in visited files no longer +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. + ++++ +*** When comparing directories. +Typing D brings up a buffer that lists the differences between the contents of +directories. Now it is possible to use this buffer to copy the missing files +from one directory to another. + ++++ +*** When comparing files or buffers. +Typing the = key now offers to perform the word-by-word comparison of the +currently highlighted regions in an inferior Ediff session. If you answer 'n' +then it reverts to the old behavior and asks the user to select regions for +comparison. + +*** The new command `ediff-backup' compares a file with its most recent +backup using `ediff'. If you specify the name of a backup file, +`ediff-backup' compares it with the file of which it is a backup. + ++++ +** Etags changes. + +*** New regular expressions features + +**** New syntax for regular expressions, multi-line regular expressions. +The syntax --ignore-case-regexp=/regex/ is now undocumented and retained +only for backward compatibility. The new equivalent syntax is +--regex=/regex/i. More generally, it is --regex=/TAGREGEX/TAGNAME/MODS, +where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or +more characters among `i' (ignore case), `m' (multi-line) and `s' +(single-line). The `m' and `s' modifiers behave as in Perl regular +expressions: `m' allows regexps to match more than one line, while `s' +(which implies `m') means that `.' matches newlines. The ability to +span newlines allows writing of much more powerful regular expressions +and rapid prototyping for tagging new languages. + +**** Regular expressions can use char escape sequences as in Gcc. +The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v, +respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL, +CR, TAB, VT, + +**** Regular expressions can be bound to a given language. +The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags +only for files of language LANGUAGE, and ignored otherwise. This is +particularly useful when storing regexps in a file. + +**** Regular expressions can be read from a file. +The --regex=@regexfile option means read the regexps from a file, one +per line. Lines beginning with space or tab are ignored. + +*** New language parsing features + +**** The `::' qualifier triggers C++ parsing in C file. +Previously, only the `template' and `class' keywords had this effect. + +**** The gnucc __attribute__ keyword is now recognised and ignored. + +**** New language HTML. +Title and h1, h2, h3 are tagged. Also, tags are generated when name= is +used inside an anchor and whenever id= is used. + +**** In Makefiles, constants are tagged. +If you want the old behavior instead, thus avoiding to increase the +size of the tags file, use the --no-globals option. + +**** New language Lua. +All functions are tagged. + +**** In Perl, packages are tags. +Subroutine tags are named from their package. You can jump to sub tags +as you did before, by the sub name, or additionally by looking for +package::sub. + +**** In Prolog, etags creates tags for rules in addition to predicates. + +**** New language PHP. +Tags are functions, classes and defines. +If the --members option is specified to etags, tags are variables also. + +**** New default keywords for TeX. +The new keywords are def, newcommand, renewcommand, newenvironment and +renewenvironment. + +*** Honour #line directives. +When Etags parses an input file that contains C preprocessor's #line +directives, it creates tags using the file name and line number +specified in those directives. This is useful when dealing with code +created from Cweb source files. When Etags tags the generated file, it +writes tags pointing to the source file. + +*** New option --parse-stdin=FILE. +This option is mostly useful when calling etags from programs. It can +be used (only once) in place of a file name on the command line. Etags +reads from standard input and marks the produced tags as belonging to +the file FILE. + +** VC Changes + ++++ +*** 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: + + (global-set-key "\C-x\C-q" 'vc-toggle-read-only) + +The function `vc-toggle-read-only' will continue to exist. + ++++ +*** 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 backends for Subversion and Meta-CVS. + ++++ +** 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. + ++++ +** 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 +"~/". + ++++ +** 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'. + +--- +** PO translation files are decoded according to their MIME headers +when Emacs visits them. + +** Gnus package + +--- +*** Gnus now includes Sieve and PGG +Sieve is a library for managing Sieve scripts. PGG is a library to handle +PGP/MIME. + +--- +*** There are many news features, bug fixes and improvements. +See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details. --- ** Rmail now displays 5-digit message ids in its summary buffer. @@ -2405,6 +2058,178 @@ used instead of the native one. --- +** 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. + ++++ +** 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. + ++++ +** 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 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'. + ++++ +** 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. + ++++ +** 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. + ++++ +** 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. + ++++ +** 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. + +--- +** 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. + +--- +** 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). + +--- +** 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). + ++++ +** 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-*-*-*-*-*-*,*"'. + +--- +** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing +ESC, like they do for Gtk+, Mac and W32. + +--- +** Dialogs and menus pop down if you type C-g. + +--- +** The menu item "Open File..." has been split into two items, "New File..." +and "Open File...". "Open File..." now opens only existing files. This is +to support existing GUI file selection dialogs better. + ++++ +** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be +disabled by customizing the variable `use-file-dialog'. + ++++ +** For Gtk+ version 2.4, you can make Emacs use the old file dialog +by setting the variable `x-use-old-gtk-file-dialog' to t. Default is to use +the new dialog. + +--- +** Emacs now responds to mouse-clicks on the mode-line, header-line and +display margin, when run in an xterm. + +** 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. + +** Changes in support of colors on character terminals + ++++ +*** 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. + +--- +*** 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. + ++++ +*** 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. + +--- +*** There's a new support for colors on `rxvt' terminal emulator. + ++++ +** 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. This enables Emacs to work better with programs that need to track the cursor, for example screen magnifiers and text to speech programs. @@ -2457,40 +2282,126 @@ 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. +--- +** 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. + +--- +** sql changes. + +*** 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 following values are supported: + + 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))) + +*** 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'. + +*** 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. + +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. + +*** Postgres support is enhanced. +Keyword highlighting of Postgres 7.3 is implemented. Prompting for +the username and the pgsql `-U' option is added. + +*** MySQL support is enhanced. +Keyword higlighting of MySql 4.0 is implemented. + +*** Imenu support has been enhanced to locate tables, views, indexes, +packages, procedures, functions, triggers, sequences, rules, and +defaults. + +*** Added SQL->Start SQLi Session menu entry which calls the +appropriate sql-interactive-mode wrapper for the current setting of +`sql-product'. + +--- +*** Support for the SQLite interpreter has been added to sql.el by calling +'sql-sqlite'. + +--- +** M-x view-file and commands that use it now avoid interfering +with special modes such as Tar mode. + ++++ +** 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. + +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. + +--- +** Commands winner-redo and winner-undo, from winner.el, are now bound to +C-c and C-c , respectively. This is an incompatible change. + +** FFAP + ++++ +*** New ffap commands and keybindings: C-x C-r (`ffap-read-only'), +C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'), +C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'), +C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame'). + +--- +*** FFAP accepts wildcards in a file name by default. C-x C-f passes +it to `find-file' with non-nil WILDCARDS argument, which visits +multiple files, and C-x d passes it to `dired'. + +--- +** 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. --- ** New variable `hs-set-up-overlay' allows customization of the overlay @@ -2499,28 +2410,107 @@ 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. +** 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. + +--- +** partial-completion-mode now does partial completion on directory names. + +--- +** 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. + +--- +** `ps-print' can now print characters from the mule-unicode charsets. + +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. + +--- +** 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. + +--- +** LDAP support now defaults to ldapsearch from OpenLDAP version 2. + ++++ +** 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. + +Turning off PC-Selection mode restores the global key bindings +that were replaced by turning on the mode. + +--- +** `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. + +--- +** 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 game `mpuz' is enhanced. + +`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. + +--- +** display-battery has been replaced by display-battery-mode. + +--- +** calculator.el now has radix grouping mode, which is available when +`calculator-output-radix' is non-nil. In this mode a separator +character is used every few digits, making it easier to see byte +boundries etc. For more info, see the documentation of the variable +`calculator-radix-grouping-mode'. + +--- +** global-whitespace-mode is a new alias for whitespace-global-mode. + ++++ +** The command `list-text-properties-at' has been deleted because +C-u C-x = gives the same information and more. + +--- +** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead. + +--- +** iso-acc.el is now obsolete. Use one of the latin input methods instead. + +--- +** cplus-md.el has been removed to avoid problems with Custom. + * 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. +** New package benchmark.el contains simple support for convenient +timing measurements of code (including the garbage collection component). + ++++ +** Calc is now part of the Emacs distribution. + +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'. + +--- +** `cfengine-mode' is a major mode for editing GNU Cfengine +configuration files. +++ ** The new package conf-mode.el handles thousands of configuration files, with @@ -2530,53 +2520,6 @@ .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. @@ -2623,6 +2566,55 @@ loading and customization of those packages from the .emacs file. +++ +** 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 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'. + ++++ +** 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 new Lisp library fringe.el controls the appearance of fringes. + +--- +** GDB-Script-mode is used for files like .gdbinit. + ++++ +** 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. + +Use M-x gdba to start GDB-UI. + +--- +** The new package ibuffer provides a powerful, completely +customizable replacement for buff-menu.el. + +--- +** 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. + ++++ +** 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 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 @@ -2681,6 +2673,17 @@ C-x C-k SPC steps through the last keyboard macro one key sequence at a time, prompting for the actions to take. ++++ +** 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 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 @@ -2697,12 +2700,43 @@ `ps-print' package. Use M-x pr-help for more information. +++ -** Calc is now part of the Emacs distribution. - -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'. +** The new python.el package is used to edit Python and Jython programs. + +--- +** 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, ... + +There is also Global Reveal mode which affects all buffers. + +--- +** 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. + ++++ +** 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. + ++++ +** The new global minor mode `size-indication-mode' (off by default) +shows the size of accessible part of the buffer on the mode line. + ++++ +** 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. + ++++ +** The thumbs.el package allows you to preview image files as thumbnails +and can be invoked from a Dired buffer. +++ ** Tramp is now part of the distribution. @@ -2725,64 +2759,22 @@ (setq tramp-default-method "ftp") --- -** 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'. - ---- -** 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 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, ... - -There is also Global Reveal mode which affects all buffers. - ---- -** The new package ibuffer provides a powerful, completely -customizable replacement for buff-menu.el. - -+++ -** 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. - -+++ -** 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 `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. - ---- -** cplus-md.el has been removed to avoid problems with Custom. - -+++ -** New package benchmark.el contains simple support for convenient -timing measurements of code (including the garbage collection component). - ---- -** The new Lisp library fringe.el controls the appearance of fringes. - ---- -** `cfengine-mode' is a major mode for editing GNU Cfengine -configuration files. +** 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 URL package (which had been part of W3) is now part of Emacs. + +--- +** 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'. + ++++ +** The wdired.el package allows you to use normal editing commands on Dired +buffers to change filenames, permissions, etc... + * Incompatible Lisp Changes in Emacs 22.1 @@ -2804,108 +2796,397 @@ * Lisp Changes in Emacs 22.1 -** New functions, macros, and commands - -+++ -*** 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. - -+++ -*** (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 function `looking-back' checks whether a regular expression matches -the text before point. Specifying the LIMIT argument bounds how far -back the match can start; this is a way to keep it from taking too long. - -+++ -*** New functions `make-progress-reporter', `progress-reporter-update', -`progress-reporter-force-update', `progress-reporter-done', and -`dotimes-with-progress-reporter' provide a simple and efficient way for -a command to present progress messages for the user. - -+++ -*** The new primitive `get-internal-run-time' returns the processor -run time used by Emacs since start-up. - -+++ -*** The new function `called-interactively-p' does what many people -have mistakenly believed `interactive-p' did: it returns t if the -calling function was called through `call-interactively'. This should -only be used when you cannot add a new "interactive" argument to the -command. - -+++ -*** The new function `assoc-string' replaces `assoc-ignore-case' and -`assoc-ignore-representation', which are still available, but have -been declared obsolete. - ---- -*** New function quail-find-key returns a list of keys to type in the -current input method to input a character. - -+++ -*** New functions posn-at-point and posn-at-x-y return -click-event-style position information for a given visible buffer -position or for a given window pixel coordinate. - -+++ -*** The new primitive `set-file-times' sets a file's access and -modification times. Magic file name handlers can handle this -operation. - -+++ -*** 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. - -+++ -*** `syntax-class' extracts the class of a syntax code (as returned -by syntax-after). - -+++ -*** 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. - -+++ -*** 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'. - -+++ -*** 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 function `rassq-delete-all' deletes all elements from an -alist whose cdr is `eq' to a specified value. - -+++ -*** 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 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: + + #!/usr/bin/emacs --script + ++++ +** The option --directory DIR now modifies `load-path' immediately. +Directories are added to the front of `load-path' in the order they +appear on the command line. For example, with this command line: + + emacs -batch -L .. -L /tmp --eval "(require 'foo)" + +Emacs looks for library `foo' in the parent directory, then in /tmp, then +in the other directories in `load-path'. (-L is short for --directory.) + ++++ +** The default value of `sentence-end' is now defined using the new +variable `sentence-end-without-space', which contains such characters +that end a sentence without following spaces. + +The function `sentence-end' should be used to obtain the value of the +variable `sentence-end'. If the variable `sentence-end' is nil, then +this function returns the regexp constructed from the variables +`sentence-end-without-period', `sentence-end-double-space' and +`sentence-end-without-space'. + ++++ +** The argument to forward-word, backward-word, forward-to-indentation +and backward-to-indentation is now optional, and defaults to 1. + ++++ +** 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. + ++++ +** 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. + ++++ +** 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). + +--- +** list-buffers-noselect now takes an additional argument, BUFFER-LIST. +If it is non-nil, it specifies which buffers to list. + ++++ +** The kill-buffer-hook is now permanent-local. + ++++ +** `auto-save-file-format' has been renamed to +`buffer-auto-save-file-format' and made into a permanent local. + ++++ +** 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. +++ ** copy-file now takes an additional option arg MUSTBENEW. This argument works like the MUSTBENEW argument of write-file. ---- -** easy-mmode-define-global-mode has been renamed to -define-global-minor-mode. The old name remains as an alias. ++++ +** 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. + ++++ +** `visited-file-modtime' and `calendar-time-from-absolute' now return +a list of two integers, instead of a cons. + ++++ +** `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 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. + ++++ +** 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. + ++++ +** read-from-minibuffer now accepts an additional argument KEEP-ALL +saying to put all inputs in the history list, even empty ones. + ++++ +** 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. + ++++ +** The new variable `read-file-name-completion-ignore-case' specifies +whether completion ignores case when reading a file name with the +`read-file-name' function. + ++++ +** The new function `read-directory-name' can be used instead of +`read-file-name' to read a directory name; when used, completion +will only show directories. + ++++ +** The new variable search-spaces-regexp controls how to search +for spaces in a regular expression. If it is non-nil, it should be a +regular expression, and any series of spaces stands for that regular +expression. If it is nil, spaces stand for themselves. + +Spaces inside of constructs such as [..] and *, +, ? are never +replaced with search-spaces-regexp. + ++++ +** 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. + ++++ +** skip-chars-forward and skip-chars-backward now handle +character classes such as [:alpha:], along with individual characters +and ranges. + +--- +** In `replace-match', the replacement text no longer inherits +properties from surrounding text. + ++++ +** The list returned by `(match-data t)' now has the buffer as a final +element, if the last match was on a buffer. `set-match-data' +accepts such a list for restoring the match state. + ++++ +** 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 macro define-obsolete-variable-alias combines defvaralias and +make-obsolete-variable. The macro define-obsolete-function-alias +combines defalias and make-obsolete. + ++++ +** Enhancements to keymaps. + +*** Cleaner way to enter key sequences. + +You can enter a constant key sequence in a more natural format, the +same one used for saving keyboard macros, using the macro `kbd'. For +example, + +(kbd "C-x C-f") => "\^x\^f" + +*** 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. + +- The new function `command-remapping' returns the binding for a + remapped command in the current keymaps, or nil if not remapped. + +- key-binding now remaps interactive commands unless the optional + third argument NO-REMAP is non-nil. + +- 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). + +- The new variable `this-original-command' contains the original + command before remapping. It is equal to `this-command' when the + command was not remapped. + +*** If text has a `keymap' property, that keymap takes precedence +over minor mode keymaps. + +*** 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. + +*** Dense keymaps now handle inheritance correctly. +Previously a dense keymap would hide all of the simple-char key +bindings of the parent keymap. + +*** `define-key-after' now accepts keys longer than 1. + +*** New function `current-active-maps' returns a list of currently +active keymaps. + +*** New function `describe-buffer-bindings' inserts the list of all +defined keys and their definitions. + +*** New function `keymap-prompt' returns the prompt-string of a keymap + +*** (map-keymap FUNCTION KEYMAP) applies the function to each binding +in the keymap. + +*** New variable emulation-mode-map-alists. + +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. + ++++ +** Atomic change groups. + +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: + + (atomic-change-group + (insert foo) + (delete-region x y)) + +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 you need something more sophisticated, you can directly call the +lower-level functions that `atomic-change-group' uses. Here is how. + +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. + +Before you change the buffer again, you must activate the change +group. Pass the handle to `activate-change-group' afterward to +do this. + +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. + +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. + +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: + + (nconc (prepare-change-group buffer-1) + (prepare-change-group buffer-2)) + +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'. + +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. + ++++ +** 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. + ++++ +** New `yank-handler' text property may be used to control how +previously killed text on the kill-ring is reinserted. + +The value of the yank-handler property must be a list with one to four +elements with the following format: + (FUNCTION PARAM NOEXCLUDE UNDO). + +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: + + 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 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. + +*** 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. + +*** 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 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. +++ ** An element of buffer-undo-list can now have the form (apply FUNNAME @@ -2918,6 +3199,169 @@ range BEG...END and increased the buffer size by DELTA. +++ +** 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. + ++++ +** Enhancements to process support + +*** Function list-processes now has an optional argument; if non-nil, +only the processes whose query-on-exit flag is set are listed. + +*** 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 new low-level functions process-plist and set-process-plist are +used to access and replace the entire property list of a process. + +*** Function accept-process-output now has an optional fourth arg +`just-this-one'. If non-nil, only output from the specified process +is handled, suspending output from other processes. If value is an +integer, also inhibit running timers. This feature is generally not +recommended, but may be necessary for specific applications, such as +speech synthesis. + +*** Adaptive read buffering of subprocess output. + +On some systems, when emacs reads the output from a subprocess, the +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. + +*** The new function `call-process-shell-command' executes a shell +command command synchronously in a separate process. + +*** The new function `process-file' is similar to `call-process', but +obeys file handlers. The file handler is chosen based on +default-directory. + +*** The new function `set-process-filter-multibyte' sets the +multibyteness of a string given to a process's filter. + +*** 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 +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 +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. + ++++ +** Enhanced networking support. + +*** 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. + +- 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. + +To test for the availability of a given feature, use featurep like this: + (featurep 'make-network-process '(:type datagram)) + +*** Original open-network-stream is now emulated using make-network-process. + +*** New function open-network-stream-nowait. + +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". + +*** New function open-network-stream-server. + +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. + +*** New functions process-datagram-address and set-process-datagram-address. + +These functions are used with datagram-based network processes to get +and set the current address of the remote partner. + +*** New function format-network-address. + +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. + +*** 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. + +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. + +*** 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. + +*** New function network-interface-list. + +This function returns a list of network interface names and their +current network addresses. + +*** New function network-interface-info. + +This function returns the network address, hardware address, current +status, and other information about a specific network interface. + +*** 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". + ++++ +** 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. + ++++ +** 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 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 @@ -2925,139 +3369,141 @@ variable `auto-window-vscroll' to nil. +++ -** If a buffer sets buffer-save-without-query to non-nil, -save-some-buffers will always save that buffer without asking -(if it's modified). - -+++ -** The function symbol-file tells you which file defined -a certain function or variable. - -+++ -** Lisp code can now test if a given buffer position is inside a -clickable link with the new function `mouse-on-link-p'. This is the -function used by the new `mouse-1-click-follows-link' functionality. - -+++ -** `set-auto-mode' now gives the interpreter magic line (if present) -precedence over the file name. Likewise an "\^x\^f" - -+++ -** The sentinel is now called when a network process is deleted with -delete-process. The status message passed to the sentinel for a -deleted network process is "deleted". The message passed to the -sentinel when the connection is closed by the remote peer has been -changed to "connection broken by remote peer". - -+++ -** If the buffer's undo list for the current command gets longer than -undo-outer-limit, garbage collection empties it. This is to prevent -it from using up the available memory and choking Emacs. - -+++ -** skip-chars-forward and skip-chars-backward now handle -character classes such as [:alpha:], along with individual characters -and ranges. - -+++ ** Function pos-visible-in-window-p now returns the pixel coordinates and partial visiblity state of the corresponding row, if the PARTIALLY arg is non-nil. +++ -** The function `eql' is now available without requiring the CL package. - -+++ -** The display space :width and :align-to text properties are now -supported on text terminals. - -+++ -** Support for displaying image slices - -*** New display property (slice X Y WIDTH HEIGHT) may be used with -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). +** 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. + ++++ +** The new functions `window-pixel-edges' and `window-inside-pixel-edges' +return window edges in units of pixels, rather than columns and lines. + ++++ +** The new macro `with-selected-window' temporarily switches the +selected window without impacting the order of buffer-list. + ++++ +** `select-window' takes an optional second argument `norecord', like +`switch-to-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'. + ++++ +** 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. + ++++ +** Customizable fringe bitmaps + +*** New function 'define-fringe-bitmap' can now be used to create new +fringe bitmaps, as well as change the built-in fringe bitmaps. + +To change a built-in bitmap, do (require 'fringe) and use the symbol +identifing the bitmap such as `left-truncation or `continued-line'. + +*** New function 'destroy-fringe-bitmap' may be used to destroy a +previously created bitmap, or restore a built-in bitmap. + +*** New function 'set-fringe-bitmap-face' can now be used to set a +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. + +*** There are new display properties, left-fringe and right-fringe, +that can be used to show a specific bitmap in the left or right fringe +bitmap of the display line. + +Format is 'display '(left-fringe BITMAP [FACE]), where BITMAP is a +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. + +The default left and right fringe widths for all windows of a frame +can now be controlled by setting the `left-fringe' and `right-fringe' +frame parameters to an integer value specifying the width in pixels. +Setting the width to 0 effectively removes the corresponding fringe. + +The actual default fringe widths for the frame may deviate from the +specified widths, since the combined fringe widths must match an +integral number of columns. The extra width is distributed evenly +between the left and right fringe. For force a specific fringe width, +specify the width as a negative integer (if both widths are negative, +only the left fringe gets the specified width). + +Setting the width to nil (the default), restores the default fringe +width which is the minimum number of pixels necessary to display any +of the currently defined fringe bitmaps. The width of the built-in +fringe bitmaps is 8 pixels. + ++++ +** Per-window fringe and scrollbar 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 +`set-window-fringes'. + +To control the fringe position in a window, that is, whether fringes +are positioned between the display margins and the window's text area, +or at the edges of the window, either set the buffer-local variable +`fringes-outside-margins' or call `set-window-fringes'. + +The function `window-fringes' can be used to obtain the current +settings. To make `left-fringe-width', `right-fringe-width', and +`fringes-outside-margins' take effect, you must set them before +displaying the buffer in a window, or use `set-window-buffer' to force +an update of the display margins. + +*** 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 +variables `scroll-bar-mode' and `scroll-bar-width', or call +`set-window-scroll-bars'. The function `window-scroll-bars' can be +used to obtain the current settings. To make `scroll-bar-mode' and +`scroll-bar-width' take effect, you must set them before displaying +the buffer in a window, or use `set-window-buffer' to force an update +of the display margins. + ++++ +** When using non-toolkit scroll bars with the default width, +the scroll-bar-width frame parameter value is nil. + ++++ +** 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. +++ ** New line-height and line-spacing properties for newline characters @@ -3162,139 +3608,16 @@ The form `(- EXPR ...)' negates or subtracts the value of the expressions. +++ -** Normally, the cursor is displayed at the end of any overlay and -text property string that may be present at the current window -position. The cursor may now be placed on any character of such -strings by giving that character a non-nil `cursor' text property. - -+++ -** The first face specification element in a defface can specify -`default' instead of frame classification. Then its attributes act as -defaults that apply to all the subsequent cases (and may be overridden -by them). - -+++ -** New face attribute `min-colors' can be used to tailor the face color -to the number of colors supported by a display, and define the -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. - -+++ -** Customizable fringe bitmaps - -*** New function 'define-fringe-bitmap' can now be used to create new -fringe bitmaps, as well as change the built-in fringe bitmaps. - -To change a built-in bitmap, do (require 'fringe) and use the symbol -identifing the bitmap such as `left-truncation or `continued-line'. - -*** New function 'destroy-fringe-bitmap' may be used to destroy a -previously created bitmap, or restore a built-in bitmap. - -*** New function 'set-fringe-bitmap-face' can now be used to set a -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. - -*** There are new display properties, left-fringe and right-fringe, -that can be used to show a specific bitmap in the left or right fringe -bitmap of the display line. - -Format is 'display '(left-fringe BITMAP [FACE]), where BITMAP is a -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. - -+++ -** 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 default value of `sentence-end' is now defined using the new -variable `sentence-end-without-space' which contains such characters -that end a sentence without following spaces. - -+++ -** The function `sentence-end' should be used to obtain the value of -the variable `sentence-end'. If the variable `sentence-end' is nil, -then this function returns the regexp constructed from the variables -`sentence-end-without-period', `sentence-end-double-space' and -`sentence-end-without-space'. - -+++ -** 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. - -+++ -** 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. - -+++ -** `declare' is now a macro. This change was made mostly for -documentation purposes and should have no real effect on Lisp code. - -+++ -** A file name handler can declare which operations it handles. - -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. - -This is useful for autoloaded handlers, to prevent them from being -autoloaded when not really necessary. - -+++ -** 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. - -+++ -** 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. - -+++ -** 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. - -+++ (lispref) -??? (man) -** The mouse pointer shape in void text areas (i.e. after the end of a -line or below the last line in the buffer) of the text window is now -controlled by the new variable `void-text-area-pointer'. The default -is to use the `arrow' (non-text) pointer. Other choices are `text' -(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'. - -+++ -** The mouse pointer shape over an image can now be controlled by the -:pointer image property. - -+++ -** The mouse pointer shape over ordinary text or images may now be -controlled/overriden via the `pointer' text property. +** 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. @@ -3319,6 +3642,27 @@ 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: +++ @@ -3367,45 +3711,58 @@ of that object, and the total width and height of that object. +++ -** 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. - ---- -** New function `redirect-debugging-output' can be used to redirect -debugging output on the stderr file handle to a file. - -+++ -** `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. - -+++ -** `makehash' is now obsolete. Use `make-hash-table' instead. - -+++ -** 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. - -+++ -** Major modes can define `eldoc-documentation-function' -locally to provide Eldoc functionality by some method appropriate to -the language. - ---- -** 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. - -+++ -** The argument to forward-word, backward-word, forward-to-indentation -and backward-to-indentation is now optional, and defaults to 1. +** 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. + ++++ +** 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 display space :width and :align-to text properties are now +supported on text terminals. + ++++ +** Arguments for remove-overlays are now optional, so that you can +remove all overlays in the buffer by just calling (remove-overlay). + ++++ +** New variable char-property-alias-alist. + +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. + ++++ +** 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. + ++++ +** 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. + ++++ +** 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. +++ ** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able @@ -3416,42 +3773,223 @@ does that, this value may not be accurate. +++ -** 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. - -+++ -** The new functions `window-pixel-edges' and `window-inside-pixel-edges' -return window edges in units of pixels, rather than columns and lines. - -+++ -** The kill-buffer-hook is now permanent-local. - -+++ -** `select-window' takes an optional second argument `norecord', like -`switch-to-buffer'. - -+++ -** The new macro `with-selected-window' temporarily switches the -selected window without impacting the order of buffer-list. - -+++ -** 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. - -+++ -** (map-keymap FUNCTION KEYMAP) applies the function to each binding -in the keymap. - ---- -** 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 display-supports-face-attributes-p may be used to test +whether a given set of face attributes is actually displayable. + +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. + +--- +** 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 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). + ++++ +** 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. + +--- +** `set-fontset-font', `fontset-info', `fontset-font' now operate on +the default fontset if the argument NAME is nil.. + +--- +** The function face-differs-from-default-p now truly checks whether the +given face displays differently from the default face or not (previously +it did only a very cursory check). + ++++ +** face-attribute, face-foreground, face-background, and face-stipple now +accept a new optional argument, INHERIT, which controls how face +inheritance is used when determining the value of a face attribute. + ++++ +** New functions face-attribute-relative-p and merge-face-attribute +help with handling relative face attributes. + ++++ +** The priority of faces in an :inherit attribute face-list is reversed. +If a face contains an :inherit attribute with a list of faces, earlier +faces in the list override later faces in the list; in previous releases +of Emacs, the order was the opposite. This change was made so that +:inherit face-lists operate identically to face-lists in text `face' +properties. + ++++ +** New standard font-lock face `font-lock-preprocessor-face'. + ++++ +** New special text property `font-lock-face'. + +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'. + +--- +** 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: + + s{ + foo + }{ + bar + }e + +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. + ++++ +** 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. + +--- +** 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. + ++++ +** A file name handler can declare which operations it handles. + +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. + +This is useful for autoloaded handlers, to prevent them from being +autoloaded when not really necessary. + ++++ +** `set-auto-mode' now gives the interpreter magic line (if present) +precedence over the file name. Likewise an for my-kill-line). - -- The new variable `this-original-command' contains the original - command before remapping. It is equal to `this-command' when the - command was not remapped. - -+++ -** New variable emulation-mode-map-alists. - -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. - -+++ -** Atomic change groups. - -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: - - (atomic-change-group - (insert foo) - (delete-region x y)) - -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 you need something more sophisticated, you can directly call the -lower-level functions that `atomic-change-group' uses. Here is how. - -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. - -Before you change the buffer again, you must activate the change -group. Pass the handle to `activate-change-group' afterward to -do this. - -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. - -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. - -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: - - (nconc (prepare-change-group buffer-1) - (prepare-change-group buffer-2)) - -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'. - -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. - -+++ -** New variable char-property-alias-alist. - -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. - -+++ -** New special text property `font-lock-face'. - -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'. - -+++ -** New function remove-list-of-text-properties. - -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. - -+++ -** New function insert-for-yank. - -This function normally works like `insert' but removes the text -properties in the `yank-excluded-properties' list. However, if the -inserted text has a `yank-handler' text property on the first -character of the string, the insertion of the text may be modified in -a number of ways. See the description of `yank-handler' below. - -+++ -** New function insert-buffer-substring-as-yank. - -This function works like `insert-buffer-substring', but removes the -text properties in the `yank-excluded-properties' list. - -+++ -** New function insert-buffer-substring-no-properties. - -This function is like insert-buffer-substring, but removes all -text properties from the inserted substring. - -+++ -** New `yank-handler' text property may be used to control how -previously killed text on the kill-ring is reinserted. - -The value of the yank-handler property must be a list with one to four -elements with the following format: - (FUNCTION PARAM NOEXCLUDE UNDO). - -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: - - 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 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. - -+++ -*** 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. - -+++ -** New function display-supports-face-attributes-p may be used to test -whether a given set of face attributes is actually displayable. - -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. - ---- -** The function face-differs-from-default-p now truly checks whether the -given face displays differently from the default face or not (previously -it did only a very cursory check). - -+++ -** face-attribute, face-foreground, face-background, and face-stipple now -accept a new optional argument, INHERIT, which controls how face -inheritance is used when determining the value of a face attribute. - -+++ -** New functions face-attribute-relative-p and merge-face-attribute -help with handling relative face attributes. - -+++ -** The priority of faces in an :inherit attribute face-list is reversed. -If a face contains an :inherit attribute with a list of faces, earlier -faces in the list override later faces in the list; in previous releases -of Emacs, the order was the opposite. This change was made so that -:inherit face-lists operate identically to face-lists in text `face' -properties. - -+++ -** Enhancements to process support - -*** Function list-processes now has an optional argument; if non-nil, -only the processes whose query-on-exit flag is set are listed. - -*** 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 new low-level functions process-plist and set-process-plist are -used to access and replace the entire property list of a process. - -*** Function accept-process-output now has an optional fourth arg -`just-this-one'. If non-nil, only output from the specified process -is handled, suspending output from other processes. If value is an -integer, also inhibit running timers. This feature is generally not -recommended, but may be necessary for specific applications, such as -speech synthesis. - ---- -*** Adaptive read buffering of subprocess output. - -On some systems, when emacs reads the output from a subprocess, the -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. - -+++ -** Enhanced networking support. - -*** 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. - -- 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. - -To test for the availability of a given feature, use featurep like this: - (featurep 'make-network-process '(:type datagram)) - -*** Original open-network-stream is now emulated using make-network-process. - -*** New function open-network-stream-nowait. - -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". - -*** New function open-network-stream-server. - -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. - -*** New functions process-datagram-address and set-process-datagram-address. - -These functions are used with datagram-based network processes to get -and set the current address of the remote partner. - -*** New function format-network-address. - -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. - -*** 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. - -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. - -*** 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. - -*** New function network-interface-list. - -This function returns a list of network interface names and their -current network addresses. - -*** New function network-interface-info. - -This function returns the network address, hardware address, current -status, and other information about a specific network interface. - -+++ -** New function copy-tree. - -+++ -** New function substring-no-properties. - -+++ -** New function minibuffer-selected-window. - -+++ -** New function `call-process-shell-command'. - -+++ -** New function `process-file'. - -This is similar to `call-process', but obeys file handlers. The file -handler is chosen based on default-directory. - ---- -** The dummy function keys made by easymenu -are now always lower case. If you specify the -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. - -+++ -** 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. - ---- -** 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)))) - -+++ -** File local variables. - -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. - -+++ -** New function format-mode-line. - -This returns the mode-line or header-line of the selected (or a -specified) window as a string with or without text properties. - +++ ** Functions `get' and `plist-get' no longer signals an error for a malformed property list. They also detect cyclic lists. +++ -** 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'. - -+++ -** New function `tool-bar-local-item-from-menu' - -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 function `atan' now accepts an optional second argument. When called with 2 arguments, as in `(atan Y X)', `atan' returns the @@ -4303,19 +4246,10 @@ 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. - -+++ -** 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. +** New function format-mode-line. + +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 @@ -4338,41 +4272,6 @@ 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. @@ -4384,44 +4283,6 @@ 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: - - s{ - foo - }{ - bar - }e - -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. - ---- ** describe-vector now takes a second argument `describer' which is called to print the entries' values. It defaults to `princ'. @@ -4429,137 +4290,33 @@ ** 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. - ---- -** 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. - ---- -** In `replace-match', the replacement text no longer inherits -properties from surrounding text. - -+++ -** The list returned by `(match-data t)' now has the buffer as a final -element, if the last match was on a buffer. `set-match-data' -accepts such a list for restoring the match state. - -+++ -** New function `buffer-local-value'. - -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. - ---- ** 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. +++ -** 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. - ---- -** 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 `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. - -+++ -** define-minor-mode now accepts arbitrary additional keyword arguments -and simply passes them to defcustom, if applicable. - -+++ -** define-derived-mode by default creates a new empty abbrev table. -It does not copy abbrevs from the parent mode's 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. - -+++ -** 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. - -+++ ** 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. ---- -** `define-key-after' now accepts keys longer than 1. - -+++ -** The local variable `no-byte-compile' in elisp files is now obeyed. - -+++ -** 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. - -+++ -** New functions `keymap-prompt' and `current-active-maps'. - ---- -** New function `describe-buffer-bindings'. - +++ ** New vars `exec-suffixes' and `load-suffixes' used when searching for an executable resp. an elisp file. +++ -** 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. - -+++ ** 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. +++ -** 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 variables most-positive-fixnum and most-negative-fixnum hold the largest and smallest possible integer values. @@ -4569,30 +4326,191 @@ formerly used for that purpose is now an alias for locale-coding-system. --- -** 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. - ---- ** New function x-send-client-message sends a client message when running under X. -+++ -** Arguments for remove-overlays are now optional, so that you can remove -all overlays in the buffer by just calling (remove-overlay). +--- +** easy-mmode-define-global-mode has been renamed to +define-global-minor-mode. The old name remains as an alias. + +--- +** 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 `assoc-string' replaces `assoc-ignore-case' and +`assoc-ignore-representation', which are still available, but have +been declared obsolete. + ++++ +*** 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. + ++++ +*** 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. + ++++ +*** New function copy-tree makes a copy of a tree, recursively copying +both cars and cdrs. + ++++ +*** 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 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. + ++++ +*** 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 new primitive `get-internal-run-time' returns the processor +run time used by Emacs since start-up. + ++++ +*** The new function insert-buffer-substring-as-yank works like +`insert-buffer-substring', but removes the text properties in the +`yank-excluded-properties' list. + ++++ +*** The new function insert-buffer-substring-no-properties is like +insert-buffer-substring, but removes all text properties from the +inserted substring. + ++++ +*** 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 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. + ++++ +*** New function `looking-back' checks whether a regular expression matches +the text before point. Specifying the LIMIT argument bounds how far +back the match can start; this is a way to keep it from taking too long. + ++++ +*** New 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'. + +*** 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. + ++++ +*** New function minibuffer-selected-window returns the window which +was selected when entering the minibuffer. + ++++ +*** The new function `modify-all-frames-parameters' modifies parameters +for all (existing and future) frames. + ++++ +*** 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. + +--- +*** New function quail-find-key returns a list of keys to type in the +current input method to input a character. + ++++ +*** The new function `rassq-delete-all' deletes all elements from an +alist whose cdr is `eq' to a specified value. + ++++ +*** 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 new primitive `set-file-times' sets a file's access and +modification times. Magic file name handlers can handle this +operation. + ++++ +*** New function substring-no-properties returns a substring without +text properties. + ++++ +*** 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. + ++++ +*** `syntax-class' extracts the class of a syntax code (as returned +by syntax-after). + ++++ +*** New function `tool-bar-local-item-from-menu' + +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. + ++++ +*** New function window-body-height. +This is like window-height but does not count the mode line +or the header line. + ++++ +*** (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 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. - -Use M-x gdba to start GDB-UI. - *** 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 @@ 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