/[emacs]/emacs/etc/NEWS
ViewVC logotype

Diff of /emacs/etc/NEWS

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1183 by rms, Sun May 8 23:02:44 2005 UTC revision 1.1184 by rms, Mon May 9 21:02:37 2005 UTC
# Line 104  the files mac/README and mac/INSTALL for Line 104  the files mac/README and mac/INSTALL for
104  ---  ---
105  ** Building with -DENABLE_CHECKING does not automatically build with union  ** Building with -DENABLE_CHECKING does not automatically build with union
106  types any more.  Add -DUSE_LISP_UNION_TYPE if you want union types.  types any more.  Add -DUSE_LISP_UNION_TYPE if you want union types.
107    
108    ---
109    ** When pure storage overflows while dumping, Emacs now prints how
110    much pure storage it will approximately need.
111    
112  * Startup Changes in Emacs 22.1  * Startup Changes in Emacs 22.1
113    
# Line 181  automatically at startup, if it exists. Line 185  automatically at startup, if it exists.
185  modified buffers, it saves the abbrevs too if they have changed.  It  modified buffers, it saves the abbrevs too if they have changed.  It
186  can do this either silently or asking for confirmation first,  can do this either silently or asking for confirmation first,
187  according to the value of `save-abbrevs'.  according to the value of `save-abbrevs'.
188    
189    * Incompatible Editing Changes in Emacs 22.1
190    
191    +++
192    ** M-g is now a prefix key.
193    M-g g and M-g M-g run goto-line.
194    M-g n and M-g M-n run next-error (like C-x `).
195    M-g p and M-g M-p run previous-error.
196    
197    +++
198    ** C-u M-g M-g switches to the most recent previous buffer,
199    and goes to the specified line in that buffer.
200    
201    When goto-line starts to execute, if there's a number in the buffer at
202    point then it acts as the default argument for the minibuffer.
203    
204    +++
205    ** The old bindings C-M-delete and C-M-backspace have been deleted,
206    since there are situations where one or the other will shut down
207    the operating system or your X server.
208    
209    +++
210    ** line-move-ignore-invisible now defaults to t.
211    
212    +++
213    ** When the undo information of the current command gets really large
214    (beyond the value of `undo-outer-limit'), Emacs discards it and warns
215    you about it.
216    
217    +++
218    ** `apply-macro-to-region-lines' now operates on all lines that begin
219    in the region, rather than on all complete lines in the region.
220    
221    +++
222    ** A prefix argument is no longer required to repeat a jump to a
223    previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the
224    mark ring.  Use C-u C-u C-SPC to set the mark immediately after a jump.
225    
226    +++
227    ** The info-search bindings on C-h C-f, C-h C-k and C-h C-i
228    have been moved to C-h F, C-h K and C-h S.
229    
230    +++
231    ** In incremental search, C-w is changed.  M-%, C-M-w and C-M-y are special.
232    
233    See below under "incremental search changes".
234    
235    ---
236    ** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
237    
238    Since the default input is the current directory, this has the effect
239    of specifying the current directory.  Normally that means to visit the
240    directory with Dired.
241    
242    +++
243    ** The completion commands TAB, SPC and ? in the minibuffer apply only
244    to the text before point.  If there is text in the buffer after point,
245    it remains unchanged.
246    
247    +++
248    ** M-o now is the prefix key for setting text properties;
249    M-o M-o requests refontification.
250    
251    +++
252    ** You can now follow links by clicking Mouse-1 on the link.
253    
254    See below for more details.
255    
256    +++
257    ** In Dired's ! command (dired-do-shell-command), `*' and `?' now
258    control substitution of the file names only when they are surrounded
259    by whitespace.  This means you can now use them as shell wildcards
260    too.  If you want to use just plain `*' as a wildcard, type `*""'; the
261    doublequotes make no difference in the shell, but they prevent
262    special treatment in `dired-do-shell-command'.
263    
264  * Editing Changes in Emacs 22.1  * Editing Changes in Emacs 22.1
265    
# Line 190  according to the value of `save-abbrevs' Line 268  according to the value of `save-abbrevs'
268  On 32bit machines, it is now 256M (i.e. 268435455).  On 32bit machines, it is now 256M (i.e. 268435455).
269    
270  +++  +++
 ** 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.  
   
 +++  
271  ** M-g is now a prefix key.  ** M-g is now a prefix key.
272  M-g g and M-g M-g run goto-line.  M-g g and M-g M-g run goto-line.
273  M-g n and M-g M-n run next-error (like C-x `).  M-g n and M-g M-n run next-error (like C-x `).
274  M-g p and M-g M-p run previous-error.  M-g p and M-g M-p run previous-error.
275    
276  +++  +++
277  ** M-o now is the prefix key for setting text properties;  ** C-u M-g M-g switches to the most recent previous buffer,
 M-o M-o requests refontification.  
   
 +++  
 ** C-u M-x goto-line now switches to the most recent previous buffer,  
278  and goes to the specified line in that buffer.  and goes to the specified line in that buffer.
279    
280  When goto-line starts to execute, if there's a number in the buffer at  When goto-line starts to execute, if there's a number in the buffer at
281  point then it acts as the default argument for the minibuffer.  point then it acts as the default argument for the minibuffer.
282    
283  +++  +++
 ** 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.  
   
 +++  
284  ** The old bindings C-M-delete and C-M-backspace have been deleted,  ** The old bindings C-M-delete and C-M-backspace have been deleted,
285  since there are situations where one or the other will shut down  since there are situations where one or the other will shut down
286  the operating system or your X server.  the operating system or your X server.
287    
288  +++  +++
289  ** `undo-only' does an undo which does not redo any previous undo.  ** line-move-ignore-invisible now defaults to t.
290    
291  +++  +++
292  ** When the undo information of the current command gets really large  ** When the undo information of the current command gets really large
# Line 230  the operating system or your X server. Line 294  the operating system or your X server.
294  you about it.  you about it.
295    
296  +++  +++
297  ** M-SPC (just-one-space) when given a numeric argument N  ** `apply-macro-to-region-lines' now operates on all lines that begin
298  converts whitespace around point to N spaces.  in the region, rather than on all complete lines in the region.
299    
300  +++  +++
301  ** line-move-ignore-invisible now defaults to t.  ** You can now switch buffers in a cyclic order with C-x C-left and
302    (prev-buffer) and C-x C-right (next-buffer).  C-x left and C-x right
303    can be used as well.
304    
305    +++
306    ** `undo-only' does an undo which does not redo any previous undo.
307    
308    +++
309    ** M-SPC (just-one-space) when given a numeric argument N
310    converts whitespace around point to N spaces.
311    
312  ---  ---
313  ** New commands to operate on pairs of open and close characters:  ** New commands to operate on pairs of open and close characters:
# Line 256  been changed to reflect those used in Te Line 329  been changed to reflect those used in Te
329  in Indented-Text mode.  in Indented-Text mode.
330    
331  +++  +++
332  ** Movement commands `beginning-of-buffer', `end-of-buffer',  ** M-x setenv now expands environment variable references.
 `beginning-of-defun', `end-of-defun' do not set the mark if the mark  
 is already active in Transient Mark mode.  
   
 +++  
 ** `apply-macro-to-region-lines' now operates on all lines that begin  
 in the region, rather than on all complete lines in the region.  
333    
334  +++  Substrings of the form `$foo' and `${foo}' in the specified new value
335  ** M-x setenv now expands environment variables of the form `$foo' and  now refer to the value of environment variable foo.  To include a `$'
336  `${foo}' in the specified new value of the environment variable.  To  in the value, use `$$'.
 include a `$' in the value, use `$$'.  
337    
338  +++  +++
339  ** Unquoted `$' in file names do not signal an error any more when  ** `special-display-buffer-names' and `special-display-regexps' now
340  the corresponding environment variable does not exist.  understand two new boolean pseudo-frame-parameters `same-frame' and
341  Instead, the `$ENVVAR' text is left as is, so that `$$' quoting  `same-window'.
 is only rarely needed.  
342    
343  +++  +++
344  ** The default for the paper size (variable ps-paper-type) is taken  ** The default for the paper size (variable ps-paper-type) is taken
# Line 287  previous mark, i.e. C-u C-SPC C-SPC C-SP Line 352  previous mark, i.e. C-u C-SPC C-SPC C-SP
352  mark ring.  Use C-u C-u C-SPC to set the mark immediately after a jump.  mark ring.  Use C-u C-u C-SPC to set the mark immediately after a jump.
353    
354  +++  +++
355  *** Marking commands extend the region when invoked multiple times.  If  *** Marking commands extend the region when invoked multiple times.
356  you hit M-C-SPC (mark-sexp), M-@ (mark-word), M-h (mark-paragraph), or  
357  C-M-h (mark-defun) repeatedly, the marked region extends each time, so  If you type C-M-SPC (mark-sexp), M-@ (mark-word), M-h
358  you can mark the next two sexps with M-C-SPC M-C-SPC, for example.  (mark-paragraph), or C-M-h (mark-defun) repeatedly, the marked region
359  This feature also works for mark-end-of-sentence, if you bind that to  extends each time, so you can mark the next two sexps with M-C-SPC
360  a key.  It also extends the region when the mark is active in Transient  M-C-SPC, for example.  This feature also works for
361  Mark mode, regardless of the last command.  To start a new region with  mark-end-of-sentence, if you bind that to a key.  It also extends the
362  one of marking commands in Transient Mark mode, you can deactivate the  region when the mark is active in Transient Mark mode, regardless of
363  active region with C-g, or set the new mark with C-SPC.  the last command.  To start a new region with one of marking commands
364    in Transient Mark mode, you can deactivate the active region with C-g,
365    or set the new mark with C-SPC.
366    
367  +++  +++
368  *** M-h (mark-paragraph) now accepts a prefix arg.  *** M-h (mark-paragraph) now accepts a prefix arg.
369    
370  With positive arg, M-h marks the current and the following paragraphs;  With positive arg, M-h marks the current and the following paragraphs;
371  if the arg is negative, it marks the current and the preceding  if the arg is negative, it marks the current and the preceding
372  paragraphs.  paragraphs.
# Line 321  deactivate the mark.  That typically hap Line 389  deactivate the mark.  That typically hap
389  that alters the buffer, but you can also deactivate the mark by typing  that alters the buffer, but you can also deactivate the mark by typing
390  C-g.  C-g.
391    
392    +++
393    *** Movement commands `beginning-of-buffer', `end-of-buffer',
394    `beginning-of-defun', `end-of-defun' do not set the mark if the mark
395    is already active in Transient Mark mode.
396    
397  ** Help command changes:  ** Help command changes:
398    
399  +++  +++
# Line 416  regular expression that you entered to t Line 489  regular expression that you entered to t
489  match is listed first, and the calculated score is shown for each  match is listed first, and the calculated score is shown for each
490  matching item.  matching item.
491    
 ** Window selection changes:  
   
 +++  
 *** `special-display-buffer-names' and `special-display-regexps' now  
 understand two new boolean pseudo-frame-parameters `same-frame' and  
 `same-window'.  
   
492  ** Incremental Search changes:  ** Incremental Search changes:
493    
494  +++  +++
# Line 486  can be edited for each replacement. Line 552  can be edited for each replacement.
552  ** File operation changes:  ** File operation changes:
553    
554  +++  +++
555    *** Unquoted `$' in file names do not signal an error any more when
556    the corresponding environment variable does not exist.
557    Instead, the `$ENVVAR' text is left as is, so that `$$' quoting
558    is only rarely needed.
559    
560    +++
561  *** In processing a local variables list, Emacs strips the prefix and  *** In processing a local variables list, Emacs strips the prefix and
562  suffix are from every line before processing all the lines.  suffix are from every line before processing all the lines.
563    
# Line 566  variable `minibuffer-prompt-properties', Line 638  variable `minibuffer-prompt-properties',
638  prompt string.  prompt string.
639    
640  ---  ---
641  *** Enhanced visual feedback in *Completions* buffer.  *** Enhanced visual feedback in `*Completions*' buffer.
642    
643  Completions lists use faces to highlight what all completions  Completions lists use faces to highlight what all completions
644  have in common and where they begin to differ.  have in common and where they begin to differ.
# Line 600  elements are deleted. Line 672  elements are deleted.
672    
673  ** Redisplay changes:  ** Redisplay changes:
674    
675    +++
676    *** The mode line position information now comes before the major mode.
677    When the file is maintained under version control, that information
678    appears between the position information and the major mode.
679    
680  *** Easy to overlook single character negation is now font-locked.  *** Easy to overlook single character negation is now font-locked.
681  You can use the new variable `font-lock-negation-char-face' and the face of  You can use the new variable `font-lock-negation-char-face' and the face of
682  the same name to customize this.  Currently the cc-modes, sh-script-mode,  the same name to customize this.  Currently the cc-modes, sh-script-mode,
# Line 631  The variable `automatic-hscrolling' was Line 708  The variable `automatic-hscrolling' was
708  `auto-hscroll-mode'.  The old name is still available as an alias.  `auto-hscroll-mode'.  The old name is still available as an alias.
709    
710  *** Moving or scrolling through images (and other lines) taller that  *** Moving or scrolling through images (and other lines) taller that
711  the window now works sensible, by automatically adjusting the window's  the window now works sensibly, by automatically adjusting the window's
712  vscroll property.  vscroll property.
713    
714  +++  +++
# Line 719  of the recognized cursor types. Line 796  of the recognized cursor types.
796  ** Font-Lock changes:  ** Font-Lock changes:
797    
798  +++  +++
799    *** M-o now is the prefix key for setting text properties;
800    M-o M-o requests refontification.
801    
802    +++
803  *** All modes now support using M-x font-lock-mode to toggle  *** All modes now support using M-x font-lock-mode to toggle
804  fontification, even those such as Occur, Info, and comint-derived  fontification, even those such as Occur, Info, and comint-derived
805  modes that do their own fontification in a special way.  modes that do their own fontification in a special way.
# Line 761  jit-lock-defer-contextually is renamed j Line 842  jit-lock-defer-contextually is renamed j
842  jit-lock-context-time determines the delay after which contextual  jit-lock-context-time determines the delay after which contextual
843  refontification takes place.  refontification takes place.
844    
845  ** Menu Bar changes:  ** Menu support:
846    
847  ---  ---
848  *** A menu item "Show/Hide" was added to the top-level menu "Options".  *** A menu item "Show/Hide" was added to the top-level menu "Options".
# Line 775  mode-line. Line 856  mode-line.
856  ---  ---
857  *** Speedbar has moved from the "Tools" top level menu to "Show/Hide".  *** Speedbar has moved from the "Tools" top level menu to "Show/Hide".
858    
859    ---
860    *** You can exit dialog windows and menus by typing C-g.
861    
862    ---
863    *** The menu item "Open File..." has been split into two items, "New File..."
864    and "Open File...".  "Open File..." now opens only existing files.  This is
865    to support existing GUI file selection dialogs better.
866    
867    +++
868    *** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be
869    disabled by customizing the variable `use-file-dialog'.
870    
871    ---
872    *** The pop up menus for Lucid now stay up if you do a fast click and can
873    be navigated with the arrow keys (like Gtk+, Mac and W32).
874    
875    +++
876    *** The Lucid menus can display multilingual text in your locale.  You have
877    to explicitly specify a fontSet resource for this to work, for example
878    `-xrm "Emacs*fontSet:  -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
879    
880    ---
881    *** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
882    ESC, like they do for Gtk+, Mac and W32.
883    
884    +++
885    *** For Gtk+ version 2.4, you can make Emacs use the old file dialog
886    by setting the variable `x-use-old-gtk-file-dialog' to t.  Default is to use
887    the new dialog.
888    
889  ** Mouse changes:  ** Mouse changes:
890    
891  +++  +++
# Line 1184  search multiple buffers.  There is also Line 1295  search multiple buffers.  There is also
1295  buffers to search by their filename.  Internally, Occur mode has been  buffers to search by their filename.  Internally, Occur mode has been
1296  rewritten, and now uses font-lock, among other changes.  rewritten, and now uses font-lock, among other changes.
1297    
1298    ** Grep changes:
1299    
1300  +++  +++
1301  ** Grep has been decoupled from compilation mode setup.  *** Grep has been decoupled from compilation mode setup.
1302    
1303  There's a new separate package grep.el, with its own submenu and  There's a new separate package grep.el, with its own submenu and
1304  customization group.  customization group.
# Line 1230  When `-H' is used, the grep command line Line 1343  When `-H' is used, the grep command line
1343  unchanged to the system to execute, which allows more complicated  unchanged to the system to execute, which allows more complicated
1344  command lines to be used than was possible before.  command lines to be used than was possible before.
1345    
 ** Emacs server changes:  
   
 +++  
 *** 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.  
   
 ** Menu support:  
   
 ---  
 *** 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'.  
   
1346  ** X Windows Support:  ** X Windows Support:
1347    
1348  +++  +++
# Line 1296  and use the more appropriately result. Line 1377  and use the more appropriately result.
1377  On the other hand, the size of the thumb does not represent the actual  On the other hand, the size of the thumb does not represent the actual
1378  amount of text shown any more (only a crude approximation of it).  amount of text shown any more (only a crude approximation of it).
1379    
 ---  
 *** 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.  
   
 +++  
 *** 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.  
   
1380  ** Xterm support:  ** Xterm support:
1381    
1382  ---  ---
# Line 1358  colors as on X. Line 1421  colors as on X.
1421  ---  ---
1422  *** There's a new support for colors on `rxvt' terminal emulator.  *** There's a new support for colors on `rxvt' terminal emulator.
1423    
1424  * New modes and packages in Emacs 22.1  * New Modes and Packages in Emacs 22.1
1425    
1426  +++  +++
1427  ** New package benchmark.el contains simple support for convenient  ** New package benchmark.el contains simple support for convenient
# Line 1631  restores the previous value of `buffer-i Line 1694  restores the previous value of `buffer-i
1694  +++  +++
1695  ** The wdired.el package allows you to use normal editing commands on Dired  ** The wdired.el package allows you to use normal editing commands on Dired
1696  buffers to change filenames, permissions, etc...  buffers to change filenames, permissions, etc...
1697    
1698    ---
1699    ** The TCL package tcl-mode.el was replaced by tcl.el.
1700    This was actually done in Emacs-21.1, and was not documented.
1701    
1702    ** The new package bindat.el provides functions to unpack and pack
1703    binary data structures, such as network packets, to and from Lisp
1704    data structures.
1705    
1706    +++
1707    ** The new package button.el implements simple and fast `clickable buttons'
1708    in emacs buffers.  `buttons' are much lighter-weight than the `widgets'
1709    implemented by widget.el, and can be used by lisp code that doesn't
1710    require the full power of widgets.  Emacs uses buttons for such things
1711    as help and apropos buffers.
1712    
1713    ---
1714    ** master-mode.el implements a minor mode for scrolling a slave
1715    buffer without leaving your current buffer, the master buffer.
1716    
1717    It can be used by sql.el, for example: the SQL buffer is the master
1718    and its SQLi buffer is the slave.  This allows you to scroll the SQLi
1719    buffer containing the output from the SQL buffer containing the
1720    commands.
1721    
1722    This is how to use sql.el and master.el together: the variable
1723    sql-buffer contains the slave buffer.  It is a local variable in the
1724    SQL buffer.
1725    
1726    (add-hook 'sql-mode-hook
1727       (function (lambda ()
1728                   (master-mode t)
1729                   (master-set-slave sql-buffer))))
1730    (add-hook 'sql-set-sqli-hook
1731       (function (lambda ()
1732                   (master-set-slave sql-buffer))))
1733    
1734    +++
1735    ** New Lisp library testcover.el works with edebug to help you determine
1736    whether you've tested all your Lisp code.  Function testcover-start
1737    instruments all functions in a given file.  Then test your code.  Function
1738    testcover-mark-all adds overlay "splotches" to the Lisp file's buffer to
1739    show where coverage is lacking.  Command testcover-next-mark (bind it to
1740    a key!) will move point forward to the next spot that has a splotch.
1741    
1742    Normally, a red splotch indicates the form was never completely
1743    evaluated; a brown splotch means it always evaluated to the same
1744    value.  The red splotches are skipped for forms that can't possibly
1745    complete their evaluation, such as `error'.  The brown splotches are
1746    skipped for forms that are expected to always evaluate to the same
1747    value, such as (setq x 14).
1748    
1749    For difficult cases, you can add do-nothing macros to your code to
1750    help out the test coverage tool.  The macro `noreturn' suppresses a
1751    red splotch.  It is an error if the argument to `noreturn' does
1752    return.  The macro 1value suppresses a brown splotch for its argument.
1753    This macro is a no-op except during test-coverage -- then it signals
1754    an error if the argument actually returns differing values.
1755    
1756  * Changes in specialized modes and packages:  * Changes in Specialized Modes and Packages in Emacs 22.1:
1757    
1758  +++  +++
1759  ** In Outline mode, hide-body no longer hides lines at the top  ** In Outline mode, hide-body no longer hides lines at the top
# Line 1676  resync points in both windows. Line 1797  resync points in both windows.
1797  When this option is enabled, M-x add-change-log-entry always  When this option is enabled, M-x add-change-log-entry always
1798  starts a new record regardless of when the last record is.  starts a new record regardless of when the last record is.
1799    
 +++  
 ** 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'.  
   
1800  ---  ---
1801  ** PO translation files are decoded according to their MIME headers  ** PO translation files are decoded according to their MIME headers
1802  when Emacs visits them.  when Emacs visits them.
1803    
1804  ** Info mode:  ** Info mode changes:
1805    
1806  +++  +++
1807  *** A numeric prefix argument of `info' selects an Info buffer  *** A numeric prefix argument of `info' selects an Info buffer
# Line 1775  function also defines the result format Line 1885  function also defines the result format
1885  `eval-print-last-sexp' (C-j) and some edebug evaluation functions.  `eval-print-last-sexp' (C-j) and some edebug evaluation functions.
1886    
1887  +++  +++
1888  ** CC Mode changes.  ** CC mode changes.
1889    
1890  *** Font lock support.  *** Font lock support.
1891  CC Mode now provides font lock support for all its languages.  This  CC Mode now provides font lock support for all its languages.  This
# Line 2517  anyone has committed to the repository s Line 2627  anyone has committed to the repository s
2627  "checkout", "update" or "commit".  That means using cvs diff options  "checkout", "update" or "commit".  That means using cvs diff options
2628  -rBASE -rHEAD.  -rBASE -rHEAD.
2629    
2630    +++
2631    ** There is a new user option `mail-default-directory' that allows you
2632    to specify the value of `default-directory' for mail buffers.  This
2633    directory is used for auto-save files of mail buffers.  It defaults to
2634    "~/".
2635    
2636    +++
2637    ** Emacs can now indicate in the mode-line the presence of new e-mail
2638    in a directory or in a file.  See the documentation of the user option
2639    `display-time-mail-directory'.
2640    
2641  ** Rmail changes:  ** Rmail changes:
2642    
2643  ---  ---
# Line 2732  This is like `strokes-global-set-stroke' Line 2853  This is like `strokes-global-set-stroke'
2853  the stroke directly to a string to insert.  This is convenient for  the stroke directly to a string to insert.  This is convenient for
2854  using strokes as an input method.  using strokes as an input method.
2855    
2856    ** Emacs server changes:
2857    
2858    +++
2859    *** You can have several Emacs servers on the same machine.
2860    
2861            % emacs --eval '(setq server-name "foo")' -f server-start &
2862            % emacs --eval '(setq server-name "bar")' -f server-start &
2863            % emacsclient -s foo file1
2864            % emacsclient -s bar file2
2865    
2866    +++
2867    *** The `emacsclient' command understands the options `--eval' and
2868    `--display' which tell Emacs respectively to evaluate the given elisp
2869    expression and to use the given display when visiting files.
2870    
2871    +++
2872    *** User option `server-mode' can be used to start a server process.
2873    
2874  ---  ---
2875  ** LDAP support now defaults to ldapsearch from OpenLDAP version 2.  ** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
2876    
# Line 2779  boundries etc.  For more info, see the d Line 2918  boundries etc.  For more info, see the d
2918  ---  ---
2919  ** cplus-md.el has been removed to avoid problems with Custom.  ** cplus-md.el has been removed to avoid problems with Custom.
2920    
2921  * Changes for non-free operating systems  * Changes in Emacs 22.1 on non-free operating systems
2922    
2923  +++  +++
2924  ** Passing resources on the command line now works on MS Windows.  ** Passing resources on the command line now works on MS Windows.
# Line 2854  variable `mac-keyboard-text-encoding' an Line 2993  variable `mac-keyboard-text-encoding' an
2993  * Incompatible Lisp Changes in Emacs 22.1  * Incompatible Lisp Changes in Emacs 22.1
2994    
2995  +++  +++
 ** The new interactive-specification `G' reads a file name  
 much like `F', but if the input is a directory name (even defaulted),  
 it returns just the directory name.  
   
 +++  
2996  ** `suppress-keymap' now works by remapping `self-insert-command' to  ** `suppress-keymap' now works by remapping `self-insert-command' to
2997  the command `undefined'.  (In earlier Emacs versions, it used  the command `undefined'.  (In earlier Emacs versions, it used
2998  `substitute-key-definition' to rebind self inserting characters to  `substitute-key-definition' to rebind self inserting characters to
# Line 2868  the command `undefined'.  (In earlier Em Line 3002  the command `undefined'.  (In earlier Em
3002  ** Mode line display ignores text properties as well as the  ** Mode line display ignores text properties as well as the
3003  :propertize and :eval forms in the value of a variable whose  :propertize and :eval forms in the value of a variable whose
3004  `risky-local-variable' property is nil.  `risky-local-variable' property is nil.
3005    
3006    ---
3007    ** Support for Mocklisp has been removed.
3008    
3009  * Lisp Changes in Emacs 22.1  * Lisp Changes in Emacs 22.1
3010    
3011  ** New function `locate-file' searches for a file in a list of directories.  ** General Lisp changes:
 `locate-file' accepts a name of a file to search (a string), and two  
 lists: a list of directories to search in and a list of suffixes to  
 try; typical usage might use `exec-path' and `load-path' for the list  
 of directories, and `exec-suffixes' and `load-suffixes' for the list  
 of suffixes.  The function also accepts a predicate argument to  
 further filter candidate files.  
3012    
3013  One advantage of using this function is that the list of suffixes in  +++
3014  `exec-suffixes' is OS-dependant, so this function will find  *** The function `eql' is now available without requiring the CL package.
 executables without polluting Lisp code with OS dependancies.  
3015    
3016  +++  +++
3017  ** The default value of `sentence-end' is now defined using the new  *** `makehash' is now obsolete.  Use `make-hash-table' instead.
 variable `sentence-end-without-space', which contains such characters  
 that end a sentence without following spaces.  
3018    
3019  The function `sentence-end' should be used to obtain the value of the  +++
3020  variable `sentence-end'.  If the variable `sentence-end' is nil, then  *** If optional third argument APPEND to `add-to-list' is non-nil, a
3021  this function returns the regexp constructed from the variables  new element gets added at the end of the list instead of at the
3022  `sentence-end-without-period', `sentence-end-double-space' and  beginning.  This change actually occurred in Emacs-21.1, but was not
3023  `sentence-end-without-space'.  documented.
3024    
3025  +++  +++
3026  ** The argument to forward-word, backward-word, forward-to-indentation  *** New function `copy-tree' makes a copy of a tree, recursively copying
3027  and backward-to-indentation is now optional, and defaults to 1.  both cars and cdrs.
3028    
3029  +++  +++
3030  ** If a command sets transient-mark-mode to `only', that  *** New function `delete-dups' destructively removes `equal'
3031  enables Transient Mark mode for the following command only.  duplicates from a list.  Of several `equal' occurrences of an element
3032  During that following command, the value of transient-mark-mode  in the list, the first one is kept.
 is `identity'.  If it is still `identity' at the end of the command,  
 it changes to nil.  
3033    
3034  +++  +++
3035  ** The new hook `before-save-hook' is invoked by `basic-save-buffer'  *** `declare' is now a macro.  This change was made mostly for
3036  before saving buffers.  This allows packages to perform various final  documentation purposes and should have no real effect on Lisp code.
 tasks, for example; it can be used by the copyright package to make  
 sure saved files have the current year in any copyright headers.  
3037    
3038  +++  +++
3039  ** If a buffer sets buffer-save-without-query to non-nil,  *** The new function `rassq-delete-all' deletes all elements from an
3040  save-some-buffers will always save that buffer without asking  alist whose cdr is `eq' to a specified value.
3041  (if it's modified).  
3042    +++
3043    *** The function `number-sequence' returns a list of equally-separated
3044    numbers.  For instance, (number-sequence 4 9) returns (4 5 6 7 8 9).
3045    By default, the separation is 1, but you can specify a different separation
3046    as the third argument.  (number-sequence 1.5 6 2) returns (1.5 3.5 5.5).
3047    
3048    +++
3049    *** The variables `most-positive-fixnum' and `most-negative-fixnum'
3050    hold the largest and smallest possible integer values.
3051    
3052    +++
3053    *** The flags, width, and precision options for %-specifications in function
3054    `format' are now documented.  Some flags that were accepted but not
3055    implemented (such as "*") are no longer accepted.
3056    
3057    +++
3058    *** Functions `get' and `plist-get' no longer signals an error for
3059    a malformed property list.  They also detect cyclic lists.
3060    
3061    +++
3062    *** The new functions `lax-plist-get' and `lax-plist-put' are like
3063    `plist-get' and `plist-put', except that they compare the property
3064    name using `equal' rather than `eq'.
3065    
3066    +++
3067    *** The new variable `print-continuous-numbering', when non-nil, says
3068    that successive calls to print functions should use the same
3069    numberings for circular structure references.  This is only relevant
3070    when `print-circle' is non-nil.
3071    
3072    When you bind `print-continuous-numbering' to t, you should
3073    also bind `print-number-table' to nil.
3074    
3075    +++
3076    *** New function `macroexpand-all' expands all macros in a form.
3077    
3078    It is similar to the Common-Lisp function of the same name.
3079    One difference is that it guarantees to return the original argument
3080    if no expansion is done, which can be tested using `eq'.
3081    
3082    +++
3083    *** The function `atan' now accepts an optional second argument.
3084    
3085    When called with 2 arguments, as in `(atan Y X)', `atan' returns the
3086    angle in radians between the vector [X, Y] and the X axis.  (This is
3087    equivalent to the standard C library function `atan2'.)
3088    
3089    +++
3090    *** A function's doc string can now specify the calling pattern.
3091    
3092    You put this in the doc string's last line, which should match the
3093    regexp "\n\n(fn.*)\\'".
3094    
3095    +++
3096    *** New macro `with-local-quit' temporarily sets `inhibit-quit' to nil.
3097    
3098    This is for use around potentially blocking or long-running code in
3099    timers and `post-command-hook' functions.
3100    
3101    ***  `define-obsolete-function-alias'
3102    combines `defalias' and `make-obsolete'.
3103    
3104    +++
3105    *** New function `unsafep' returns nil if the given Lisp form can't
3106    possibly do anything dangerous; otherwise it returns a reason why the
3107    form might be unsafe (calls unknown function, alters global variable,
3108    etc).
3109    
3110    ** Lisp code indentation features:
3111    
3112    +++
3113    *** The `defmacro' form can contain declarations specifying how to
3114    indent the macro in Lisp mode and how to debug it with Edebug.  The
3115    syntax of defmacro has been extended to
3116    
3117       (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
3118    
3119    DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'.  The
3120    declaration specifiers supported are:
3121    
3122    (indent INDENT)
3123            Set NAME's `lisp-indent-function' property to INDENT.
3124    
3125    (edebug DEBUG)
3126            Set NAME's `edebug-form-spec' property to DEBUG.  (This is
3127            equivalent to writing a `def-edebug-spec' for the macro.
3128    
3129    ---
3130    *** cl-indent now allows customization of Indentation of backquoted forms.
3131    
3132    See the new user option `lisp-backquote-indentation'.
3133    
3134    ---
3135    *** cl-indent now handles indentation of simple and extended `loop' forms.
3136    
3137    The new user options `lisp-loop-keyword-indentation',
3138    `lisp-loop-forms-indentation', and `lisp-simple-loop-indentation' can
3139    be used to customize the indentation of keywords and forms in loop
3140    forms.
3141    
3142    +++
3143    ** Variable aliases:
3144    
3145    *** defvaralias ALIAS-VAR BASE-VAR [DOCSTRING]
3146    
3147    This function defines the symbol ALIAS-VAR as a variable alias for
3148    symbol BASE-VAR.  This means that retrieving the value of ALIAS-VAR
3149    returns the value of BASE-VAR, and changing the value of ALIAS-VAR
3150    changes the value of BASE-VAR.
3151    
3152    DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has
3153    the same documentation as BASE-VAR.
3154    
3155    *** indirect-variable VARIABLE
3156    
3157    This function returns the variable at the end of the chain of aliases
3158    of VARIABLE.  If VARIABLE is not a symbol, or if VARIABLE is not
3159    defined as an alias, the function returns VARIABLE.
3160    
3161    It might be noteworthy that variables aliases work for all kinds of
3162    variables, including buffer-local and frame-local variables.
3163    
3164    +++
3165    *** The macro `define-obsolete-variable-alias' combines `defvaralias' and
3166    `make-obsolete-variable'.
3167    
3168    ** defcustom changes:
3169    
3170    +++
3171    *** defcustom and other custom declarations now use a default group
3172    (the last prior group defined in the same file) when no :group was given.
3173    
3174    ---
3175    *** The new customization type `float' specifies numbers with floating
3176    point (no integers are allowed).
3177    
3178    ** String changes:
3179    
3180    +++
3181    *** The escape sequence \s is now interpreted as a SPACE character,
3182    unless it is followed by a `-' in a character constant (e.g. ?\s-A),
3183    in which case it is still interpreted as the super modifier.
3184    In strings, \s is always interpreted as a space.
3185    
3186    +++
3187    *** A hex escape in a string forces the string to be multibyte.
3188    An octal escape makes it unibyte.
3189    
3190    +++
3191    *** `split-string' now includes null substrings in the returned list if
3192    the optional argument SEPARATORS is non-nil and there are matches for
3193    SEPARATORS at the beginning or end of the string.  If SEPARATORS is
3194    nil, or if the new optional third argument OMIT-NULLS is non-nil, all
3195    empty matches are omitted from the returned list.
3196    
3197    +++
3198    *** New function `string-to-multibyte' converts a unibyte string to a
3199    multibyte string with the same individual character codes.
3200    
3201    +++
3202    *** New function `substring-no-properties returns a substring without
3203    text properties.
3204    
3205    +++
3206    *** The new function `assoc-string' replaces `assoc-ignore-case' and
3207    `assoc-ignore-representation', which are still available, but have
3208    been declared obsolete.
3209    
3210    ** Buffer/variable changes:
3211    
3212    +++
3213    *** The new function `buffer-local-value' returns the buffer-local
3214    binding of VARIABLE (a symbol) in buffer BUFFER.  If VARIABLE does not
3215    have a buffer-local binding in buffer BUFFER, it returns the default
3216    value of VARIABLE instead.
3217    
3218    +++
3219    ** There is a new facility for displaying warnings to the user.
3220    
3221    See the functions `warn' and `display-warning' .
3222    
3223    +++
3224    ** Progress reporters.
3225    
3226    These provide a simple and uniform way for commands to present
3227    progress messages for the user.
3228    
3229    See the new functions `make-progress-reporter',
3230    `progress-reporter-update', `progress-reporter-force-update',
3231    `progress-reporter-done', and `dotimes-with-progress-reporter'.
3232    
3233    ** Buffer positions:
3234    
3235    +++
3236    *** Function `compute-motion' now calculates the usable window
3237    width if the WIDTH argument is nil.  If the TOPOS argument is nil,
3238    the usable window height and width is used.
3239    
3240    +++
3241    *** The `line-move', `scroll-up', and `scroll-down' functions will now
3242    modify the window vscroll to scroll through display rows that are
3243    taller that the height of the window, for example in the presense of
3244    large images.  To disable this feature, Lisp code can bind the new
3245    variable `auto-window-vscroll' to nil.
3246    
3247    +++
3248    *** The argument to `forward-word', `backward-word',
3249    `forward-to-indentation' and `backward-to-indentation' is now
3250    optional, and defaults to 1.
3251    
3252    +++
3253    *** Lisp code can now test if a given buffer position is inside a
3254    clickable link with the new function `mouse-on-link-p'.  This is the
3255    function used by the new `mouse-1-click-follows-link' functionality.
3256    
3257    +++
3258    *** New function `line-number-at-pos' returns the line number of the
3259    current line in the current buffer, or if optional buffer position is
3260    given, line number of corresponding line in current buffer.
3261    
3262    +++
3263    *** `field-beginning' and `field-end' now accept an additional optional
3264    argument, LIMIT.
3265    
3266    +++
3267    *** Function `pos-visible-in-window-p' now returns the pixel coordinates
3268    and partial visiblity state of the corresponding row, if the PARTIALLY
3269    arg is non-nil.
3270    
3271    +++
3272    *** New functions `posn-at-point' and `posn-at-x-y' return
3273    click-event-style position information for a given visible buffer
3274    position or for a given window pixel coordinate.
3275    
3276    ** Text modification:
3277    
3278    +++
3279    *** The new function `insert-buffer-substring-as-yank' works like
3280    `insert-buffer-substring', but removes the text properties in the
3281    `yank-excluded-properties' list.
3282    
3283    +++
3284    *** The new function `insert-buffer-substring-no-properties' is like
3285    insert-buffer-substring, but removes all text properties from the
3286    inserted substring.
3287    
3288    +++
3289    *** The new function `filter-buffer-substring' extracts a buffer
3290    substring, passes it through a set of filter functions, and returns
3291    the filtered substring.  It is used instead of `buffer-substring' or
3292    `delete-and-extract-region' when copying text into a user-accessible
3293    data structure, like the kill-ring, X clipboard, or a register.  The
3294    list of filter function is specified by the new variable
3295    `buffer-substring-filters'.  For example, Longlines mode uses
3296    `buffer-substring-filters' to remove soft newlines from the copied
3297    text.
3298    
3299    +++
3300    *** Function `translate-region' accepts also a char-table as TABLE
3301    argument.
3302    
3303    +++
3304    *** The new translation table `translation-table-for-input'
3305    is used for customizing self-insertion.  The character to
3306    be inserted is translated through it.
3307    
3308    ---
3309    *** Text clones.
3310    
3311    The new function `text-clone-create'.  Text clones are chunks of text
3312    that are kept identical by transparently propagating changes from one
3313    clone to the other.
3314    
3315    ---
3316    *** The function `insert-string' is now obsolete.
3317    
3318    ** Syntax table changes:
3319    
3320    +++
3321    *** The macro `with-syntax-table' does not copy the table any more.
3322    
3323    +++
3324    *** The new function `syntax-after' returns the syntax code
3325    of the character after a specified buffer position, taking account
3326    of text properties as well as the character code.
3327    
3328    +++
3329    *** `syntax-class' extracts the class of a syntax code (as returned
3330    by syntax-after).
3331    
3332    *** The new package `syntax.el' provides an efficient way to find the
3333    current syntactic context (as returned by `parse-partial-sexp').
3334    
3335    ** GC changes:
3336    
3337    +++
3338    *** New variables `gc-elapsed' and `gcs-done' provide extra information
3339    on garbage collection.
3340    
3341    +++
3342    *** Functions from `post-gc-hook' are run at the end of garbage
3343    collection.  The hook is run with GC inhibited, so use it with care.
3344    
3345    ** Buffer-related changes:
3346    
3347  ---  ---
3348  ** list-buffers-noselect now takes an additional argument, BUFFER-LIST.  *** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST.
3349  If it is non-nil, it specifies which buffers to list.  If it is non-nil, it specifies which buffers to list.
3350    
3351  +++  +++
3352  ** The kill-buffer-hook is now permanent-local.  *** `kill-buffer-hook' is now a permanent local.
3353    
3354    ** Local variables lists:
3355    
3356    +++
3357    *** Text properties in local variables.
3358    
3359    A file local variables list cannot specify a string with text
3360    properties--any specified text properties are discarded.
3361    
3362    +++
3363    *** The variable `safe-local-eval-forms' specifies a list of forms that
3364    are ok to evaluate when they appear in an `eval' local variables
3365    specification.  Normally Emacs asks for confirmation before evaluating
3366    such a form, but if the form appears in this list, no confirmation is
3367    needed.
3368    
3369    ---
3370    *** If a function has a non-nil `safe-local-eval-function' property,
3371    that means it is ok to evaluate some calls to that function when it
3372    appears in an `eval' local variables specification.  If the property
3373    is t, then any form calling that function with constant arguments is
3374    ok.  If the property is a function or list of functions, they are called
3375    with the form as argument, and if any returns t, the form is ok to call.
3376    
3377    If the form is not "ok to call", that means Emacs asks for
3378    confirmation as before.
3379    
3380    ** Abbrev changes:
3381    
3382    *** The new function copy-abbrev-table returns a new abbrev table that
3383    is a copy of a given abbrev table.
3384    
3385    +++
3386    *** define-abbrev now accepts an optional argument SYSTEM-FLAG.  If
3387    non-nil, this marks the abbrev as a "system" abbrev, which means that
3388    it won't be stored in the user's abbrevs file if he saves the abbrevs.
3389    Major modes that predefine some abbrevs should always specify this
3390    flag.
3391    
3392    ** Undo changes:
3393    
3394    +++
3395    *** An element of buffer-undo-list can now have the form (apply FUNNAME
3396    . ARGS), where FUNNAME is a symbol other than t or nil.  That stands
3397    for a high-level change that should be undone by evaluating (apply
3398    FUNNAME ARGS).
3399    
3400    These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS)
3401    which indicates that the change which took place was limited to the
3402    range BEG...END and increased the buffer size by DELTA.
3403    
3404    +++
3405    *** If the buffer's undo list for the current command gets longer than
3406    undo-outer-limit, garbage collection empties it.  This is to prevent
3407    it from using up the available memory and choking Emacs.
3408    
3409    +++
3410    ** New `yank-handler' text property can be used to control how
3411    previously killed text on the kill-ring is reinserted.
3412    
3413    The value of the yank-handler property must be a list with one to four
3414    elements with the following format:
3415      (FUNCTION PARAM NOEXCLUDE UNDO).
3416    
3417    The `insert-for-yank' function looks for a yank-handler property on
3418    the first character on its string argument (typically the first
3419    element on the kill-ring).  If a yank-handler property is found,
3420    the normal behavior of `insert-for-yank' is modified in various ways:
3421    
3422      When FUNCTION is present and non-nil, it is called instead of `insert'
3423    to insert the string.  FUNCTION takes one argument--the object to insert.
3424      If PARAM is present and non-nil, it replaces STRING as the object
3425    passed to FUNCTION (or `insert'); for example, if FUNCTION is
3426    `yank-rectangle', PARAM should be a list of strings to insert as a
3427    rectangle.
3428      If NOEXCLUDE is present and non-nil, the normal removal of the
3429    yank-excluded-properties is not performed; instead FUNCTION is
3430    responsible for removing those properties.  This may be necessary
3431    if FUNCTION adjusts point before or after inserting the object.
3432      If UNDO is present and non-nil, it is a function that will be called
3433    by `yank-pop' to undo the insertion of the current object.  It is
3434    called with two arguments, the start and end of the current region.
3435    FUNCTION can set `yank-undo-function' to override the UNDO value.
3436    
3437    *** The functions kill-new, kill-append, and kill-region now have an
3438    optional argument to specify the yank-handler text property to put on
3439    the killed text.
3440    
3441    *** The function yank-pop will now use a non-nil value of the variable
3442    `yank-undo-function' (instead of delete-region) to undo the previous
3443    yank or yank-pop command (or a call to insert-for-yank).  The function
3444    insert-for-yank automatically sets that variable according to the UNDO
3445    element of the string argument's yank-handler text property if present.
3446    
3447    *** The function `insert-for-yank' now supports strings where the
3448    `yank-handler' property does not span the first character of the
3449    string.  The old behavior is available if you call
3450    `insert-for-yank-1' instead.
3451    
3452    *** The new function insert-for-yank normally works like `insert', but
3453    removes the text properties in the `yank-excluded-properties' list.
3454    However, the insertion of the text can be modified by a `yank-handler'
3455    text property.
3456    
3457    ** File operation changes:
3458    
3459    +++
3460    *** New vars `exec-suffixes' and `load-suffixes' used when
3461    searching for an executable resp. an elisp file.
3462    
3463    +++
3464    *** The new primitive `set-file-times' sets a file's access and
3465    modification times.  Magic file name handlers can handle this
3466    operation.
3467    
3468    +++
3469    *** The new function `file-remote-p' tests a file name and returns
3470    non-nil if it specifies a remote file (one that Emacs accesses using
3471    its own special methods and not directly through the file system).
3472    The value in that case is an identifier for the remote file system.
3473    
3474  +++  +++
3475  ** `auto-save-file-format' has been renamed to  *** `auto-save-file-format' has been renamed to
3476  `buffer-auto-save-file-format' and made into a permanent local.  `buffer-auto-save-file-format' and made into a permanent local.
3477    
3478  +++  +++
3479  ** Functions `file-name-sans-extension' and `file-name-extension' now  *** Functions `file-name-sans-extension' and `file-name-extension' now
3480  ignore the leading dots in file names, so that file names such as  ignore the leading dots in file names, so that file names such as
3481  `.emacs' are treated as extensionless.  `.emacs' are treated as extensionless.
3482    
3483  +++  +++
3484  ** copy-file now takes an additional option arg MUSTBENEW.  *** copy-file now takes an additional option arg MUSTBENEW.
3485    
3486  This argument works like the MUSTBENEW argument of write-file.  This argument works like the MUSTBENEW argument of write-file.
3487    
3488  +++  +++
3489  ** If the second argument to `copy-file' is the name of a directory,  *** If the second argument to `copy-file' is the name of a directory,
3490  the file is copied to that directory instead of signaling an error.  the file is copied to that directory instead of signaling an error.
3491    
3492  +++  +++
3493  ** `visited-file-modtime' and `calendar-time-from-absolute' now return  *** `visited-file-modtime' and `calendar-time-from-absolute' now return
3494  a list of two integers, instead of a cons.  a list of two integers, instead of a cons.
3495    
3496  +++  +++
3497  ** `file-chase-links' now takes an optional second argument LIMIT which  *** `file-chase-links' now takes an optional second argument LIMIT which
3498  specifies the maximum number of links to chase through.  If after that  specifies the maximum number of links to chase through.  If after that
3499  many iterations the file name obtained is still a symbolic link,  many iterations the file name obtained is still a symbolic link,
3500  `file-chase-links' returns it anyway.  `file-chase-links' returns it anyway.
3501    
3502  +++  +++
3503  ** The function `commandp' takes an additional optional  *** The new hook `before-save-hook' is invoked by `basic-save-buffer'
3504  argument.  If it is non-nil, then `commandp' checks  before saving buffers.  This allows packages to perform various final
3505  for a function that could be called with `call-interactively',  tasks, for example; it can be used by the copyright package to make
3506  and does not return t for keyboard macros.  sure saved files have the current year in any copyright headers.
3507    
3508  +++  +++
3509  ** An interactive specification can now use the code letter 'U' to get  *** If a buffer sets buffer-save-without-query to non-nil,
3510    save-some-buffers will always save that buffer without asking
3511    (if it's modified).
3512    
3513    *** New function `locate-file' searches for a file in a list of directories.
3514    `locate-file' accepts a name of a file to search (a string), and two
3515    lists: a list of directories to search in and a list of suffixes to
3516    try; typical usage might use `exec-path' and `load-path' for the list
3517    of directories, and `exec-suffixes' and `load-suffixes' for the list
3518    of suffixes.  The function also accepts a predicate argument to
3519    further filter candidate files.
3520    
3521    One advantage of using this function is that the list of suffixes in
3522    `exec-suffixes' is OS-dependant, so this function will find
3523    executables without polluting Lisp code with OS dependancies.
3524    
3525    ---
3526    *** The precedence of file-name-handlers has been changed.
3527    Instead of blindly choosing the first handler that matches,
3528    find-file-name-handler now gives precedence to a file-name handler
3529    that matches near the end of the file name.  More specifically, the
3530    handler whose (match-beginning 0) is the largest is chosen.
3531    In case of ties, the old "first matched" rule applies.
3532    
3533    +++
3534    *** A file name handler can declare which operations it handles.
3535    
3536    You do this by putting an `operation' property on the handler name
3537    symbol.  The property value should be a list of the operations that
3538    the handler really handles.  It won't be called for any other
3539    operations.
3540    
3541    This is useful for autoloaded handlers, to prevent them from being
3542    autoloaded when not really necessary.
3543    
3544    ** Input changes:
3545    
3546    +++
3547    *** An interactive specification can now use the code letter 'U' to get
3548  the up-event that was discarded in case the last key sequence read for a  the up-event that was discarded in case the last key sequence read for a
3549  previous 'k' or 'K' argument was a down-event; otherwise nil is used.  previous 'k' or 'K' argument was a down-event; otherwise nil is used.
3550    
3551    +++
3552    *** The new interactive-specification `G' reads a file name
3553    much like `F', but if the input is a directory name (even defaulted),
3554    it returns just the directory name.
3555    
3556  ---  ---
3557  ** Functions y-or-n-p, read-char, read-key-sequence and the like, that  *** Functions y-or-n-p, read-char, read-key-sequence and the like, that
3558  display a prompt but don't use the minibuffer, now display the prompt  display a prompt but don't use the minibuffer, now display the prompt
3559  using the text properties (esp. the face) of the prompt string.  using the text properties (esp. the face) of the prompt string.
3560    
3561  +++  +++
3562  ** read-from-minibuffer now accepts an additional argument KEEP-ALL  *** (while-no-input BODY...) runs BODY, but only so long as no input
3563    arrives.  If the user types or clicks anything, BODY stops as if a
3564    quit had occurred.  while-no-input returns the value of BODY, if BODY
3565    finishes.  It returns nil if BODY was aborted.
3566    
3567    ** Minibuffer changes:
3568    
3569    *** The new function `minibufferp' returns non-nil if its optional
3570    buffer argument is a minibuffer.  If the argument is omitted, it
3571    defaults to the current buffer.
3572    
3573    +++
3574    *** New function minibuffer-selected-window returns the window which
3575    was selected when entering the minibuffer.
3576    
3577    +++
3578    *** read-from-minibuffer now accepts an additional argument KEEP-ALL
3579  saying to put all inputs in the history list, even empty ones.  saying to put all inputs in the history list, even empty ones.
3580    
3581  +++  +++
3582  ** The `read-file-name' function now takes an additional argument which  *** The `read-file-name' function now takes an additional argument which
3583  specifies a predicate which the file name read must satify.  The  specifies a predicate which the file name read must satify.  The
3584  new variable `read-file-name-predicate' contains the predicate argument  new variable `read-file-name-predicate' contains the predicate argument
3585  while reading the file name from the minibuffer; the predicate in this  while reading the file name from the minibuffer; the predicate in this
3586  variable is used by read-file-name-internal to filter the completion list.  variable is used by read-file-name-internal to filter the completion list.
3587    
3588  ---  ---
3589  ** The new variable `read-file-name-function' can be used by lisp code  *** The new variable `read-file-name-function' can be used by lisp code
3590  to override the internal read-file-name function.  to override the internal read-file-name function.
3591    
3592  +++  +++
3593  ** The new variable `read-file-name-completion-ignore-case' specifies  *** The new variable `read-file-name-completion-ignore-case' specifies
3594  whether completion ignores case when reading a file name with the  whether completion ignores case when reading a file name with the
3595  `read-file-name' function.  `read-file-name' function.
3596    
3597  +++  +++
3598  ** The new function `read-directory-name' can be used instead of  *** The new function `read-directory-name' can be used instead of
3599  `read-file-name' to read a directory name; when used, completion  `read-file-name' to read a directory name; when used, completion
3600  will only show directories.  will only show directories.
3601    
3602    ** Searching and matching changes:
3603    
3604  +++  +++
3605  ** The new variable search-spaces-regexp controls how to search  *** New function `looking-back' checks whether a regular expression matches
3606    the text before point.  Specifying the LIMIT argument bounds how far
3607    back the match can start; this is a way to keep it from taking too long.
3608    
3609    +++
3610    *** The new variable search-spaces-regexp controls how to search
3611  for spaces in a regular expression.  If it is non-nil, it should be a  for spaces in a regular expression.  If it is non-nil, it should be a
3612  regular expression, and any series of spaces stands for that regular  regular expression, and any series of spaces stands for that regular
3613  expression.  If it is nil, spaces stand for themselves.  expression.  If it is nil, spaces stand for themselves.
# Line 3002  Spaces inside of constructs such as [..] Line 3616  Spaces inside of constructs such as [..]
3616  replaced with search-spaces-regexp.  replaced with search-spaces-regexp.
3617    
3618  +++  +++
3619  ** There are now two new regular expression operators, \_< and \_>,  *** There are now two new regular expression operators, \_< and \_>,
3620  for matching the beginning and end of a symbol.  A symbol is a  for matching the beginning and end of a symbol.  A symbol is a
3621  non-empty sequence of either word or symbol constituent characters, as  non-empty sequence of either word or symbol constituent characters, as
3622  specified by the syntax table.  specified by the syntax table.
3623    
3624  +++  +++
3625  ** skip-chars-forward and skip-chars-backward now handle  *** skip-chars-forward and skip-chars-backward now handle
3626  character classes such as [:alpha:], along with individual characters  character classes such as [:alpha:], along with individual characters
3627  and ranges.  and ranges.
3628    
3629  ---  ---
3630  ** In `replace-match', the replacement text no longer inherits  *** In `replace-match', the replacement text no longer inherits
3631  properties from surrounding text.  properties from surrounding text.
3632    
3633  +++  +++
3634  ** The list returned by `(match-data t)' now has the buffer as a final  *** The list returned by `(match-data t)' now has the buffer as a final
3635  element, if the last match was on a buffer.  `set-match-data'  element, if the last match was on a buffer.  `set-match-data'
3636  accepts such a list for restoring the match state.  accepts such a list for restoring the match state.
3637    
3638  +++  ---
3639  ** Variable aliases have been implemented:  *** rx.el has new corresponding `symbol-end' and `symbol-start' elements.
   
 *** 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.  
3640    
3641  +++  +++
3642  *** The macro define-obsolete-variable-alias combines defvaralias and  *** The default value of `sentence-end' is now defined using the new
3643  make-obsolete-variable.  The macro define-obsolete-function-alias  variable `sentence-end-without-space', which contains such characters
3644  combines defalias and make-obsolete.  that end a sentence without following spaces.
3645    
3646    The function `sentence-end' should be used to obtain the value of the
3647    variable `sentence-end'.  If the variable `sentence-end' is nil, then
3648    this function returns the regexp constructed from the variables
3649    `sentence-end-without-period', `sentence-end-double-space' and
3650    `sentence-end-without-space'.
3651    
3652  +++  +++
3653  ** Enhancements to keymaps.  ** Enhancements to keymaps.
# Line 3204  change group you start for any given buf Line 3805  change group you start for any given buf
3805  finished.  finished.
3806    
3807  +++  +++
 ** 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 can 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 can 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 can be modified by a `yank-handler'  
 text property.  
   
 +++  
 ** An element of buffer-undo-list can now have the form (apply FUNNAME  
 . ARGS), where FUNNAME is a symbol other than t or nil.  That stands  
 for a high-level change that should be undone by evaluating (apply  
 FUNNAME ARGS).  
   
 These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS)  
 which indicates that the change which took place was limited to the  
 range BEG...END and increased the buffer size by DELTA.  
   
 +++  
 ** 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.  
   
 +++  
3808  ** Enhancements to process support  ** Enhancements to process support
3809    
3810  *** Function list-processes now has an optional argument; if non-nil,  *** Function list-processes now has an optional argument; if non-nil,
# Line 3312  non-nil value (the default), as it will Line 3843  non-nil value (the default), as it will
3843  from such processes, to allowing them to produce more output before  from such processes, to allowing them to produce more output before
3844  emacs tries to read it.  emacs tries to read it.
3845    
3846  *** The new function `call-process-shell-command' executes a shell  *** The new function `call-process-shell-command'.
3847  command command synchronously in a separate process.  
3848    This executes a shell command command synchronously in a separate
3849    process.
3850    
3851  *** The new function `process-file' is similar to `call-process', but  *** The new function `process-file' is similar to `call-process', but
3852  obeys file handlers.  The file handler is chosen based on  obeys file handlers.  The file handler is chosen based on
3853  default-directory.  `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.  
3854    
3855  *** A filter function of a process is called with a multibyte string  *** A filter function of a process is called with a multibyte string
3856  if the filter's multibyteness is t.  That multibyteness is decided by  if the filter's multibyteness is t.  That multibyteness is decided by
3857  the value of `default-enable-multibyte-characters' when the process is  the value of `default-enable-multibyte-characters' when the process is
3858  created and can be changed later by `set-process-filter-multibyte'.  created and can be changed later by `set-process-filter-multibyte'.
3859    
3860  *** If a process's coding system is raw-text or no-conversion and its  *** The new function `set-process-filter-multibyte' sets the
3861    multibyteness of the strings passed to the process's filter.
3862    
3863    *** The new function `process-filter-multibyte-p' returns the
3864    multibyteness of the strings passed to the process's filter.
3865    
3866    *** If a process's coding system is `raw-text' or `no-conversion' and its
3867  buffer is multibyte, the output of the process is at first converted  buffer is multibyte, the output of the process is at first converted
3868  to multibyte by `string-to-multibyte' then inserted in the buffer.  to multibyte by `string-to-multibyte' then inserted in the buffer.
3869  Previously, it was converted to multibyte by `string-as-multibyte',  Previously, it was converted to multibyte by `string-as-multibyte',
# Line 3415  deleted network process is "deleted".  T Line 3948  deleted network process is "deleted".  T
3948  sentinel when the connection is closed by the remote peer has been  sentinel when the connection is closed by the remote peer has been
3949  changed to "connection broken by remote peer".  changed to "connection broken by remote peer".
3950    
3951  +++  ** Using window objects:
 ** 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.  
3952    
3953  +++  +++
3954  ** The line-move, scroll-up, and scroll-down functions will now  *** New function `window-body-height'.
 modify the window vscroll to scroll through display rows that are  
 taller that the height of the window, for example in the presense of  
 large images.  To disable this feature, Lisp code can bind the new  
 variable `auto-window-vscroll' to nil.  
3955    
3956  +++  This is like `window-height' but does not count the mode line or the
3957  ** Function `compute-motion' now calculates the usable window  header line.
 width if the WIDTH argument is nil.  If the TOPOS argument is nil,  
 the usable window height and width is used.  
3958    
3959  +++  +++
3960  ** Function pos-visible-in-window-p now returns the pixel coordinates  *** New function `window-body-height'.
 and partial visiblity state of the corresponding row, if the PARTIALLY  
 arg is non-nil.  
3961    
3962  ** Changes in using window objects:  This is like window-height but does not count the mode line
3963    or the header line.
3964    
3965  +++  +++
3966  *** You can now make a window as short as one line.  *** You can now make a window as short as one line.
# Line 3462  return window edges in units of pixels, Line 3983  return window edges in units of pixels,
3983    
3984  +++  +++
3985  *** The new macro `with-selected-window' temporarily switches the  *** The new macro `with-selected-window' temporarily switches the
3986  selected window without impacting the order of buffer-list.  selected window without impacting the order of `buffer-list'.
3987    
3988  +++  +++
3989  *** `select-window' takes an optional second argument `norecord', like  *** `select-window' takes an optional second argument `norecord'.
3990  `switch-to-buffer'.  
3991    This is like `switch-to-buffer'.
3992    
3993  +++  +++
3994  *** `save-selected-window' now saves and restores the selected window  *** `save-selected-window' now saves and restores the selected window
# Line 3474  of every frame.  This way, it restores e Line 3996  of every frame.  This way, it restores e
3996  by calling `select-window'.  by calling `select-window'.
3997    
3998  +++  +++
3999  *** The function `set-window-buffer' now has an optional third argument  *** `set-window-buffer' has an optional argument KEEP-MARGINS.
4000  KEEP-MARGINS which will preserve the window's current margin, fringe,  
4001  and scroll-bar settings if non-nil.  If non-nil, that says to preserve the window's current margin, fringe,
4002    and scroll-bar settings.
4003    
4004  +++  +++
4005  ** Customizable fringe bitmaps  ** Customizable fringe bitmaps
4006    
4007  *** New function 'define-fringe-bitmap' can now be used to create new  *** New function `define-fringe-bitmap' can now be used to create new
4008  fringe bitmaps, as well as change the built-in fringe bitmaps.  fringe bitmaps, as well as change the built-in fringe bitmaps.
4009    
4010  To change a built-in bitmap, do (require 'fringe) and use the symbol  To change a built-in bitmap, do (require 'fringe) and use the symbol
4011  identifing the bitmap such as `left-truncation or `continued-line'.  identifing the bitmap such as `left-truncation or `continued-line'.
4012    
4013  *** New function 'destroy-fringe-bitmap' can be used to destroy a  *** New function `destroy-fringe-bitmap' deletes a fringe bitmap
4014  previously created bitmap, or restore a built-in bitmap.  or restores a built-in one to its default value.
4015    
4016  *** New function 'set-fringe-bitmap-face' can now be used to set a  *** New function `set-fringe-bitmap-face' can now be used to set a
4017  specific face to be used for a specific fringe bitmap.  The face is  specific face to be used for a specific fringe bitmap.  The face is
4018  automatically merged with the `fringe' face, so normally, the face  automatically merged with the `fringe' face, so normally, the face
4019  should only specify the foreground color of the bitmap.  should only specify the foreground color of the bitmap.
4020    
4021  *** There are new display properties, left-fringe and right-fringe,  *** There are new display properties, `left-fringe; and `right-fringe',
4022  that can be used to show a specific bitmap in the left or right fringe  that can be used to show a specific bitmap in the left or right fringe
4023  bitmap of the display line.  bitmap of the display line.
4024    
4025  Format is 'display '(left-fringe BITMAP [FACE]), where BITMAP is a  Format is `display (left-fringe BITMAP [FACE])', where BITMAP is a
4026  symbol identifying a fringe bitmap, either built-in or defined with  symbol identifying a fringe bitmap, either built-in or defined with
4027  `define-fringe-bitmap', and FACE is an optional face name to be used  `define-fringe-bitmap', and FACE is an optional face name to be used
4028  for displaying the bitmap instead of the default `fringe' face.  for displaying the bitmap instead of the default `fringe' face.
# Line 3508  When specified, FACE is automatically me Line 4031  When specified, FACE is automatically me
4031  *** New function `fringe-bitmaps-at-pos' returns the current fringe  *** New function `fringe-bitmaps-at-pos' returns the current fringe
4032  bitmaps in the display line at a given buffer position.  bitmaps in the display line at a given buffer position.
4033    
4034    ** Other window fringe features:
4035    
4036  +++  +++
4037  ** Controlling the default left and right fringe widths.  *** Controlling the default left and right fringe widths.
4038    
4039  The default left and right fringe widths for all windows of a frame  The default left and right fringe widths for all windows of a frame
4040  can now be controlled by setting the `left-fringe' and `right-fringe'  can now be controlled by setting the `left-fringe' and `right-fringe'
# Line 3529  of the currently defined fringe bitmaps. Line 4054  of the currently defined fringe bitmaps.
4054  fringe bitmaps is 8 pixels.  fringe bitmaps is 8 pixels.
4055    
4056  +++  +++
4057  ** Per-window fringe and scrollbar settings  *** Per-window fringe and scrollbar settings
4058    
4059  *** Windows can now have their own individual fringe widths and  **** Windows can now have their own individual fringe widths and
4060  position settings.  position settings.
4061    
4062  To control the fringe widths of a window, either set the buffer-local  To control the fringe widths of a window, either set the buffer-local
# Line 3549  settings.  To make `left-fringe-width', Line 4074  settings.  To make `left-fringe-width',
4074  displaying the buffer in a window, or use `set-window-buffer' to force  displaying the buffer in a window, or use `set-window-buffer' to force
4075  an update of the display margins.  an update of the display margins.
4076    
4077  *** Windows can now have their own individual scroll-bar settings  **** Windows can now have their own individual scroll-bar settings
4078  controlling the width and position of scroll-bars.  controlling the width and position of scroll-bars.
4079    
4080  To control the scroll-bar of a window, either set the buffer-local  To control the scroll-bar of a window, either set the buffer-local
# Line 3560  used to obtain the current settings.  To Line 4085  used to obtain the current settings.  To
4085  the buffer in a window, or use `set-window-buffer' to force an update  the buffer in a window, or use `set-window-buffer' to force an update
4086  of the display margins.  of the display margins.
4087    
4088    ** Redisplay features:
4089    
4090  +++  +++
4091  ** When using non-toolkit scroll bars with the default width,  *** `sit-for' can now be called with args (SECONDS &optional NODISP).
 the scroll-bar-width frame parameter value is nil.  
4092    
4093  +++  +++
4094  ** Multiple overlay arrows can now be defined and managed via the new  *** New function `force-window-update' can initiate a full redisplay of
4095  variable `overlay-arrow-variable-list'.  It contains a list of  one or all windows.  Normally, this is not needed as changes in window
4096  varibles which contain overlay arrow position markers, including  contents are detected automatically.  However, certain implicit
4097  the original `overlay-arrow-position' variable.  changes to mode lines, header lines, or display properties may require
4098    forcing an explicit window update.
4099    
4100    +++
4101    *** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able
4102    to display CHAR.  More precisely, if the selected frame's fontset has
4103    a font to display the character set that CHAR belongs to.
4104    
4105    Fontsets can specify a font on a per-character basis; when the fontset
4106    does that, this value cannot be accurate.
4107    
4108    +++
4109    *** You can define multiple overlay arrows via the new
4110    variable `overlay-arrow-variable-list'.
4111    
4112    It contains a list of varibles which contain overlay arrow position
4113    markers, including the original `overlay-arrow-position' variable.
4114    
4115  Each variable on this list can have individual `overlay-arrow-string'  Each variable on this list can have individual `overlay-arrow-string'
4116  and `overlay-arrow-bitmap' properties that specify an overlay arrow  and `overlay-arrow-bitmap' properties that specify an overlay arrow
# Line 3578  If either property is not set, the defau Line 4120  If either property is not set, the defau
4120  'overlay-arrow-fringe-bitmap' will be used.  'overlay-arrow-fringe-bitmap' will be used.
4121    
4122  +++  +++
4123  ** New line-height and line-spacing properties for newline characters  *** New `line-height' and `line-spacing' properties for newline characters
4124    
4125  A newline can now have line-height and line-spacing text or overlay  A newline can now have `line-height' and `line-spacing' text or overlay
4126  properties that control the height of the corresponding display row.  properties that control the height of the corresponding display row.
4127    
4128  If the line-height property value is t, the newline does not  If the `line-height' property value is t, the newline does not
4129  contribute to the height of the display row; instead the height of the  contribute to the height of the display row; instead the height of the
4130  newline glyph is reduced.  Also, a line-spacing property on this  newline glyph is reduced.  Also, a `line-spacing' property on this
4131  newline is ignored.  This can be used to tile small images or image  newline is ignored.  This can be used to tile small images or image
4132  slices without adding blank areas between the images.  slices without adding blank areas between the images.
4133    
4134  If the line-height property value is a positive integer, the value  If the `line-height' property value is a positive integer, the value
4135  specifies the minimum line height in pixels.  If necessary, the line  specifies the minimum line height in pixels.  If necessary, the line
4136  height it increased by increasing the line's ascent.  height it increased by increasing the line's ascent.
4137    
4138  If the line-height property value is a float, the minimum line height  If the `line-height' property value is a float, the minimum line
4139  is calculated by multiplying the default frame line height by the  height is calculated by multiplying the default frame line height by
4140  given value.  the given value.
4141    
4142  If the line-height property value is a cons (FACE . RATIO), the  If the `line-height' property value is a cons (FACE . RATIO), the
4143  minimum line height is calculated as RATIO * height of named FACE.  minimum line height is calculated as RATIO * height of named FACE.
4144  RATIO is int or float.  If FACE is t, it specifies the current face.  RATIO is int or float.  If FACE is t, it specifies the current face.
4145    
4146  If the line-height property value is a cons (nil . RATIO), the line  If the `line-height' property value is a cons (nil . RATIO), the line
4147  height is calculated as RATIO * actual height of the line's contents.  height is calculated as RATIO * actual height of the line's contents.
4148    
4149  If the line-height value is a cons (HEIGHT . TOTAL), HEIGHT specifies  If the `line-height' value is a cons (HEIGHT . TOTAL), HEIGHT specifies
4150  the line height as described above, while TOTAL is any of the forms  the line height as described above, while TOTAL is any of the forms
4151  described above and specifies the total height of the line, causing a  described above and specifies the total height of the line, causing a
4152  varying number of pixels to be inserted after the line to make it line  varying number of pixels to be inserted after the line to make it line
4153  exactly that many pixels high.  exactly that many pixels high.
4154    
4155  If the line-spacing property value is an positive integer, the value  If the `line-spacing' property value is an positive integer, the value
4156  is used as additional pixels to insert after the display line; this  is used as additional pixels to insert after the display line; this
4157  overrides the default frame line-spacing and any buffer local value of  overrides the default frame `line-spacing' and any buffer local value of
4158  the line-spacing variable.  the `line-spacing' variable.
4159    
4160  If the line-spacing property is a float or cons, the line spacing  If the `line-spacing' property is a float or cons, the line spacing
4161  is calculated as specified above for the line-height property.  is calculated as specified above for the `line-height' property.
4162    
4163  +++  +++
4164  ** The buffer local line-spacing variable can now have a float value,  *** The buffer local line-spacing variable can now have a float value,
4165  which is used as a height relative to the default frame line height.  which is used as a height relative to the default frame line height.
4166    
4167  +++  +++
4168  ** Enhancements to stretch display properties  *** Enhancements to stretch display properties
4169    
4170  The display property stretch specification form `(space PROPS)', where  The display property stretch specification form `(space PROPS)', where
4171  PROPS is a property list now allows pixel based width and height  PROPS is a property list now allows pixel based width and height
# Line 3680  The form `(+ EXPR ...)' adds up the valu Line 4222  The form `(+ EXPR ...)' adds up the valu
4222  The form `(- EXPR ...)' negates or subtracts the value of the expressions.  The form `(- EXPR ...)' negates or subtracts the value of the expressions.
4223    
4224  +++  +++
4225  ** Support for displaying image slices  *** Normally, the cursor is displayed at the end of any overlay and
4226    text property string that may be present at the current window
4227    position.  The cursor can now be placed on any character of such
4228    strings by giving that character a non-nil `cursor' text property.
4229    
4230    +++
4231    *** The display space :width and :align-to text properties are now
4232    supported on text terminals.
4233    
4234  *** New display property (slice X Y WIDTH HEIGHT) can be used with  +++
4235    *** Support for displaying image slices
4236    
4237    **** New display property (slice X Y WIDTH HEIGHT) can be used with
4238  an image property to display only a specific slice of the image.  an image property to display only a specific slice of the image.
4239    
4240  *** Function insert-image has new optional fourth arg to  **** Function insert-image has new optional fourth arg to
4241  specify image slice (X Y WIDTH HEIGHT).  specify image slice (X Y WIDTH HEIGHT).
4242    
4243  *** New function insert-sliced-image inserts a given image as a  **** New function insert-sliced-image inserts a given image as a
4244  specified number of evenly sized slices (rows x columns).  specified number of evenly sized slices (rows x columns).
4245    
4246  +++  +++
4247  ** Images can now have an associated image map via the :map property.  *** Images can now have an associated image map via the :map property.
4248    
4249  An image map is an alist where each element has the format (AREA ID PLIST).  An image map is an alist where each element has the format (AREA ID PLIST).
4250  An AREA is specified as either a rectangle, a circle, or a polygon:  An AREA is specified as either a rectangle, a circle, or a polygon:
# Line 3714  When you click the mouse when the mouse Line 4266  When you click the mouse when the mouse
4266  an event is composed by combining the ID of the hot-spot with the  an event is composed by combining the ID of the hot-spot with the
4267  mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'.  mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'.
4268    
4269    ** Mouse pointer features:
4270    
4271  +++ (lispref)  +++ (lispref)
4272  ??? (man)  ??? (man)
4273  ** The mouse pointer shape in void text areas (i.e. after the end of a  *** The mouse pointer shape in void text areas (i.e. after the end of a
4274  line or below the last line in the buffer) of the text window is now  line or below the last line in the buffer) of the text window is now
4275  controlled by the new variable `void-text-area-pointer'.  The default  controlled by the new variable `void-text-area-pointer'.  The default
4276  is to use the `arrow' (non-text) pointer.  Other choices are `text'  is to use the `arrow' (non-text) pointer.  Other choices are `text'
4277  (or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'.  (or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'.
4278    
4279  +++  +++
4280  ** The mouse pointer shape over an image can now be controlled by the  *** The mouse pointer shape over an image can now be controlled by the
4281  :pointer image property.  :pointer image property.
4282    
4283  +++  +++
4284  ** Lisp code can now test if a given buffer position is inside a  *** The mouse pointer shape over ordinary text or images can now be
 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 can now be  
4285  controlled/overriden via the `pointer' text property.  controlled/overriden via the `pointer' text property.
4286    
4287  ** Mouse event enhancements:  ** Mouse event enhancements:
# Line 3782  the top left corner of the object (image Line 4331  the top left corner of the object (image
4331  click, the x and y pixel coordinates relative to the top left corner  click, the x and y pixel coordinates relative to the top left corner
4332  of that object, and the total width and height of that object.  of that object, and the total width and height of that object.
4333    
4334  +++  ** Text property and overlay changes:
 ** 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 can 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.  
4335    
4336  +++  +++
4337  ** Arguments for remove-overlays are now optional, so that you can  *** Arguments for remove-overlays are now optional, so that you can
4338  remove all overlays in the buffer by just calling (remove-overlay).  remove all overlays in the buffer by just calling (remove-overlays).
4339    
4340  +++  +++
4341  ** New variable char-property-alias-alist.  *** New variable char-property-alias-alist.
4342    
4343  This variable allows you to create alternative names for text  This variable allows you to create alternative names for text
4344  properties.  It works at the same level as `default-text-properties',  properties.  It works at the same level as `default-text-properties',
# Line 3816  although it applies to overlays as well. Line 4346  although it applies to overlays as well.
4346  to implement the `font-lock-face' property.  to implement the `font-lock-face' property.
4347    
4348  +++  +++
4349  ** New function `get-char-property-and-overlay' accepts the same  *** New function `get-char-property-and-overlay' accepts the same
4350  arguments as `get-char-property' and returns a cons whose car is the  arguments as `get-char-property' and returns a cons whose car is the
4351  return value of `get-char-property' called with those arguments and  return value of `get-char-property' called with those arguments and
4352  whose cdr is the overlay in which the property was found, or nil if  whose cdr is the overlay in which the property was found, or nil if
4353  it was found as a text property or not found at all.  it was found as a text property or not found at all.
4354    
4355  +++  +++
4356  ** The new frame parameter `tty-color-mode' specifies the mode to use  *** The new function remove-list-of-text-properties is almost the same
4357  for color support on character terminal frames.  Its value can be a  as `remove-text-properties'.  The only difference is that it takes a
4358  number of colors to support, or a symbol.  See the Emacs Lisp  list of property names as argument rather than a property list.
 Reference manual for more detailed documentation.  
4359    
4360  +++  ** Face changes
 ** 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.  
4361    
4362  +++  +++
4363  ** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able  *** The new face attribute condition `min-colors' can be used to tailor
4364  to display CHAR.  More precisely, if the selected frame's fontset has  the face color to the number of colors supported by a display, and
4365  a font to display the character set that CHAR belongs to.  define the foreground and background colors accordingly so that they
4366    look best on a terminal that supports at least this many colors.  This
4367  Fontsets can specify a font on a per-character basis; when the fontset  is now the preferred method for defining default faces in a way that
4368  does that, this value cannot be accurate.  makes a good use of the capabilities of the display.
4369    
4370  +++  +++
4371  ** New function display-supports-face-attributes-p can be used to test  *** New function display-supports-face-attributes-p can be used to test
4372  whether a given set of face attributes is actually displayable.  whether a given set of face attributes is actually displayable.
4373    
4374  A new predicate `supports' has also been added to the `defface' face  A new predicate `supports' has also been added to the `defface' face
# Line 3853  specification language, which can be use Line 4376  specification language, which can be use
4376  defined with defface.  defined with defface.
4377    
4378  ---  ---
4379  ** The special treatment of faces whose names are of the form `fg:COLOR'  *** The special treatment of faces whose names are of the form `fg:COLOR'
4380  or `bg:COLOR' has been removed.  Lisp programs should use the  or `bg:COLOR' has been removed.  Lisp programs should use the
4381  `defface' facility for defining faces with specific colors, or use  `defface' facility for defining faces with specific colors, or use
4382  the feature of specifying the face attributes :foreground and :background  the feature of specifying the face attributes :foreground and :background
4383  directly in the `face' property instead of using a named face.  directly in the `face' property instead of using a named face.
4384    
4385  +++  +++
4386  ** The first face specification element in a defface can specify  *** The first face specification element in a defface can specify
4387  `default' instead of frame classification.  Then its attributes act as  `default' instead of frame classification.  Then its attributes act as
4388  defaults that apply to all the subsequent cases (and can be overridden  defaults that apply to all the subsequent cases (and can be overridden
4389  by them).  by them).
4390    
4391  +++  +++
4392  ** The variable `face-font-rescale-alist' specifies how much larger  *** The variable `face-font-rescale-alist' specifies how much larger
4393  (or smaller) font we should use.  For instance, if the value is  (or smaller) font we should use.  For instance, if the value is
4394  '((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10  '((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10
4395  point, we actually use a font of 13 point if the font matches  point, we actually use a font of 13 point if the font matches
4396  SOME-FONTNAME-PATTERN.  SOME-FONTNAME-PATTERN.
4397    
4398  ---  ---
4399  ** `set-fontset-font', `fontset-info', `fontset-font' now operate on  *** The function `face-differs-from-default-p' now truly checks
4400  the default fontset if the argument NAME is nil..  whether the given face displays differently from the default face or
4401    not (previously it did only a very cursory check).
 ---  
 ** 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).  
4402    
4403  +++  +++
4404  ** face-attribute, face-foreground, face-background, and face-stipple now  *** `face-attribute', `face-foreground', `face-background', and
4405  accept a new optional argument, INHERIT, which controls how face  `face-stipple' now accept a new optional argument, INHERIT, which
4406  inheritance is used when determining the value of a face attribute.  controls how face inheritance is used when determining the value of a
4407    face attribute.
4408    
4409  +++  +++
4410  ** New functions face-attribute-relative-p and merge-face-attribute  *** New functions `face-attribute-relative-p' and `merge-face-attribute'
4411  help with handling relative face attributes.  help with handling relative face attributes.
4412    
4413  +++  +++
4414  ** The priority of faces in an :inherit attribute face-list is reversed.  *** The priority of faces in an :inherit attribute face list is reversed.
4415    
4416  If a face contains an :inherit attribute with a list of faces, earlier  If a face contains an :inherit attribute with a list of faces, earlier
4417  faces in the list override later faces in the list; in previous releases  faces in the list override later faces in the list; in previous
4418  of Emacs, the order was the opposite.  This change was made so that  releases of Emacs, the order was the opposite.  This change was made
4419  :inherit face-lists operate identically to face-lists in text `face'  so that :inherit face lists operate identically to face lists in text
4420  properties.  `face' properties.
4421    
4422  +++  +++
4423  ** New standard font-lock face `font-lock-preprocessor-face'.  *** New standard font-lock face `font-lock-preprocessor-face'.
4424    
4425    ---
4426    *** `set-fontset-font', `fontset-info', `fontset-font' now operate on
4427    the default fontset if the argument NAME is nil..
4428    
4429    ** Font-Lock changes:
4430    
4431  +++  +++
4432  ** New special text property `font-lock-face'.  *** New special text property `font-lock-face'.
4433    
4434  This property acts like the `face' property, but it is controlled by  This property acts like the `face' property, but it is controlled by
4435  M-x font-lock-mode.  It is not, strictly speaking, a builtin text  M-x font-lock-mode.  It is not, strictly speaking, a builtin text
4436  property.  Instead, it is implemented inside font-core.el, using the  property.  Instead, it is implemented inside font-core.el, using the
4437  new variable `char-property-alias-alist'.  new variable `char-property-alias-alist'.
4438    
4439    +++
4440    *** font-lock can manage arbitrary text-properties beside `face'.
4441    
4442    *** the FACENAME returned in `font-lock-keywords' can be a list of the
4443    form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set other
4444    properties than `face'.
4445    
4446    *** `font-lock-extra-managed-props' can be set to make sure those
4447    extra properties are automatically cleaned up by font-lock.
4448    
4449  ---  ---
4450  ** jit-lock obeys a new text-property `jit-lock-defer-multiline'.  *** jit-lock obeys a new text-property `jit-lock-defer-multiline'.
4451    
4452  If a piece of text with that property gets contextually refontified  If a piece of text with that property gets contextually refontified
4453  (see jit-lock-defer-contextually), then all of that text will  (see `jit-lock-defer-contextually'), then all of that text will
4454  be refontified.  This is useful when the syntax of a textual element  be refontified.  This is useful when the syntax of a textual element
4455  depends on text several lines further down (and when font-lock-multiline  depends on text several lines further down (and when `font-lock-multiline'
4456  is not appropriate to solve that problem).  For example in Perl:  is not appropriate to solve that problem).  For example in Perl:
4457    
4458          s{          s{
# Line 3924  is not appropriate to solve that problem Line 4462  is not appropriate to solve that problem
4462          }e          }e
4463    
4464  Adding/removing the last `e' changes the `bar' from being a piece of  Adding/removing the last `e' changes the `bar' from being a piece of
4465  text to being a piece of code, so you'd put a jit-lock-defer-multiline  text to being a piece of code, so you'd put a `jit-lock-defer-multiline'
4466  property over the second half of the command to force (deferred)  property over the second half of the command to force (deferred)
4467  refontification of `bar' whenever the `e' is added/removed.  refontification of `bar' whenever the `e' is added/removed.
4468    
4469  +++  ** Major mode mechanism changes:
 ** 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.  
4470    
4471  +++  +++
4472  ** `set-auto-mode' now gives the interpreter magic line (if present)  *** `set-auto-mode' now gives the interpreter magic line (if present)
4473  precedence over the file name.  Likewise an <?xml or <!DOCTYPE declaration  precedence over the file name.  Likewise an `<?xml' or `<!DOCTYPE'
4474  will give the buffer XML or SGML mode, based on the new var  declaration will give the buffer XML or SGML mode, based on the new
4475  `magic-mode-alist'.  var `magic-mode-alist'.
4476    
4477  +++  +++
4478  ** Major mode functions now run the new normal hook  *** Major mode functions now run the new normal hook
4479  `after-change-major-mode-hook', at their very end, after the mode hooks.  `after-change-major-mode-hook', at their very end, after the mode hooks.
4480    
4481  ---  ---
4482  ** If a major mode function has a non-nil `no-clone-indirect'  *** If a major mode function has a non-nil `no-clone-indirect'
4483  property, `clone-indirect-buffer' signals an error if you use  property, `clone-indirect-buffer' signals an error if you use
4484  it in that buffer.  it in that buffer.
4485    
4486  +++  +++
4487  ** Major modes can define `eldoc-documentation-function'  *** Major modes can define `eldoc-documentation-function'
4488  locally to provide Eldoc functionality by some method appropriate to  locally to provide Eldoc functionality by some method appropriate to
4489  the language.  the language.
4490    
4491  +++  +++
4492  ** define-derived-mode by default creates a new empty abbrev table.  *** `define-derived-mode' by default creates a new empty abbrev table.
4493  It does not copy abbrevs from the parent mode's abbrev table.  It does not copy abbrevs from the parent mode's abbrev table.
4494    
4495  +++  +++
4496  ** define-minor-mode now accepts arbitrary additional keyword arguments  *** The new function `run-mode-hooks' and the new macro `delay-mode-hooks'
4497  and simply passes them to defcustom, if applicable.  are used by `define-derived-mode' to make sure the mode hook for the
   
 +++  
 ** 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  
4498  parent mode is run at the end of the child mode.  parent mode is run at the end of the child mode.
4499    
4500  +++  ** Minor mode changes:
 ** `minor-mode-list' now holds a list of minor mode commands.  
4501    
4502  +++  +++
4503  ** Both the variable and the function `disabled-command-hook' have  *** `define-minor-mode' now accepts arbitrary additional keyword arguments
4504  been renamed to `disabled-command-function'.  The variable  and simply passes them to `defcustom', if applicable.
 `disabled-command-hook' has been kept as an obsolete alias.  
4505    
4506  +++  +++
4507  ** The function `eql' is now available without requiring the CL package.  *** `minor-mode-list' now holds a list of minor mode commands.
4508    
4509  +++  ---
4510  ** If optional third argument APPEND to `add-to-list' is non-nil, a  *** `define-global-minor-mode'.
 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.  
4511    
4512  +++  This is a new name for what was formerly called
4513  ** The escape sequence \s is now interpreted as a SPACE character,  `easy-mmode-define-global-mode'.  The old name remains as an alias.
 unless it is followed by a `-' in a character constant (e.g. ?\s-A),  
 in which case it is still interpreted as the super modifier.  
 In strings, \s is always interpreted as a space.  
4514    
4515  +++  ** Command loop changes:
 ** A hex escape in a string forces the string to be multibyte.  
 An octal escape makes it unibyte.  
4516    
4517  +++  +++
4518  ** `split-string' now includes null substrings in the returned list if  *** The new function `called-interactively-p' does what many people
4519  the optional argument SEPARATORS is non-nil and there are matches for  have mistakenly believed `interactive-p' did: it returns t if the
4520  SEPARATORS at the beginning or end of the string.  If SEPARATORS is  calling function was called through `call-interactively'.  This should
4521  nil, or if the new optional third argument OMIT-NULLS is non-nil, all  only be used when you cannot solve the problem by adding a new
4522  empty matches are omitted from the returned list.  INTERACTIVE argument to the command.
4523    
4524  +++  +++
4525  ** New function `string-to-multibyte' converts a unibyte string to a  *** The function `commandp' takes an additional optional argument.
 multibyte string with the same individual character codes.  
4526    
4527  +++  If it is non-nil, then `commandp' checks for a function that could be
4528  ** The function `number-sequence' returns a list of equally-separated  called with `call-interactively', and does not return t for keyboard
4529  numbers.  For instance, (number-sequence 4 9) returns (4 5 6 7 8 9).  macros.
 By default, the separation is 1, but you can specify a different separation  
 as the third argument.  (number-sequence 1.5 6 2) returns (1.5 3.5 5.5).  
4530    
4531  +++  +++
4532  ** `sit-for' can now be called with args (SECONDS &optional NODISP).  *** When a command returns, the command loop moves point out from
4533    within invisible text, in the same way it moves out from within text
4534    covered by an image or composition property.
4535    
4536  +++  This makes it generally unnecessary to mark invisible text as intangible.
4537  ** A function's docstring can now hold the function's usage info on  This is particularly good because the intangible property often has
4538  its last line.  It should match the regexp "\n\n(fn.*)\\'".  unexpected side-effects since the property applies to everything
4539    (including `goto-char', ...) whereas this new code is only run after
4540    `post-command-hook' and thus does not care about intermediate states.
4541    
4542  +++  +++
4543  ** The `defmacro' form can contain declarations specifying how to  *** If a command sets `transient-mark-mode' to `only', that
4544  indent the macro in Lisp mode and how to debug it with Edebug.  The  enables Transient Mark mode for the following command only.
4545  syntax of defmacro has been extended to  During that following command, the value of `transient-mark-mode'
4546    is `identity'.  If it is still `identity' at the end of the command,
4547     (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)  the next return to the command loop changes to nil.
4548    
4549  DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'.  The  +++
4550  declaration specifiers supported are:  *** Both the variable and the function `disabled-command-hook' have
4551    been renamed to `disabled-command-function'.  The variable
4552    `disabled-command-hook' has been kept as an obsolete alias.
4553    
4554  (indent INDENT)  +++
4555          Set NAME's `lisp-indent-function' property to INDENT.  *** `emacsserver' now runs `pre-command-hook' and `post-command-hook'
4556    when it receives a request from emacsclient.
4557    
4558  (edebug DEBUG)  ** Minibuffer changes:
         Set NAME's `edebug-form-spec' property to DEBUG.  (This is  
         equivalent to writing a `def-edebug-spec' for the macro.  
4559    
4560  +++  +++
4561  ** The functions all-completions and try-completion now accept lists  *** The functions all-completions and try-completion now accept lists
4562  of strings as well as hash-tables additionally to alists, obarrays  of strings as well as hash-tables additionally to alists, obarrays
4563  and functions.  Furthermore, the function `test-completion' is now  and functions.  Furthermore, the function `test-completion' is now
4564  exported to Lisp.  The keys in alists and hash tables can be either  exported to Lisp.  The keys in alists and hash tables can be either
4565  strings or symbols, which are automatically converted with to strings.  strings or symbols, which are automatically converted with to strings.
4566    
4567  +++  +++
4568  ** The new macro dynamic-completion-table supports using functions  *** The new macro `dynamic-completion-table' supports using functions
4569  as a dynamic completion table.  as a dynamic completion table.
4570    
4571    (dynamic-completion-table FUN)    (dynamic-completion-table FUN)
# Line 4074  and it should return an alist containing Line 4575  and it should return an alist containing
4575  completions.  This alist can be a full list of possible completions so that FUN  completions.  This alist can be a full list of possible completions so that FUN
4576  can ignore the value of its argument.  If completion is performed in the  can ignore the value of its argument.  If completion is performed in the
4577  minibuffer, FUN will be called in the buffer from which the minibuffer was  minibuffer, FUN will be called in the buffer from which the minibuffer was
4578  entered. dynamic-completion-table then computes the completion.  entered.  `dynamic-completion-table' then computes the completion.
4579    
4580  +++  +++
4581  ** The new macro lazy-completion-table initializes a variable  *** The new macro `lazy-completion-table' initializes a variable
4582  as a lazy completion table.  as a lazy completion table.
4583    
4584    (lazy-completion-table VAR FUN &rest ARGS)    (lazy-completion-table VAR FUN &rest ARGS)
# Line 4089  completion is requested in the minibuffe Line 4590  completion is requested in the minibuffe
4590  from which the minibuffer was entered. The return value of  from which the minibuffer was entered. The return value of
4591  `lazy-completion-table' must be used to initialize the value of VAR.  `lazy-completion-table' must be used to initialize the value of VAR.
4592    
4593    ** Lisp file loading changes:
4594    
4595  +++  +++
4596  ** `load-history' can now have elements of the form (t . FUNNAME),  *** `load-history' can now have elements of the form (t . FUNNAME),
4597  which means FUNNAME was previously defined as an autoload (before the  which means FUNNAME was previously defined as an autoload (before the
4598  current file redefined it).  current file redefined it).
4599    
4600  +++  +++
4601  ** `load-history' now records (defun . FUNNAME) when a function is  *** `load-history' now records (defun . FUNNAME) when a function is
4602  defined.  For a variable, it records just the variable name.  defined.  For a variable, it records just the variable name.
4603    
 ---  
 ** 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.  
   
4604  +++  +++
4605  ** The function symbol-file can now search specifically for function or  *** The function symbol-file can now search specifically for function or
4606  variable definitions.  variable definitions.
4607    
4608  +++  +++
4609  ** `provide' and `featurep' now accept an optional second argument  *** `provide' and `featurep' now accept an optional second argument
4610  to test/provide subfeatures.  Also `provide' now checks `after-load-alist'  to test/provide subfeatures.  Also `provide' now checks `after-load-alist'
4611  and runs any code associated with the provided feature.  and runs any code associated with the provided feature.
4612    
4613  +++  ---
4614  ** `declare' is now a macro.  This change was made mostly for  *** The variable `recursive-load-depth-limit' has been deleted.
4615  documentation purposes and should have no real effect on Lisp code.  Emacs now signals an error if the same file is loaded with more
4616    than 3 levels of nesting.
4617    
4618  +++  +++
4619  ** Byte compiler changes:  ** Byte compiler changes:
# Line 4153  you anything. Line 4652  you anything.
4652  *** The local variable `no-byte-compile' in elisp files is now obeyed.  *** The local variable `no-byte-compile' in elisp files is now obeyed.
4653    
4654  ---  ---
4655  ** When a Lisp file uses CL functions at run-time, compiling the file  *** When a Lisp file uses CL functions at run-time, compiling the file
4656  now issues warnings about these calls, unless the file performs  now issues warnings about these calls, unless the file performs
4657  (require 'cl) when loaded.  (require 'cl) when loaded.
4658    
4659    ** Frame operations:
4660    
4661  +++  +++
4662  ** New function unsafep returns nil if the given Lisp form can't possibly  *** New functions `frame-current-scroll-bars' and `window-current-scroll-bars'.
4663  do anything dangerous; otherwise it returns a reason why the form might be  
4664  unsafe (calls dangerous function, alters global variable, etc).  These functions return the current locations of the vertical and
4665    horizontal scroll bars in a frame or window.
4666    
4667  +++  +++
4668  ** There is a new Warnings facility; see the functions `warn'  *** The new function `modify-all-frames-parameters' modifies parameters
4669  and `display-warning'.  for all (existing and future) frames.
4670    
4671  ---  +++
4672  ** VC changes for backends:  *** The new frame parameter `tty-color-mode' specifies the mode to use
4673  *** (vc-switches BACKEND OPERATION) is a new function for use by backends.  for color support on character terminal frames.  Its value can be a
4674  *** The new `find-version' backend function replaces the `destfile'  number of colors to support, or a symbol.  See the Emacs Lisp
4675  parameter of the `checkout' backend function.  Reference manual for more detailed documentation.
 Old code still works thanks to a default `find-version' behavior that  
 uses the old `destfile' parameter.  
4676    
4677  +++  +++
4678  ** Already true in Emacs 21.1, but not emphasized clearly enough:  *** When using non-toolkit scroll bars with the default width,
4679    the `scroll-bar-width' frame parameter value is nil.
4680    
4681    ** Mule changes:
4682    
4683    +++
4684    *** Already true in Emacs 21.1, but not emphasized clearly enough:
4685    
4686  Multibyte buffers can now faithfully record all 256 character codes  Multibyte buffers can now faithfully record all 256 character codes
4687  from 0 to 255.  As a result, most of the past reasons to use unibyte  from 0 to 255.  As a result, most of the past reasons to use unibyte
# Line 4191  the time it takes to convert the format. Line 4697  the time it takes to convert the format.
4697  wasteful.  wasteful.
4698    
4699  ---  ---
4700  ** set-buffer-file-coding-system now takes an additional argument,  *** set-buffer-file-coding-system now takes an additional argument,
4701  NOMODIFY.  If it is non-nil, it means don't mark the buffer modified.  NOMODIFY.  If it is non-nil, it means don't mark the buffer modified.
4702    
4703  +++  +++
4704  ** The new variable `auto-coding-functions' lets you specify functions  *** The new variable `auto-coding-functions' lets you specify functions
4705  to examine a file being visited and deduce the proper coding system  to examine a file being visited and deduce the proper coding system
4706  for it.  (If the coding system is detected incorrectly for a specific  for it.  (If the coding system is detected incorrectly for a specific
4707  file, you can put a `coding:' tags to override it.)  file, you can put a `coding:' tags to override it.)
4708    
4709  ---  ---
4710  ** The new function `merge-coding-systems' fills in unspecified aspects  *** The new function `merge-coding-systems' fills in unspecified aspects
4711  of one coding system from another coding system.  of one coding system from another coding system.
4712    
4713  ---  ---
4714  ** New coding system property `mime-text-unsuitable' indicates that  *** New coding system property `mime-text-unsuitable' indicates that
4715  the coding system's `mime-charset' is not suitable for MIME text  the coding system's `mime-charset' is not suitable for MIME text
4716  parts, e.g. utf-16.  parts, e.g. utf-16.
4717    
4718  +++  +++
4719  ** New function `decode-coding-inserted-region' decodes a region as if  *** New function `decode-coding-inserted-region' decodes a region as if
4720  it is read from a file without decoding.  it is read from a file without decoding.
4721    
 +++  
 ** Function `translate-region' accepts also a char-table as TABLE  
 argument.  
   
 +++  
 ** The new translation table `translation-table-for-input'  
 is used for customizing self-insertion.  The character to  
 be inserted is translated through it.  
   
4722  ---  ---
4723  ** New CCL functions `lookup-character' and `lookup-integer' access  *** New CCL functions `lookup-character' and `lookup-integer' access
4724  hash tables defined by the Lisp function `define-translation-hash-table'.  hash tables defined by the Lisp function `define-translation-hash-table'.
4725    
 +++  
 ** 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 `redirect-debugging-output' can be used to redirect  
 debugging output on the stderr file handle to a file.  
   
 +++  
 ** `makehash' is now obsolete.  Use `make-hash-table' instead.  
   
 +++  
 ** The macro `with-syntax-table' does not copy the table any more.  
   
 +++  
 ** New variables `gc-elapsed' and `gcs-done' provide extra information  
 on garbage collection.  
   
 +++  
 ** New function `locale-info' accesses locale information.  
   
 +++  
 ** The new variable `print-continuous-numbering', when non-nil, says  
 that successive calls to print functions should use the same  
 numberings for circular structure references.  This is only relevant  
 when `print-circle' is non-nil.  
   
 When you bind `print-continuous-numbering' to t, you should  
 also bind `print-number-table' to nil.  
   
 ---  
 ** When pure storage overflows while dumping, Emacs now prints how  
 much pure storage it will approximately need.  
   
 +++  
 ** File local variables.  
   
 A file local variables list cannot specify a string with text  
 properties--any specified text properties are discarded.  
   
 +++  
 ** The variable `safe-local-eval-forms' specifies a list of forms that  
 are ok to evaluate when they appear in an `eval' local variables  
 specification.  Normally Emacs asks for confirmation before evaluating  
 such a form, but if the form appears in this list, no confirmation is  
 needed.  
   
4726  ---  ---
4727  ** If a function has a non-nil `safe-local-eval-function' property,  *** New function quail-find-key returns a list of keys to type in the
4728  that means it is ok to evaluate some calls to that function when it  current input method to input a character.
 appears in an `eval' local variables specification.  If the property  
 is t, then any form calling that function with constant arguments is  
 ok.  If the property is a function or list of functions, they are called  
 with the form as argument, and if any returns t, the form is ok to call.  
   
 If the form is not "ok to call", that means Emacs asks for  
 confirmation as before.  
   
 +++  
 ** Renamed hooks to better follow the naming convention:  
 find-file-hooks to find-file-hook,  
 find-file-not-found-hooks to find-file-not-found-functions,  
 write-file-hooks to write-file-functions,  
 write-contents-hooks to write-contents-functions,  
 x-lost-selection-hooks to x-lost-selection-functions,  
 x-sent-selection-hooks to x-sent-selection-functions.  
 Marked local-write-file-hooks as obsolete (use the LOCAL arg of `add-hook').  
   
 +++  
 ** The new variable `delete-frame-functions' replaces `delete-frame-hook'.  
 It was renamed to follow the naming conventions for abnormal hooks.  The old  
 name remains available as an alias, but has been marked obsolete.  
   
 +++  
 ** The new function `file-remote-p' tests a file name and returns  
 non-nil if it specifies a remote file (one that Emacs accesses using  
 its own special methods and not directly through the file system).  
 The value in that case is an identifier for the remote file system.  
4729    
4730  +++  ** Mode line changes:
 ** Functions `get' and `plist-get' no longer signals an error for  
 a malformed property list.  They also detect cyclic lists.  
4731    
4732  +++  +++
4733  ** The function `atan' now accepts an optional second argument.  *** New function `format-mode-line'.
   
 When called with 2 arguments, as in `(atan Y X)', `atan' returns the  
 angle in radians between the vector [X, Y] and the X axis.  (This is  
 equivalent to the standard C library function `atan2'.)  
   
 +++  
 ** New function format-mode-line.  
4734    
4735  This returns the mode-line or header-line of the selected (or a  This returns the mode-line or header-line of the selected (or a
4736  specified) window as a string with or without text properties.  specified) window as a string with or without text properties.
4737    
4738  +++  +++
4739  ** The new mode-line construct `(:propertize ELT PROPS...)' can be  *** The new mode-line construct `(:propertize ELT PROPS...)' can be
4740  used to add text properties to mode-line elements.  used to add text properties to mode-line elements.
4741    
4742  +++  +++
4743  ** The new `%i' and `%I' constructs for `mode-line-format' can be used  *** The new `%i' and `%I' constructs for `mode-line-format' can be used
4744  to display the size of the accessible part of the buffer on the mode  to display the size of the accessible part of the buffer on the mode
4745  line.  line.
4746    
4747  ---  ** Menu manipulation changes:
 ** Indentation of simple and extended loop forms has been added to the  
 cl-indent package.  The new user options  
 `lisp-loop-keyword-indentation', `lisp-loop-forms-indentation', and  
 `lisp-simple-loop-indentation' can be used to customize the  
 indentation of keywords and forms in loop forms.  
   
 ---  
 ** Indentation of backquoted forms has been made customizable in the  
 cl-indent package.  See the new user option `lisp-backquote-indentation'.  
   
 +++  
 ** field-beginning and field-end now accept an additional optional  
 argument, LIMIT.  
   
 +++  
 ** define-abbrev now accepts an optional argument SYSTEM-FLAG.  If  
 non-nil, this marks the abbrev as a "system" abbrev, which means that  
 it won't be stored in the user's abbrevs file if he saves the abbrevs.  
 Major modes that predefine some abbrevs should always specify this  
 flag.  
   
 ---  
 ** describe-vector now takes a second argument `describer' which is  
 called to print the entries' values.  It defaults to `princ'.  
   
 +++  
 ** defcustom and other custom declarations now use a default group  
 (the last prior group defined in the same file) when no :group was given.  
   
 ---  
 ** The new customization type `float' specifies numbers with floating  
 point (no integers are allowed).  
   
 +++  
 ** emacsserver now runs pre-command-hook and post-command-hook when  
 it receives a request from emacsclient.  
   
 ---  
 ** 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.  
   
 +++  
 ** 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.  
   
 +++  
 ** New vars `exec-suffixes' and `load-suffixes' used when  
 searching for an executable resp. an elisp file.  
   
 +++  
 ** Functions from `post-gc-hook' are run at the end of garbage  
 collection.  The hook is run with GC inhibited, so use it with care.  
   
 +++  
 ** The variables most-positive-fixnum and most-negative-fixnum  
 hold the largest and smallest possible integer values.  
4748    
4749  ---  ---
4750  ** On MS Windows, locale-coding-system is used to interact with the OS.  *** To manipulate the File menu using easy-menu, you must specify the
 The Windows specific variable w32-system-coding-system, which was  
 formerly used for that purpose is now an alias for locale-coding-system.  
   
 ---  
 ** New function x-send-client-message sends a client message when  
 running under X.  
   
 ---  
 ** 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  
4751  proper name "file".  In previous Emacs versions, you had to specify  proper name "file".  In previous Emacs versions, you had to specify
4752  "files", even though the menu item itself was changed to say "File"  "files", even though the menu item itself was changed to say "File"
4753  several versions ago.  several versions ago.
4754    
4755  ---  ---
4756  ** The dummy function keys made by easymenu are now always lower case.  *** The dummy function keys made by easy-menu are now always lower case.
4757  If you specify the menu item name "Ada", for instance, it uses `ada'  If you specify the menu item name "Ada", for instance, it uses `ada'
4758  as the "key" bound by that key binding.  as the "key" bound by that key binding.
4759    
4760  This is relevant only if Lisp code looks for the bindings that were  This is relevant only if Lisp code looks for the bindings that were
4761  made with easymenu.  made with easy-menu.
4762    
4763  ---  ---
4764  ** `easy-menu-define' now allows you to use nil for the symbol name  *** `easy-menu-define' now allows you to use nil for the symbol name
4765  if you don't need to give the menu a name.  If you install the menu  if you don't need to give the menu a name.  If you install the menu
4766  into other keymaps right away (MAPS is non-nil), it usually doesn't  into other keymaps right away (MAPS is non-nil), it usually doesn't
4767  need to have a name.  need to have a name.
4768    
4769  ---  ** Operating system access:
 ** rx.el has new corresponding `symbol-end' and `symbol-start' elements.  
   
 ** 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.  
4770    
4771  +++  +++
4772  *** The new primitive `get-internal-run-time' returns the processor  *** The new primitive `get-internal-run-time' returns the processor
4773  run time used by Emacs since start-up.  run time used by Emacs since start-up.
4774    
4775  +++  +++
4776  *** The new function insert-buffer-substring-as-yank works like  *** Functions `user-uid' and `user-real-uid' now return floats if the
4777  `insert-buffer-substring', but removes the text properties in the  user UID doesn't fit in a Lisp integer.  Function `user-full-name'
4778  `yank-excluded-properties' list.  accepts a float as UID parameter.
   
 +++  
 *** 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 can 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.  
4779    
4780  +++  +++
4781  *** New functions posn-at-point and posn-at-x-y return  *** New function `locale-info' accesses locale information.
 click-event-style position information for a given visible buffer  
 position or for a given window pixel coordinate.  
4782    
4783  ---  ---
4784  *** New function quail-find-key returns a list of keys to type in the  *** On MS Windows, locale-coding-system is used to interact with the OS.
4785  current input method to input a character.  The Windows specific variable w32-system-coding-system, which was
4786    formerly used for that purpose is now an alias for locale-coding-system.
 +++  
 *** 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 syntax.el provides an efficient way to find the  
 current syntactic context (as returned by parse-partial-sexp).  
   
 *** The new package bindat.el provides functions to unpack and pack  
 binary data structures, such as network packets, to and from Lisp  
 data structures.  
4787    
4788  ---  ---
4789  *** The TCL package tcl-mode.el was replaced by tcl.el.  *** New function `redirect-debugging-output' can be used to redirect
4790  This was actually done in Emacs-21.1, and was not documented.  debugging output on the stderr file handle to a file.
   
 +++  
 *** The new package button.el implements simple and fast `clickable buttons'  
 in emacs buffers.  `buttons' are much lighter-weight than the `widgets'  
 implemented by widget.el, and can be used by lisp code that doesn't  
 require the full power of widgets.  Emacs uses buttons for such things  
 as help and apropos buffers.  
4791    
4792  ---  ** Miscellaneous:
 *** master-mode.el implements a minor mode for scrolling a slave  
 buffer without leaving your current buffer, the master buffer.  
4793    
4794  It can be used by sql.el, for example: the SQL buffer is the master  +++
4795  and its SQLi buffer is the slave.  This allows you to scroll the SQLi  *** A number of hooks have been renamed to better follow the conventions:
 buffer containing the output from the SQL buffer containing the  
 commands.  
4796    
4797  This is how to use sql.el and master.el together: the variable  find-file-hooks to find-file-hook,
4798  sql-buffer contains the slave buffer.  It is a local variable in the  find-file-not-found-hooks to find-file-not-found-functions,
4799  SQL buffer.  write-file-hooks to write-file-functions,
4800    write-contents-hooks to write-contents-functions,
4801    x-lost-selection-hooks to x-lost-selection-functions,
4802    x-sent-selection-hooks to x-sent-selection-functions,
4803    delete-frame-hook to delete-frame-functions.
4804    
4805  (add-hook 'sql-mode-hook  In each case the old name remains as an alias for the moment.
    (function (lambda ()  
                (master-mode t)  
                (master-set-slave sql-buffer))))  
 (add-hook 'sql-set-sqli-hook  
    (function (lambda ()  
                (master-set-slave sql-buffer))))  
4806    
4807  +++  +++
4808  *** New Lisp library testcover.el works with edebug to help you determine  *** local-write-file-hooks is marked obsolete
 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.  
4809    
4810  Normally, a red splotch indicates the form was never completely  Use the LOCAL arg of `add-hook'.
 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.  
4811    
4812  ---  ---
4813  ** Support for Mocklisp has been removed.  *** New function `x-send-client-message' sends a client message when
4814    running under X.
 ---  
 ** The function insert-string is now obsolete.  
4815    
4816  * Installation changes in Emacs 21.3  * Installation changes in Emacs 21.3
4817    

Legend:
Removed from v.1.1183  
changed lines
  Added in v.1.1184

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26