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