diff options
| author | Richard M. Stallman | 2005-05-09 21:02:37 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 2005-05-09 21:02:37 +0000 |
| commit | c44da964fc28a3f2a186fd18deacc87857df7340 (patch) | |
| tree | 63fa0127eb4a6d041d1898f82f6902e0e4ad279e | |
| parent | b659edcebbe9c7560b38d991bc3348a7ba877473 (diff) | |
| download | emacs-c44da964fc28a3f2a186fd18deacc87857df7340.tar.gz emacs-c44da964fc28a3f2a186fd18deacc87857df7340.zip | |
Rearrange; clarify some entries.
| -rw-r--r-- | etc/NEWS | 2018 |
1 files changed, 1089 insertions, 929 deletions
| @@ -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 |
| 106 | types any more. Add -DUSE_LISP_UNION_TYPE if you want union types. | 106 | types any more. Add -DUSE_LISP_UNION_TYPE if you want union types. |
| 107 | |||
| 108 | --- | ||
| 109 | ** When pure storage overflows while dumping, Emacs now prints how | ||
| 110 | much pure storage it will approximately need. | ||
| 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 | |||
| 181 | modified buffers, it saves the abbrevs too if they have changed. It | 185 | modified buffers, it saves the abbrevs too if they have changed. It |
| 182 | can do this either silently or asking for confirmation first, | 186 | can do this either silently or asking for confirmation first, |
| 183 | according to the value of `save-abbrevs'. | 187 | according to the value of `save-abbrevs'. |
| 188 | |||
| 189 | * Incompatible Editing Changes in Emacs 22.1 | ||
| 190 | |||
| 191 | +++ | ||
| 192 | ** M-g is now a prefix key. | ||
| 193 | M-g g and M-g M-g run goto-line. | ||
| 194 | M-g n and M-g M-n run next-error (like C-x `). | ||
| 195 | M-g p and M-g M-p run previous-error. | ||
| 196 | |||
| 197 | +++ | ||
| 198 | ** C-u M-g M-g switches to the most recent previous buffer, | ||
| 199 | and goes to the specified line in that buffer. | ||
| 200 | |||
| 201 | When goto-line starts to execute, if there's a number in the buffer at | ||
| 202 | point then it acts as the default argument for the minibuffer. | ||
| 203 | |||
| 204 | +++ | ||
| 205 | ** The old bindings C-M-delete and C-M-backspace have been deleted, | ||
| 206 | since there are situations where one or the other will shut down | ||
| 207 | the operating system or your X server. | ||
| 208 | |||
| 209 | +++ | ||
| 210 | ** line-move-ignore-invisible now defaults to t. | ||
| 211 | |||
| 212 | +++ | ||
| 213 | ** When the undo information of the current command gets really large | ||
| 214 | (beyond the value of `undo-outer-limit'), Emacs discards it and warns | ||
| 215 | you about it. | ||
| 216 | |||
| 217 | +++ | ||
| 218 | ** `apply-macro-to-region-lines' now operates on all lines that begin | ||
| 219 | in the region, rather than on all complete lines in the region. | ||
| 220 | |||
| 221 | +++ | ||
| 222 | ** A prefix argument is no longer required to repeat a jump to a | ||
| 223 | previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the | ||
| 224 | mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump. | ||
| 225 | |||
| 226 | +++ | ||
| 227 | ** The info-search bindings on C-h C-f, C-h C-k and C-h C-i | ||
| 228 | have been moved to C-h F, C-h K and C-h S. | ||
| 229 | |||
| 230 | +++ | ||
| 231 | ** In incremental search, C-w is changed. M-%, C-M-w and C-M-y are special. | ||
| 184 | 232 | ||
| 233 | See below under "incremental search changes". | ||
| 234 | |||
| 235 | --- | ||
| 236 | ** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case. | ||
| 237 | |||
| 238 | Since the default input is the current directory, this has the effect | ||
| 239 | of specifying the current directory. Normally that means to visit the | ||
| 240 | directory with Dired. | ||
| 241 | |||
| 242 | +++ | ||
| 243 | ** The completion commands TAB, SPC and ? in the minibuffer apply only | ||
| 244 | to the text before point. If there is text in the buffer after point, | ||
| 245 | it remains unchanged. | ||
| 246 | |||
| 247 | +++ | ||
| 248 | ** M-o now is the prefix key for setting text properties; | ||
| 249 | M-o M-o requests refontification. | ||
| 250 | |||
| 251 | +++ | ||
| 252 | ** You can now follow links by clicking Mouse-1 on the link. | ||
| 253 | |||
| 254 | See below for more details. | ||
| 255 | |||
| 256 | +++ | ||
| 257 | ** In Dired's ! command (dired-do-shell-command), `*' and `?' now | ||
| 258 | control substitution of the file names only when they are surrounded | ||
| 259 | by whitespace. This means you can now use them as shell wildcards | ||
| 260 | too. If you want to use just plain `*' as a wildcard, type `*""'; the | ||
| 261 | doublequotes make no difference in the shell, but they prevent | ||
| 262 | special treatment in `dired-do-shell-command'. | ||
| 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'. | |||
| 190 | On 32bit machines, it is now 256M (i.e. 268435455). | 268 | On 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. | ||
| 194 | When the file is maintained under version control, that information | ||
| 195 | appears 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. |
| 199 | M-g g and M-g M-g run goto-line. | 272 | M-g g and M-g M-g run goto-line. |
| 200 | M-g n and M-g M-n run next-error (like C-x `). | 273 | M-g n and M-g M-n run next-error (like C-x `). |
| 201 | M-g p and M-g M-p run previous-error. | 274 | M-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, |
| 205 | M-o M-o requests refontification. | ||
| 206 | |||
| 207 | +++ | ||
| 208 | ** C-u M-x goto-line now switches to the most recent previous buffer, | ||
| 209 | and goes to the specified line in that buffer. | 278 | and goes to the specified line in that buffer. |
| 210 | 279 | ||
| 211 | When goto-line starts to execute, if there's a number in the buffer at | 280 | When goto-line starts to execute, if there's a number in the buffer at |
| 212 | point then it acts as the default argument for the minibuffer. | 281 | point 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 | ||
| 217 | can 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, |
| 221 | since there are situations where one or the other will shut down | 285 | since there are situations where one or the other will shut down |
| 222 | the operating system or your X server. | 286 | the 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. | |||
| 230 | you about it. | 294 | you 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 |
| 234 | converts whitespace around point to N spaces. | 298 | in 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 | ||
| 303 | can be used as well. | ||
| 304 | |||
| 305 | +++ | ||
| 306 | ** `undo-only' does an undo which does not redo any previous undo. | ||
| 307 | |||
| 308 | +++ | ||
| 309 | ** M-SPC (just-one-space) when given a numeric argument N | ||
| 310 | converts whitespace around point to N spaces. | ||
| 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 | |||
| 256 | in Indented-Text mode. | 329 | in 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 | ||
| 261 | is already active in Transient Mark mode. | ||
| 262 | |||
| 263 | +++ | ||
| 264 | ** `apply-macro-to-region-lines' now operates on all lines that begin | ||
| 265 | in the region, rather than on all complete lines in the region. | ||
| 266 | 333 | ||
| 267 | +++ | 334 | Substrings of the form `$foo' and `${foo}' in the specified new value |
| 268 | ** M-x setenv now expands environment variables of the form `$foo' and | 335 | now refer to the value of environment variable foo. To include a `$' |
| 269 | `${foo}' in the specified new value of the environment variable. To | 336 | in the value, use `$$'. |
| 270 | include 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 |
| 274 | the corresponding environment variable does not exist. | 340 | understand two new boolean pseudo-frame-parameters `same-frame' and |
| 275 | Instead, the `$ENVVAR' text is left as is, so that `$$' quoting | 341 | `same-window'. |
| 276 | is 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 | |||
| 287 | mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump. | 352 | mark 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. |
| 291 | you hit M-C-SPC (mark-sexp), M-@ (mark-word), M-h (mark-paragraph), or | 356 | |
| 292 | C-M-h (mark-defun) repeatedly, the marked region extends each time, so | 357 | If you type C-M-SPC (mark-sexp), M-@ (mark-word), M-h |
| 293 | you 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 |
| 294 | This feature also works for mark-end-of-sentence, if you bind that to | 359 | extends each time, so you can mark the next two sexps with M-C-SPC |
| 295 | a key. It also extends the region when the mark is active in Transient | 360 | M-C-SPC, for example. This feature also works for |
| 296 | Mark mode, regardless of the last command. To start a new region with | 361 | mark-end-of-sentence, if you bind that to a key. It also extends the |
| 297 | one of marking commands in Transient Mark mode, you can deactivate the | 362 | region when the mark is active in Transient Mark mode, regardless of |
| 298 | active region with C-g, or set the new mark with C-SPC. | 363 | the last command. To start a new region with one of marking commands |
| 364 | in Transient Mark mode, you can deactivate the active region with C-g, | ||
| 365 | or set the new mark with C-SPC. | ||
| 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 | |||
| 302 | With positive arg, M-h marks the current and the following paragraphs; | 370 | With positive arg, M-h marks the current and the following paragraphs; |
| 303 | if the arg is negative, it marks the current and the preceding | 371 | if the arg is negative, it marks the current and the preceding |
| 304 | paragraphs. | 372 | paragraphs. |
| @@ -321,6 +389,11 @@ deactivate the mark. That typically happens when you type a command | |||
| 321 | that alters the buffer, but you can also deactivate the mark by typing | 389 | that alters the buffer, but you can also deactivate the mark by typing |
| 322 | C-g. | 390 | C-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 | ||
| 395 | is 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 | |||
| 416 | match is listed first, and the calculated score is shown for each | 489 | match is listed first, and the calculated score is shown for each |
| 417 | matching item. | 490 | matching item. |
| 418 | 491 | ||
| 419 | ** Window selection changes: | ||
| 420 | |||
| 421 | +++ | ||
| 422 | *** `special-display-buffer-names' and `special-display-regexps' now | ||
| 423 | understand 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 | ||
| 556 | the corresponding environment variable does not exist. | ||
| 557 | Instead, the `$ENVVAR' text is left as is, so that `$$' quoting | ||
| 558 | is only rarely needed. | ||
| 559 | |||
| 560 | +++ | ||
| 489 | *** In processing a local variables list, Emacs strips the prefix and | 561 | *** In processing a local variables list, Emacs strips the prefix and |
| 490 | suffix are from every line before processing all the lines. | 562 | suffix 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 | |||
| 566 | prompt string. | 638 | prompt string. |
| 567 | 639 | ||
| 568 | --- | 640 | --- |
| 569 | *** Enhanced visual feedback in *Completions* buffer. | 641 | *** Enhanced visual feedback in `*Completions*' buffer. |
| 570 | 642 | ||
| 571 | Completions lists use faces to highlight what all completions | 643 | Completions lists use faces to highlight what all completions |
| 572 | have in common and where they begin to differ. | 644 | have 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. | ||
| 677 | When the file is maintained under version control, that information | ||
| 678 | appears 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. |
| 604 | You can use the new variable `font-lock-negation-char-face' and the face of | 681 | You can use the new variable `font-lock-negation-char-face' and the face of |
| 605 | the same name to customize this. Currently the cc-modes, sh-script-mode, | 682 | the 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 |
| 634 | the window now works sensible, by automatically adjusting the window's | 711 | the window now works sensibly, by automatically adjusting the window's |
| 635 | vscroll property. | 712 | vscroll 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; | ||
| 800 | M-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 |
| 723 | fontification, even those such as Occur, Info, and comint-derived | 804 | fontification, even those such as Occur, Info, and comint-derived |
| 724 | modes that do their own fontification in a special way. | 805 | modes that do their own fontification in a special way. |
| @@ -761,7 +842,7 @@ jit-lock-defer-contextually is renamed jit-lock-contextually and | |||
| 761 | jit-lock-context-time determines the delay after which contextual | 842 | jit-lock-context-time determines the delay after which contextual |
| 762 | refontification takes place. | 843 | refontification 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..." | ||
| 864 | and "Open File...". "Open File..." now opens only existing files. This is | ||
| 865 | to support existing GUI file selection dialogs better. | ||
| 866 | |||
| 867 | +++ | ||
| 868 | *** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be | ||
| 869 | disabled by customizing the variable `use-file-dialog'. | ||
| 870 | |||
| 871 | --- | ||
| 872 | *** The pop up menus for Lucid now stay up if you do a fast click and can | ||
| 873 | be navigated with the arrow keys (like Gtk+, Mac and W32). | ||
| 874 | |||
| 875 | +++ | ||
| 876 | *** The Lucid menus can display multilingual text in your locale. You have | ||
| 877 | to explicitly specify a fontSet resource for this to work, for example | ||
| 878 | `-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'. | ||
| 879 | |||
| 880 | --- | ||
| 881 | *** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing | ||
| 882 | ESC, like they do for Gtk+, Mac and W32. | ||
| 883 | |||
| 884 | +++ | ||
| 885 | *** For Gtk+ version 2.4, you can make Emacs use the old file dialog | ||
| 886 | by setting the variable `x-use-old-gtk-file-dialog' to t. Default is to use | ||
| 887 | the new dialog. | ||
| 888 | |||
| 778 | ** Mouse changes: | 889 | ** Mouse changes: |
| 779 | 890 | ||
| 780 | +++ | 891 | +++ |
| @@ -1184,8 +1295,10 @@ search multiple buffers. There is also a new command | |||
| 1184 | buffers to search by their filename. Internally, Occur mode has been | 1295 | buffers to search by their filename. Internally, Occur mode has been |
| 1185 | rewritten, and now uses font-lock, among other changes. | 1296 | rewritten, 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 | ||
| 1190 | There's a new separate package grep.el, with its own submenu and | 1303 | There's a new separate package grep.el, with its own submenu and |
| 1191 | customization group. | 1304 | customization group. |
| @@ -1230,38 +1343,6 @@ When `-H' is used, the grep command line supplied by the user is passed | |||
| 1230 | unchanged to the system to execute, which allows more complicated | 1343 | unchanged to the system to execute, which allows more complicated |
| 1231 | command lines to be used than was possible before. | 1344 | command 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 | ||
| 1246 | expression 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..." | ||
| 1258 | and "Open File...". "Open File..." now opens only existing files. This is | ||
| 1259 | to support existing GUI file selection dialogs better. | ||
| 1260 | |||
| 1261 | +++ | ||
| 1262 | *** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be | ||
| 1263 | disabled 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. | |||
| 1296 | On the other hand, the size of the thumb does not represent the actual | 1377 | On the other hand, the size of the thumb does not represent the actual |
| 1297 | amount of text shown any more (only a crude approximation of it). | 1378 | amount 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 | ||
| 1301 | be 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 | ||
| 1305 | to 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 | ||
| 1310 | ESC, 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 | ||
| 1314 | by setting the variable `x-use-old-gtk-file-dialog' to t. Default is to use | ||
| 1315 | the 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 |
| 1633 | buffers to change filenames, permissions, etc... | 1696 | buffers to change filenames, permissions, etc... |
| 1697 | |||
| 1698 | --- | ||
| 1699 | ** The TCL package tcl-mode.el was replaced by tcl.el. | ||
| 1700 | This was actually done in Emacs-21.1, and was not documented. | ||
| 1701 | |||
| 1702 | ** The new package bindat.el provides functions to unpack and pack | ||
| 1703 | binary data structures, such as network packets, to and from Lisp | ||
| 1704 | data structures. | ||
| 1705 | |||
| 1706 | +++ | ||
| 1707 | ** The new package button.el implements simple and fast `clickable buttons' | ||
| 1708 | in emacs buffers. `buttons' are much lighter-weight than the `widgets' | ||
| 1709 | implemented by widget.el, and can be used by lisp code that doesn't | ||
| 1710 | require the full power of widgets. Emacs uses buttons for such things | ||
| 1711 | as help and apropos buffers. | ||
| 1712 | |||
| 1713 | --- | ||
| 1714 | ** master-mode.el implements a minor mode for scrolling a slave | ||
| 1715 | buffer without leaving your current buffer, the master buffer. | ||
| 1716 | |||
| 1717 | It can be used by sql.el, for example: the SQL buffer is the master | ||
| 1718 | and its SQLi buffer is the slave. This allows you to scroll the SQLi | ||
| 1719 | buffer containing the output from the SQL buffer containing the | ||
| 1720 | commands. | ||
| 1721 | |||
| 1722 | This is how to use sql.el and master.el together: the variable | ||
| 1723 | sql-buffer contains the slave buffer. It is a local variable in the | ||
| 1724 | SQL buffer. | ||
| 1725 | |||
| 1726 | (add-hook 'sql-mode-hook | ||
| 1727 | (function (lambda () | ||
| 1728 | (master-mode t) | ||
| 1729 | (master-set-slave sql-buffer)))) | ||
| 1730 | (add-hook 'sql-set-sqli-hook | ||
| 1731 | (function (lambda () | ||
| 1732 | (master-set-slave sql-buffer)))) | ||
| 1733 | |||
| 1734 | +++ | ||
| 1735 | ** New Lisp library testcover.el works with edebug to help you determine | ||
| 1736 | whether you've tested all your Lisp code. Function testcover-start | ||
| 1737 | instruments all functions in a given file. Then test your code. Function | ||
| 1738 | testcover-mark-all adds overlay "splotches" to the Lisp file's buffer to | ||
| 1739 | show where coverage is lacking. Command testcover-next-mark (bind it to | ||
| 1740 | a key!) will move point forward to the next spot that has a splotch. | ||
| 1741 | |||
| 1742 | Normally, a red splotch indicates the form was never completely | ||
| 1743 | evaluated; a brown splotch means it always evaluated to the same | ||
| 1744 | value. The red splotches are skipped for forms that can't possibly | ||
| 1745 | complete their evaluation, such as `error'. The brown splotches are | ||
| 1746 | skipped for forms that are expected to always evaluate to the same | ||
| 1747 | value, such as (setq x 14). | ||
| 1748 | |||
| 1749 | For difficult cases, you can add do-nothing macros to your code to | ||
| 1750 | help out the test coverage tool. The macro `noreturn' suppresses a | ||
| 1751 | red splotch. It is an error if the argument to `noreturn' does | ||
| 1752 | return. The macro 1value suppresses a brown splotch for its argument. | ||
| 1753 | This macro is a no-op except during test-coverage -- then it signals | ||
| 1754 | an error if the argument actually returns differing values. | ||
| 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. | |||
| 1676 | When this option is enabled, M-x add-change-log-entry always | 1797 | When this option is enabled, M-x add-change-log-entry always |
| 1677 | starts a new record regardless of when the last record is. | 1798 | starts 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 | ||
| 1681 | to specify the value of `default-directory' for mail buffers. This | ||
| 1682 | directory 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 | ||
| 1687 | in 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 |
| 1692 | when Emacs visits them. | 1802 | when 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. |
| 1781 | CC Mode now provides font lock support for all its languages. This | 1891 | CC 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 | ||
| 2632 | to specify the value of `default-directory' for mail buffers. This | ||
| 2633 | directory is used for auto-save files of mail buffers. It defaults to | ||
| 2634 | "~/". | ||
| 2635 | |||
| 2636 | +++ | ||
| 2637 | ** Emacs can now indicate in the mode-line the presence of new e-mail | ||
| 2638 | in a directory or in a file. See the documentation of the user option | ||
| 2639 | `display-time-mail-directory'. | ||
| 2640 | |||
| 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 | |||
| 2732 | the stroke directly to a string to insert. This is convenient for | 2853 | the stroke directly to a string to insert. This is convenient for |
| 2733 | using strokes as an input method. | 2854 | using 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 | ||
| 2869 | expression and to use the given display when visiting files. | ||
| 2870 | |||
| 2871 | +++ | ||
| 2872 | *** User option `server-mode' can be used to start a server process. | ||
| 2873 | |||
| 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 | ||
| 2858 | much like `F', but if the input is a directory name (even defaulted), | ||
| 2859 | it 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 |
| 2863 | the command `undefined'. (In earlier Emacs versions, it used | 2997 | the 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 | ||
| 2876 | lists: a list of directories to search in and a list of suffixes to | ||
| 2877 | try; typical usage might use `exec-path' and `load-path' for the list | ||
| 2878 | of directories, and `exec-suffixes' and `load-suffixes' for the list | ||
| 2879 | of suffixes. The function also accepts a predicate argument to | ||
| 2880 | further filter candidate files. | ||
| 2881 | 3012 | ||
| 2882 | One 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. |
| 2884 | executables 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. |
| 2888 | variable `sentence-end-without-space', which contains such characters | ||
| 2889 | that end a sentence without following spaces. | ||
| 2890 | 3018 | ||
| 2891 | The function `sentence-end' should be used to obtain the value of the | 3019 | +++ |
| 2892 | variable `sentence-end'. If the variable `sentence-end' is nil, then | 3020 | *** If optional third argument APPEND to `add-to-list' is non-nil, a |
| 2893 | this function returns the regexp constructed from the variables | 3021 | new element gets added at the end of the list instead of at the |
| 2894 | `sentence-end-without-period', `sentence-end-double-space' and | 3022 | beginning. This change actually occurred in Emacs-21.1, but was not |
| 2895 | `sentence-end-without-space'. | 3023 | documented. |
| 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 |
| 2899 | and backward-to-indentation is now optional, and defaults to 1. | 3027 | both 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' |
| 2903 | enables Transient Mark mode for the following command only. | 3031 | duplicates from a list. Of several `equal' occurrences of an element |
| 2904 | During that following command, the value of transient-mark-mode | 3032 | in the list, the first one is kept. |
| 2905 | is `identity'. If it is still `identity' at the end of the command, | ||
| 2906 | it 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 |
| 2910 | before saving buffers. This allows packages to perform various final | 3036 | documentation purposes and should have no real effect on Lisp code. |
| 2911 | tasks, for example; it can be used by the copyright package to make | ||
| 2912 | sure 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 |
| 2916 | save-some-buffers will always save that buffer without asking | 3040 | alist 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 | ||
| 3044 | numbers. For instance, (number-sequence 4 9) returns (4 5 6 7 8 9). | ||
| 3045 | By default, the separation is 1, but you can specify a different separation | ||
| 3046 | as the third argument. (number-sequence 1.5 6 2) returns (1.5 3.5 5.5). | ||
| 3047 | |||
| 3048 | +++ | ||
| 3049 | *** The variables `most-positive-fixnum' and `most-negative-fixnum' | ||
| 3050 | hold the largest and smallest possible integer values. | ||
| 3051 | |||
| 3052 | +++ | ||
| 3053 | *** The flags, width, and precision options for %-specifications in function | ||
| 3054 | `format' are now documented. Some flags that were accepted but not | ||
| 3055 | implemented (such as "*") are no longer accepted. | ||
| 3056 | |||
| 3057 | +++ | ||
| 3058 | *** Functions `get' and `plist-get' no longer signals an error for | ||
| 3059 | a malformed property list. They also detect cyclic lists. | ||
| 3060 | |||
| 3061 | +++ | ||
| 3062 | *** The new functions `lax-plist-get' and `lax-plist-put' are like | ||
| 3063 | `plist-get' and `plist-put', except that they compare the property | ||
| 3064 | name using `equal' rather than `eq'. | ||
| 3065 | |||
| 3066 | +++ | ||
| 3067 | *** The new variable `print-continuous-numbering', when non-nil, says | ||
| 3068 | that successive calls to print functions should use the same | ||
| 3069 | numberings for circular structure references. This is only relevant | ||
| 3070 | when `print-circle' is non-nil. | ||
| 3071 | |||
| 3072 | When you bind `print-continuous-numbering' to t, you should | ||
| 3073 | also bind `print-number-table' to nil. | ||
| 3074 | |||
| 3075 | +++ | ||
| 3076 | *** New function `macroexpand-all' expands all macros in a form. | ||
| 3077 | |||
| 3078 | It is similar to the Common-Lisp function of the same name. | ||
| 3079 | One difference is that it guarantees to return the original argument | ||
| 3080 | if no expansion is done, which can be tested using `eq'. | ||
| 3081 | |||
| 3082 | +++ | ||
| 3083 | *** The function `atan' now accepts an optional second argument. | ||
| 3084 | |||
| 3085 | When called with 2 arguments, as in `(atan Y X)', `atan' returns the | ||
| 3086 | angle in radians between the vector [X, Y] and the X axis. (This is | ||
| 3087 | equivalent to the standard C library function `atan2'.) | ||
| 3088 | |||
| 3089 | +++ | ||
| 3090 | *** A function's doc string can now specify the calling pattern. | ||
| 3091 | |||
| 3092 | You put this in the doc string's last line, which should match the | ||
| 3093 | regexp "\n\n(fn.*)\\'". | ||
| 3094 | |||
| 3095 | +++ | ||
| 3096 | *** New macro `with-local-quit' temporarily sets `inhibit-quit' to nil. | ||
| 3097 | |||
| 3098 | This is for use around potentially blocking or long-running code in | ||
| 3099 | timers and `post-command-hook' functions. | ||
| 3100 | |||
| 3101 | *** `define-obsolete-function-alias' | ||
| 3102 | combines `defalias' and `make-obsolete'. | ||
| 3103 | |||
| 3104 | +++ | ||
| 3105 | *** New function `unsafep' returns nil if the given Lisp form can't | ||
| 3106 | possibly do anything dangerous; otherwise it returns a reason why the | ||
| 3107 | form might be unsafe (calls unknown function, alters global variable, | ||
| 3108 | etc). | ||
| 3109 | |||
| 3110 | ** Lisp code indentation features: | ||
| 3111 | |||
| 3112 | +++ | ||
| 3113 | *** The `defmacro' form can contain declarations specifying how to | ||
| 3114 | indent the macro in Lisp mode and how to debug it with Edebug. The | ||
| 3115 | syntax of defmacro has been extended to | ||
| 3116 | |||
| 3117 | (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...) | ||
| 3118 | |||
| 3119 | DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The | ||
| 3120 | declaration specifiers supported are: | ||
| 3121 | |||
| 3122 | (indent INDENT) | ||
| 3123 | Set NAME's `lisp-indent-function' property to INDENT. | ||
| 3124 | |||
| 3125 | (edebug DEBUG) | ||
| 3126 | Set NAME's `edebug-form-spec' property to DEBUG. (This is | ||
| 3127 | equivalent to writing a `def-edebug-spec' for the macro. | ||
| 3128 | |||
| 3129 | --- | ||
| 3130 | *** cl-indent now allows customization of Indentation of backquoted forms. | ||
| 3131 | |||
| 3132 | See the new user option `lisp-backquote-indentation'. | ||
| 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 | |||
| 3137 | The new user options `lisp-loop-keyword-indentation', | ||
| 3138 | `lisp-loop-forms-indentation', and `lisp-simple-loop-indentation' can | ||
| 3139 | be used to customize the indentation of keywords and forms in loop | ||
| 3140 | forms. | ||
| 3141 | |||
| 3142 | +++ | ||
| 3143 | ** Variable aliases: | ||
| 3144 | |||
| 3145 | *** defvaralias ALIAS-VAR BASE-VAR [DOCSTRING] | ||
| 3146 | |||
| 3147 | This function defines the symbol ALIAS-VAR as a variable alias for | ||
| 3148 | symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR | ||
| 3149 | returns the value of BASE-VAR, and changing the value of ALIAS-VAR | ||
| 3150 | changes the value of BASE-VAR. | ||
| 3151 | |||
| 3152 | DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has | ||
| 3153 | the same documentation as BASE-VAR. | ||
| 3154 | |||
| 3155 | *** indirect-variable VARIABLE | ||
| 3156 | |||
| 3157 | This function returns the variable at the end of the chain of aliases | ||
| 3158 | of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not | ||
| 3159 | defined as an alias, the function returns VARIABLE. | ||
| 3160 | |||
| 3161 | It might be noteworthy that variables aliases work for all kinds of | ||
| 3162 | variables, including buffer-local and frame-local variables. | ||
| 3163 | |||
| 3164 | +++ | ||
| 3165 | *** The macro `define-obsolete-variable-alias' combines `defvaralias' and | ||
| 3166 | `make-obsolete-variable'. | ||
| 3167 | |||
| 3168 | ** defcustom changes: | ||
| 3169 | |||
| 3170 | +++ | ||
| 3171 | *** defcustom and other custom declarations now use a default group | ||
| 3172 | (the last prior group defined in the same file) when no :group was given. | ||
| 3173 | |||
| 3174 | --- | ||
| 3175 | *** The new customization type `float' specifies numbers with floating | ||
| 3176 | point (no integers are allowed). | ||
| 3177 | |||
| 3178 | ** String changes: | ||
| 3179 | |||
| 3180 | +++ | ||
| 3181 | *** The escape sequence \s is now interpreted as a SPACE character, | ||
| 3182 | unless it is followed by a `-' in a character constant (e.g. ?\s-A), | ||
| 3183 | in which case it is still interpreted as the super modifier. | ||
| 3184 | In strings, \s is always interpreted as a space. | ||
| 3185 | |||
| 3186 | +++ | ||
| 3187 | *** A hex escape in a string forces the string to be multibyte. | ||
| 3188 | An octal escape makes it unibyte. | ||
| 3189 | |||
| 3190 | +++ | ||
| 3191 | *** `split-string' now includes null substrings in the returned list if | ||
| 3192 | the optional argument SEPARATORS is non-nil and there are matches for | ||
| 3193 | SEPARATORS at the beginning or end of the string. If SEPARATORS is | ||
| 3194 | nil, or if the new optional third argument OMIT-NULLS is non-nil, all | ||
| 3195 | empty matches are omitted from the returned list. | ||
| 3196 | |||
| 3197 | +++ | ||
| 3198 | *** New function `string-to-multibyte' converts a unibyte string to a | ||
| 3199 | multibyte string with the same individual character codes. | ||
| 3200 | |||
| 3201 | +++ | ||
| 3202 | *** New function `substring-no-properties returns a substring without | ||
| 3203 | text properties. | ||
| 3204 | |||
| 3205 | +++ | ||
| 3206 | *** The new function `assoc-string' replaces `assoc-ignore-case' and | ||
| 3207 | `assoc-ignore-representation', which are still available, but have | ||
| 3208 | been declared obsolete. | ||
| 3209 | |||
| 3210 | ** Buffer/variable changes: | ||
| 3211 | |||
| 3212 | +++ | ||
| 3213 | *** The new function `buffer-local-value' returns the buffer-local | ||
| 3214 | binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not | ||
| 3215 | have a buffer-local binding in buffer BUFFER, it returns the default | ||
| 3216 | value of VARIABLE instead. | ||
| 3217 | |||
| 3218 | +++ | ||
| 3219 | ** There is a new facility for displaying warnings to the user. | ||
| 3220 | |||
| 3221 | See the functions `warn' and `display-warning' . | ||
| 3222 | |||
| 3223 | +++ | ||
| 3224 | ** Progress reporters. | ||
| 3225 | |||
| 3226 | These provide a simple and uniform way for commands to present | ||
| 3227 | progress messages for the user. | ||
| 3228 | |||
| 3229 | See the new functions `make-progress-reporter', | ||
| 3230 | `progress-reporter-update', `progress-reporter-force-update', | ||
| 3231 | `progress-reporter-done', and `dotimes-with-progress-reporter'. | ||
| 3232 | |||
| 3233 | ** Buffer positions: | ||
| 3234 | |||
| 3235 | +++ | ||
| 3236 | *** Function `compute-motion' now calculates the usable window | ||
| 3237 | width if the WIDTH argument is nil. If the TOPOS argument is nil, | ||
| 3238 | the usable window height and width is used. | ||
| 3239 | |||
| 3240 | +++ | ||
| 3241 | *** The `line-move', `scroll-up', and `scroll-down' functions will now | ||
| 3242 | modify the window vscroll to scroll through display rows that are | ||
| 3243 | taller that the height of the window, for example in the presense of | ||
| 3244 | large images. To disable this feature, Lisp code can bind the new | ||
| 3245 | variable `auto-window-vscroll' to nil. | ||
| 3246 | |||
| 3247 | +++ | ||
| 3248 | *** The argument to `forward-word', `backward-word', | ||
| 3249 | `forward-to-indentation' and `backward-to-indentation' is now | ||
| 3250 | optional, and defaults to 1. | ||
| 3251 | |||
| 3252 | +++ | ||
| 3253 | *** Lisp code can now test if a given buffer position is inside a | ||
| 3254 | clickable link with the new function `mouse-on-link-p'. This is the | ||
| 3255 | function used by the new `mouse-1-click-follows-link' functionality. | ||
| 3256 | |||
| 3257 | +++ | ||
| 3258 | *** New function `line-number-at-pos' returns the line number of the | ||
| 3259 | current line in the current buffer, or if optional buffer position is | ||
| 3260 | given, line number of corresponding line in current buffer. | ||
| 3261 | |||
| 3262 | +++ | ||
| 3263 | *** `field-beginning' and `field-end' now accept an additional optional | ||
| 3264 | argument, LIMIT. | ||
| 3265 | |||
| 3266 | +++ | ||
| 3267 | *** Function `pos-visible-in-window-p' now returns the pixel coordinates | ||
| 3268 | and partial visiblity state of the corresponding row, if the PARTIALLY | ||
| 3269 | arg is non-nil. | ||
| 3270 | |||
| 3271 | +++ | ||
| 3272 | *** New functions `posn-at-point' and `posn-at-x-y' return | ||
| 3273 | click-event-style position information for a given visible buffer | ||
| 3274 | position or for a given window pixel coordinate. | ||
| 3275 | |||
| 3276 | ** Text modification: | ||
| 3277 | |||
| 3278 | +++ | ||
| 3279 | *** The new function `insert-buffer-substring-as-yank' works like | ||
| 3280 | `insert-buffer-substring', but removes the text properties in the | ||
| 3281 | `yank-excluded-properties' list. | ||
| 3282 | |||
| 3283 | +++ | ||
| 3284 | *** The new function `insert-buffer-substring-no-properties' is like | ||
| 3285 | insert-buffer-substring, but removes all text properties from the | ||
| 3286 | inserted substring. | ||
| 3287 | |||
| 3288 | +++ | ||
| 3289 | *** The new function `filter-buffer-substring' extracts a buffer | ||
| 3290 | substring, passes it through a set of filter functions, and returns | ||
| 3291 | the filtered substring. It is used instead of `buffer-substring' or | ||
| 3292 | `delete-and-extract-region' when copying text into a user-accessible | ||
| 3293 | data structure, like the kill-ring, X clipboard, or a register. The | ||
| 3294 | list of filter function is specified by the new variable | ||
| 3295 | `buffer-substring-filters'. For example, Longlines mode uses | ||
| 3296 | `buffer-substring-filters' to remove soft newlines from the copied | ||
| 3297 | text. | ||
| 3298 | |||
| 3299 | +++ | ||
| 3300 | *** Function `translate-region' accepts also a char-table as TABLE | ||
| 3301 | argument. | ||
| 3302 | |||
| 3303 | +++ | ||
| 3304 | *** The new translation table `translation-table-for-input' | ||
| 3305 | is used for customizing self-insertion. The character to | ||
| 3306 | be inserted is translated through it. | ||
| 3307 | |||
| 3308 | --- | ||
| 3309 | *** Text clones. | ||
| 3310 | |||
| 3311 | The new function `text-clone-create'. Text clones are chunks of text | ||
| 3312 | that are kept identical by transparently propagating changes from one | ||
| 3313 | clone to the other. | ||
| 3314 | |||
| 3315 | --- | ||
| 3316 | *** The function `insert-string' is now obsolete. | ||
| 3317 | |||
| 3318 | ** Syntax table changes: | ||
| 3319 | |||
| 3320 | +++ | ||
| 3321 | *** The macro `with-syntax-table' does not copy the table any more. | ||
| 3322 | |||
| 3323 | +++ | ||
| 3324 | *** The new function `syntax-after' returns the syntax code | ||
| 3325 | of the character after a specified buffer position, taking account | ||
| 3326 | of text properties as well as the character code. | ||
| 3327 | |||
| 3328 | +++ | ||
| 3329 | *** `syntax-class' extracts the class of a syntax code (as returned | ||
| 3330 | by syntax-after). | ||
| 3331 | |||
| 3332 | *** The new package `syntax.el' provides an efficient way to find the | ||
| 3333 | current syntactic context (as returned by `parse-partial-sexp'). | ||
| 3334 | |||
| 3335 | ** GC changes: | ||
| 3336 | |||
| 3337 | +++ | ||
| 3338 | *** New variables `gc-elapsed' and `gcs-done' provide extra information | ||
| 3339 | on garbage collection. | ||
| 3340 | |||
| 3341 | +++ | ||
| 3342 | *** Functions from `post-gc-hook' are run at the end of garbage | ||
| 3343 | collection. The hook is run with GC inhibited, so use it with care. | ||
| 3344 | |||
| 3345 | ** Buffer-related changes: | ||
| 3346 | |||
| 3347 | --- | ||
| 3348 | *** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST. | ||
| 2921 | If it is non-nil, it specifies which buffers to list. | 3349 | If 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 | |||
| 3359 | A file local variables list cannot specify a string with text | ||
| 3360 | properties--any specified text properties are discarded. | ||
| 3361 | |||
| 3362 | +++ | ||
| 3363 | *** The variable `safe-local-eval-forms' specifies a list of forms that | ||
| 3364 | are ok to evaluate when they appear in an `eval' local variables | ||
| 3365 | specification. Normally Emacs asks for confirmation before evaluating | ||
| 3366 | such a form, but if the form appears in this list, no confirmation is | ||
| 3367 | needed. | ||
| 3368 | |||
| 3369 | --- | ||
| 3370 | *** If a function has a non-nil `safe-local-eval-function' property, | ||
| 3371 | that means it is ok to evaluate some calls to that function when it | ||
| 3372 | appears in an `eval' local variables specification. If the property | ||
| 3373 | is t, then any form calling that function with constant arguments is | ||
| 3374 | ok. If the property is a function or list of functions, they are called | ||
| 3375 | with the form as argument, and if any returns t, the form is ok to call. | ||
| 3376 | |||
| 3377 | If the form is not "ok to call", that means Emacs asks for | ||
| 3378 | confirmation as before. | ||
| 3379 | |||
| 3380 | ** Abbrev changes: | ||
| 3381 | |||
| 3382 | *** The new function copy-abbrev-table returns a new abbrev table that | ||
| 3383 | is a copy of a given abbrev table. | ||
| 3384 | |||
| 3385 | +++ | ||
| 3386 | *** define-abbrev now accepts an optional argument SYSTEM-FLAG. If | ||
| 3387 | non-nil, this marks the abbrev as a "system" abbrev, which means that | ||
| 3388 | it won't be stored in the user's abbrevs file if he saves the abbrevs. | ||
| 3389 | Major modes that predefine some abbrevs should always specify this | ||
| 3390 | flag. | ||
| 3391 | |||
| 3392 | ** Undo changes: | ||
| 3393 | |||
| 3394 | +++ | ||
| 3395 | *** An element of buffer-undo-list can now have the form (apply FUNNAME | ||
| 3396 | . ARGS), where FUNNAME is a symbol other than t or nil. That stands | ||
| 3397 | for a high-level change that should be undone by evaluating (apply | ||
| 3398 | FUNNAME ARGS). | ||
| 3399 | |||
| 3400 | These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS) | ||
| 3401 | which indicates that the change which took place was limited to the | ||
| 3402 | range BEG...END and increased the buffer size by DELTA. | ||
| 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 |
| 3406 | undo-outer-limit, garbage collection empties it. This is to prevent | ||
| 3407 | it from using up the available memory and choking Emacs. | ||
| 3408 | |||
| 3409 | +++ | ||
| 3410 | ** New `yank-handler' text property can be used to control how | ||
| 3411 | previously killed text on the kill-ring is reinserted. | ||
| 3412 | |||
| 3413 | The value of the yank-handler property must be a list with one to four | ||
| 3414 | elements with the following format: | ||
| 3415 | (FUNCTION PARAM NOEXCLUDE UNDO). | ||
| 3416 | |||
| 3417 | The `insert-for-yank' function looks for a yank-handler property on | ||
| 3418 | the first character on its string argument (typically the first | ||
| 3419 | element on the kill-ring). If a yank-handler property is found, | ||
| 3420 | the normal behavior of `insert-for-yank' is modified in various ways: | ||
| 3421 | |||
| 3422 | When FUNCTION is present and non-nil, it is called instead of `insert' | ||
| 3423 | to insert the string. FUNCTION takes one argument--the object to insert. | ||
| 3424 | If PARAM is present and non-nil, it replaces STRING as the object | ||
| 3425 | passed to FUNCTION (or `insert'); for example, if FUNCTION is | ||
| 3426 | `yank-rectangle', PARAM should be a list of strings to insert as a | ||
| 3427 | rectangle. | ||
| 3428 | If NOEXCLUDE is present and non-nil, the normal removal of the | ||
| 3429 | yank-excluded-properties is not performed; instead FUNCTION is | ||
| 3430 | responsible for removing those properties. This may be necessary | ||
| 3431 | if FUNCTION adjusts point before or after inserting the object. | ||
| 3432 | If UNDO is present and non-nil, it is a function that will be called | ||
| 3433 | by `yank-pop' to undo the insertion of the current object. It is | ||
| 3434 | called with two arguments, the start and end of the current region. | ||
| 3435 | FUNCTION can set `yank-undo-function' to override the UNDO value. | ||
| 3436 | |||
| 3437 | *** The functions kill-new, kill-append, and kill-region now have an | ||
| 3438 | optional argument to specify the yank-handler text property to put on | ||
| 3439 | the killed text. | ||
| 3440 | |||
| 3441 | *** The function yank-pop will now use a non-nil value of the variable | ||
| 3442 | `yank-undo-function' (instead of delete-region) to undo the previous | ||
| 3443 | yank or yank-pop command (or a call to insert-for-yank). The function | ||
| 3444 | insert-for-yank automatically sets that variable according to the UNDO | ||
| 3445 | element of the string argument's yank-handler text property if present. | ||
| 3446 | |||
| 3447 | *** The function `insert-for-yank' now supports strings where the | ||
| 3448 | `yank-handler' property does not span the first character of the | ||
| 3449 | string. The old behavior is available if you call | ||
| 3450 | `insert-for-yank-1' instead. | ||
| 3451 | |||
| 3452 | *** The new function insert-for-yank normally works like `insert', but | ||
| 3453 | removes the text properties in the `yank-excluded-properties' list. | ||
| 3454 | However, the insertion of the text can be modified by a `yank-handler' | ||
| 3455 | text property. | ||
| 3456 | |||
| 3457 | ** File operation changes: | ||
| 3458 | |||
| 3459 | +++ | ||
| 3460 | *** New vars `exec-suffixes' and `load-suffixes' used when | ||
| 3461 | searching for an executable resp. an elisp file. | ||
| 3462 | |||
| 3463 | +++ | ||
| 3464 | *** The new primitive `set-file-times' sets a file's access and | ||
| 3465 | modification times. Magic file name handlers can handle this | ||
| 3466 | operation. | ||
| 3467 | |||
| 3468 | +++ | ||
| 3469 | *** The new function `file-remote-p' tests a file name and returns | ||
| 3470 | non-nil if it specifies a remote file (one that Emacs accesses using | ||
| 3471 | its own special methods and not directly through the file system). | ||
| 3472 | The value in that case is an identifier for the remote file system. | ||
| 3473 | |||
| 3474 | +++ | ||
| 3475 | *** `auto-save-file-format' has been renamed to | ||
| 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 |
| 2932 | ignore the leading dots in file names, so that file names such as | 3480 | ignore 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 | ||
| 2938 | This argument works like the MUSTBENEW argument of write-file. | 3486 | This 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, |
| 2942 | the file is copied to that directory instead of signaling an error. | 3490 | the 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 |
| 2946 | a list of two integers, instead of a cons. | 3494 | a 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 |
| 2950 | specifies the maximum number of links to chase through. If after that | 3498 | specifies the maximum number of links to chase through. If after that |
| 2951 | many iterations the file name obtained is still a symbolic link, | 3499 | many 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' |
| 2956 | argument. If it is non-nil, then `commandp' checks | 3504 | before saving buffers. This allows packages to perform various final |
| 2957 | for a function that could be called with `call-interactively', | 3505 | tasks, for example; it can be used by the copyright package to make |
| 2958 | and does not return t for keyboard macros. | 3506 | sure 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, |
| 3510 | save-some-buffers will always save that buffer without asking | ||
| 3511 | (if it's modified). | ||
| 3512 | |||
| 3513 | *** New function `locate-file' searches for a file in a list of directories. | ||
| 3514 | `locate-file' accepts a name of a file to search (a string), and two | ||
| 3515 | lists: a list of directories to search in and a list of suffixes to | ||
| 3516 | try; typical usage might use `exec-path' and `load-path' for the list | ||
| 3517 | of directories, and `exec-suffixes' and `load-suffixes' for the list | ||
| 3518 | of suffixes. The function also accepts a predicate argument to | ||
| 3519 | further filter candidate files. | ||
| 3520 | |||
| 3521 | One advantage of using this function is that the list of suffixes in | ||
| 3522 | `exec-suffixes' is OS-dependant, so this function will find | ||
| 3523 | executables without polluting Lisp code with OS dependancies. | ||
| 3524 | |||
| 3525 | --- | ||
| 3526 | *** The precedence of file-name-handlers has been changed. | ||
| 3527 | Instead of blindly choosing the first handler that matches, | ||
| 3528 | find-file-name-handler now gives precedence to a file-name handler | ||
| 3529 | that matches near the end of the file name. More specifically, the | ||
| 3530 | handler whose (match-beginning 0) is the largest is chosen. | ||
| 3531 | In case of ties, the old "first matched" rule applies. | ||
| 3532 | |||
| 3533 | +++ | ||
| 3534 | *** A file name handler can declare which operations it handles. | ||
| 3535 | |||
| 3536 | You do this by putting an `operation' property on the handler name | ||
| 3537 | symbol. The property value should be a list of the operations that | ||
| 3538 | the handler really handles. It won't be called for any other | ||
| 3539 | operations. | ||
| 3540 | |||
| 3541 | This is useful for autoloaded handlers, to prevent them from being | ||
| 3542 | autoloaded when not really necessary. | ||
| 3543 | |||
| 3544 | ** Input changes: | ||
| 3545 | |||
| 3546 | +++ | ||
| 3547 | *** An interactive specification can now use the code letter 'U' to get | ||
| 2962 | the up-event that was discarded in case the last key sequence read for a | 3548 | the up-event that was discarded in case the last key sequence read for a |
| 2963 | previous 'k' or 'K' argument was a down-event; otherwise nil is used. | 3549 | previous '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 | ||
| 3553 | much like `F', but if the input is a directory name (even defaulted), | ||
| 3554 | it 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 |
| 2967 | display a prompt but don't use the minibuffer, now display the prompt | 3558 | display a prompt but don't use the minibuffer, now display the prompt |
| 2968 | using the text properties (esp. the face) of the prompt string. | 3559 | using 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 |
| 3563 | arrives. If the user types or clicks anything, BODY stops as if a | ||
| 3564 | quit had occurred. while-no-input returns the value of BODY, if BODY | ||
| 3565 | finishes. It returns nil if BODY was aborted. | ||
| 3566 | |||
| 3567 | ** Minibuffer changes: | ||
| 3568 | |||
| 3569 | *** The new function `minibufferp' returns non-nil if its optional | ||
| 3570 | buffer argument is a minibuffer. If the argument is omitted, it | ||
| 3571 | defaults to the current buffer. | ||
| 3572 | |||
| 3573 | +++ | ||
| 3574 | *** New function minibuffer-selected-window returns the window which | ||
| 3575 | was selected when entering the minibuffer. | ||
| 3576 | |||
| 3577 | +++ | ||
| 3578 | *** read-from-minibuffer now accepts an additional argument KEEP-ALL | ||
| 2972 | saying to put all inputs in the history list, even empty ones. | 3579 | saying 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 |
| 2976 | specifies a predicate which the file name read must satify. The | 3583 | specifies a predicate which the file name read must satify. The |
| 2977 | new variable `read-file-name-predicate' contains the predicate argument | 3584 | new variable `read-file-name-predicate' contains the predicate argument |
| 2978 | while reading the file name from the minibuffer; the predicate in this | 3585 | while reading the file name from the minibuffer; the predicate in this |
| 2979 | variable is used by read-file-name-internal to filter the completion list. | 3586 | variable 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 |
| 2983 | to override the internal read-file-name function. | 3590 | to 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 |
| 2987 | whether completion ignores case when reading a file name with the | 3594 | whether 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 |
| 2993 | will only show directories. | 3600 | will 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 |
| 3606 | the text before point. Specifying the LIMIT argument bounds how far | ||
| 3607 | back the match can start; this is a way to keep it from taking too long. | ||
| 3608 | |||
| 3609 | +++ | ||
| 3610 | *** The new variable search-spaces-regexp controls how to search | ||
| 2997 | for spaces in a regular expression. If it is non-nil, it should be a | 3611 | for spaces in a regular expression. If it is non-nil, it should be a |
| 2998 | regular expression, and any series of spaces stands for that regular | 3612 | regular expression, and any series of spaces stands for that regular |
| 2999 | expression. If it is nil, spaces stand for themselves. | 3613 | expression. If it is nil, spaces stand for themselves. |
| @@ -3002,51 +3616,38 @@ Spaces inside of constructs such as [..] and *, +, ? are never | |||
| 3002 | replaced with search-spaces-regexp. | 3616 | replaced 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 \_>, |
| 3006 | for matching the beginning and end of a symbol. A symbol is a | 3620 | for matching the beginning and end of a symbol. A symbol is a |
| 3007 | non-empty sequence of either word or symbol constituent characters, as | 3621 | non-empty sequence of either word or symbol constituent characters, as |
| 3008 | specified by the syntax table. | 3622 | specified 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 |
| 3012 | character classes such as [:alpha:], along with individual characters | 3626 | character classes such as [:alpha:], along with individual characters |
| 3013 | and ranges. | 3627 | and 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 |
| 3017 | properties from surrounding text. | 3631 | properties 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 |
| 3021 | element, if the last match was on a buffer. `set-match-data' | 3635 | element, if the last match was on a buffer. `set-match-data' |
| 3022 | accepts such a list for restoring the match state. | 3636 | accepts 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 | |||
| 3029 | This function defines the symbol ALIAS-VAR as a variable alias for | ||
| 3030 | symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR | ||
| 3031 | returns the value of BASE-VAR, and changing the value of ALIAS-VAR | ||
| 3032 | changes the value of BASE-VAR. | ||
| 3033 | |||
| 3034 | DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has | ||
| 3035 | the same documentation as BASE-VAR. | ||
| 3036 | |||
| 3037 | *** indirect-variable VARIABLE | ||
| 3038 | |||
| 3039 | This function returns the variable at the end of the chain of aliases | ||
| 3040 | of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not | ||
| 3041 | defined as an alias, the function returns VARIABLE. | ||
| 3042 | |||
| 3043 | It might be noteworthy that variables aliases work for all kinds of | ||
| 3044 | variables, 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 |
| 3048 | make-obsolete-variable. The macro define-obsolete-function-alias | 3643 | variable `sentence-end-without-space', which contains such characters |
| 3049 | combines defalias and make-obsolete. | 3644 | that end a sentence without following spaces. |
| 3645 | |||
| 3646 | The function `sentence-end' should be used to obtain the value of the | ||
| 3647 | variable `sentence-end'. If the variable `sentence-end' is nil, then | ||
| 3648 | this function returns the regexp constructed from the variables | ||
| 3649 | `sentence-end-without-period', `sentence-end-double-space' and | ||
| 3650 | `sentence-end-without-space'. | ||
| 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 | |||
| 3204 | finished. | 3805 | finished. |
| 3205 | 3806 | ||
| 3206 | +++ | 3807 | +++ |
| 3207 | ** Progress reporters. | ||
| 3208 | The 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 | ||
| 3211 | a command to present progress messages for the user. | ||
| 3212 | |||
| 3213 | +++ | ||
| 3214 | ** New `yank-handler' text property can be used to control how | ||
| 3215 | previously killed text on the kill-ring is reinserted. | ||
| 3216 | |||
| 3217 | The value of the yank-handler property must be a list with one to four | ||
| 3218 | elements with the following format: | ||
| 3219 | (FUNCTION PARAM NOEXCLUDE UNDO). | ||
| 3220 | |||
| 3221 | The `insert-for-yank' function looks for a yank-handler property on | ||
| 3222 | the first character on its string argument (typically the first | ||
| 3223 | element on the kill-ring). If a yank-handler property is found, | ||
| 3224 | the 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' | ||
| 3227 | to 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 | ||
| 3229 | passed to FUNCTION (or `insert'); for example, if FUNCTION is | ||
| 3230 | `yank-rectangle', PARAM should be a list of strings to insert as a | ||
| 3231 | rectangle. | ||
| 3232 | If NOEXCLUDE is present and non-nil, the normal removal of the | ||
| 3233 | yank-excluded-properties is not performed; instead FUNCTION is | ||
| 3234 | responsible for removing those properties. This may be necessary | ||
| 3235 | if 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 | ||
| 3237 | by `yank-pop' to undo the insertion of the current object. It is | ||
| 3238 | called with two arguments, the start and end of the current region. | ||
| 3239 | FUNCTION can set `yank-undo-function' to override the UNDO value. | ||
| 3240 | |||
| 3241 | *** The functions kill-new, kill-append, and kill-region now have an | ||
| 3242 | optional argument to specify the yank-handler text property to put on | ||
| 3243 | the 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 | ||
| 3247 | yank or yank-pop command (or a call to insert-for-yank). The function | ||
| 3248 | insert-for-yank automatically sets that variable according to the UNDO | ||
| 3249 | element 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 | ||
| 3253 | string. 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 | ||
| 3257 | removes the text properties in the `yank-excluded-properties' list. | ||
| 3258 | However, the insertion of the text can be modified by a `yank-handler' | ||
| 3259 | text 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 | ||
| 3264 | for a high-level change that should be undone by evaluating (apply | ||
| 3265 | FUNNAME ARGS). | ||
| 3266 | |||
| 3267 | These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS) | ||
| 3268 | which indicates that the change which took place was limited to the | ||
| 3269 | range 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 | ||
| 3273 | undo-outer-limit, garbage collection empties it. This is to prevent | ||
| 3274 | it 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 | |||
| 3312 | from such processes, to allowing them to produce more output before | 3843 | from such processes, to allowing them to produce more output before |
| 3313 | emacs tries to read it. | 3844 | emacs 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'. |
| 3316 | command command synchronously in a separate process. | 3847 | |
| 3848 | This executes a shell command command synchronously in a separate | ||
| 3849 | process. | ||
| 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 |
| 3319 | obeys file handlers. The file handler is chosen based on | 3852 | obeys file handlers. The file handler is chosen based on |
| 3320 | default-directory. | 3853 | `default-directory'. |
| 3321 | |||
| 3322 | *** The new function `set-process-filter-multibyte' sets the | ||
| 3323 | multibyteness of a string given to a process's filter. | ||
| 3324 | |||
| 3325 | *** The new function `process-filter-multibyte-p' returns t if a | ||
| 3326 | string 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 |
| 3329 | if the filter's multibyteness is t. That multibyteness is decided by | 3856 | if the filter's multibyteness is t. That multibyteness is decided by |
| 3330 | the value of `default-enable-multibyte-characters' when the process is | 3857 | the value of `default-enable-multibyte-characters' when the process is |
| 3331 | created and can be changed later by `set-process-filter-multibyte'. | 3858 | created 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 |
| 3861 | multibyteness of the strings passed to the process's filter. | ||
| 3862 | |||
| 3863 | *** The new function `process-filter-multibyte-p' returns the | ||
| 3864 | multibyteness of the strings passed to the process's filter. | ||
| 3865 | |||
| 3866 | *** If a process's coding system is `raw-text' or `no-conversion' and its | ||
| 3334 | buffer is multibyte, the output of the process is at first converted | 3867 | buffer is multibyte, the output of the process is at first converted |
| 3335 | to multibyte by `string-to-multibyte' then inserted in the buffer. | 3868 | to multibyte by `string-to-multibyte' then inserted in the buffer. |
| 3336 | Previously, it was converted to multibyte by `string-as-multibyte', | 3869 | Previously, it was converted to multibyte by `string-as-multibyte', |
| @@ -3415,31 +3948,19 @@ deleted network process is "deleted". The message passed to the | |||
| 3415 | sentinel when the connection is closed by the remote peer has been | 3948 | sentinel when the connection is closed by the remote peer has been |
| 3416 | changed to "connection broken by remote peer". | 3949 | changed 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 | ||
| 3420 | one or all windows. Normally, this is not needed as changes in window | ||
| 3421 | contents are detected automatically. However, certain implicit | ||
| 3422 | changes to mode lines, header lines, or display properties may require | ||
| 3423 | forcing 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'. |
| 3427 | modify the window vscroll to scroll through display rows that are | ||
| 3428 | taller that the height of the window, for example in the presense of | ||
| 3429 | large images. To disable this feature, Lisp code can bind the new | ||
| 3430 | variable `auto-window-vscroll' to nil. | ||
| 3431 | 3955 | ||
| 3432 | +++ | 3956 | This is like `window-height' but does not count the mode line or the |
| 3433 | ** Function `compute-motion' now calculates the usable window | 3957 | header line. |
| 3434 | width if the WIDTH argument is nil. If the TOPOS argument is nil, | ||
| 3435 | the 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'. |
| 3439 | and partial visiblity state of the corresponding row, if the PARTIALLY | ||
| 3440 | arg is non-nil. | ||
| 3441 | 3961 | ||
| 3442 | ** Changes in using window objects: | 3962 | This is like window-height but does not count the mode line |
| 3963 | or 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 |
| 3465 | selected window without impacting the order of buffer-list. | 3986 | selected 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 | |
| 3991 | This 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 | |||
| 3474 | by calling `select-window'. | 3996 | by 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. |
| 3478 | KEEP-MARGINS which will preserve the window's current margin, fringe, | 4000 | |
| 3479 | and scroll-bar settings if non-nil. | 4001 | If non-nil, that says to preserve the window's current margin, fringe, |
| 4002 | and 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 |
| 3485 | fringe bitmaps, as well as change the built-in fringe bitmaps. | 4008 | fringe bitmaps, as well as change the built-in fringe bitmaps. |
| 3486 | 4009 | ||
| 3487 | To change a built-in bitmap, do (require 'fringe) and use the symbol | 4010 | To change a built-in bitmap, do (require 'fringe) and use the symbol |
| 3488 | identifing the bitmap such as `left-truncation or `continued-line'. | 4011 | identifing 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 |
| 3491 | previously created bitmap, or restore a built-in bitmap. | 4014 | or 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 |
| 3494 | specific face to be used for a specific fringe bitmap. The face is | 4017 | specific face to be used for a specific fringe bitmap. The face is |
| 3495 | automatically merged with the `fringe' face, so normally, the face | 4018 | automatically merged with the `fringe' face, so normally, the face |
| 3496 | should only specify the foreground color of the bitmap. | 4019 | should 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', |
| 3499 | that can be used to show a specific bitmap in the left or right fringe | 4022 | that can be used to show a specific bitmap in the left or right fringe |
| 3500 | bitmap of the display line. | 4023 | bitmap of the display line. |
| 3501 | 4024 | ||
| 3502 | Format is 'display '(left-fringe BITMAP [FACE]), where BITMAP is a | 4025 | Format is `display (left-fringe BITMAP [FACE])', where BITMAP is a |
| 3503 | symbol identifying a fringe bitmap, either built-in or defined with | 4026 | symbol 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 |
| 3505 | for displaying the bitmap instead of the default `fringe' face. | 4028 | for 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 |
| 3509 | bitmaps in the display line at a given buffer position. | 4032 | bitmaps 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 | ||
| 3514 | The default left and right fringe widths for all windows of a frame | 4039 | The default left and right fringe widths for all windows of a frame |
| 3515 | can now be controlled by setting the `left-fringe' and `right-fringe' | 4040 | can 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 | |||
| 3529 | fringe bitmaps is 8 pixels. | 4054 | fringe 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 |
| 3535 | position settings. | 4060 | position settings. |
| 3536 | 4061 | ||
| 3537 | To control the fringe widths of a window, either set the buffer-local | 4062 | To 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 | |||
| 3549 | displaying the buffer in a window, or use `set-window-buffer' to force | 4074 | displaying the buffer in a window, or use `set-window-buffer' to force |
| 3550 | an update of the display margins. | 4075 | an 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 |
| 3553 | controlling the width and position of scroll-bars. | 4078 | controlling the width and position of scroll-bars. |
| 3554 | 4079 | ||
| 3555 | To control the scroll-bar of a window, either set the buffer-local | 4080 | To 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 | |||
| 3560 | the buffer in a window, or use `set-window-buffer' to force an update | 4085 | the buffer in a window, or use `set-window-buffer' to force an update |
| 3561 | of the display margins. | 4086 | of 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). |
| 3565 | the 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 |
| 3569 | variable `overlay-arrow-variable-list'. It contains a list of | 4095 | one or all windows. Normally, this is not needed as changes in window |
| 3570 | varibles which contain overlay arrow position markers, including | 4096 | contents are detected automatically. However, certain implicit |
| 3571 | the original `overlay-arrow-position' variable. | 4097 | changes to mode lines, header lines, or display properties may require |
| 4098 | forcing an explicit window update. | ||
| 4099 | |||
| 4100 | +++ | ||
| 4101 | *** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able | ||
| 4102 | to display CHAR. More precisely, if the selected frame's fontset has | ||
| 4103 | a font to display the character set that CHAR belongs to. | ||
| 4104 | |||
| 4105 | Fontsets can specify a font on a per-character basis; when the fontset | ||
| 4106 | does that, this value cannot be accurate. | ||
| 4107 | |||
| 4108 | +++ | ||
| 4109 | *** You can define multiple overlay arrows via the new | ||
| 4110 | variable `overlay-arrow-variable-list'. | ||
| 4111 | |||
| 4112 | It contains a list of varibles which contain overlay arrow position | ||
| 4113 | markers, including the original `overlay-arrow-position' variable. | ||
| 3572 | 4114 | ||
| 3573 | Each variable on this list can have individual `overlay-arrow-string' | 4115 | Each variable on this list can have individual `overlay-arrow-string' |
| 3574 | and `overlay-arrow-bitmap' properties that specify an overlay arrow | 4116 | and `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 | ||
| 3583 | A newline can now have line-height and line-spacing text or overlay | 4125 | A newline can now have `line-height' and `line-spacing' text or overlay |
| 3584 | properties that control the height of the corresponding display row. | 4126 | properties that control the height of the corresponding display row. |
| 3585 | 4127 | ||
| 3586 | If the line-height property value is t, the newline does not | 4128 | If the `line-height' property value is t, the newline does not |
| 3587 | contribute to the height of the display row; instead the height of the | 4129 | contribute to the height of the display row; instead the height of the |
| 3588 | newline glyph is reduced. Also, a line-spacing property on this | 4130 | newline glyph is reduced. Also, a `line-spacing' property on this |
| 3589 | newline is ignored. This can be used to tile small images or image | 4131 | newline is ignored. This can be used to tile small images or image |
| 3590 | slices without adding blank areas between the images. | 4132 | slices without adding blank areas between the images. |
| 3591 | 4133 | ||
| 3592 | If the line-height property value is a positive integer, the value | 4134 | If the `line-height' property value is a positive integer, the value |
| 3593 | specifies the minimum line height in pixels. If necessary, the line | 4135 | specifies the minimum line height in pixels. If necessary, the line |
| 3594 | height it increased by increasing the line's ascent. | 4136 | height it increased by increasing the line's ascent. |
| 3595 | 4137 | ||
| 3596 | If the line-height property value is a float, the minimum line height | 4138 | If the `line-height' property value is a float, the minimum line |
| 3597 | is calculated by multiplying the default frame line height by the | 4139 | height is calculated by multiplying the default frame line height by |
| 3598 | given value. | 4140 | the given value. |
| 3599 | 4141 | ||
| 3600 | If the line-height property value is a cons (FACE . RATIO), the | 4142 | If the `line-height' property value is a cons (FACE . RATIO), the |
| 3601 | minimum line height is calculated as RATIO * height of named FACE. | 4143 | minimum line height is calculated as RATIO * height of named FACE. |
| 3602 | RATIO is int or float. If FACE is t, it specifies the current face. | 4144 | RATIO is int or float. If FACE is t, it specifies the current face. |
| 3603 | 4145 | ||
| 3604 | If the line-height property value is a cons (nil . RATIO), the line | 4146 | If the `line-height' property value is a cons (nil . RATIO), the line |
| 3605 | height is calculated as RATIO * actual height of the line's contents. | 4147 | height is calculated as RATIO * actual height of the line's contents. |
| 3606 | 4148 | ||
| 3607 | If the line-height value is a cons (HEIGHT . TOTAL), HEIGHT specifies | 4149 | If the `line-height' value is a cons (HEIGHT . TOTAL), HEIGHT specifies |
| 3608 | the line height as described above, while TOTAL is any of the forms | 4150 | the line height as described above, while TOTAL is any of the forms |
| 3609 | described above and specifies the total height of the line, causing a | 4151 | described above and specifies the total height of the line, causing a |
| 3610 | varying number of pixels to be inserted after the line to make it line | 4152 | varying number of pixels to be inserted after the line to make it line |
| 3611 | exactly that many pixels high. | 4153 | exactly that many pixels high. |
| 3612 | 4154 | ||
| 3613 | If the line-spacing property value is an positive integer, the value | 4155 | If the `line-spacing' property value is an positive integer, the value |
| 3614 | is used as additional pixels to insert after the display line; this | 4156 | is used as additional pixels to insert after the display line; this |
| 3615 | overrides the default frame line-spacing and any buffer local value of | 4157 | overrides the default frame `line-spacing' and any buffer local value of |
| 3616 | the line-spacing variable. | 4158 | the `line-spacing' variable. |
| 3617 | 4159 | ||
| 3618 | If the line-spacing property is a float or cons, the line spacing | 4160 | If the `line-spacing' property is a float or cons, the line spacing |
| 3619 | is calculated as specified above for the line-height property. | 4161 | is 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, |
| 3623 | which is used as a height relative to the default frame line height. | 4165 | which 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 | ||
| 3628 | The display property stretch specification form `(space PROPS)', where | 4170 | The display property stretch specification form `(space PROPS)', where |
| 3629 | PROPS is a property list now allows pixel based width and height | 4171 | PROPS 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. | |||
| 3680 | The form `(- EXPR ...)' negates or subtracts the value of the expressions. | 4222 | The 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 |
| 4226 | text property string that may be present at the current window | ||
| 4227 | position. The cursor can now be placed on any character of such | ||
| 4228 | strings by giving that character a non-nil `cursor' text property. | ||
| 4229 | |||
| 4230 | +++ | ||
| 4231 | *** The display space :width and :align-to text properties are now | ||
| 4232 | supported on text terminals. | ||
| 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 | ||
| 3686 | an image property to display only a specific slice of the image. | 4238 | an 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 |
| 3689 | specify image slice (X Y WIDTH HEIGHT). | 4241 | specify 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 |
| 3692 | specified number of evenly sized slices (rows x columns). | 4244 | specified 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 | ||
| 3697 | An image map is an alist where each element has the format (AREA ID PLIST). | 4249 | An image map is an alist where each element has the format (AREA ID PLIST). |
| 3698 | An AREA is specified as either a rectangle, a circle, or a polygon: | 4250 | An 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, | |||
| 3714 | an event is composed by combining the ID of the hot-spot with the | 4266 | an event is composed by combining the ID of the hot-spot with the |
| 3715 | mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'. | 4267 | mouse 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 |
| 3720 | line or below the last line in the buffer) of the text window is now | 4274 | line or below the last line in the buffer) of the text window is now |
| 3721 | controlled by the new variable `void-text-area-pointer'. The default | 4275 | controlled by the new variable `void-text-area-pointer'. The default |
| 3722 | is to use the `arrow' (non-text) pointer. Other choices are `text' | 4276 | is 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 |
| 3731 | clickable link with the new function `mouse-on-link-p'. This is the | ||
| 3732 | function 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 | ||
| 3736 | controlled/overriden via the `pointer' text property. | 4285 | controlled/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. | |||
| 3782 | click, the x and y pixel coordinates relative to the top left corner | 4331 | click, the x and y pixel coordinates relative to the top left corner |
| 3783 | of that object, and the total width and height of that object. | 4332 | of 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 | ||
| 3787 | text, in the same way it moves out from within text covered by an | ||
| 3788 | image or composition property. | ||
| 3789 | |||
| 3790 | This makes it generally unnecessary to mark invisible text as intangible. | ||
| 3791 | This is particularly good because the intangible property often has | ||
| 3792 | unexpected side-effects since the property applies to everything | ||
| 3793 | (including `goto-char', ...) whereas this new code is only run after | ||
| 3794 | post-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 | ||
| 3798 | text property string that may be present at the current window | ||
| 3799 | position. The cursor can now be placed on any character of such | ||
| 3800 | strings by giving that character a non-nil `cursor' text property. | ||
| 3801 | |||
| 3802 | +++ | ||
| 3803 | ** The display space :width and :align-to text properties are now | ||
| 3804 | supported 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 |
| 3808 | remove all overlays in the buffer by just calling (remove-overlay). | 4338 | remove 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 | ||
| 3813 | This variable allows you to create alternative names for text | 4343 | This variable allows you to create alternative names for text |
| 3814 | properties. It works at the same level as `default-text-properties', | 4344 | properties. 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 | |||
| 3816 | to implement the `font-lock-face' property. | 4346 | to 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 |
| 3820 | arguments as `get-char-property' and returns a cons whose car is the | 4350 | arguments as `get-char-property' and returns a cons whose car is the |
| 3821 | return value of `get-char-property' called with those arguments and | 4351 | return value of `get-char-property' called with those arguments and |
| 3822 | whose cdr is the overlay in which the property was found, or nil if | 4352 | whose cdr is the overlay in which the property was found, or nil if |
| 3823 | it was found as a text property or not found at all. | 4353 | it 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 |
| 3827 | for color support on character terminal frames. Its value can be a | 4357 | as `remove-text-properties'. The only difference is that it takes a |
| 3828 | number of colors to support, or a symbol. See the Emacs Lisp | 4358 | list of property names as argument rather than a property list. |
| 3829 | Reference 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 | ||
| 3833 | color to the number of colors supported by a display, and define the | ||
| 3834 | foreground and background colors accordingly so that they look best on | ||
| 3835 | a terminal that supports at least this many colors. This is now the | ||
| 3836 | preferred method for defining default faces in a way that makes a good | ||
| 3837 | use 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 |
| 3841 | to display CHAR. More precisely, if the selected frame's fontset has | 4364 | the face color to the number of colors supported by a display, and |
| 3842 | a font to display the character set that CHAR belongs to. | 4365 | define the foreground and background colors accordingly so that they |
| 3843 | 4366 | look best on a terminal that supports at least this many colors. This | |
| 3844 | Fontsets can specify a font on a per-character basis; when the fontset | 4367 | is now the preferred method for defining default faces in a way that |
| 3845 | does that, this value cannot be accurate. | 4368 | makes 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 |
| 3849 | whether a given set of face attributes is actually displayable. | 4372 | whether a given set of face attributes is actually displayable. |
| 3850 | 4373 | ||
| 3851 | A new predicate `supports' has also been added to the `defface' face | 4374 | A 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 | |||
| 3853 | defined with defface. | 4376 | defined 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' |
| 3857 | or `bg:COLOR' has been removed. Lisp programs should use the | 4380 | or `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 |
| 3859 | the feature of specifying the face attributes :foreground and :background | 4382 | the feature of specifying the face attributes :foreground and :background |
| 3860 | directly in the `face' property instead of using a named face. | 4383 | directly 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 |
| 3865 | defaults that apply to all the subsequent cases (and can be overridden | 4388 | defaults that apply to all the subsequent cases (and can be overridden |
| 3866 | by them). | 4389 | by 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 |
| 3872 | point, we actually use a font of 13 point if the font matches | 4395 | point, we actually use a font of 13 point if the font matches |
| 3873 | SOME-FONTNAME-PATTERN. | 4396 | SOME-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 |
| 3877 | the default fontset if the argument NAME is nil.. | 4400 | whether the given face displays differently from the default face or |
| 3878 | 4401 | not (previously it did only a very cursory check). | |
| 3879 | --- | ||
| 3880 | ** The function face-differs-from-default-p now truly checks whether the | ||
| 3881 | given face displays differently from the default face or not (previously | ||
| 3882 | it 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 |
| 3886 | accept a new optional argument, INHERIT, which controls how face | 4405 | `face-stipple' now accept a new optional argument, INHERIT, which |
| 3887 | inheritance is used when determining the value of a face attribute. | 4406 | controls how face inheritance is used when determining the value of a |
| 4407 | face 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' |
| 3891 | help with handling relative face attributes. | 4411 | help 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 | |||
| 3895 | If a face contains an :inherit attribute with a list of faces, earlier | 4416 | If a face contains an :inherit attribute with a list of faces, earlier |
| 3896 | faces in the list override later faces in the list; in previous releases | 4417 | faces in the list override later faces in the list; in previous |
| 3897 | of Emacs, the order was the opposite. This change was made so that | 4418 | releases of Emacs, the order was the opposite. This change was made |
| 3898 | :inherit face-lists operate identically to face-lists in text `face' | 4419 | so that :inherit face lists operate identically to face lists in text |
| 3899 | properties. | 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 | ||
| 4427 | the 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 | ||
| 3907 | This property acts like the `face' property, but it is controlled by | 4434 | This property acts like the `face' property, but it is controlled by |
| 3908 | M-x font-lock-mode. It is not, strictly speaking, a builtin text | 4435 | M-x font-lock-mode. It is not, strictly speaking, a builtin text |
| 3909 | property. Instead, it is implemented inside font-core.el, using the | 4436 | property. Instead, it is implemented inside font-core.el, using the |
| 3910 | new variable `char-property-alias-alist'. | 4437 | new 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 | ||
| 4443 | form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set other | ||
| 4444 | properties than `face'. | ||
| 4445 | |||
| 4446 | *** `font-lock-extra-managed-props' can be set to make sure those | ||
| 4447 | extra properties are automatically cleaned up by font-lock. | ||
| 4448 | |||
| 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 | |||
| 3914 | If a piece of text with that property gets contextually refontified | 4452 | If 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 |
| 3916 | be refontified. This is useful when the syntax of a textual element | 4454 | be refontified. This is useful when the syntax of a textual element |
| 3917 | depends on text several lines further down (and when font-lock-multiline | 4455 | depends on text several lines further down (and when `font-lock-multiline' |
| 3918 | is not appropriate to solve that problem). For example in Perl: | 4456 | is 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 | ||
| 3926 | Adding/removing the last `e' changes the `bar' from being a piece of | 4464 | Adding/removing the last `e' changes the `bar' from being a piece of |
| 3927 | text to being a piece of code, so you'd put a jit-lock-defer-multiline | 4465 | text to being a piece of code, so you'd put a `jit-lock-defer-multiline' |
| 3928 | property over the second half of the command to force (deferred) | 4466 | property over the second half of the command to force (deferred) |
| 3929 | refontification of `bar' whenever the `e' is added/removed. | 4467 | refontification 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 | ||
| 3934 | of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set | ||
| 3935 | other properties than `face'. | ||
| 3936 | *** font-lock-extra-managed-props can be set to make sure those extra | ||
| 3937 | properties are automatically cleaned up by font-lock. | ||
| 3938 | |||
| 3939 | --- | ||
| 3940 | ** The precedence of file-name-handlers has been changed. | ||
| 3941 | Instead of blindly choosing the first handler that matches, | ||
| 3942 | find-file-name-handler now gives precedence to a file-name handler | ||
| 3943 | that matches near the end of the file name. More specifically, the | ||
| 3944 | handler whose (match-beginning 0) is the largest is chosen. | ||
| 3945 | In case of ties, the old "first matched" rule applies. | ||
| 3946 | |||
| 3947 | +++ | ||
| 3948 | ** A file name handler can declare which operations it handles. | ||
| 3949 | |||
| 3950 | You do this by putting an `operation' property on the handler name | ||
| 3951 | symbol. The property value should be a list of the operations that | ||
| 3952 | the handler really handles. It won't be called for any other | ||
| 3953 | operations. | ||
| 3954 | |||
| 3955 | This is useful for autoloaded handlers, to prevent them from being | ||
| 3956 | autoloaded 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) |
| 3960 | precedence over the file name. Likewise an <?xml or <!DOCTYPE declaration | 4473 | precedence over the file name. Likewise an `<?xml' or `<!DOCTYPE' |
| 3961 | will give the buffer XML or SGML mode, based on the new var | 4474 | declaration will give the buffer XML or SGML mode, based on the new |
| 3962 | `magic-mode-alist'. | 4475 | var `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' |
| 3970 | property, `clone-indirect-buffer' signals an error if you use | 4483 | property, `clone-indirect-buffer' signals an error if you use |
| 3971 | it in that buffer. | 4484 | it in that buffer. |
| 3972 | 4485 | ||
| 3973 | +++ | 4486 | +++ |
| 3974 | ** Major modes can define `eldoc-documentation-function' | 4487 | *** Major modes can define `eldoc-documentation-function' |
| 3975 | locally to provide Eldoc functionality by some method appropriate to | 4488 | locally to provide Eldoc functionality by some method appropriate to |
| 3976 | the language. | 4489 | the 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. |
| 3980 | It does not copy abbrevs from the parent mode's abbrev table. | 4493 | It 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' |
| 3984 | and simply passes them to defcustom, if applicable. | 4497 | are 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' | ||
| 3988 | are used by define-derived-mode to make sure the mode hook for the | ||
| 3989 | parent mode is run at the end of the child mode. | 4498 | parent 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 |
| 3996 | been renamed to `disabled-command-function'. The variable | 4504 | and 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'. |
| 4004 | new element gets added at the end of the list instead of at the | ||
| 4005 | beginning. This change actually occurred in Emacs-21.1, but was not | ||
| 4006 | documented. | ||
| 4007 | 4511 | ||
| 4008 | +++ | 4512 | This 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. |
| 4010 | unless it is followed by a `-' in a character constant (e.g. ?\s-A), | ||
| 4011 | in which case it is still interpreted as the super modifier. | ||
| 4012 | In 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. | ||
| 4016 | An 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 |
| 4020 | the optional argument SEPARATORS is non-nil and there are matches for | 4519 | have mistakenly believed `interactive-p' did: it returns t if the |
| 4021 | SEPARATORS at the beginning or end of the string. If SEPARATORS is | 4520 | calling function was called through `call-interactively'. This should |
| 4022 | nil, or if the new optional third argument OMIT-NULLS is non-nil, all | 4521 | only be used when you cannot solve the problem by adding a new |
| 4023 | empty matches are omitted from the returned list. | 4522 | INTERACTIVE 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. |
| 4027 | multibyte string with the same individual character codes. | ||
| 4028 | 4526 | ||
| 4029 | +++ | 4527 | If it is non-nil, then `commandp' checks for a function that could be |
| 4030 | ** The function `number-sequence' returns a list of equally-separated | 4528 | called with `call-interactively', and does not return t for keyboard |
| 4031 | numbers. For instance, (number-sequence 4 9) returns (4 5 6 7 8 9). | 4529 | macros. |
| 4032 | By default, the separation is 1, but you can specify a different separation | ||
| 4033 | as 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 |
| 4533 | within invisible text, in the same way it moves out from within text | ||
| 4534 | covered by an image or composition property. | ||
| 4037 | 4535 | ||
| 4038 | +++ | 4536 | This makes it generally unnecessary to mark invisible text as intangible. |
| 4039 | ** A function's docstring can now hold the function's usage info on | 4537 | This is particularly good because the intangible property often has |
| 4040 | its last line. It should match the regexp "\n\n(fn.*)\\'". | 4538 | unexpected side-effects since the property applies to everything |
| 4539 | (including `goto-char', ...) whereas this new code is only run after | ||
| 4540 | `post-command-hook' and thus does not care about intermediate states. | ||
| 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 |
| 4044 | indent the macro in Lisp mode and how to debug it with Edebug. The | 4544 | enables Transient Mark mode for the following command only. |
| 4045 | syntax of defmacro has been extended to | 4545 | During that following command, the value of `transient-mark-mode' |
| 4046 | 4546 | is `identity'. If it is still `identity' at the end of the command, | |
| 4047 | (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...) | 4547 | the next return to the command loop changes to nil. |
| 4048 | 4548 | ||
| 4049 | DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The | 4549 | +++ |
| 4050 | declaration specifiers supported are: | 4550 | *** Both the variable and the function `disabled-command-hook' have |
| 4551 | been renamed to `disabled-command-function'. The variable | ||
| 4552 | `disabled-command-hook' has been kept as an obsolete alias. | ||
| 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' |
| 4556 | when 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 |
| 4061 | of strings as well as hash-tables additionally to alists, obarrays | 4562 | of strings as well as hash-tables additionally to alists, obarrays |
| 4062 | and functions. Furthermore, the function `test-completion' is now | 4563 | and functions. Furthermore, the function `test-completion' is now |
| 4063 | exported to Lisp. The keys in alists and hash tables can be either | 4564 | exported to Lisp. The keys in alists and hash tables can be either |
| 4064 | strings or symbols, which are automatically converted with to strings. | 4565 | strings 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 |
| 4068 | as a dynamic completion table. | 4569 | as 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 | |||
| 4074 | completions. This alist can be a full list of possible completions so that FUN | 4575 | completions. This alist can be a full list of possible completions so that FUN |
| 4075 | can ignore the value of its argument. If completion is performed in the | 4576 | can ignore the value of its argument. If completion is performed in the |
| 4076 | minibuffer, FUN will be called in the buffer from which the minibuffer was | 4577 | minibuffer, FUN will be called in the buffer from which the minibuffer was |
| 4077 | entered. dynamic-completion-table then computes the completion. | 4578 | entered. `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 |
| 4081 | as a lazy completion table. | 4582 | as 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 | |||
| 4089 | from which the minibuffer was entered. The return value of | 4590 | from 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), |
| 4094 | which means FUNNAME was previously defined as an autoload (before the | 4597 | which means FUNNAME was previously defined as an autoload (before the |
| 4095 | current file redefined it). | 4598 | current 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 |
| 4099 | defined. For a variable, it records just the variable name. | 4602 | defined. For a variable, it records just the variable name. |
| 4100 | 4603 | ||
| 4101 | --- | ||
| 4102 | ** The variable `recursive-load-depth-limit' has been deleted. | ||
| 4103 | Emacs now signals an error if the same file is loaded with more | ||
| 4104 | than 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 |
| 4108 | variable definitions. | 4606 | variable 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 |
| 4112 | to test/provide subfeatures. Also `provide' now checks `after-load-alist' | 4610 | to test/provide subfeatures. Also `provide' now checks `after-load-alist' |
| 4113 | and runs any code associated with the provided feature. | 4611 | and 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. |
| 4117 | documentation purposes and should have no real effect on Lisp code. | 4615 | Emacs now signals an error if the same file is loaded with more |
| 4616 | than 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 |
| 4157 | now issues warnings about these calls, unless the file performs | 4656 | now 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'. |
| 4162 | do anything dangerous; otherwise it returns a reason why the form might be | 4663 | |
| 4163 | unsafe (calls dangerous function, alters global variable, etc). | 4664 | These functions return the current locations of the vertical and |
| 4665 | horizontal 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 |
| 4167 | and `display-warning'. | 4669 | for 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. | 4673 | for color support on character terminal frames. Its value can be a |
| 4172 | *** The new `find-version' backend function replaces the `destfile' | 4674 | number of colors to support, or a symbol. See the Emacs Lisp |
| 4173 | parameter of the `checkout' backend function. | 4675 | Reference manual for more detailed documentation. |
| 4174 | Old code still works thanks to a default `find-version' behavior that | ||
| 4175 | uses 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, |
| 4679 | the `scroll-bar-width' frame parameter value is nil. | ||
| 4680 | |||
| 4681 | ** Mule changes: | ||
| 4682 | |||
| 4683 | +++ | ||
| 4684 | *** Already true in Emacs 21.1, but not emphasized clearly enough: | ||
| 4179 | 4685 | ||
| 4180 | Multibyte buffers can now faithfully record all 256 character codes | 4686 | Multibyte buffers can now faithfully record all 256 character codes |
| 4181 | from 0 to 255. As a result, most of the past reasons to use unibyte | 4687 | from 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. | |||
| 4191 | wasteful. | 4697 | wasteful. |
| 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, |
| 4195 | NOMODIFY. If it is non-nil, it means don't mark the buffer modified. | 4701 | NOMODIFY. 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 |
| 4199 | to examine a file being visited and deduce the proper coding system | 4705 | to examine a file being visited and deduce the proper coding system |
| 4200 | for it. (If the coding system is detected incorrectly for a specific | 4706 | for it. (If the coding system is detected incorrectly for a specific |
| 4201 | file, you can put a `coding:' tags to override it.) | 4707 | file, 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 |
| 4205 | of one coding system from another coding system. | 4711 | of 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 |
| 4209 | the coding system's `mime-charset' is not suitable for MIME text | 4715 | the coding system's `mime-charset' is not suitable for MIME text |
| 4210 | parts, e.g. utf-16. | 4716 | parts, 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 |
| 4214 | it is read from a file without decoding. | 4720 | it is read from a file without decoding. |
| 4215 | 4721 | ||
| 4216 | +++ | ||
| 4217 | ** Function `translate-region' accepts also a char-table as TABLE | ||
| 4218 | argument. | ||
| 4219 | |||
| 4220 | +++ | ||
| 4221 | ** The new translation table `translation-table-for-input' | ||
| 4222 | is used for customizing self-insertion. The character to | ||
| 4223 | be 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 |
| 4227 | hash tables defined by the Lisp function `define-translation-hash-table'. | 4724 | hash 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 | ||
| 4232 | implemented (such as "*") are no longer accepted. | ||
| 4233 | |||
| 4234 | --- | ||
| 4235 | ** New function `redirect-debugging-output' can be used to redirect | ||
| 4236 | debugging 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 | ||
| 4246 | on 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 | ||
| 4253 | that successive calls to print functions should use the same | ||
| 4254 | numberings for circular structure references. This is only relevant | ||
| 4255 | when `print-circle' is non-nil. | ||
| 4256 | |||
| 4257 | When you bind `print-continuous-numbering' to t, you should | ||
| 4258 | also bind `print-number-table' to nil. | ||
| 4259 | |||
| 4260 | --- | ||
| 4261 | ** When pure storage overflows while dumping, Emacs now prints how | ||
| 4262 | much pure storage it will approximately need. | ||
| 4263 | |||
| 4264 | +++ | ||
| 4265 | ** File local variables. | ||
| 4266 | |||
| 4267 | A file local variables list cannot specify a string with text | ||
| 4268 | properties--any specified text properties are discarded. | ||
| 4269 | |||
| 4270 | +++ | ||
| 4271 | ** The variable `safe-local-eval-forms' specifies a list of forms that | ||
| 4272 | are ok to evaluate when they appear in an `eval' local variables | ||
| 4273 | specification. Normally Emacs asks for confirmation before evaluating | ||
| 4274 | such a form, but if the form appears in this list, no confirmation is | ||
| 4275 | needed. | ||
| 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 |
| 4279 | that means it is ok to evaluate some calls to that function when it | 4728 | current input method to input a character. |
| 4280 | appears in an `eval' local variables specification. If the property | ||
| 4281 | is t, then any form calling that function with constant arguments is | ||
| 4282 | ok. If the property is a function or list of functions, they are called | ||
| 4283 | with the form as argument, and if any returns t, the form is ok to call. | ||
| 4284 | |||
| 4285 | If the form is not "ok to call", that means Emacs asks for | ||
| 4286 | confirmation as before. | ||
| 4287 | |||
| 4288 | +++ | ||
| 4289 | ** Renamed hooks to better follow the naming convention: | ||
| 4290 | find-file-hooks to find-file-hook, | ||
| 4291 | find-file-not-found-hooks to find-file-not-found-functions, | ||
| 4292 | write-file-hooks to write-file-functions, | ||
| 4293 | write-contents-hooks to write-contents-functions, | ||
| 4294 | x-lost-selection-hooks to x-lost-selection-functions, | ||
| 4295 | x-sent-selection-hooks to x-sent-selection-functions. | ||
| 4296 | Marked 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'. | ||
| 4300 | It was renamed to follow the naming conventions for abnormal hooks. The old | ||
| 4301 | name 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 | ||
| 4305 | non-nil if it specifies a remote file (one that Emacs accesses using | ||
| 4306 | its own special methods and not directly through the file system). | ||
| 4307 | The 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 | ||
| 4311 | a 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 | |||
| 4316 | When called with 2 arguments, as in `(atan Y X)', `atan' returns the | ||
| 4317 | angle in radians between the vector [X, Y] and the X axis. (This is | ||
| 4318 | equivalent to the standard C library function `atan2'.) | ||
| 4319 | |||
| 4320 | +++ | ||
| 4321 | ** New function format-mode-line. | ||
| 4322 | 4734 | ||
| 4323 | This returns the mode-line or header-line of the selected (or a | 4735 | This returns the mode-line or header-line of the selected (or a |
| 4324 | specified) window as a string with or without text properties. | 4736 | specified) 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 |
| 4328 | used to add text properties to mode-line elements. | 4740 | used 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 |
| 4332 | to display the size of the accessible part of the buffer on the mode | 4744 | to display the size of the accessible part of the buffer on the mode |
| 4333 | line. | 4745 | line. |
| 4334 | 4746 | ||
| 4335 | --- | 4747 | ** Menu manipulation changes: |
| 4336 | ** Indentation of simple and extended loop forms has been added to the | ||
| 4337 | cl-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 | ||
| 4340 | indentation of keywords and forms in loop forms. | ||
| 4341 | |||
| 4342 | --- | ||
| 4343 | ** Indentation of backquoted forms has been made customizable in the | ||
| 4344 | cl-indent package. See the new user option `lisp-backquote-indentation'. | ||
| 4345 | |||
| 4346 | +++ | ||
| 4347 | ** field-beginning and field-end now accept an additional optional | ||
| 4348 | argument, LIMIT. | ||
| 4349 | |||
| 4350 | +++ | ||
| 4351 | ** define-abbrev now accepts an optional argument SYSTEM-FLAG. If | ||
| 4352 | non-nil, this marks the abbrev as a "system" abbrev, which means that | ||
| 4353 | it won't be stored in the user's abbrevs file if he saves the abbrevs. | ||
| 4354 | Major modes that predefine some abbrevs should always specify this | ||
| 4355 | flag. | ||
| 4356 | |||
| 4357 | --- | ||
| 4358 | ** describe-vector now takes a second argument `describer' which is | ||
| 4359 | called 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 | ||
| 4367 | point (no integers are allowed). | ||
| 4368 | |||
| 4369 | +++ | ||
| 4370 | ** emacsserver now runs pre-command-hook and post-command-hook when | ||
| 4371 | it receives a request from emacsclient. | ||
| 4372 | |||
| 4373 | --- | ||
| 4374 | ** New function `text-clone-create'. Text clones are chunks of text | ||
| 4375 | that are kept identical by transparently propagating changes from one | ||
| 4376 | clone to the other. | ||
| 4377 | |||
| 4378 | +++ | ||
| 4379 | ** Functions `user-uid' and `user-real-uid' now return floats if the | ||
| 4380 | user UID doesn't fit in a Lisp integer. Function `user-full-name' | ||
| 4381 | accepts a float as UID parameter. | ||
| 4382 | |||
| 4383 | +++ | ||
| 4384 | ** New vars `exec-suffixes' and `load-suffixes' used when | ||
| 4385 | searching for an executable resp. an elisp file. | ||
| 4386 | |||
| 4387 | +++ | ||
| 4388 | ** Functions from `post-gc-hook' are run at the end of garbage | ||
| 4389 | collection. The hook is run with GC inhibited, so use it with care. | ||
| 4390 | |||
| 4391 | +++ | ||
| 4392 | ** The variables most-positive-fixnum and most-negative-fixnum | ||
| 4393 | hold 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 |
| 4397 | The Windows specific variable w32-system-coding-system, which was | ||
| 4398 | formerly 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 | ||
| 4402 | running under X. | ||
| 4403 | |||
| 4404 | --- | ||
| 4405 | ** easy-mmode-define-global-mode has been renamed to | ||
| 4406 | define-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 | ||
| 4410 | proper name "file". In previous Emacs versions, you had to specify | 4751 | proper 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" |
| 4412 | several versions ago. | 4753 | several 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. |
| 4416 | If you specify the menu item name "Ada", for instance, it uses `ada' | 4757 | If you specify the menu item name "Ada", for instance, it uses `ada' |
| 4417 | as the "key" bound by that key binding. | 4758 | as the "key" bound by that key binding. |
| 4418 | 4759 | ||
| 4419 | This is relevant only if Lisp code looks for the bindings that were | 4760 | This is relevant only if Lisp code looks for the bindings that were |
| 4420 | made with easymenu. | 4761 | made 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 |
| 4424 | if you don't need to give the menu a name. If you install the menu | 4765 | if you don't need to give the menu a name. If you install the menu |
| 4425 | into other keymaps right away (MAPS is non-nil), it usually doesn't | 4766 | into other keymaps right away (MAPS is non-nil), it usually doesn't |
| 4426 | need to have a name. | 4767 | need 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 | ||
| 4436 | been declared obsolete. | ||
| 4437 | |||
| 4438 | +++ | ||
| 4439 | *** The new function `buffer-local-value' returns the buffer-local | ||
| 4440 | binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not | ||
| 4441 | have a buffer-local binding in buffer BUFFER, it returns the default | ||
| 4442 | value of VARIABLE instead. | ||
| 4443 | |||
| 4444 | +++ | ||
| 4445 | *** The new function `called-interactively-p' does what many people | ||
| 4446 | have mistakenly believed `interactive-p' did: it returns t if the | ||
| 4447 | calling function was called through `call-interactively'. This should | ||
| 4448 | only be used when you cannot add a new "interactive" argument to the | ||
| 4449 | command. | ||
| 4450 | |||
| 4451 | *** The new function copy-abbrev-table returns a new abbrev table that | ||
| 4452 | is a copy of a given abbrev table. | ||
| 4453 | |||
| 4454 | +++ | ||
| 4455 | *** New function copy-tree makes a copy of a tree, recursively copying | ||
| 4456 | both cars and cdrs. | ||
| 4457 | |||
| 4458 | +++ | ||
| 4459 | *** New function `delete-dups' destructively removes `equal' | ||
| 4460 | duplicates from a list. Of several `equal' occurrences of an element | ||
| 4461 | in the list, the first one is kept. | ||
| 4462 | |||
| 4463 | +++ | ||
| 4464 | *** The new function `filter-buffer-substring' extracts a buffer | ||
| 4465 | substring, passes it through a set of filter functions, and returns | ||
| 4466 | the filtered substring. It is used instead of `buffer-substring' or | ||
| 4467 | `delete-and-extract-region' when copying text into a user-accessible | ||
| 4468 | data structure, like the kill-ring, X clipboard, or a register. The | ||
| 4469 | list 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 | ||
| 4472 | text. | ||
| 4473 | |||
| 4474 | +++ | ||
| 4475 | *** New functions frame-current-scroll-bars and window-current-scroll-bars. | ||
| 4476 | |||
| 4477 | These functions return the current locations of the vertical and | ||
| 4478 | horizontal 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 |
| 4482 | run time used by Emacs since start-up. | 4773 | run 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 | 4777 | user UID doesn't fit in a Lisp integer. Function `user-full-name' |
| 4487 | `yank-excluded-properties' list. | 4778 | accepts a float as UID parameter. |
| 4488 | |||
| 4489 | +++ | ||
| 4490 | *** The new function insert-buffer-substring-no-properties is like | ||
| 4491 | insert-buffer-substring, but removes all text properties from the | ||
| 4492 | inserted 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 | ||
| 4497 | name using `equal' rather than `eq'. | ||
| 4498 | |||
| 4499 | +++ | ||
| 4500 | *** New function `line-number-at-pos' returns the line number of the | ||
| 4501 | current line in the current buffer, or if optional buffer position is | ||
| 4502 | given, line number of corresponding line in current buffer. | ||
| 4503 | |||
| 4504 | +++ | ||
| 4505 | *** New function `looking-back' checks whether a regular expression matches | ||
| 4506 | the text before point. Specifying the LIMIT argument bounds how far | ||
| 4507 | back 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. | ||
| 4511 | It is similar to the Common-Lisp function of the same name. | ||
| 4512 | One difference is that it guarantees to return the original argument | ||
| 4513 | if no expansion is done, which can be tested using `eq'. | ||
| 4514 | |||
| 4515 | *** The new function `minibufferp' returns non-nil if its optional | ||
| 4516 | buffer argument is a minibuffer. If the argument is omitted, it | ||
| 4517 | defaults to the current buffer. | ||
| 4518 | |||
| 4519 | +++ | ||
| 4520 | *** New function minibuffer-selected-window returns the window which | ||
| 4521 | was selected when entering the minibuffer. | ||
| 4522 | |||
| 4523 | +++ | ||
| 4524 | *** The new function `modify-all-frames-parameters' modifies parameters | ||
| 4525 | for 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. |
| 4529 | click-event-style position information for a given visible buffer | ||
| 4530 | position 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. |
| 4534 | current input method to input a character. | 4785 | The Windows specific variable w32-system-coding-system, which was |
| 4535 | 4786 | formerly 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 | ||
| 4538 | alist whose cdr is `eq' to a specified value. | ||
| 4539 | |||
| 4540 | +++ | ||
| 4541 | *** The new function remove-list-of-text-properties is almost the same | ||
| 4542 | as `remove-text-properties'. The only difference is that it takes a | ||
| 4543 | list 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 | ||
| 4547 | modification times. Magic file name handlers can handle this | ||
| 4548 | operation. | ||
| 4549 | |||
| 4550 | +++ | ||
| 4551 | *** New function substring-no-properties returns a substring without | ||
| 4552 | text properties. | ||
| 4553 | |||
| 4554 | +++ | ||
| 4555 | *** The new function syntax-after returns the syntax code | ||
| 4556 | of the character after a specified buffer position, taking account | ||
| 4557 | of text properties as well as the character code. | ||
| 4558 | |||
| 4559 | +++ | ||
| 4560 | *** `syntax-class' extracts the class of a syntax code (as returned | ||
| 4561 | by syntax-after). | ||
| 4562 | |||
| 4563 | +++ | ||
| 4564 | *** New function `tool-bar-local-item-from-menu' | ||
| 4565 | |||
| 4566 | The `tool-bar-add-item-from-menu' must not be used (as previously | ||
| 4567 | recommended) for making entries in the tool bar for local keymaps. | ||
| 4568 | Instead, use the function `tool-bar-local-item-from-menu', which lets | ||
| 4569 | you specify the map to use as an argument. | ||
| 4570 | |||
| 4571 | +++ | ||
| 4572 | *** New function window-body-height. | ||
| 4573 | This is like window-height but does not count the mode line | ||
| 4574 | or the header line. | ||
| 4575 | |||
| 4576 | +++ | ||
| 4577 | *** (while-no-input BODY...) runs BODY, but only so long as no input | ||
| 4578 | arrives. If the user types or clicks anything, BODY stops as if a | ||
| 4579 | quit had occurred. while-no-input returns the value of BODY, if BODY | ||
| 4580 | finishes. It returns nil if BODY was aborted. | ||
| 4581 | |||
| 4582 | +++ | ||
| 4583 | *** New macro with-local-quit temporarily sets inhibit-quit to nil for use | ||
| 4584 | around potentially blocking or long-running code in timers | ||
| 4585 | and post-command-hooks. | ||
| 4586 | |||
| 4587 | ** New packages: | ||
| 4588 | |||
| 4589 | *** The new package syntax.el provides an efficient way to find the | ||
| 4590 | current syntactic context (as returned by parse-partial-sexp). | ||
| 4591 | |||
| 4592 | *** The new package bindat.el provides functions to unpack and pack | ||
| 4593 | binary data structures, such as network packets, to and from Lisp | ||
| 4594 | data 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 |
| 4598 | This was actually done in Emacs-21.1, and was not documented. | 4790 | debugging output on the stderr file handle to a file. |
| 4599 | |||
| 4600 | +++ | ||
| 4601 | *** The new package button.el implements simple and fast `clickable buttons' | ||
| 4602 | in emacs buffers. `buttons' are much lighter-weight than the `widgets' | ||
| 4603 | implemented by widget.el, and can be used by lisp code that doesn't | ||
| 4604 | require the full power of widgets. Emacs uses buttons for such things | ||
| 4605 | as help and apropos buffers. | ||
| 4606 | 4791 | ||
| 4607 | --- | 4792 | ** Miscellaneous: |
| 4608 | *** master-mode.el implements a minor mode for scrolling a slave | ||
| 4609 | buffer without leaving your current buffer, the master buffer. | ||
| 4610 | 4793 | ||
| 4611 | It can be used by sql.el, for example: the SQL buffer is the master | 4794 | +++ |
| 4612 | and 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: |
| 4613 | buffer containing the output from the SQL buffer containing the | ||
| 4614 | commands. | ||
| 4615 | 4796 | ||
| 4616 | This is how to use sql.el and master.el together: the variable | 4797 | find-file-hooks to find-file-hook, |
| 4617 | sql-buffer contains the slave buffer. It is a local variable in the | 4798 | find-file-not-found-hooks to find-file-not-found-functions, |
| 4618 | SQL buffer. | 4799 | write-file-hooks to write-file-functions, |
| 4800 | write-contents-hooks to write-contents-functions, | ||
| 4801 | x-lost-selection-hooks to x-lost-selection-functions, | ||
| 4802 | x-sent-selection-hooks to x-sent-selection-functions, | ||
| 4803 | delete-frame-hook to delete-frame-functions. | ||
| 4619 | 4804 | ||
| 4620 | (add-hook 'sql-mode-hook | 4805 | In 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 |
| 4630 | whether you've tested all your Lisp code. Function testcover-start | ||
| 4631 | instruments all functions in a given file. Then test your code. Function | ||
| 4632 | testcover-mark-all adds overlay "splotches" to the Lisp file's buffer to | ||
| 4633 | show where coverage is lacking. Command testcover-next-mark (bind it to | ||
| 4634 | a key!) will move point forward to the next spot that has a splotch. | ||
| 4635 | 4809 | ||
| 4636 | Normally, a red splotch indicates the form was never completely | 4810 | Use the LOCAL arg of `add-hook'. |
| 4637 | evaluated; a brown splotch means it always evaluated to the same | ||
| 4638 | value. The red splotches are skipped for forms that can't possibly | ||
| 4639 | complete their evaluation, such as `error'. The brown splotches are | ||
| 4640 | skipped for forms that are expected to always evaluate to the same | ||
| 4641 | value, such as (setq x 14). | ||
| 4642 | |||
| 4643 | For difficult cases, you can add do-nothing macros to your code to | ||
| 4644 | help out the test coverage tool. The macro `noreturn' suppresses a | ||
| 4645 | red splotch. It is an error if the argument to `noreturn' does | ||
| 4646 | return. The macro 1value suppresses a brown splotch for its argument. | ||
| 4647 | This macro is a no-op except during test-coverage -- then it signals | ||
| 4648 | an 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 | 4814 | running 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 | ||