Commit | Line | Data |
---|---|---|
9a21d88b KS |
1 | GNU Emacs NEWS -- history of user-visible changes. 2006-06-04 |
2 | Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 | |
73a6a972 | 3 | Free Software Foundation, Inc. |
a933dad1 DL |
4 | See the end for copying conditions. |
5 | ||
6 | Please send Emacs bug reports to bug-gnu-emacs@gnu.org. | |
9a21d88b KS |
7 | If possible, use M-x report-emacs-bug. |
8 | ||
9 | This file is about changes in emacs version 22. | |
10 | ||
11 | See files NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 for changes | |
12 | in older emacs versions. | |
13 | ||
14 | You can narrow news to a specific version by calling `view-emacs-news' | |
15 | with a prefix argument or by typing C-u C-h C-n. | |
a933dad1 | 16 | |
ad8d610b KS |
17 | Temporary note: |
18 | +++ indicates that the appropriate manual has already been updated. | |
19 | --- means no change in the manuals is called for. | |
20 | When you add a new item, please add it without either +++ or --- | |
1a0b9ae4 | 21 | so we will look at it and add it to the manual. |
ad8d610b | 22 | |
05197f40 | 23 | \f |
bf247b6e | 24 | * Installation Changes in Emacs 22.1 |
76fb24bb | 25 | |
c58dccad CY |
26 | --- |
27 | ** Emacs comes with a new set of icons. | |
28 | These icons are displayed on the taskbar and/or titlebar when Emacs | |
29 | runs in a graphical environment. Source files for these icons can be | |
30 | found in etc/images/icons. (You can't change the icons displayed by | |
31 | Emacs by changing these files directly. On X, the icon is compiled | |
32 | into the Emacs executable; see gnu.h in the source tree. On MS | |
33 | Windows, see nt/icons/emacs.ico.) | |
34 | ||
7e995a23 | 35 | --- |
30b0da81 RS |
36 | ** Emacs now supports new configure options `--program-prefix', |
37 | `--program-suffix' and `--program-transform-name' that affect the names of | |
38 | installed programs. | |
1ebd4f78 | 39 | |
bc83b22b | 40 | --- |
30b0da81 | 41 | ** Emacs can now be built without sound support. |
bc83b22b | 42 | |
a775dff4 | 43 | --- |
0571f2d8 | 44 | ** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk' |
3430357a | 45 | when you run configure. This requires Gtk+ 2.4 or newer. This port |
7bea57c9 | 46 | provides a way to display multilingual text in menus (with some caveats). |
0571f2d8 | 47 | |
a775dff4 | 48 | --- |
7404c0d4 | 49 | ** The `emacsserver' program has been removed, replaced with Lisp code. |
4208da83 | 50 | |
a61e1d8f EZ |
51 | --- |
52 | ** The `yow' program has been removed. | |
53 | Use the corresponding Emacs feature instead. | |
54 | ||
2b6bb1f2 | 55 | --- |
81f755ae | 56 | ** By default, Emacs now uses a setgid helper program to update game |
672ab90b | 57 | scores. The directory ${localstatedir}/games/emacs is the normal |
da9356b0 | 58 | place for game scores to be stored. You can control this with the |
672ab90b CW |
59 | configure option `--with-game-dir'. The specific user that Emacs uses |
60 | to own the game scores is controlled by `--with-game-user'. If access | |
5167cfda CW |
61 | to a game user is not available, then scores will be stored separately |
62 | in each user's home directory. | |
81f755ae | 63 | |
cd7d2d9e EZ |
64 | --- |
65 | ** Leim is now part of the Emacs distribution. | |
66 | You no longer need to download a separate tarball in order to build | |
67 | Emacs with Leim. | |
68 | ||
4e5cdb4f KS |
69 | +++ |
70 | ** The Emacs Lisp Reference Manual is now part of the distribution. | |
71 | ||
406c0f12 | 72 | The Emacs Lisp Reference Manual in Info format is built as part of the |
4e5cdb4f KS |
73 | Emacs build procedure and installed together with the Emacs User |
74 | Manual. A menu item was added to the menu bar that makes it easy | |
75 | accessible (Help->More Manuals->Emacs Lisp Reference). | |
76 | ||
77 | --- | |
78 | ** The Introduction to Programming in Emacs Lisp manual is now part of | |
79 | the distribution. | |
80 | ||
81 | This manual is now part of the standard distribution and is installed, | |
82 | together with the Emacs User Manual, into the Info directory. A menu | |
83 | item was added to the menu bar that makes it easy accessible | |
84 | (Help->More Manuals->Introduction to Emacs Lisp). | |
85 | ||
30b0da81 | 86 | --- |
406c0f12 | 87 | ** New translations of the Emacs Tutorial are available in the |
fa2b23e5 KS |
88 | following languages: Brasilian Portuguese, Bulgarian, Chinese (both |
89 | with simplified and traditional characters), French, and Italian. | |
90 | Type `C-u C-h t' to choose one of them in case your language setup | |
91 | doesn't automatically select the right one. | |
30b0da81 | 92 | |
8634222f | 93 | --- |
c7292dcb | 94 | ** A Portuguese translation of Emacs' reference card has been added. |
8634222f EZ |
95 | Its name is `pt-br-refcard.tex'. The corresponding PostScript file is |
96 | also included. | |
97 | ||
30b0da81 RS |
98 | --- |
99 | ** A French translation of the `Emacs Survival Guide' is available. | |
100 | ||
101 | --- | |
102 | ** Emacs now includes support for loading image libraries on demand. | |
103 | (Currently this feature is only used on MS Windows.) You can configure | |
104 | the supported image types and their associated dynamic libraries by | |
105 | setting the variable `image-library-alist'. | |
106 | ||
a775dff4 | 107 | --- |
a61e1d8f | 108 | ** Support for a Cygwin build of Emacs was added. |
c60ee5e7 | 109 | |
a17b3614 | 110 | --- |
1096bcc0 GM |
111 | ** Support for FreeBSD/Alpha has been added. |
112 | ||
84913e36 EZ |
113 | --- |
114 | ** Support for GNU/Linux systems on S390 machines was added. | |
115 | ||
82e119fb EZ |
116 | --- |
117 | ** Support for MacOS X was added. | |
118 | See the files mac/README and mac/INSTALL for build instructions. | |
119 | ||
2b6bb1f2 | 120 | --- |
3fa4ac47 | 121 | ** Support for GNU/Linux systems on X86-64 machines was added. |
16927a56 | 122 | |
a775dff4 | 123 | --- |
561a8f98 YM |
124 | ** Mac OS 9 port now uses the Carbon API by default. You can also |
125 | create non-Carbon build by specifying `NonCarbon' as a target. See | |
126 | the files mac/README and mac/INSTALL for build instructions. | |
127 | ||
4e5cdb4f | 128 | --- |
d7107586 SM |
129 | ** Building with -DENABLE_CHECKING does not automatically build with union |
130 | types any more. Add -DUSE_LISP_UNION_TYPE if you want union types. | |
c44da964 RS |
131 | |
132 | --- | |
133 | ** When pure storage overflows while dumping, Emacs now prints how | |
134 | much pure storage it will approximately need. | |
0854cf42 NF |
135 | |
136 | ** The script etc/emacs-buffer.gdb can be used with gdb to retrieve the | |
137 | contents of buffers from a core dump and save them to files easily, should | |
138 | emacs crash. | |
139 | ||
a4238460 EZ |
140 | --- |
141 | ** The Emacs terminal emulation in term.el uses a different terminfo name. | |
142 | The Emacs terminal emulation in term.el now uses "eterm-color" as its | |
143 | terminfo name, since term.el now supports color. | |
144 | ||
4ac4f9ce RF |
145 | --- |
146 | ** Emacs Lisp source files are compressed by default if `gzip' is available. | |
147 | ||
c58dccad CY |
148 | --- |
149 | ** All images used in Emacs have been consolidated in etc/images and subdirs. | |
150 | See also the changes to `find-image', documented below. | |
151 | ||
4e5cdb4f | 152 | \f |
406c0f12 | 153 | * Startup Changes in Emacs 22.1 |
d2d70cb6 | 154 | |
a6b017c9 | 155 | +++ |
30b0da81 RS |
156 | ** New command line option -Q or --quick. |
157 | This is like using -q --no-site-file, but in addition it also disables | |
158 | the fancy startup screen. | |
40062616 | 159 | |
c9a0bd66 | 160 | +++ |
30b0da81 RS |
161 | ** New command line option -D or --basic-display. |
162 | Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and | |
163 | the blinking cursor. | |
c9a0bd66 | 164 | |
6d42bedc | 165 | +++ |
30b0da81 RS |
166 | ** New command line option -nbc or --no-blinking-cursor disables |
167 | the blinking cursor on graphical terminals. | |
d3cd3365 | 168 | |
f3c2dbe9 EZ |
169 | +++ |
170 | ** The option --script FILE runs Emacs in batch mode and loads FILE. | |
171 | It is useful for writing Emacs Lisp shell script files, because they | |
172 | can start with this line: | |
173 | ||
174 | #!/usr/bin/emacs --script | |
175 | ||
176 | +++ | |
177 | ** The option --directory DIR now modifies `load-path' immediately. | |
178 | Directories are added to the front of `load-path' in the order they | |
179 | appear on the command line. For example, with this command line: | |
180 | ||
181 | emacs -batch -L .. -L /tmp --eval "(require 'foo)" | |
182 | ||
183 | Emacs looks for library `foo' in the parent directory, then in /tmp, then | |
184 | in the other directories in `load-path'. (-L is short for --directory.) | |
185 | ||
7e995a23 | 186 | +++ |
30b0da81 RS |
187 | ** The command line option --no-windows has been changed to |
188 | --no-window-system. The old one still works, but is deprecated. | |
7e995a23 | 189 | |
288f0d64 EZ |
190 | --- |
191 | ** If the environment variable DISPLAY specifies an unreachable X display, | |
192 | Emacs will now startup as if invoked with the --no-window-system option. | |
193 | ||
30b0da81 RS |
194 | +++ |
195 | ** The -f option, used from the command line to call a function, | |
196 | now reads arguments for the function interactively if it is | |
197 | an interactively callable function. | |
7e995a23 | 198 | |
da9356b0 RS |
199 | +++ |
200 | ** When you specify a frame size with --geometry, the size applies to | |
201 | all frames you create. A position specified with --geometry only | |
202 | affects the initial frame. | |
203 | ||
21f7b9d8 EZ |
204 | --- |
205 | ** Emacs built for MS-Windows now behaves like Emacs on X does, | |
206 | wrt its frame position: if you don't specify a position (in your | |
207 | .emacs init file, in the Registry, or with the --geometry command-line | |
208 | option), Emacs leaves the frame position to the Windows' window | |
209 | manager. | |
210 | ||
30b0da81 RS |
211 | +++ |
212 | ** Emacs can now be invoked in full-screen mode on a windowed display. | |
213 | When Emacs is invoked on a window system, the new command-line options | |
214 | `--fullwidth', `--fullheight', and `--fullscreen' produce a frame | |
215 | whose width, height, or both width and height take up the entire | |
216 | screen size. (For now, this does not work with some window managers.) | |
7c0d8896 | 217 | |
30b0da81 RS |
218 | +++ |
219 | ** Emacs now displays a splash screen by default even if command-line | |
220 | arguments were given. The new command-line option --no-splash | |
221 | disables the splash screen; see also the variable | |
222 | `inhibit-startup-message' (which is also aliased as | |
223 | `inhibit-splash-screen'). | |
a5f25dcd | 224 | |
0597ab12 | 225 | +++ |
f7735be5 | 226 | ** The default is now to use a bitmap as the icon, so the command-line options |
f9e36a6d | 227 | --icon-type, -i has been replaced with options --no-bitmap-icon, -nbi to turn |
0597ab12 JD |
228 | the bitmap icon off. |
229 | ||
30b0da81 RS |
230 | +++ |
231 | ** New user option `inhibit-startup-buffer-menu'. | |
232 | When loading many files, for instance with `emacs *', Emacs normally | |
233 | displays a buffer menu. This option turns the buffer menu off. | |
a57e098f | 234 | |
30b0da81 RS |
235 | +++ |
236 | ** Init file changes | |
e982b86f CY |
237 | If the init file ~/.emacs does not exist, Emacs will try |
238 | ~/.emacs.d/init.el or ~/.emacs.d/init.elc. You can also put the shell | |
239 | init file .emacs_SHELL under ~/.emacs.d. | |
f4931aac | 240 | |
a775dff4 | 241 | +++ |
30b0da81 RS |
242 | ** Emacs now reads the standard abbrevs file ~/.abbrev_defs |
243 | automatically at startup, if it exists. When Emacs offers to save | |
244 | modified buffers, it saves the abbrevs too if they have changed. It | |
245 | can do this either silently or asking for confirmation first, | |
246 | according to the value of `save-abbrevs'. | |
23310d0e EZ |
247 | |
248 | +++ | |
249 | ** If the environment variable EMAIL is defined, Emacs now uses its value | |
ebdcf65a | 250 | to compute the default value of `user-mail-address', in preference to |
23310d0e | 251 | concatenation of `user-login-name' with the name of your host machine. |
21f7b9d8 | 252 | |
c44da964 RS |
253 | \f |
254 | * Incompatible Editing Changes in Emacs 22.1 | |
255 | ||
256 | +++ | |
257 | ** M-g is now a prefix key. | |
258 | M-g g and M-g M-g run goto-line. | |
259 | M-g n and M-g M-n run next-error (like C-x `). | |
260 | M-g p and M-g M-p run previous-error. | |
261 | ||
262 | +++ | |
263 | ** C-u M-g M-g switches to the most recent previous buffer, | |
264 | and goes to the specified line in that buffer. | |
265 | ||
266 | When goto-line starts to execute, if there's a number in the buffer at | |
267 | point then it acts as the default argument for the minibuffer. | |
268 | ||
269 | +++ | |
270 | ** The old bindings C-M-delete and C-M-backspace have been deleted, | |
271 | since there are situations where one or the other will shut down | |
272 | the operating system or your X server. | |
273 | ||
274 | +++ | |
275 | ** line-move-ignore-invisible now defaults to t. | |
276 | ||
277 | +++ | |
278 | ** When the undo information of the current command gets really large | |
279 | (beyond the value of `undo-outer-limit'), Emacs discards it and warns | |
280 | you about it. | |
281 | ||
282 | +++ | |
283 | ** `apply-macro-to-region-lines' now operates on all lines that begin | |
284 | in the region, rather than on all complete lines in the region. | |
285 | ||
286 | +++ | |
287 | ** A prefix argument is no longer required to repeat a jump to a | |
e082564e RS |
288 | previous mark if you set `set-mark-command-repeat-pop' to t. I.e. C-u |
289 | C-SPC C-SPC C-SPC ... cycles through the mark ring. Use C-u C-u C-SPC | |
290 | to set the mark immediately after a jump. | |
c44da964 RS |
291 | |
292 | +++ | |
293 | ** The info-search bindings on C-h C-f, C-h C-k and C-h C-i | |
294 | have been moved to C-h F, C-h K and C-h S. | |
295 | ||
296 | +++ | |
297 | ** In incremental search, C-w is changed. M-%, C-M-w and C-M-y are special. | |
298 | ||
299 | See below under "incremental search changes". | |
300 | ||
301 | --- | |
302 | ** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case. | |
303 | ||
304 | Since the default input is the current directory, this has the effect | |
305 | of specifying the current directory. Normally that means to visit the | |
306 | directory with Dired. | |
307 | ||
afabbb4d RS |
308 | You can get the old behavior by typing C-x C-f M-n RET, which fetches |
309 | the actual file name into the minibuffer. | |
310 | ||
c44da964 RS |
311 | +++ |
312 | ** The completion commands TAB, SPC and ? in the minibuffer apply only | |
313 | to the text before point. If there is text in the buffer after point, | |
314 | it remains unchanged. | |
315 | ||
2663a204 | 316 | +++ |
1101d5df EZ |
317 | ** When Emacs prompts for file names, SPC no longer completes the file name. |
318 | This is so filenames with embedded spaces could be input without the | |
319 | need to quote the space with a C-q. The underlying changes in the | |
320 | keymaps that are active in the minibuffer are described below under | |
321 | "New keymaps for typing file names". | |
322 | ||
c44da964 RS |
323 | +++ |
324 | ** M-o now is the prefix key for setting text properties; | |
325 | M-o M-o requests refontification. | |
326 | ||
327 | +++ | |
328 | ** You can now follow links by clicking Mouse-1 on the link. | |
bc8113ba | 329 | |
c44da964 RS |
330 | See below for more details. |
331 | ||
332 | +++ | |
333 | ** In Dired's ! command (dired-do-shell-command), `*' and `?' now | |
334 | control substitution of the file names only when they are surrounded | |
335 | by whitespace. This means you can now use them as shell wildcards | |
336 | too. If you want to use just plain `*' as a wildcard, type `*""'; the | |
337 | doublequotes make no difference in the shell, but they prevent | |
338 | special treatment in `dired-do-shell-command'. | |
406c0f12 RS |
339 | \f |
340 | * Editing Changes in Emacs 22.1 | |
341 | ||
107fb6c9 RS |
342 | +++ |
343 | ** !MEM FULL! at the start of the mode line indicates that Emacs | |
344 | cannot get any more memory for Lisp data. This often means it could | |
345 | crash soon if you do things that use more memory. On most systems, | |
346 | killing buffers will get out of this state. If killing buffers does | |
347 | not make !MEM FULL! disappear, you should save your work and start | |
348 | a new Emacs. | |
349 | ||
da9356b0 RS |
350 | +++ |
351 | ** The max size of buffers and integers has been doubled. | |
352 | On 32bit machines, it is now 256M (i.e. 268435455). | |
353 | ||
406c0f12 | 354 | +++ |
f4695519 | 355 | ** You can now switch buffers in a cyclic order with C-x C-left |
8a5db8ae | 356 | (previous-buffer) and C-x C-right (next-buffer). C-x left and |
f4695519 KL |
357 | C-x right can be used as well. The functions keep a different buffer |
358 | cycle for each frame, using the frame-local buffer list. | |
c44da964 RS |
359 | |
360 | +++ | |
361 | ** `undo-only' does an undo which does not redo any previous undo. | |
362 | ||
363 | +++ | |
364 | ** M-SPC (just-one-space) when given a numeric argument N | |
365 | converts whitespace around point to N spaces. | |
406c0f12 | 366 | |
3b4a1f68 RS |
367 | --- |
368 | ** C-x 5 C-o displays a specified buffer in another frame | |
369 | but does not switch to that frame. It's the multi-frame | |
370 | analogue of C-x 4 C-o. | |
371 | ||
406c0f12 RS |
372 | --- |
373 | ** New commands to operate on pairs of open and close characters: | |
374 | `insert-pair', `delete-pair', `raise-sexp'. | |
375 | ||
2ac7dc55 | 376 | +++ |
30b0da81 RS |
377 | ** New command `kill-whole-line' kills an entire line at once. |
378 | By default, it is bound to C-S-<backspace>. | |
4ac3afb9 | 379 | |
5086e75d | 380 | +++ |
30b0da81 RS |
381 | ** Yanking text now discards certain text properties that can |
382 | be inconvenient when you did not expect them. The variable | |
383 | `yank-excluded-properties' specifies which ones. Insertion | |
384 | of register contents and rectangles also discards these properties. | |
5086e75d | 385 | |
4d894c98 | 386 | +++ |
30b0da81 RS |
387 | ** The default values of paragraph-start and indent-line-function have |
388 | been changed to reflect those used in Text mode rather than those used | |
389 | in Indented-Text mode. | |
4d894c98 | 390 | |
7d01236c | 391 | +++ |
c44da964 | 392 | ** M-x setenv now expands environment variable references. |
da9356b0 | 393 | |
c44da964 RS |
394 | Substrings of the form `$foo' and `${foo}' in the specified new value |
395 | now refer to the value of environment variable foo. To include a `$' | |
396 | in the value, use `$$'. | |
da9356b0 RS |
397 | |
398 | +++ | |
c44da964 RS |
399 | ** `special-display-buffer-names' and `special-display-regexps' now |
400 | understand two new boolean pseudo-frame-parameters `same-frame' and | |
401 | `same-window'. | |
da9356b0 RS |
402 | |
403 | +++ | |
404 | ** The default for the paper size (variable ps-paper-type) is taken | |
405 | from the locale. | |
406 | ||
407 | ** Mark command changes: | |
3fc3e0a6 | 408 | |
a1bcf785 | 409 | +++ |
406c0f12 | 410 | *** A prefix argument is no longer required to repeat a jump to a |
30b0da81 RS |
411 | previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the |
412 | mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump. | |
3fc3e0a6 | 413 | |
a775dff4 | 414 | +++ |
c44da964 RS |
415 | *** Marking commands extend the region when invoked multiple times. |
416 | ||
417 | If you type C-M-SPC (mark-sexp), M-@ (mark-word), M-h | |
418 | (mark-paragraph), or C-M-h (mark-defun) repeatedly, the marked region | |
419 | extends each time, so you can mark the next two sexps with M-C-SPC | |
420 | M-C-SPC, for example. This feature also works for | |
421 | mark-end-of-sentence, if you bind that to a key. It also extends the | |
422 | region when the mark is active in Transient Mark mode, regardless of | |
423 | the last command. To start a new region with one of marking commands | |
424 | in Transient Mark mode, you can deactivate the active region with C-g, | |
425 | or set the new mark with C-SPC. | |
9254ee5e | 426 | |
a775dff4 | 427 | +++ |
406c0f12 | 428 | *** M-h (mark-paragraph) now accepts a prefix arg. |
c44da964 | 429 | |
30b0da81 RS |
430 | With positive arg, M-h marks the current and the following paragraphs; |
431 | if the arg is negative, it marks the current and the preceding | |
432 | paragraphs. | |
44251fad | 433 | |
a775dff4 | 434 | +++ |
406c0f12 | 435 | *** Some commands do something special in Transient Mark mode when the |
30b0da81 RS |
436 | mark is active--for instance, they limit their operation to the |
437 | region. Even if you don't normally use Transient Mark mode, you might | |
438 | want to get this behavior from a particular command. There are two | |
439 | ways you can enable Transient Mark mode and activate the mark, for one | |
440 | command only. | |
8248b4ad | 441 | |
30b0da81 RS |
442 | One method is to type C-SPC C-SPC; this enables Transient Mark mode |
443 | and sets the mark at point. The other method is to type C-u C-x C-x. | |
444 | This enables Transient Mark mode temporarily but does not alter the | |
445 | mark or the region. | |
8248b4ad | 446 | |
30b0da81 RS |
447 | After these commands, Transient Mark mode remains enabled until you |
448 | deactivate the mark. That typically happens when you type a command | |
449 | that alters the buffer, but you can also deactivate the mark by typing | |
450 | C-g. | |
21fb7588 | 451 | |
c44da964 RS |
452 | +++ |
453 | *** Movement commands `beginning-of-buffer', `end-of-buffer', | |
454 | `beginning-of-defun', `end-of-defun' do not set the mark if the mark | |
455 | is already active in Transient Mark mode. | |
456 | ||
406c0f12 RS |
457 | ** Help command changes: |
458 | ||
459 | +++ | |
460 | *** Changes in C-h bindings: | |
461 | ||
462 | C-h e displays the *Messages* buffer. | |
463 | ||
242a7584 KS |
464 | C-h d runs apropos-documentation. |
465 | ||
3aa7c28e RS |
466 | C-h r visits the Emacs Manual in Info. |
467 | ||
406c0f12 RS |
468 | C-h followed by a control character is used for displaying files |
469 | that do not change: | |
470 | ||
471 | C-h C-f displays the FAQ. | |
472 | C-h C-e displays the PROBLEMS file. | |
473 | ||
474 | The info-search bindings on C-h C-f, C-h C-k and C-h C-i | |
475 | have been moved to C-h F, C-h K and C-h S. | |
476 | ||
477 | C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands. | |
406c0f12 RS |
478 | - C-h c and C-h k report the actual command (after possible remapping) |
479 | run by the key sequence. | |
406c0f12 RS |
480 | - C-h w and C-h f on a command which has been remapped now report the |
481 | command it is remapped to, and the keys which can be used to run | |
482 | that command. | |
483 | ||
484 | For example, if C-k is bound to kill-line, and kill-line is remapped | |
485 | to new-kill-line, these commands now report: | |
406c0f12 RS |
486 | - C-h c and C-h k C-k reports: |
487 | C-k runs the command new-kill-line | |
406c0f12 RS |
488 | - C-h w and C-h f kill-line reports: |
489 | kill-line is remapped to new-kill-line which is on C-k, <deleteline> | |
406c0f12 RS |
490 | - C-h w and C-h f new-kill-line reports: |
491 | new-kill-line is on C-k | |
492 | ||
493 | --- | |
494 | *** Help commands `describe-function' and `describe-key' now show function | |
495 | arguments in lowercase italics on displays that support it. To change the | |
496 | default, customize face `help-argument-name' or redefine the function | |
497 | `help-default-arg-highlight'. | |
498 | ||
499 | +++ | |
500 | *** C-h v and C-h f commands now include a hyperlink to the C source for | |
501 | variables and functions defined in C (if the C source is available). | |
502 | ||
503 | +++ | |
504 | *** Help mode now only makes hyperlinks for faces when the face name is | |
505 | preceded or followed by the word `face'. It no longer makes | |
506 | hyperlinks for variables without variable documentation, unless | |
507 | preceded by one of the words `variable' or `option'. It now makes | |
508 | hyperlinks to Info anchors (or nodes) if the anchor (or node) name is | |
509 | enclosed in single quotes and preceded by `info anchor' or `Info | |
ae3859c0 BW |
510 | anchor' (in addition to earlier `info node' and `Info node'). In |
511 | addition, it now makes hyperlinks to URLs as well if the URL is | |
512 | enclosed in single quotes and preceded by `URL'. | |
406c0f12 RS |
513 | |
514 | +++ | |
515 | *** The new command `describe-char' (C-u C-x =) pops up a buffer with | |
516 | description various information about a character, including its | |
517 | encodings and syntax, its text properties, how to input, overlays, and | |
518 | widgets at point. You can get more information about some of them, by | |
519 | clicking on mouse-sensitive areas or moving there and pressing RET. | |
520 | ||
da9356b0 RS |
521 | +++ |
522 | *** The command `list-text-properties-at' has been deleted because | |
523 | C-u C-x = gives the same information and more. | |
524 | ||
406c0f12 RS |
525 | +++ |
526 | *** New command `display-local-help' displays any local help at point | |
527 | in the echo area. It is bound to `C-h .'. It normally displays the | |
528 | same string that would be displayed on mouse-over using the | |
529 | `help-echo' property, but, in certain cases, it can display a more | |
530 | keyboard oriented alternative. | |
531 | ||
532 | +++ | |
533 | *** New user option `help-at-pt-display-when-idle' allows to | |
534 | automatically show the help provided by `display-local-help' on | |
535 | point-over, after suitable idle time. The amount of idle time is | |
536 | determined by the user option `help-at-pt-timer-delay' and defaults | |
537 | to one second. This feature is turned off by default. | |
538 | ||
da9356b0 RS |
539 | +++ |
540 | *** The apropos commands now accept a list of words to match. | |
541 | When more than one word is specified, at least two of those words must | |
542 | be present for an item to match. Regular expression matching is still | |
543 | available. | |
406c0f12 RS |
544 | |
545 | +++ | |
da9356b0 RS |
546 | *** The new option `apropos-sort-by-scores' causes the matching items |
547 | to be sorted according to their score. The score for an item is a | |
548 | number calculated to indicate how well the item matches the words or | |
549 | regular expression that you entered to the apropos command. The best | |
550 | match is listed first, and the calculated score is shown for each | |
551 | matching item. | |
552 | ||
da9356b0 RS |
553 | ** Incremental Search changes: |
554 | ||
555 | +++ | |
556 | *** Vertical scrolling is now possible within incremental search. | |
557 | To enable this feature, customize the new user option | |
558 | `isearch-allow-scroll'. User written commands which satisfy stringent | |
559 | constraints can be marked as "scrolling commands". See the Emacs manual | |
560 | for details. | |
561 | ||
562 | +++ | |
563 | *** C-w in incremental search now grabs either a character or a word, | |
564 | making the decision in a heuristic way. This new job is done by the | |
565 | command `isearch-yank-word-or-char'. To restore the old behavior, | |
566 | bind C-w to `isearch-yank-word' in `isearch-mode-map'. | |
567 | ||
568 | +++ | |
569 | *** C-y in incremental search now grabs the next line if point is already | |
570 | at the end of a line. | |
571 | ||
572 | +++ | |
573 | *** C-M-w deletes and C-M-y grabs a character in isearch mode. | |
574 | Another method to grab a character is to enter the minibuffer by `M-e' | |
575 | and to type `C-f' at the end of the search string in the minibuffer. | |
576 | ||
577 | +++ | |
578 | *** M-% typed in isearch mode invokes `query-replace' or | |
579 | `query-replace-regexp' (depending on search mode) with the current | |
580 | search string used as the string to replace. | |
581 | ||
582 | +++ | |
583 | *** Isearch no longer adds `isearch-resume' commands to the command | |
584 | history by default. To enable this feature, customize the new | |
585 | user option `isearch-resume-in-command-history'. | |
586 | ||
587 | ** Replace command changes: | |
406c0f12 RS |
588 | |
589 | --- | |
da9356b0 RS |
590 | *** New user option `query-replace-skip-read-only': when non-nil, |
591 | `query-replace' and related functions simply ignore | |
592 | a match if part of it has a read-only property. | |
406c0f12 | 593 | |
da9356b0 RS |
594 | +++ |
595 | *** When used interactively, the commands `query-replace-regexp' and | |
596 | `replace-regexp' allow \,expr to be used in a replacement string, | |
597 | where expr is an arbitrary Lisp expression evaluated at replacement | |
598 | time. In many cases, this will be more convenient than using | |
599 | `query-replace-regexp-eval'. `\#' in a replacement string now refers | |
600 | to the count of replacements already made by the replacement command. | |
601 | All regular expression replacement commands now allow `\?' in the | |
602 | replacement string to specify a position where the replacement string | |
603 | can be edited for each replacement. | |
406c0f12 | 604 | |
da9356b0 RS |
605 | +++ |
606 | *** query-replace uses isearch lazy highlighting when the new user option | |
607 | `query-replace-lazy-highlight' is non-nil. | |
406c0f12 | 608 | |
da9356b0 RS |
609 | --- |
610 | *** The current match in query-replace is highlighted in new face | |
611 | `query-replace' which by default inherits from isearch face. | |
406c0f12 | 612 | |
7d3a082e | 613 | ** Local variables lists: |
c44da964 | 614 | |
da9356b0 RS |
615 | +++ |
616 | *** In processing a local variables list, Emacs strips the prefix and | |
f7735be5 | 617 | suffix from every line before processing all the lines. |
406c0f12 | 618 | |
7d3a082e RS |
619 | +++ |
620 | *** Text properties in local variables. | |
621 | ||
622 | A file local variables list cannot specify a string with text | |
623 | properties--any specified text properties are discarded. | |
624 | ||
542f7c55 CY |
625 | +++ |
626 | *** If the local variables list contains any variable-value pairs that | |
627 | are not known to be safe, Emacs shows a prompt asking whether to apply | |
628 | the local variables list as a whole. In earlier versions, a prompt | |
629 | was only issued for variables explicitly marked as risky (for the | |
630 | definition of risky variables, see `risky-local-variable-p'). | |
631 | ||
7d3a082e | 632 | At the prompt, you can choose to save the contents of this local |
542f7c55 CY |
633 | variables list to `safe-local-variable-values'. This new customizable |
634 | option is a list of variable-value pairs that are known to be safe. | |
635 | Variables can also be marked as safe with the existing | |
636 | `safe-local-variable' property (see `safe-local-variable-p'). | |
637 | However, risky variables will not be added to | |
638 | `safe-local-variable-values' in this way. | |
639 | ||
7d3a082e RS |
640 | +++ |
641 | *** The variable `enable-local-variables' controls how local variable | |
642 | lists are handled. t, the default, specifies the standard querying | |
643 | behavior. :safe means use only safe values, and ignore the rest. | |
c2f9f7fd | 644 | :all means set all variables, whether or not they are safe. |
7d3a082e RS |
645 | nil means ignore them all. Anything else means always query. |
646 | ||
647 | +++ | |
648 | *** The variable `safe-local-eval-forms' specifies a list of forms that | |
649 | are ok to evaluate when they appear in an `eval' local variables | |
650 | specification. Normally Emacs asks for confirmation before evaluating | |
651 | such a form, but if the form appears in this list, no confirmation is | |
652 | needed. | |
653 | ||
654 | +++ | |
655 | *** If a function has a non-nil `safe-local-eval-function' property, | |
656 | that means it is ok to evaluate some calls to that function when it | |
657 | appears in an `eval' local variables specification. If the property | |
658 | is t, then any form calling that function with constant arguments is | |
659 | ok. If the property is a function or list of functions, they are called | |
660 | with the form as argument, and if any returns t, the form is ok to call. | |
661 | ||
662 | If the form is not "ok to call", that means Emacs asks for | |
663 | confirmation as before. | |
664 | ||
665 | ** File operation changes: | |
666 | ||
667 | +++ | |
668 | *** Unquoted `$' in file names do not signal an error any more when | |
669 | the corresponding environment variable does not exist. | |
670 | Instead, the `$ENVVAR' text is left as is, so that `$$' quoting | |
671 | is only rarely needed. | |
672 | ||
85df292e | 673 | +++ |
406c0f12 | 674 | *** find-file-read-only visits multiple files in read-only mode, |
30b0da81 | 675 | when the file name contains wildcard characters. |
d88beab5 | 676 | |
85df292e | 677 | +++ |
406c0f12 | 678 | *** find-alternate-file replaces the current file with multiple files, |
30b0da81 | 679 | when the file name contains wildcard characters. |
879054ea | 680 | |
94285c26 | 681 | +++ |
406c0f12 | 682 | *** Auto Compression mode is now enabled by default. |
a27ddfaf | 683 | |
30b0da81 | 684 | --- |
406c0f12 | 685 | *** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case. |
6695c528 | 686 | |
30b0da81 RS |
687 | Since the default input is the current directory, this has the effect |
688 | of specifying the current directory. Normally that means to visit the | |
689 | directory with Dired. | |
6695c528 | 690 | |
30b0da81 | 691 | +++ |
406c0f12 | 692 | *** When you are root, and you visit a file whose modes specify |
30b0da81 RS |
693 | read-only, the Emacs buffer is now read-only too. Type C-x C-q if you |
694 | want to make the buffer writable. (As root, you can in fact alter the | |
695 | file.) | |
a27ddfaf | 696 | |
70dce461 | 697 | +++ |
406c0f12 | 698 | *** C-x s (save-some-buffers) now offers an option `d' to diff a buffer |
30b0da81 | 699 | against its file, so you can see what changes you would be saving. |
70dce461 | 700 | |
a775dff4 | 701 | +++ |
406c0f12 | 702 | *** The commands copy-file, rename-file, make-symbolic-link and |
30b0da81 RS |
703 | add-name-to-file, when given a directory as the "new name" argument, |
704 | convert it to a file name by merging in the within-directory part of | |
705 | the existing file's name. (This is the same convention that shell | |
706 | commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET | |
707 | /tmp RET copies ~/foo to /tmp/foo. | |
f8f853de | 708 | |
a775dff4 | 709 | --- |
406c0f12 | 710 | *** When used interactively, `format-write-file' now asks for confirmation |
4ba2fd66 LT |
711 | before overwriting an existing file, unless a prefix argument is |
712 | supplied. This behavior is analogous to `write-file'. | |
713 | ||
30b0da81 | 714 | --- |
406c0f12 | 715 | *** The variable `auto-save-file-name-transforms' now has a third element that |
30b0da81 RS |
716 | controls whether or not the function `make-auto-save-file-name' will |
717 | attempt to construct a unique auto-save name (e.g. for remote files). | |
9f14953b | 718 | |
8c4a54e2 RF |
719 | +++ |
720 | *** The new option `write-region-inhibit-fsync' disables calls to fsync | |
721 | in `write-region'. This can be useful on laptops to avoid spinning up | |
722 | the hard drive upon each file save. Enabling this variable may result | |
723 | in data loss, use with care. | |
724 | ||
406c0f12 RS |
725 | +++ |
726 | *** If the user visits a file larger than `large-file-warning-threshold', | |
da9356b0 | 727 | Emacs asks for confirmation. |
406c0f12 RS |
728 | |
729 | +++ | |
730 | *** require-final-newline now has two new possible values: | |
731 | ||
732 | `visit' means add a newline (as an undoable change) if it's needed | |
733 | when visiting the file. | |
734 | ||
735 | `visit-save' means add a newline (as an undoable change) if it's | |
736 | needed when visiting the file, and also add a newline if it's needed | |
737 | when saving the file. | |
738 | ||
739 | +++ | |
740 | *** The new option mode-require-final-newline controls how certain | |
741 | major modes enable require-final-newline. Any major mode that's | |
742 | designed for a kind of file that should normally end in a newline | |
743 | sets require-final-newline based on mode-require-final-newline. | |
744 | So you can customize mode-require-final-newline to control what these | |
745 | modes do. | |
746 | ||
406c0f12 | 747 | ** Minibuffer changes: |
428b6b85 | 748 | |
3abf5917 SM |
749 | +++ |
750 | *** The new file-name-shadow-mode is turned ON by default, so that when | |
751 | entering a file name, any prefix which Emacs will ignore is dimmed. | |
752 | ||
a775dff4 | 753 | +++ |
406c0f12 | 754 | *** There's a new face `minibuffer-prompt'. |
30b0da81 RS |
755 | Emacs adds this face to the list of text properties stored in the |
756 | variable `minibuffer-prompt-properties', which is used to display the | |
757 | prompt string. | |
428b6b85 | 758 | |
a775dff4 | 759 | --- |
c44da964 | 760 | *** Enhanced visual feedback in `*Completions*' buffer. |
d3a29dd8 | 761 | |
30b0da81 RS |
762 | Completions lists use faces to highlight what all completions |
763 | have in common and where they begin to differ. | |
e5c644da | 764 | |
30b0da81 RS |
765 | The common prefix shared by all possible completions uses the face |
766 | `completions-common-part', while the first character that isn't the | |
767 | same uses the face `completions-first-difference'. By default, | |
768 | `completions-common-part' inherits from `default', and | |
769 | `completions-first-difference' inherits from `bold'. The idea of | |
770 | `completions-common-part' is that you can use it to make the common | |
771 | parts less visible than normal, so that the rest of the differing | |
772 | parts is, by contrast, slightly highlighted. | |
ecf4207f | 773 | |
ae3d4650 MY |
774 | Above fontification is always done when listing completions is |
775 | triggered at minibuffer. If you want to fontify completions whose | |
776 | listing is triggered at the other normal buffer, you have to pass | |
777 | the common prefix of completions to `display-completion-list' as | |
778 | its second argument. | |
779 | ||
30b0da81 | 780 | +++ |
da9356b0 | 781 | *** File-name completion can now ignore specified directories. |
30b0da81 RS |
782 | If an element of the list in `completion-ignored-extensions' ends in a |
783 | slash `/', it indicates a subdirectory that should be ignored when | |
784 | completing file names. Elements of `completion-ignored-extensions' | |
785 | which do not end in a slash are never considered when a completion | |
786 | candidate is a directory. | |
ecf4207f | 787 | |
30b0da81 | 788 | +++ |
406c0f12 | 789 | *** The completion commands TAB, SPC and ? in the minibuffer apply only |
30b0da81 RS |
790 | to the text before point. If there is text in the buffer after point, |
791 | it remains unchanged. | |
2a075e37 | 792 | |
4d894c98 | 793 | +++ |
406c0f12 | 794 | *** New user option `history-delete-duplicates'. |
30b0da81 | 795 | If set to t when adding a new history element, all previous identical |
d1802d7b | 796 | elements are deleted from the history list. |
2a075e37 | 797 | |
da9356b0 | 798 | ** Redisplay changes: |
33b71f41 | 799 | |
b9106888 | 800 | +++ |
0dc9e94e | 801 | *** Preemptive redisplay now adapts to current load and bandwidth. |
b9106888 | 802 | |
0dc9e94e | 803 | To avoid preempting redisplay on fast computers, networks, and displays, |
b9106888 KS |
804 | the arrival of new input is now performed at regular intervals during |
805 | redisplay. The new variable `redisplay-preemption-period' specifies | |
806 | the period; the default is to check for input every 0.1 seconds. | |
807 | ||
c44da964 RS |
808 | +++ |
809 | *** The mode line position information now comes before the major mode. | |
810 | When the file is maintained under version control, that information | |
811 | appears between the position information and the major mode. | |
812 | ||
a775dff4 | 813 | +++ |
a61d42f1 | 814 | *** New face `escape-glyph' highlights control characters and escape glyphs. |
2a075e37 | 815 | |
a775dff4 | 816 | +++ |
2c632203 RS |
817 | *** Non-breaking space and hyphens are now displayed with a special |
818 | face, either nobreak-space or escape-glyph. You can turn this off or | |
819 | specify a different mode by setting the variable `nobreak-char-display'. | |
2a075e37 | 820 | |
a775dff4 | 821 | +++ |
406c0f12 RS |
822 | *** The parameters of automatic hscrolling can now be customized. |
823 | The variable `hscroll-margin' determines how many columns away from | |
824 | the window edge point is allowed to get before automatic hscrolling | |
825 | will horizontally scroll the window. The default value is 5. | |
826 | ||
827 | The variable `hscroll-step' determines how many columns automatic | |
828 | hscrolling scrolls the window when point gets too close to the | |
829 | window edge. If its value is zero, the default, Emacs scrolls the | |
830 | window so as to center point. If its value is an integer, it says how | |
831 | many columns to scroll. If the value is a floating-point number, it | |
832 | gives the fraction of the window's width to scroll the window. | |
833 | ||
834 | The variable `automatic-hscrolling' was renamed to | |
835 | `auto-hscroll-mode'. The old name is still available as an alias. | |
fa2b23e5 | 836 | |
a6b017c9 | 837 | --- |
f7735be5 | 838 | *** Moving or scrolling through images (and other lines) taller than |
c44da964 | 839 | the window now works sensibly, by automatically adjusting the window's |
30b0da81 | 840 | vscroll property. |
2a075e37 | 841 | |
406c0f12 RS |
842 | +++ |
843 | *** The new face `mode-line-inactive' is used to display the mode line | |
844 | of non-selected windows. The `mode-line' face is now used to display | |
845 | the mode line of the currently selected window. | |
ecf4207f | 846 | |
406c0f12 RS |
847 | The new variable `mode-line-in-non-selected-windows' controls whether |
848 | the `mode-line-inactive' face is used. | |
849 | ||
850 | +++ | |
851 | *** You can now customize the use of window fringes. To control this | |
852 | for all frames, use M-x fringe-mode or the Show/Hide submenu of the | |
853 | top-level Options menu, or customize the `fringe-mode' variable. To | |
854 | control this for a specific frame, use the command M-x | |
855 | set-fringe-style. | |
ee213e98 | 856 | |
406c0f12 | 857 | +++ |
da9356b0 RS |
858 | *** Angle icons in the fringes can indicate the buffer boundaries. In |
859 | addition, up and down arrow bitmaps in the fringe indicate which ways | |
860 | the window can be scrolled. | |
2f9da07b | 861 | |
406c0f12 RS |
862 | This behavior is activated by setting the buffer-local variable |
863 | `indicate-buffer-boundaries' to a non-nil value. The default value of | |
864 | this variable is found in `default-indicate-buffer-boundaries'. | |
23f87bed | 865 | |
406c0f12 RS |
866 | If value is `left' or `right', both angle and arrow bitmaps are |
867 | displayed in the left or right fringe, resp. | |
23f87bed | 868 | |
3053a64e | 869 | The value can also be an alist which specifies the presence and |
da9356b0 | 870 | position of each bitmap individually. |
23f87bed | 871 | |
406c0f12 RS |
872 | For example, ((top . left) (t . right)) places the top angle bitmap |
873 | in left fringe, the bottom angle bitmap in right fringe, and both | |
874 | arrow bitmaps in right fringe. To show just the angle bitmaps in the | |
875 | left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)). | |
61d244ca | 876 | |
a775dff4 | 877 | +++ |
406c0f12 RS |
878 | *** On window systems, lines which are exactly as wide as the window |
879 | (not counting the final newline character) are no longer broken into | |
880 | two lines on the display (with just the newline on the second line). | |
881 | Instead, the newline now "overflows" into the right fringe, and the | |
882 | cursor will be displayed in the fringe when positioned on that newline. | |
61d244ca | 883 | |
da9356b0 | 884 | The new user option 'overflow-newline-into-fringe' can be set to nil to |
406c0f12 | 885 | revert to the old behavior of continuing such lines. |
30b0da81 | 886 | |
406c0f12 | 887 | +++ |
da9356b0 | 888 | *** When a window has display margin areas, the fringes are now |
406c0f12 | 889 | displayed between the margins and the buffer's text area, rather than |
da9356b0 | 890 | outside those margins. |
406c0f12 RS |
891 | |
892 | +++ | |
da9356b0 | 893 | *** A window can now have individual fringe and scroll-bar settings, |
406c0f12 RS |
894 | in addition to the individual display margin settings. |
895 | ||
896 | Such individual settings are now preserved when windows are split | |
897 | horizontally or vertically, a saved window configuration is restored, | |
898 | or when the frame is resized. | |
899 | ||
da9356b0 | 900 | ** Cursor display changes: |
61d244ca | 901 | |
a775dff4 | 902 | +++ |
406c0f12 | 903 | *** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is |
30b0da81 | 904 | now controlled by the variable `blink-cursor-alist'. |
200d028b | 905 | |
85df292e | 906 | +++ |
406c0f12 | 907 | *** The X resource cursorBlink can be used to turn off cursor blinking. |
61d244ca | 908 | |
30b0da81 | 909 | +++ |
406c0f12 | 910 | *** Emacs can produce an underscore-like (horizontal bar) cursor. |
30b0da81 RS |
911 | The underscore cursor is set by putting `(cursor-type . hbar)' in |
912 | default-frame-alist. It supports variable heights, like the `bar' | |
913 | cursor does. | |
61d244ca | 914 | |
a775dff4 | 915 | +++ |
406c0f12 | 916 | *** Display of hollow cursors now obeys the buffer-local value (if any) |
30b0da81 RS |
917 | of `cursor-in-non-selected-windows' in the buffer that the cursor |
918 | appears in. | |
61d244ca | 919 | |
30b0da81 | 920 | +++ |
406c0f12 | 921 | *** The variable `cursor-in-non-selected-windows' can now be set to any |
30b0da81 | 922 | of the recognized cursor types. |
61d244ca | 923 | |
a073af58 | 924 | +++ |
913dd16d | 925 | *** On text terminals, the variable `visible-cursor' controls whether Emacs |
a073af58 SM |
926 | uses the "very visible" cursor (the default) or the normal cursor. |
927 | ||
081bae6b JL |
928 | ** New faces: |
929 | ||
930 | +++ | |
931 | *** `mode-line-highlight' is the standard face indicating mouse sensitive | |
932 | elements on mode-line (and header-line) like `highlight' face on text | |
933 | areas. | |
934 | ||
ea4cd511 JL |
935 | *** `mode-line-buffer-id' is the standard face for buffer identification |
936 | parts of the mode line. | |
937 | ||
081bae6b JL |
938 | +++ |
939 | *** `shadow' face defines the appearance of the "shadowed" text, i.e. | |
940 | the text which should be less noticeable than the surrounding text. | |
941 | This can be achieved by using shades of grey in contrast with either | |
942 | black or white default foreground color. This generic shadow face | |
943 | allows customization of the appearance of shadowed text in one place, | |
944 | so package-specific faces can inherit from it. | |
945 | ||
a11c9215 JL |
946 | +++ |
947 | *** `vertical-border' face is used for the vertical divider between windows. | |
948 | ||
da9356b0 RS |
949 | ** Font-Lock changes: |
950 | ||
c44da964 RS |
951 | +++ |
952 | *** M-o now is the prefix key for setting text properties; | |
953 | M-o M-o requests refontification. | |
954 | ||
30b0da81 | 955 | +++ |
da9356b0 RS |
956 | *** All modes now support using M-x font-lock-mode to toggle |
957 | fontification, even those such as Occur, Info, and comint-derived | |
958 | modes that do their own fontification in a special way. | |
959 | ||
960 | The variable `Info-fontify' is no longer applicable; to disable | |
961 | fontification in Info, remove `turn-on-font-lock' from | |
962 | `Info-mode-hook'. | |
963 | ||
da9356b0 RS |
964 | +++ |
965 | *** font-lock: in modes like C and Lisp where the fontification assumes that | |
966 | an open-paren in column 0 is always outside of any string or comment, | |
967 | font-lock now highlights any such open-paren-in-column-zero in bold-red | |
968 | if it is inside a string or a comment, to indicate that it can cause | |
969 | trouble with fontification and/or indentation. | |
406c0f12 | 970 | |
a61d42f1 RS |
971 | +++ |
972 | *** New standard font-lock face `font-lock-preprocessor-face'. | |
973 | ||
a6b017c9 | 974 | +++ |
a61d42f1 RS |
975 | *** New standard font-lock face `font-lock-comment-delimiter-face'. |
976 | ||
a6b017c9 | 977 | +++ |
0fa5d10e | 978 | *** Easy to overlook single character negation can now be font-locked. |
a61d42f1 RS |
979 | You can use the new variable `font-lock-negation-char-face' and the face of |
980 | the same name to customize this. Currently the cc-modes, sh-script-mode, | |
981 | cperl-mode and make-mode support this. | |
982 | ||
da9356b0 | 983 | --- |
406c0f12 RS |
984 | *** The default settings for JIT stealth lock parameters are changed. |
985 | The default value for the user option jit-lock-stealth-time is now 16 | |
986 | instead of 3, and the default value of jit-lock-stealth-nice is now | |
987 | 0.5 instead of 0.125. The new defaults should lower the CPU usage | |
988 | when Emacs is fontifying in the background. | |
989 | ||
da9356b0 | 990 | --- |
406c0f12 RS |
991 | *** jit-lock can now be delayed with `jit-lock-defer-time'. |
992 | ||
993 | If this variable is non-nil, its value should be the amount of Emacs | |
994 | idle time in seconds to wait before starting fontification. For | |
995 | example, if you set `jit-lock-defer-time' to 0.25, fontification will | |
996 | only happen after 0.25s of idle time. | |
997 | ||
da9356b0 | 998 | --- |
406c0f12 RS |
999 | *** contextual refontification is now separate from stealth fontification. |
1000 | ||
1001 | jit-lock-defer-contextually is renamed jit-lock-contextually and | |
1002 | jit-lock-context-time determines the delay after which contextual | |
1003 | refontification takes place. | |
1004 | ||
c44da964 | 1005 | ** Menu support: |
406c0f12 RS |
1006 | |
1007 | --- | |
1008 | *** A menu item "Show/Hide" was added to the top-level menu "Options". | |
1009 | This menu allows you to turn various display features on and off (such | |
1010 | as the fringes, the tool bar, the speedbar, and the menu bar itself). | |
1011 | You can also move the vertical scroll bar to either side here or turn | |
1012 | it off completely. There is also a menu-item to toggle displaying of | |
a11c9215 | 1013 | current date and time, current line and column number in the mode-line. |
406c0f12 RS |
1014 | |
1015 | --- | |
1016 | *** Speedbar has moved from the "Tools" top level menu to "Show/Hide". | |
1017 | ||
c44da964 RS |
1018 | --- |
1019 | *** You can exit dialog windows and menus by typing C-g. | |
1020 | ||
1021 | --- | |
1022 | *** The menu item "Open File..." has been split into two items, "New File..." | |
1023 | and "Open File...". "Open File..." now opens only existing files. This is | |
1024 | to support existing GUI file selection dialogs better. | |
1025 | ||
1026 | +++ | |
1027 | *** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be | |
1028 | disabled by customizing the variable `use-file-dialog'. | |
1029 | ||
1030 | --- | |
1031 | *** The pop up menus for Lucid now stay up if you do a fast click and can | |
1032 | be navigated with the arrow keys (like Gtk+, Mac and W32). | |
1033 | ||
c3724dcc | 1034 | +++ |
3510285a | 1035 | *** The menu bar for Motif/Lesstif/Lucid/Gtk+ can be navigated with keys. |
c3724dcc JD |
1036 | Pressing F10 shows the first menu in the menu bar. Navigation is done with |
1037 | the arrow keys, select with the return key and cancel with the escape keys. | |
1038 | ||
c44da964 RS |
1039 | +++ |
1040 | *** The Lucid menus can display multilingual text in your locale. You have | |
1041 | to explicitly specify a fontSet resource for this to work, for example | |
1042 | `-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'. | |
1043 | ||
1044 | --- | |
1045 | *** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing | |
1046 | ESC, like they do for Gtk+, Mac and W32. | |
1047 | ||
1048 | +++ | |
3430357a | 1049 | *** For the Gtk+ version, you can make Emacs use the old file dialog |
c44da964 RS |
1050 | by setting the variable `x-use-old-gtk-file-dialog' to t. Default is to use |
1051 | the new dialog. | |
1052 | ||
da9356b0 | 1053 | ** Mouse changes: |
b1faee6e | 1054 | |
85df292e | 1055 | +++ |
4ccda9c3 KS |
1056 | *** If you set the new variable `mouse-autoselect-window' to a non-nil |
1057 | value, windows are automatically selected as you move the mouse from | |
1058 | one Emacs window to another, even within a frame. A minibuffer window | |
1059 | can be selected only when it is active. | |
61042632 | 1060 | |
30b0da81 | 1061 | +++ |
da9356b0 | 1062 | *** On X, when the window manager requires that you click on a frame to |
30b0da81 RS |
1063 | select it (give it focus), the selected window and cursor position |
1064 | normally changes according to the mouse click position. If you set | |
1065 | the variable x-mouse-click-focus-ignore-position to t, the selected | |
1066 | window and cursor position do not change when you click on a frame | |
1067 | to give it focus. | |
61042632 | 1068 | |
ed2846bd | 1069 | +++ |
da9356b0 | 1070 | *** You can now follow links by clicking Mouse-1 on the link. |
30b0da81 RS |
1071 | |
1072 | Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2 | |
1073 | click to follow a link, whereas most other applications use a Mouse-1 | |
1074 | click for both purposes, depending on whether you click outside or | |
1075 | inside a link. Now the behavior of a Mouse-1 click has been changed | |
ea0d5ebb LT |
1076 | to match this context-sentitive dual behavior. (If you prefer the old |
1077 | behavior, set the user option `mouse-1-click-follows-link' to nil.) | |
30b0da81 | 1078 | |
da9356b0 | 1079 | Depending on the current mode, a Mouse-2 click in Emacs can do much |
30b0da81 RS |
1080 | more than just follow a link, so the new Mouse-1 behavior is only |
1081 | activated for modes which explicitly mark a clickable text as a "link" | |
1082 | (see the new function `mouse-on-link-p' for details). The Lisp | |
1083 | packages that are included in release 22.1 have been adapted to do | |
1084 | this, but external packages may not yet support this. However, there | |
1085 | is no risk in using such packages, as the worst thing that could | |
1086 | happen is that you get the original Mouse-1 behavior when you click | |
1087 | on a link, which typically means that you set point where you click. | |
1088 | ||
1089 | If you want to get the original Mouse-1 action also inside a link, you | |
1090 | just need to press the Mouse-1 button a little longer than a normal | |
1091 | click (i.e. press and hold the Mouse-1 button for half a second before | |
1092 | you release it). | |
1093 | ||
1094 | Dragging the Mouse-1 inside a link still performs the original | |
1095 | drag-mouse-1 action, typically copy the text. | |
1096 | ||
1097 | You can customize the new Mouse-1 behavior via the new user options | |
1098 | `mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'. | |
ee213e98 | 1099 | |
7e995a23 | 1100 | +++ |
da9356b0 | 1101 | *** Emacs normally highlights mouse sensitive text whenever the mouse |
30b0da81 RS |
1102 | is over the text. By setting the new variable `mouse-highlight', you |
1103 | can optionally enable mouse highlighting only after you move the | |
1104 | mouse, so that highlighting disappears when you press a key. You can | |
1105 | also disable mouse highlighting. | |
a1bcf785 JL |
1106 | |
1107 | +++ | |
da9356b0 | 1108 | *** You can now customize if selecting a region by dragging the mouse |
30b0da81 RS |
1109 | shall not copy the selected text to the kill-ring by setting the new |
1110 | variable mouse-drag-copy-region to nil. | |
1111 | ||
1112 | --- | |
da9356b0 | 1113 | *** mouse-wheels can now scroll a specific fraction of the window |
30b0da81 RS |
1114 | (rather than a fixed number of lines) and the scrolling is `progressive'. |
1115 | ||
1116 | --- | |
9bae34bf RS |
1117 | *** Emacs ignores mouse-2 clicks while the mouse wheel is being moved. |
1118 | ||
1119 | People tend to push the mouse wheel (which counts as a mouse-2 click) | |
1120 | unintentionally while turning the wheel, so these clicks are now | |
1121 | ignored. You can customize this with the mouse-wheel-click-event and | |
30b0da81 | 1122 | mouse-wheel-inhibit-click-time variables. |
ee213e98 JL |
1123 | |
1124 | +++ | |
da9356b0 | 1125 | *** Under X, mouse-wheel-mode is turned on by default. |
ee213e98 | 1126 | |
4ccda9c3 | 1127 | ** Multilingual Environment (Mule) changes: |
30b0da81 | 1128 | |
0091c67e KH |
1129 | *** You can disable character translation for a file using the -*- |
1130 | construct. Include `enable-character-translation: nil' inside the | |
1131 | -*-...-*- to disable any character translation that may happen by | |
1132 | various global and per-coding-system translation tables. You can also | |
1133 | specify it in a local variable list at the end of the file. For | |
1134 | shortcut, instead of using this long variable name, you can append the | |
1135 | character "!" at the end of coding-system name specified in -*- | |
0e7a5993 KH |
1136 | construct or in a local variable list. For example, if a file has the |
1137 | following header, it is decoded by the coding system `iso-latin-1' | |
1138 | without any character translation: | |
1139 | ;; -*- coding: iso-latin-1!; -*- | |
0091c67e | 1140 | |
30b0da81 | 1141 | --- |
da9356b0 | 1142 | *** Language environment and various default coding systems are setup |
30b0da81 RS |
1143 | more correctly according to the current locale name. If the locale |
1144 | name doesn't specify a charset, the default is what glibc defines. | |
da9356b0 | 1145 | This change can result in using the different coding systems as |
30b0da81 | 1146 | default in some locale (e.g. vi_VN). |
61d244ca | 1147 | |
85df292e | 1148 | +++ |
da9356b0 | 1149 | *** The keyboard-coding-system is now automatically set based on your |
30b0da81 | 1150 | current locale settings if you are not using a window system. This |
da9356b0 | 1151 | can mean that the META key doesn't work but generates non-ASCII |
30b0da81 RS |
1152 | characters instead, depending on how the terminal (or terminal |
1153 | emulator) works. Use `set-keyboard-coding-system' (or customize | |
1154 | keyboard-coding-system) if you prefer META to work (the old default) | |
1155 | or if the locale doesn't describe the character set actually generated | |
1156 | by the keyboard. See Info node `Single-Byte Character Support'. | |
8ab314f9 JL |
1157 | |
1158 | +++ | |
da9356b0 | 1159 | *** The new command `revert-buffer-with-coding-system' (C-x RET r) |
30b0da81 | 1160 | revisits the current file using a coding system that you specify. |
8ab314f9 | 1161 | |
30b0da81 | 1162 | +++ |
da9356b0 | 1163 | *** New command `recode-region' decodes the region again by a specified |
30b0da81 | 1164 | coding system. |
8ab314f9 JL |
1165 | |
1166 | +++ | |
da9356b0 | 1167 | *** The new command `recode-file-name' changes the encoding of the name |
30b0da81 | 1168 | of a file. |
8ab314f9 JL |
1169 | |
1170 | --- | |
da9356b0 | 1171 | *** New command `ucs-insert' inserts a character specified by its |
30b0da81 | 1172 | unicode. |
8ab314f9 | 1173 | |
30b0da81 | 1174 | +++ |
da9356b0 | 1175 | *** The new command `set-file-name-coding-system' (C-x RET F) sets |
30b0da81 RS |
1176 | coding system for encoding and decoding file names. A new menu item |
1177 | (Options->Mule->Set Coding Systems->For File Name) invokes this | |
1178 | command. | |
a1bcf785 | 1179 | |
a775dff4 | 1180 | +++ |
da9356b0 | 1181 | *** New command quail-show-key shows what key (or key sequence) to type |
30b0da81 | 1182 | in the current input method to input a character at point. |
a1bcf785 | 1183 | |
30b0da81 | 1184 | +++ |
da9356b0 | 1185 | *** Limited support for character `unification' has been added. |
30b0da81 RS |
1186 | Emacs now knows how to translate between different representations of |
1187 | the same characters in various Emacs charsets according to standard | |
1188 | Unicode mappings. This applies mainly to characters in the ISO 8859 | |
1189 | sets plus some other 8-bit sets, but can be extended. For instance, | |
1190 | translation works amongst the Emacs ...-iso8859-... charsets and the | |
1191 | mule-unicode-... ones. | |
a1bcf785 | 1192 | |
30b0da81 RS |
1193 | By default this translation happens automatically on encoding. |
1194 | Self-inserting characters are translated to make the input conformant | |
1195 | with the encoding of the buffer in which it's being used, where | |
1196 | possible. | |
a1bcf785 | 1197 | |
30b0da81 RS |
1198 | You can force a more complete unification with the user option |
1199 | unify-8859-on-decoding-mode. That maps all the Latin-N character sets | |
1200 | into Unicode characters (from the latin-iso8859-1 and | |
1201 | mule-unicode-0100-24ff charsets) on decoding. Note that this mode | |
1202 | will often effectively clobber data with an iso-2022 encoding. | |
a1bcf785 | 1203 | |
f60a6f87 | 1204 | --- |
da9356b0 | 1205 | *** There is support for decoding Greek and Cyrillic characters into |
30b0da81 RS |
1206 | either Unicode (the mule-unicode charsets) or the iso-8859 charsets, |
1207 | when possible. The latter are more space-efficient. This is | |
1208 | controlled by user option utf-fragment-on-decoding. | |
d60f1316 | 1209 | |
f60a6f87 | 1210 | --- |
da9356b0 | 1211 | *** New language environments: French, Ukrainian, Tajik, |
30b0da81 RS |
1212 | Bulgarian, Belarusian, Ukrainian, UTF-8, Windows-1255, Welsh, Latin-6, |
1213 | Latin-7, Lithuanian, Latvian, Swedish, Slovenian, Croatian, Georgian, | |
1214 | Italian, Russian, Malayalam, Tamil, Russian, Chinese-EUC-TW. (Set up | |
1215 | automatically according to the locale.) | |
ee213e98 JL |
1216 | |
1217 | --- | |
da9356b0 | 1218 | *** New input methods: latin-alt-postfix, latin-postfix, latin-prefix, |
30b0da81 RS |
1219 | ukrainian-computer, belarusian, bulgarian-bds, russian-computer, |
1220 | vietnamese-telex, lithuanian-numeric, lithuanian-keyboard, | |
1221 | latvian-keyboard, welsh, georgian, rfc1345, ucs, sgml, | |
1222 | bulgarian-phonetic, dutch, slovenian, croatian, malayalam-inscript, | |
1223 | tamil-inscript. | |
ee213e98 | 1224 | |
a775dff4 | 1225 | --- |
da9356b0 | 1226 | *** New input method chinese-sisheng for inputting Chinese Pinyin |
30b0da81 | 1227 | characters. |
a6aa9850 | 1228 | |
30b0da81 | 1229 | --- |
da9356b0 | 1230 | *** Improved Thai support. A new minor mode `thai-word-mode' (which is |
30b0da81 RS |
1231 | automatically activated if you select Thai as a language |
1232 | environment) changes key bindings of most word-oriented commands to | |
1233 | versions which recognize Thai words. Affected commands are | |
1234 | M-f (forward-word) | |
1235 | M-b (backward-word) | |
1236 | M-d (kill-word) | |
1237 | M-DEL (backward-kill-word) | |
1238 | M-t (transpose-words) | |
1239 | M-q (fill-paragraph) | |
a6aa9850 | 1240 | |
30b0da81 | 1241 | --- |
da9356b0 | 1242 | *** Indian support has been updated. |
30b0da81 RS |
1243 | The in-is13194 coding system is now Unicode-based. CDAC fonts are |
1244 | assumed. There is a framework for supporting various | |
1245 | Indian scripts, but currently only Devanagari, Malayalam and Tamil are | |
1246 | supported. | |
a6aa9850 | 1247 | |
30b0da81 | 1248 | --- |
da9356b0 | 1249 | *** A UTF-7 coding system is available in the library `utf-7'. |
a6aa9850 | 1250 | |
30b0da81 | 1251 | --- |
da9356b0 | 1252 | *** The utf-8/16 coding systems have been enhanced. |
30b0da81 RS |
1253 | By default, untranslatable utf-8 sequences are simply composed into |
1254 | single quasi-characters. User option `utf-translate-cjk-mode' (it is | |
1255 | turned on by default) arranges to translate many utf-8 CJK character | |
1256 | sequences into real Emacs characters in a similar way to the Mule-UCS | |
1257 | system. As this loads a fairly big data on demand, people who are not | |
1258 | interested in CJK characters may want to customize it to nil. | |
1259 | You can augment/amend the CJK translation via hash tables | |
1260 | `ucs-mule-cjk-to-unicode' and `ucs-unicode-to-mule-cjk'. The utf-8 | |
1261 | coding system now also encodes characters from most of Emacs's | |
1262 | one-dimensional internal charsets, specifically the ISO-8859 ones. | |
1263 | The utf-16 coding system is affected similarly. | |
a6aa9850 | 1264 | |
30b0da81 | 1265 | --- |
da9356b0 | 1266 | *** A new coding system `euc-tw' has been added for traditional Chinese |
30b0da81 RS |
1267 | in CNS encoding; it accepts both Big 5 and CNS as input; on saving, |
1268 | Big 5 is then converted to CNS. | |
bf078377 | 1269 | |
30b0da81 | 1270 | --- |
fbd3f1a9 KH |
1271 | *** Many new coding systems are available in the `code-pages' library. |
1272 | These include complete versions of most of those in codepage.el, based | |
1273 | on Unicode mappings. `codepage-setup' is now obsolete and is used | |
1274 | only in the MS-DOS port of Emacs. All coding systems defined in | |
1275 | `code-pages' are auto-loaded. | |
e0dc0c55 | 1276 | |
30b0da81 | 1277 | --- |
da9356b0 | 1278 | *** New variable `utf-translate-cjk-unicode-range' controls which |
30b0da81 | 1279 | Unicode characters to translate in `utf-translate-cjk-mode'. |
e0dc0c55 | 1280 | |
30b0da81 | 1281 | --- |
da9356b0 | 1282 | *** iso-10646-1 (`Unicode') fonts can be used to display any range of |
30b0da81 RS |
1283 | characters encodable by the utf-8 coding system. Just specify the |
1284 | fontset appropriately. | |
e0dc0c55 | 1285 | |
da9356b0 | 1286 | ** Customize changes: |
fbe57420 | 1287 | |
4cc1468e CY |
1288 | +++ |
1289 | *** Custom themes are collections of customize options. Create a | |
1290 | custom theme with M-x customize-create-theme. Use M-x load-theme to | |
1291 | load and enable a theme, and M-x disable-theme to disable it. Use M-x | |
679ce4d5 | 1292 | enable-theme to enable a disabled theme. |
4cc1468e | 1293 | |
a775dff4 | 1294 | +++ |
da9356b0 | 1295 | *** The commands M-x customize-face and M-x customize-face-other-window |
30b0da81 RS |
1296 | now look at the character after point. If a face or faces are |
1297 | specified for that character, the commands by default customize those | |
1298 | faces. | |
c64a682c | 1299 | |
85df292e | 1300 | --- |
da9356b0 | 1301 | *** The face-customization widget has been reworked to be less confusing. |
30b0da81 RS |
1302 | In particular, when you enable a face attribute using the corresponding |
1303 | check-box, there's no longer a redundant `*' option in value selection | |
1304 | for that attribute; the values you can choose are only those which make | |
1305 | sense for the attribute. When an attribute is de-selected by unchecking | |
1306 | its check-box, then the (now ignored, but still present temporarily in | |
1307 | case you re-select the attribute) value is hidden. | |
c64a682c | 1308 | |
a775dff4 | 1309 | +++ |
da9356b0 | 1310 | *** When you set or reset a variable's value in a Customize buffer, |
30b0da81 RS |
1311 | the previous value becomes the "backup value" of the variable. |
1312 | You can go back to that backup value by selecting "Use Backup Value" | |
1313 | under the "[State]" button. | |
c64a682c | 1314 | |
da9356b0 RS |
1315 | ** Buffer Menu changes: |
1316 | ||
1317 | +++ | |
1318 | *** New command `Buffer-menu-toggle-files-only' toggles display of file | |
f7735be5 | 1319 | buffers only in the Buffer Menu. It is bound to T in Buffer Menu |
da9356b0 RS |
1320 | mode. |
1321 | ||
1322 | +++ | |
1323 | *** `buffer-menu' and `list-buffers' now list buffers whose names begin | |
1324 | with a space, when those buffers are visiting files. Normally buffers | |
1325 | whose names begin with space are omitted. | |
1326 | ||
1327 | --- | |
1328 | *** The new options `buffers-menu-show-directories' and | |
1329 | `buffers-menu-show-status' let you control how buffers are displayed | |
1330 | in the menu dropped down when you click "Buffers" from the menu bar. | |
1331 | ||
1332 | `buffers-menu-show-directories' controls whether the menu displays | |
1333 | leading directories as part of the file name visited by the buffer. | |
1334 | If its value is `unless-uniquify', the default, directories are | |
1335 | shown unless uniquify-buffer-name-style' is non-nil. The value of nil | |
1336 | and t turn the display of directories off and on, respectively. | |
1337 | ||
1338 | `buffers-menu-show-status' controls whether the Buffers menu includes | |
1339 | the modified and read-only status of the buffers. By default it is | |
1340 | t, and the status is shown. | |
1341 | ||
1342 | Setting these variables directly does not take effect until next time | |
1343 | the Buffers menu is regenerated. | |
1344 | ||
30b0da81 | 1345 | ** Dired mode: |
347003be | 1346 | |
a775dff4 | 1347 | --- |
30b0da81 RS |
1348 | *** New faces dired-header, dired-mark, dired-marked, dired-flagged, |
1349 | dired-ignored, dired-directory, dired-symlink, dired-warning | |
1350 | introduced for Dired mode instead of font-lock faces. | |
556621f6 | 1351 | |
30b0da81 RS |
1352 | +++ |
1353 | *** New Dired command `dired-compare-directories' marks files | |
1354 | with different file attributes in two dired buffers. | |
1d1d1b1f | 1355 | |
30b0da81 RS |
1356 | +++ |
1357 | *** New Dired command `dired-do-touch' (bound to T) changes timestamps | |
1358 | of marked files with the value entered in the minibuffer. | |
1d1d1b1f | 1359 | |
6f5c4cc9 RS |
1360 | +++ |
1361 | *** The Dired command `dired-goto-file' is now bound to j, not M-g. | |
1362 | This is to avoid hiding the global key binding of M-g. | |
1363 | ||
30b0da81 RS |
1364 | +++ |
1365 | *** In Dired's ! command (dired-do-shell-command), `*' and `?' now | |
1366 | control substitution of the file names only when they are surrounded | |
1367 | by whitespace. This means you can now use them as shell wildcards | |
1368 | too. If you want to use just plain `*' as a wildcard, type `*""'; the | |
679ce4d5 | 1369 | double quotes make no difference in the shell, but they prevent |
30b0da81 | 1370 | special treatment in `dired-do-shell-command'. |
8725c792 | 1371 | |
30b0da81 | 1372 | +++ |
6f5c4cc9 RS |
1373 | *** In Dired, the w command now stores the current line's file name |
1374 | into the kill ring. With a zero prefix arg, it stores the absolute file name. | |
1d1d1b1f | 1375 | |
30b0da81 | 1376 | +++ |
da9356b0 | 1377 | *** In Dired-x, Omitting files is now a minor mode, dired-omit-mode. |
61cb0b53 | 1378 | |
da9356b0 RS |
1379 | The mode toggling command is bound to M-o. A new command |
1380 | dired-mark-omitted, bound to * O, marks omitted files. The variable | |
1381 | dired-omit-files-p is obsoleted, use the mode toggling function | |
1382 | instead. | |
5ab0ceed | 1383 | |
30b0da81 | 1384 | +++ |
da9356b0 RS |
1385 | *** The variables dired-free-space-program and dired-free-space-args |
1386 | have been renamed to directory-free-space-program and | |
1387 | directory-free-space-args, and they now apply whenever Emacs puts a | |
1388 | directory listing into a buffer. | |
0ec6b206 | 1389 | |
da9356b0 | 1390 | ** Comint changes: |
ff6a3bfb | 1391 | |
f60a6f87 | 1392 | --- |
da9356b0 | 1393 | *** The comint prompt can now be made read-only, using the new user |
30b0da81 RS |
1394 | option `comint-prompt-read-only'. This is not enabled by default, |
1395 | except in IELM buffers. The read-only status of IELM prompts can be | |
1396 | controlled with the new user option `ielm-prompt-read-only', which | |
1397 | overrides `comint-prompt-read-only'. | |
2c37653c | 1398 | |
30b0da81 RS |
1399 | The new commands `comint-kill-whole-line' and `comint-kill-region' |
1400 | support editing comint buffers with read-only prompts. | |
957e7c38 | 1401 | |
30b0da81 RS |
1402 | `comint-kill-whole-line' is like `kill-whole-line', but ignores both |
1403 | read-only and field properties. Hence, it always kill entire | |
1404 | lines, including any prompts. | |
555c87d8 | 1405 | |
30b0da81 RS |
1406 | `comint-kill-region' is like `kill-region', except that it ignores |
1407 | read-only properties, if it is safe to do so. This means that if any | |
1408 | part of a prompt is deleted, then the entire prompt must be deleted | |
1409 | and that all prompts must stay at the beginning of a line. If this is | |
1410 | not the case, then `comint-kill-region' behaves just like | |
788c3ebe LT |
1411 | `kill-region' if read-only properties are involved: it copies the text |
1412 | to the kill-ring, but does not delete it. | |
d7b590b1 | 1413 | |
2b6bb1f2 | 1414 | +++ |
da9356b0 | 1415 | *** The new command `comint-insert-previous-argument' in comint-derived |
f7735be5 | 1416 | modes (shell-mode, etc.) inserts arguments from previous command lines, |
30b0da81 RS |
1417 | like bash's `ESC .' binding. It is bound by default to `C-c .', but |
1418 | otherwise behaves quite similarly to the bash version. | |
af7272b1 | 1419 | |
a6b017c9 | 1420 | +++ |
da9356b0 | 1421 | *** `comint-use-prompt-regexp-instead-of-fields' has been renamed |
30b0da81 RS |
1422 | `comint-use-prompt-regexp'. The old name has been kept as an alias, |
1423 | but declared obsolete. | |
cc305a60 | 1424 | |
da9356b0 | 1425 | ** M-x Compile changes: |
8798ecdb | 1426 | |
dacec596 | 1427 | --- |
da9356b0 | 1428 | *** M-x compile has become more robust and reliable |
dacec596 | 1429 | |
30b0da81 RS |
1430 | Quite a few more kinds of messages are recognized. Messages that are |
1431 | recognized as warnings or informational come in orange or green, instead of | |
1432 | red. Informational messages are by default skipped with `next-error' | |
1433 | (controlled by `compilation-skip-threshold'). | |
dacec596 | 1434 | |
30b0da81 RS |
1435 | Location data is collected on the fly as the *compilation* buffer changes. |
1436 | This means you could modify messages to make them point to different files. | |
1437 | This also means you can not go to locations of messages you may have deleted. | |
b03763f4 | 1438 | |
30b0da81 RS |
1439 | The variable `compilation-error-regexp-alist' has now become customizable. If |
1440 | you had added your own regexps to this, you'll probably need to include a | |
1441 | leading `^', otherwise they'll match anywhere on a line. There is now also a | |
1442 | `compilation-mode-font-lock-keywords' and it nicely handles all the checks | |
1443 | that configure outputs and -o options so you see at a glance where you are. | |
b03763f4 | 1444 | |
30b0da81 | 1445 | The new file etc/compilation.txt gives examples of each type of message. |
b03763f4 | 1446 | |
2e4e635a | 1447 | +++ |
30b0da81 RS |
1448 | *** New user option `compilation-environment'. |
1449 | This option allows you to specify environment variables for inferior | |
1450 | compilation processes without affecting the environment that all | |
1451 | subprocesses inherit. | |
4d3eda1c | 1452 | |
619a2c49 EZ |
1453 | +++ |
1454 | *** New user option `compilation-disable-input'. | |
1455 | If this is non-nil, send end-of-file as compilation process input. | |
1456 | ||
da9356b0 RS |
1457 | +++ |
1458 | *** New options `next-error-highlight' and `next-error-highlight-no-select' | |
1459 | specify the method of highlighting of the corresponding source line | |
1460 | in new face `next-error'. | |
1461 | ||
1462 | +++ | |
1463 | *** A new minor mode `next-error-follow-minor-mode' can be used in | |
1464 | compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the | |
1465 | modes that can use `next-error'). In this mode, cursor motion in the | |
1466 | buffer causes automatic display in another window of the corresponding | |
1467 | matches, compilation errors, etc. This minor mode can be toggled with | |
1468 | C-c C-f. | |
1469 | ||
a6b017c9 | 1470 | +++ |
995599a8 NR |
1471 | *** When the left fringe is displayed, an arrow points to current message in |
1472 | the compilation buffer. | |
e6467bba | 1473 | |
a6b017c9 | 1474 | +++ |
e6467bba NR |
1475 | *** The new variable `compilation-context-lines' controls lines of leading |
1476 | context before the current message. If nil and the left fringe is displayed, | |
1477 | it doesn't scroll the compilation output window. If there is no left fringe, | |
1478 | no arrow is displayed and a value of nil means display the message at the top | |
1479 | of the window. | |
1480 | ||
da9356b0 RS |
1481 | ** Occur mode changes: |
1482 | ||
1483 | +++ | |
1484 | *** In the *Occur* buffer, `o' switches to it in another window, and | |
1485 | C-o displays the current line's occurrence in another window without | |
1486 | switching to it. | |
1487 | ||
1488 | +++ | |
1489 | *** You can now use next-error (C-x `) and previous-error to advance to | |
1490 | the next/previous matching line found by M-x occur. | |
1491 | ||
1492 | +++ | |
1493 | *** The new command `multi-occur' is just like `occur', except it can | |
1494 | search multiple buffers. There is also a new command | |
b2acecc1 RS |
1495 | `multi-occur-in-matching-buffers' which allows you to specify the |
1496 | buffers to search by their filenames or buffer names. Internally, | |
1497 | Occur mode has been rewritten, and now uses font-lock, among other | |
1498 | changes. | |
da9356b0 | 1499 | |
c44da964 RS |
1500 | ** Grep changes: |
1501 | ||
30b0da81 | 1502 | +++ |
c44da964 | 1503 | *** Grep has been decoupled from compilation mode setup. |
175573ac | 1504 | |
da9356b0 RS |
1505 | There's a new separate package grep.el, with its own submenu and |
1506 | customization group. | |
fc2938d1 | 1507 | |
6b2db6f1 KS |
1508 | +++ |
1509 | *** `grep-find' is now also available under the name `find-grep' where | |
1510 | people knowing `find-grep-dired' would probably expect it. | |
1511 | ||
1512 | +++ | |
1513 | *** New commands `lgrep' (local grep) and `rgrep' (recursive grep) are | |
1514 | more user-friendly versions of `grep' and `grep-find', which prompt | |
1515 | separately for the regular expression to match, the files to search, | |
1516 | and the base directory for the search (rgrep only). Case sensitivitivy | |
1517 | of the search is controlled by the current value of `case-fold-search'. | |
1518 | ||
1519 | These commands build the shell commands based on the new variables | |
1520 | `grep-template' (lgrep) and `grep-find-template' (rgrep). | |
1521 | ||
1522 | The files to search can use aliases defined in `grep-files-aliases'. | |
1523 | ||
1524 | Subdirectories listed in `grep-find-ignored-directories' such as those | |
1525 | typically used by various version control systems, like CVS and arch, | |
1526 | are automatically skipped by `rgrep'. | |
1527 | ||
813f3d41 | 1528 | --- |
6b2db6f1 | 1529 | *** The grep commands provide highlighting support. |
fc2938d1 | 1530 | |
30b0da81 | 1531 | Hits are fontified in green, and hits in binary files in orange. Grep buffers |
da9356b0 | 1532 | can be saved and automatically revisited. |
fc2938d1 | 1533 | |
a775dff4 | 1534 | --- |
6b2db6f1 KS |
1535 | *** The new variables `grep-window-height' and `grep-scroll-output' override |
1536 | the corresponding compilation mode settings, for grep commands only. | |
af3b9e47 | 1537 | |
30b0da81 | 1538 | +++ |
679ce4d5 | 1539 | *** New option `grep-highlight-matches' highlights matches in *grep* |
30b0da81 RS |
1540 | buffer. It uses a special feature of some grep programs which accept |
1541 | --color option to output markers around matches. When going to the next | |
1542 | match with `next-error' the exact match is highlighted in the source | |
1543 | buffer. Otherwise, if `grep-highlight-matches' is nil, the whole | |
1544 | source line is highlighted. | |
fc2938d1 | 1545 | |
30b0da81 RS |
1546 | +++ |
1547 | *** New key bindings in grep output window: | |
1548 | SPC and DEL scrolls window up and down. C-n and C-p moves to next and | |
1549 | previous match in the grep window. RET jumps to the source line of | |
1550 | the current match. `n' and `p' shows next and previous match in | |
1551 | other window, but does not switch buffer. `{' and `}' jumps to the | |
1552 | previous or next file in the grep output. TAB also jumps to the next | |
1553 | file. | |
fc2938d1 | 1554 | |
1c6576ab | 1555 | +++ |
da9356b0 | 1556 | *** M-x grep now tries to avoid appending `/dev/null' to the command line |
30b0da81 RS |
1557 | by using GNU grep `-H' option instead. M-x grep automatically |
1558 | detects whether this is possible or not the first time it is invoked. | |
1559 | When `-H' is used, the grep command line supplied by the user is passed | |
1560 | unchanged to the system to execute, which allows more complicated | |
1561 | command lines to be used than was possible before. | |
a4ac5b17 | 1562 | |
406c0f12 | 1563 | ** X Windows Support: |
b5d2c621 | 1564 | |
406c0f12 RS |
1565 | +++ |
1566 | *** Emacs now supports drag and drop for X. Dropping a file on a window | |
1567 | opens it, dropping text inserts the text. Dropping a file on a dired | |
1568 | buffer copies or moves the file to that directory. | |
1a667242 | 1569 | |
406c0f12 RS |
1570 | +++ |
1571 | *** Under X11, it is possible to swap Alt and Meta (and Super and Hyper). | |
1572 | The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym', | |
1573 | and `x-super-keysym' can be used to choose which keysyms Emacs should | |
1574 | use for the modifiers. For example, the following two lines swap | |
1575 | Meta and Alt: | |
1576 | (setq x-alt-keysym 'meta) | |
1577 | (setq x-meta-keysym 'alt) | |
63a7fdcf | 1578 | |
406c0f12 | 1579 | +++ |
da9356b0 | 1580 | *** The X resource useXIM can be used to turn off use of XIM, which can |
406c0f12 | 1581 | speed up Emacs with slow networking to the X server. |
813f3d41 | 1582 | |
406c0f12 RS |
1583 | If the configure option `--without-xim' was used to turn off use of |
1584 | XIM by default, the X resource useXIM can be used to turn it on. | |
a775dff4 | 1585 | |
30b0da81 | 1586 | --- |
406c0f12 RS |
1587 | *** The new variable `x-select-request-type' controls how Emacs |
1588 | requests X selection. The default value is nil, which means that | |
1589 | Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING, | |
1590 | and use the more appropriately result. | |
a775dff4 | 1591 | |
406c0f12 RS |
1592 | --- |
1593 | *** The scrollbar under LessTif or Motif has a smoother drag-scrolling. | |
1594 | On the other hand, the size of the thumb does not represent the actual | |
1595 | amount of text shown any more (only a crude approximation of it). | |
a775dff4 | 1596 | |
406c0f12 RS |
1597 | ** Xterm support: |
1598 | ||
1599 | --- | |
09abf31a LT |
1600 | *** If you enable Xterm Mouse mode, Emacs will respond to mouse clicks |
1601 | on the mode line, header line and display margin, when run in an xterm. | |
406c0f12 RS |
1602 | |
1603 | --- | |
1604 | *** Improved key bindings support when running in an xterm. | |
1605 | When emacs is running in an xterm more key bindings are available. The | |
fa2b23e5 | 1606 | following should work: |
406c0f12 RS |
1607 | {C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}. |
1608 | These key bindings work on xterm from X.org 6.8, they might not work on | |
1609 | some older versions of xterm, or on some proprietary versions. | |
1610 | ||
da9356b0 | 1611 | ** Character terminal color support changes: |
406c0f12 RS |
1612 | |
1613 | +++ | |
1614 | *** The new command-line option --color=MODE lets you specify a standard | |
1615 | mode for a tty color support. It is meant to be used on character | |
1616 | terminals whose capabilities are not set correctly in the terminal | |
1617 | database, or with terminal emulators which support colors, but don't | |
1618 | set the TERM environment variable to a name of a color-capable | |
1619 | terminal. "emacs --color" uses the same color commands as GNU `ls' | |
1620 | when invoked with "ls --color", so if your terminal can support colors | |
1621 | in "ls --color", it will support "emacs --color" as well. See the | |
1622 | user manual for the possible values of the MODE parameter. | |
1623 | ||
1624 | --- | |
1625 | *** Emacs now supports several character terminals which provide more | |
1626 | than 8 colors. For example, for `xterm', 16-color, 88-color, and | |
1627 | 256-color modes are supported. Emacs automatically notes at startup | |
1628 | the extended number of colors, and defines the appropriate entries for | |
1629 | all of these colors. | |
1630 | ||
1631 | +++ | |
1632 | *** Emacs now uses the full range of available colors for the default | |
1633 | faces when running on a color terminal, including 16-, 88-, and | |
1634 | 256-color xterms. This means that when you run "emacs -nw" on an | |
1635 | 88-color or 256-color xterm, you will see essentially the same face | |
1636 | colors as on X. | |
1637 | ||
1638 | --- | |
1639 | *** There's a new support for colors on `rxvt' terminal emulator. | |
da9356b0 | 1640 | \f |
c44da964 | 1641 | * New Modes and Packages in Emacs 22.1 |
406c0f12 | 1642 | |
597993cf MB |
1643 | ** ERC is now part of the Emacs distribution. |
1644 | ||
1645 | ERC is a powerful, modular, and extensible IRC client for Emacs. | |
1646 | ||
1647 | To see what modules are available, type | |
1648 | M-x customize-option erc-modules RET. | |
1649 | ||
1650 | To start an IRC session, type M-x erc-select, and follow the prompts | |
1651 | for server, port, and nick. | |
1652 | ||
1653 | --- | |
10625c3c RS |
1654 | ** Rcirc is now part of the Emacs distribution. |
1655 | ||
1656 | Rcirc is an Internet relay chat (IRC) client. It supports | |
1657 | simultaneous connections to multiple IRC servers. Each discussion | |
1658 | takes place in its own buffer. For each connection you can join | |
1659 | several channels (many-to-many) and participate in private | |
1660 | (one-to-one) chats. Both channel and private chats are contained in | |
1661 | separate buffers. | |
1662 | ||
1663 | To start an IRC session, type M-x irc, and follow the prompts for | |
1664 | server, port, nick and initial channels. | |
1665 | ||
5c4757d3 RS |
1666 | --- |
1667 | ** Newsticker is now part of the Emacs distribution. | |
1668 | ||
1669 | Newsticker asynchronously retrieves headlines (RSS) from a list of news | |
1670 | sites, prepares these headlines for reading, and allows for loading the | |
1671 | corresponding articles in a web browser. Its documentation is in a | |
1672 | separate manual. | |
1673 | ||
a19a0003 RS |
1674 | +++ |
1675 | ** savehist saves minibuffer histories between sessions. | |
c7deede0 | 1676 | To use this feature, turn on savehist-mode in your `.emacs' file. |
a19a0003 | 1677 | |
406c0f12 RS |
1678 | +++ |
1679 | ** Filesets are collections of files. You can define a fileset in | |
1680 | various ways, such as based on a directory tree or based on | |
1681 | program files that include other program files. | |
1682 | ||
1683 | Once you have defined a fileset, you can perform various operations on | |
1684 | all the files in it, such as visiting them or searching and replacing | |
1685 | in them. | |
1686 | ||
406c0f12 RS |
1687 | +++ |
1688 | ** Calc is now part of the Emacs distribution. | |
1689 | ||
1690 | Calc is an advanced desk calculator and mathematical tool written in | |
61322d72 JB |
1691 | Emacs Lisp. The prefix for Calc has been changed to `C-x *' and Calc |
1692 | can be started with `C-x * *'. The Calc manual is separate from the | |
1693 | Emacs manual; within Emacs, type "C-h i m calc RET" to read the | |
1694 | manual. A reference card is available in `etc/calccard.tex' and | |
1695 | `etc/calccard.ps'. | |
406c0f12 RS |
1696 | |
1697 | --- | |
9bae34bf RS |
1698 | ** The new package ibuffer provides a powerful, completely |
1699 | customizable replacement for buff-menu.el. | |
1700 | ||
1701 | --- | |
1702 | ** Ido mode is now part of the Emacs distribution. | |
1703 | ||
1704 | The ido (interactively do) package is an extension of the iswitchb | |
1705 | package to do interactive opening of files and directories in addition | |
1706 | to interactive buffer switching. Ido is a superset of iswitchb (with | |
1707 | a few exceptions), so don't enable both packages. | |
406c0f12 RS |
1708 | |
1709 | +++ | |
9bae34bf RS |
1710 | ** Image files are normally visited in Image mode, which lets you toggle |
1711 | between viewing the image and viewing the text using C-c C-c. | |
406c0f12 RS |
1712 | |
1713 | --- | |
1714 | ** CUA mode is now part of the Emacs distribution. | |
1715 | ||
1716 | The new cua package provides CUA-like keybindings using C-x for | |
1717 | cut (kill), C-c for copy, C-v for paste (yank), and C-z for undo. | |
1718 | With cua, the region can be set and extended using shifted movement | |
1719 | keys (like pc-selection-mode) and typed text replaces the active | |
1720 | region (like delete-selection-mode). Do not enable these modes with | |
1721 | cua-mode. Customize the variable `cua-mode' to enable cua. | |
1722 | ||
1723 | In addition, cua provides unified rectangle support with visible | |
7bee0d64 | 1724 | rectangle highlighting: Use C-return to start a rectangle, extend it |
406c0f12 RS |
1725 | using the movement commands (or mouse-3), and cut or copy it using C-x |
1726 | or C-c (using C-w and M-w also works). | |
1727 | ||
1728 | Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to | |
1729 | fill it with blanks or another character, use M-u or M-l to upcase or | |
1730 | downcase the rectangle, use M-i to increment the numbers in the | |
1731 | rectangle, use M-n to fill the rectangle with a numeric sequence (such | |
1732 | as 10 20 30...), use M-r to replace a regexp in the rectangle, and use | |
1733 | M-' or M-/ to restrict command on the rectangle to a subset of the | |
1734 | rows. See the commentary in cua-base.el for more rectangle commands. | |
1735 | ||
1736 | Cua also provides unified support for registers: Use a numeric | |
1737 | prefix argument between 0 and 9, i.e. M-0 .. M-9, for C-x, C-c, and | |
1738 | C-v to cut or copy into register 0-9, or paste from register 0-9. | |
1739 | ||
1740 | The last text deleted (not killed) is automatically stored in | |
1741 | register 0. This includes text deleted by typing text. | |
1742 | ||
1743 | Finally, cua provides a global mark which is set using S-C-space. | |
1744 | When the global mark is active, any text which is cut or copied is | |
1745 | automatically inserted at the global mark position. See the | |
1746 | commentary in cua-base.el for more global mark related commands. | |
1747 | ||
1748 | The features of cua also works with the standard emacs bindings for | |
1749 | kill, copy, yank, and undo. If you want to use cua mode, but don't | |
da9356b0 | 1750 | want the C-x, C-c, C-v, and C-z bindings, you can customize the |
406c0f12 RS |
1751 | `cua-enable-cua-keys' variable. |
1752 | ||
1753 | Note: This version of cua mode is not backwards compatible with older | |
1754 | versions of cua.el and cua-mode.el. To ensure proper operation, you | |
1755 | must remove older versions of cua.el or cua-mode.el as well as the | |
1756 | loading and customization of those packages from the .emacs file. | |
1757 | ||
1918f5d5 | 1758 | +++ |
740d6b03 | 1759 | ** Org mode is now part of the Emacs distribution |
1918f5d5 | 1760 | |
740d6b03 | 1761 | Org mode is a mode for keeping notes, maintaining ToDo lists, and |
005afe92 CD |
1762 | doing project planning with a fast and effective plain-text system. |
1763 | It also contains a plain-text table editor with spreadsheet-like | |
1918f5d5 CD |
1764 | capabilities. |
1765 | ||
740d6b03 | 1766 | The Org mode table editor can be integrated into any major mode by |
1918f5d5 CD |
1767 | activating the minor Orgtbl-mode. |
1768 | ||
e3250254 CD |
1769 | The documentation for org-mode is in a separate manual; within Emacs, |
1770 | type "C-h i m org RET" to read that manual. A reference card is | |
1771 | available in `etc/orgcard.tex' and `etc/orgcard.ps'. | |
1772 | ||
406c0f12 | 1773 | +++ |
82a33a21 RF |
1774 | ** The new package dns-mode.el adds syntax highlighting of DNS master files. |
1775 | It is a modern replacement for zone-mode.el, which is now obsolete. | |
406c0f12 RS |
1776 | |
1777 | --- | |
1778 | ** The new global minor mode `file-name-shadow-mode' modifies the way | |
1779 | filenames being entered by the user in the minibuffer are displayed, so | |
1780 | that it's clear when part of the entered filename will be ignored due to | |
1781 | emacs' filename parsing rules. The ignored portion can be made dim, | |
679ce4d5 | 1782 | invisible, or otherwise less visually noticeable. The display method can |
406c0f12 RS |
1783 | be displayed by customizing the variable `file-name-shadow-properties'. |
1784 | ||
1785 | +++ | |
1786 | ** The new package flymake.el does on-the-fly syntax checking of program | |
1787 | source files. See the Flymake's Info manual for more details. | |
1788 | ||
406c0f12 RS |
1789 | +++ |
1790 | ** The new keypad setup package provides several common bindings for | |
1791 | the numeric keypad which is available on most keyboards. The numeric | |
1792 | keypad typically has the digits 0 to 9, a decimal point, keys marked | |
1793 | +, -, /, and *, an Enter key, and a NumLock toggle key. The keypad | |
1794 | package only controls the use of the digit and decimal keys. | |
1795 | ||
1796 | By customizing the variables `keypad-setup', `keypad-shifted-setup', | |
1797 | `keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by | |
1798 | using the function `keypad-setup', you can rebind all digit keys and | |
1799 | the decimal key of the keypad in one step for each of the four | |
1800 | possible combinations of the Shift key state (not pressed/pressed) and | |
1801 | the NumLock toggle state (off/on). | |
1802 | ||
1803 | The choices for the keypad keys in each of the above states are: | |
1804 | `Plain numeric keypad' where the keys generates plain digits, | |
1805 | `Numeric keypad with decimal key' where the character produced by the | |
1806 | decimal key can be customized individually (for internationalization), | |
1807 | `Numeric Prefix Arg' where the keypad keys produce numeric prefix args | |
1808 | for emacs editing commands, `Cursor keys' and `Shifted Cursor keys' | |
1809 | where the keys work like (shifted) arrow keys, home/end, etc., and | |
1810 | `Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.) | |
1811 | are left unspecified and can be bound individually through the global | |
1812 | or local keymaps. | |
1813 | ||
1814 | +++ | |
1815 | ** The new kmacro package provides a simpler user interface to | |
1816 | emacs' keyboard macro facilities. | |
1817 | ||
1818 | Basically, it uses two function keys (default F3 and F4) like this: | |
1819 | F3 starts a macro, F4 ends the macro, and pressing F4 again executes | |
1820 | the last macro. While defining the macro, F3 inserts a counter value | |
1821 | which automatically increments every time the macro is executed. | |
1822 | ||
1823 | There is now a keyboard macro ring which stores the most recently | |
1824 | defined macros. | |
1825 | ||
1826 | The C-x C-k sequence is now a prefix for the kmacro keymap which | |
1827 | defines bindings for moving through the keyboard macro ring, | |
1828 | C-x C-k C-p and C-x C-k C-n, editing the last macro C-x C-k C-e, | |
1829 | manipulating the macro counter and format via C-x C-k C-c, | |
1830 | C-x C-k C-a, and C-x C-k C-f. See the commentary in kmacro.el | |
1831 | for more commands. | |
1832 | ||
1833 | The normal macro bindings C-x (, C-x ), and C-x e now interfaces to | |
1834 | the keyboard macro ring. | |
1835 | ||
1836 | The C-x e command now automatically terminates the current macro | |
1837 | before calling it, if used while defining a macro. | |
1838 | ||
1839 | In addition, when ending or calling a macro with C-x e, the macro can | |
1840 | be repeated immediately by typing just the `e'. You can customize | |
4ccda9c3 | 1841 | this behavior via the variables kmacro-call-repeat-key and |
406c0f12 RS |
1842 | kmacro-call-repeat-with-arg. |
1843 | ||
1844 | Keyboard macros can now be debugged and edited interactively. | |
1845 | C-x C-k SPC steps through the last keyboard macro one key sequence | |
1846 | at a time, prompting for the actions to take. | |
1847 | ||
9bae34bf RS |
1848 | --- |
1849 | ** New minor mode, Visible mode, toggles invisibility in the current buffer. | |
1850 | When enabled, it makes all invisible text visible. When disabled, it | |
1851 | restores the previous value of `buffer-invisibility-spec'. | |
1852 | ||
1853 | +++ | |
1854 | ** The wdired.el package allows you to use normal editing commands on Dired | |
1855 | buffers to change filenames, permissions, etc... | |
1856 | ||
406c0f12 RS |
1857 | +++ |
1858 | ** The new package longlines.el provides a minor mode for editing text | |
1859 | files composed of long lines, based on the `use-hard-newlines' | |
1860 | mechanism. The long lines are broken up by inserting soft newlines, | |
1861 | which are automatically removed when saving the file to disk or | |
1862 | copying into the kill ring, clipboard, etc. By default, Longlines | |
1863 | mode inserts soft newlines automatically during editing, a behavior | |
1864 | referred to as "soft word wrap" in other text editors. This is | |
1865 | similar to Refill mode, but more reliable. To turn the word wrap | |
1866 | feature off, set `longlines-auto-wrap' to nil. | |
1867 | ||
a6b017c9 | 1868 | +++ |
406c0f12 RS |
1869 | ** The printing package is now part of the Emacs distribution. |
1870 | ||
1871 | If you enable the printing package by including (require 'printing) in | |
1872 | the .emacs file, the normal Print item on the File menu is replaced | |
1873 | with a Print sub-menu which allows you to preview output through | |
1874 | ghostview, use ghostscript to print (if you don't have a PostScript | |
1875 | printer) or send directly to printer a PostScript code generated by | |
1876 | `ps-print' package. Use M-x pr-help for more information. | |
1877 | ||
406c0f12 RS |
1878 | --- |
1879 | ** The minor mode Reveal mode makes text visible on the fly as you | |
1880 | move your cursor into hidden regions of the buffer. | |
1881 | It should work with any package that uses overlays to hide parts | |
1882 | of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ... | |
1883 | ||
1884 | There is also Global Reveal mode which affects all buffers. | |
1885 | ||
1886 | --- | |
1887 | ** The ruler-mode.el library provides a minor mode for displaying an | |
1888 | "active" ruler in the header line. You can use the mouse to visually | |
1889 | change the `fill-column', `window-margins' and `tab-stop-list' | |
1890 | settings. | |
1891 | ||
1892 | +++ | |
1893 | ** SES mode (ses-mode) is a new major mode for creating and editing | |
1894 | spreadsheet files. Besides the usual Emacs features (intuitive command | |
1895 | letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers | |
1896 | viral immunity and import/export of tab-separated values. | |
1897 | ||
1898 | +++ | |
1899 | ** The new global minor mode `size-indication-mode' (off by default) | |
1900 | shows the size of accessible part of the buffer on the mode line. | |
1901 | ||
1902 | +++ | |
1903 | ** The new package table.el implements editable, WYSIWYG, embedded | |
1904 | `text tables' in Emacs buffers. It simulates the effect of putting | |
1905 | these tables in a special major mode. The package emulates WYSIWYG | |
1906 | table editing available in modern word processors. The package also | |
1907 | can generate a table source in typesetting and markup languages such | |
1908 | as latex and html from the visually laid out text table. | |
1909 | ||
fa0d4d0c RS |
1910 | ** The tumme.el package allows you to easily view, tag and in other ways |
1911 | manipulate image files and their thumbnails, using dired as the main interface. | |
1912 | Tumme provides functionality to generate simple image galleries. | |
406c0f12 RS |
1913 | |
1914 | +++ | |
1915 | ** Tramp is now part of the distribution. | |
1916 | ||
1917 | This package is similar to Ange-FTP: it allows you to edit remote | |
1918 | files. But whereas Ange-FTP uses FTP to access the remote host, | |
1919 | Tramp uses a shell connection. The shell connection is always used | |
1920 | for filename completion and directory listings and suchlike, but for | |
1921 | the actual file transfer, you can choose between the so-called | |
1922 | `inline' methods (which transfer the files through the shell | |
1923 | connection using base64 or uu encoding) and the `out-of-band' methods | |
1924 | (which invoke an external copying program such as `rcp' or `scp' or | |
1925 | `rsync' to do the copying). | |
1926 | ||
1927 | Shell connections can be acquired via `rsh', `ssh', `telnet' and also | |
1928 | `su' and `sudo'. Ange-FTP is still supported via the `ftp' method. | |
1929 | ||
1930 | If you want to disable Tramp you should set | |
1931 | ||
1932 | (setq tramp-default-method "ftp") | |
1933 | ||
87899d7e MA |
1934 | Removing Tramp, and re-enabling Ange-FTP, can be achieved by M-x |
1935 | tramp-unload-tramp. | |
1936 | ||
406c0f12 RS |
1937 | --- |
1938 | ** The URL package (which had been part of W3) is now part of Emacs. | |
1939 | ||
1940 | --- | |
9bae34bf RS |
1941 | ** `cfengine-mode' is a major mode for editing GNU Cfengine |
1942 | configuration files. | |
406c0f12 RS |
1943 | |
1944 | +++ | |
9bae34bf RS |
1945 | ** The new package conf-mode.el handles thousands of configuration files, with |
1946 | varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value, | |
1947 | var : value, var value or keyword var value) and sections ([section] or | |
1948 | section { }). Many files under /etc/, or with suffixes like .cf through | |
1949 | .config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are | |
1950 | recognized. | |
da9356b0 RS |
1951 | |
1952 | --- | |
9bae34bf | 1953 | ** GDB-Script-mode is used for files like .gdbinit. |
da9356b0 RS |
1954 | |
1955 | +++ | |
9bae34bf | 1956 | ** The new python.el package is used to edit Python and Jython programs. |
da9356b0 RS |
1957 | |
1958 | --- | |
9bae34bf RS |
1959 | ** The TCL package tcl-mode.el was replaced by tcl.el. |
1960 | This was actually done in Emacs-21.1, and was not documented. | |
94396ace RS |
1961 | |
1962 | ** The new package scroll-lock.el provides the Scroll Lock minor mode | |
1963 | for pager-like scrolling. Keys which normally move point by line or | |
1964 | paragraph will scroll the buffer by the respective amount of lines | |
1965 | instead and point will be kept vertically fixed relative to window | |
1966 | boundaries during scrolling. | |
b65dd340 | 1967 | |
0815600c | 1968 | +++ |
b65dd340 NR |
1969 | ** The file t-mouse.el is now part of Emacs and provides access to mouse |
1970 | events from the console. It still requires gpm to work but has been updated | |
1971 | for Emacs 22. In particular, the mode-line is now position sensitive. | |
c44da964 RS |
1972 | \f |
1973 | * Changes in Specialized Modes and Packages in Emacs 22.1: | |
da9356b0 | 1974 | |
5f64e9f6 | 1975 | ** Changes in Dired |
679ce4d5 RF |
1976 | |
1977 | +++ | |
5f64e9f6 MD |
1978 | *** Bindings for Tumme added |
1979 | Several new keybindings, all starting with the C-t prefix, have been | |
1980 | added to Dired. They are all bound to commands in Tumme. As a starting | |
1981 | point, mark some image files in a dired buffer and do C-t d to display | |
1982 | thumbnails of them in a separate buffer. | |
679ce4d5 RF |
1983 | |
1984 | ** Changes in Hi Lock | |
a8514f71 EZ |
1985 | |
1986 | +++ | |
1987 | *** hi-lock-mode now only affects a single buffer, and a new function | |
1988 | `global-hi-lock-mode' enables Hi Lock in all buffers. By default, if | |
1989 | hi-lock-mode is used in what appears to be the initialization file, a | |
1990 | warning message suggests to use global-hi-lock-mode instead. However, | |
1991 | if the new variable `hi-lock-archaic-interface-deduce' is non-nil, | |
1992 | using hi-lock-mode in an initialization file will turn on Hi Lock in all | |
1993 | buffers and no warning will be issued (for compatibility with the | |
1994 | behavior in older versions of Emacs). | |
1995 | ||
2d33a479 | 1996 | --- |
81154e3d EZ |
1997 | ** Changes in Allout |
1998 | ||
1999 | *** Topic cryptography added, enabling easy gpg topic encryption and | |
2000 | decryption. Per-topic basis enables interspersing encrypted-text and | |
1d489c0d | 2001 | clear-text within a single file to your heart's content, using symmetric |
81154e3d EZ |
2002 | and/or public key modes. Time-limited key caching, user-provided |
2003 | symmetric key hinting and consistency verification, auto-encryption of | |
2004 | pending topics on save, and more, make it easy to use encryption in | |
2d33a479 EZ |
2005 | powerful ways. Encryption behavior customization is collected in the |
2006 | allout-encryption customization group. | |
81154e3d | 2007 | |
4b1af9ac | 2008 | *** `allout-view-change-hook' marked as being deprecated - use |
2d33a479 EZ |
2009 | `allout-exposure-change-hook' instead. Both are still invoked, but |
2010 | `allout-view-change-hook' will eventually be ignored. The new | |
2011 | `allout-exposure-change-hook' is called with args that were passed to | |
2012 | `allout-flag-region', making it easier to use. | |
2013 | ||
2014 | *** Other allout functions which change the outline structure also have | |
2015 | hooks, enabling cooperative allout enhancements. See | |
2016 | `allout-structure-added-hook', `allout-structure-deleted-hook', and | |
2017 | `allout-structure-shifted-hook'. | |
4b1af9ac | 2018 | |
1d489c0d EZ |
2019 | *** Default command prefix changed to "\C-c " (control-c space), to avoid |
2020 | intruding on user's keybinding space. Customize the | |
2021 | `allout-command-prefix' variable to your preference. | |
2022 | ||
2023 | *** Allout now uses text overlay's `invisible' property (and others) for | |
2024 | concealed text, instead of selective-display. This simplifies the code, in | |
4b1af9ac | 2025 | particular avoiding the need for kludges for isearch dynamic-display, |
1d489c0d EZ |
2026 | discretionary handling of edits of concealed text, undo concerns, etc. |
2027 | ||
2d33a479 EZ |
2028 | *** Some previously rough topic-header format edge cases are reconciled. |
2029 | Level 1 topics use the mode's comment format, and lines starting with the | |
2030 | asterisk - for instance, the comment close of some languages (eg, c's "*/" | |
2031 | or mathematica's "*)") - at the beginning of line are no longer are | |
2032 | interpreted as level 1 topics in those modes. (Yay!) | |
2033 | ||
1d489c0d | 2034 | *** Many substantial fixes and refinements, including: |
81154e3d | 2035 | |
2d33a479 EZ |
2036 | - repaired regexp-quoting of custom header prefixes, so any literals |
2037 | will now work (for instance, mathematica's "(*" is now properly | |
2038 | accepted). | |
2039 | - repaired inhibition of inadvertent edits to concealed text. | |
1d489c0d EZ |
2040 | - refuse to create "containment discontinuities", where a |
2041 | topic is shifted deeper than the offspring-depth of its' container | |
0779eeea EZ |
2042 | - auto-fill-mode is now left inactive when allout-mode starts, if it |
2043 | already was inactive. also, `allout-inhibit-auto-fill' custom | |
2044 | configuration variable makes it easy to disable auto fill in allout | |
2045 | outlines in general or on a per-buffer basis. | |
2d33a479 EZ |
2046 | - mode hook changes: new hook `allout-mode-deactivate-hook', for |
2047 | coordinating with deactivation of allout-mode. `allout-mode-hook' is | |
2048 | now run after the `allout-mode' variable is changed, as is the new | |
2049 | `allout-mode-deactivate-hook'. | |
2050 | - allout now tolerates fielded text in outlines without disruption. | |
2051 | - hot-spot navigation now is modularized with a new function, | |
2052 | `allout-hotspot-key-handler', enabling easier articulation and | |
2053 | enhancement of the functionality by allout addons. | |
2054 | - topic body navigation is easier, where repeated beginning of line and | |
2055 | end of line key commands cycle through the actually beginning/end of | |
2056 | line and then beginning/end of topic, etc. see new customization vars | |
2057 | `allout-beginning-of-line-cycles' and `allout-end-of-line-cycles'. | |
2058 | - repaired retention of topic body hanging indent upon topic depth shifts | |
1d489c0d EZ |
2059 | - bulleting variation is simpler and more accommodating, both in the |
2060 | default behavior and in ability to vary when creating new topics | |
0779eeea EZ |
2061 | - mode deactivation now does cleans up effectively, more properly |
2062 | restoring affected variables and hooks to former state, removing | |
2d33a479 EZ |
2063 | overlays, etc. see `allout-add-resumptions' and |
2064 | `allout-do-resumptions', which replace the old `allout-resumptions'. | |
0779eeea EZ |
2065 | - included a few unit-tests for interior functionality. developers can |
2066 | have them automatically run at the end of module load by customizing | |
2067 | the option `allout-run-unit-tests-on-load'. | |
2068 | - many, many minor tweaks and fixes. many internal fixes and | |
2069 | refinements of docstrings. | |
1d489c0d | 2070 | - version number incremented to 2.2 |
81154e3d | 2071 | |
ee5d9fdf EZ |
2072 | ** The variable `woman-topic-at-point' was renamed |
2073 | to `woman-use-topic-at-point' and behaves differently: if this | |
2074 | variable is non-nil, the `woman' command uses the word at point | |
2075 | automatically, without asking for a confirmation. Otherwise, the word | |
2076 | at point is suggested as default, but not inserted at the prompt. | |
2077 | ||
97beadbd EZ |
2078 | --- |
2079 | ** Changes to cmuscheme | |
2080 | ||
2081 | *** Emacs now offers to start Scheme if the user tries to | |
2082 | evaluate a Scheme expression but no Scheme subprocess is running. | |
2083 | ||
2084 | *** If a file `.emacs_NAME' (where NAME is the name of the Scheme interpreter) | |
b3ff69c1 | 2085 | exists in the user's home directory or in ~/.emacs.d, its |
97beadbd EZ |
2086 | contents are sent to the Scheme subprocess upon startup. |
2087 | ||
2088 | *** There are new commands to instruct the Scheme interpreter to trace | |
2089 | procedure calls (`scheme-trace-procedure') and to expand syntactic forms | |
2090 | (`scheme-expand-current-form'). The commands actually sent to the Scheme | |
2091 | subprocess are controlled by the user options `scheme-trace-command', | |
2092 | `scheme-untrace-command' and `scheme-expand-current-form'. | |
2093 | ||
a6b017c9 | 2094 | --- |
e22fdc36 RW |
2095 | ** Changes in Makefile mode |
2096 | ||
2097 | *** Makefile mode has submodes for automake, gmake, makepp, BSD make and imake. | |
7daddde2 | 2098 | |
3968c89f | 2099 | The former two couldn't be differentiated before, and the latter three |
7daddde2 RS |
2100 | are new. Font-locking is robust now and offers new customizable |
2101 | faces. | |
dda6a168 | 2102 | |
e22fdc36 RW |
2103 | *** The variable `makefile-query-one-target-method' has been renamed |
2104 | to `makefile-query-one-target-method-function'. The old name is still | |
2105 | available as alias. | |
2106 | ||
406c0f12 | 2107 | +++ |
7daddde2 | 2108 | ** In Outline mode, `hide-body' no longer hides lines at the top |
c44da964 | 2109 | of the file that precede the first header line. |
406c0f12 RS |
2110 | |
2111 | +++ | |
c44da964 RS |
2112 | ** Telnet now prompts you for a port number with C-u M-x telnet. |
2113 | ||
2114 | --- | |
7daddde2 | 2115 | ** The terminal emulation code in term.el has been improved; it can |
c44da964 RS |
2116 | run most curses applications now. |
2117 | ||
2118 | +++ | |
7daddde2 | 2119 | ** M-x diff uses Diff mode instead of Compilation mode. |
c44da964 | 2120 | |
90b57156 RS |
2121 | +++ |
2122 | ** Diff mode key bindings changed. | |
2123 | ||
2124 | These are the new bindings: | |
2125 | ||
2126 | C-c C-e diff-ediff-patch (old M-A) | |
2127 | C-c C-n diff-restrict-view (old M-r) | |
2128 | C-c C-r diff-reverse-direction (old M-R) | |
2129 | C-c C-u diff-context->unified (old M-U) | |
2130 | C-c C-w diff-refine-hunk (old C-c C-r) | |
2131 | ||
2132 | To convert unified to context format, use C-u C-c C-u. | |
2133 | In addition, C-c C-u now operates on the region | |
2134 | in Transient Mark mode when the mark is active. | |
2135 | ||
c44da964 | 2136 | +++ |
7daddde2 | 2137 | ** You can now customize `fill-nobreak-predicate' to control where |
c44da964 RS |
2138 | filling can break lines. The value is now normally a list of |
2139 | functions, but it can also be a single function, for compatibility. | |
2140 | ||
7daddde2 RS |
2141 | Emacs provide two predicates, `fill-single-word-nobreak-p' and |
2142 | `fill-french-nobreak-p', for use as the value of | |
2143 | `fill-nobreak-predicate'. | |
c44da964 RS |
2144 | |
2145 | --- | |
2146 | ** M-x view-file and commands that use it now avoid interfering | |
2147 | with special modes such as Tar mode. | |
2148 | ||
2149 | --- | |
7daddde2 RS |
2150 | ** Commands `winner-redo' and `winner-undo', from winner.el, are now |
2151 | bound to C-c <left> and C-c <right>, respectively. This is an | |
2152 | incompatible change. | |
c44da964 RS |
2153 | |
2154 | --- | |
7daddde2 | 2155 | ** `global-whitespace-mode' is a new alias for `whitespace-global-mode'. |
c44da964 RS |
2156 | |
2157 | +++ | |
2158 | ** M-x compare-windows now can automatically skip non-matching text to | |
2159 | resync points in both windows. | |
2160 | ||
2161 | +++ | |
2162 | ** New user option `add-log-always-start-new-record'. | |
7daddde2 | 2163 | |
c44da964 RS |
2164 | When this option is enabled, M-x add-change-log-entry always |
2165 | starts a new record regardless of when the last record is. | |
406c0f12 RS |
2166 | |
2167 | --- | |
2168 | ** PO translation files are decoded according to their MIME headers | |
2169 | when Emacs visits them. | |
2170 | ||
c44da964 | 2171 | ** Info mode changes: |
406c0f12 RS |
2172 | |
2173 | +++ | |
2174 | *** A numeric prefix argument of `info' selects an Info buffer | |
7daddde2 | 2175 | with the number appended to the `*info*' buffer name (e.g. "*info*<2>"). |
406c0f12 | 2176 | |
a11c9215 | 2177 | +++ |
406c0f12 | 2178 | *** isearch in Info uses Info-search and searches through multiple nodes. |
7daddde2 | 2179 | |
406c0f12 RS |
2180 | Before leaving the initial Info node isearch fails once with the error |
2181 | message [initial node], and with subsequent C-s/C-r continues through | |
2182 | other nodes. When isearch fails for the rest of the manual, it wraps | |
679ce4d5 | 2183 | around the whole manual to the top/final node. The user option |
406c0f12 RS |
2184 | `Info-isearch-search' controls whether to use Info-search for isearch, |
2185 | or the default isearch search function that wraps around the current | |
2186 | Info node. | |
2187 | ||
a11c9215 | 2188 | --- |
406c0f12 RS |
2189 | *** New search commands: `Info-search-case-sensitively' (bound to S), |
2190 | `Info-search-backward', and `Info-search-next' which repeats the last | |
2191 | search without prompting for a new search string. | |
2192 | ||
a11c9215 | 2193 | +++ |
406c0f12 RS |
2194 | *** New command `Info-history-forward' (bound to r and new toolbar icon) |
2195 | moves forward in history to the node you returned from after using | |
2196 | `Info-history-back' (renamed from `Info-last'). | |
2197 | ||
a11c9215 | 2198 | --- |
406c0f12 RS |
2199 | *** New command `Info-history' (bound to L) displays a menu of visited nodes. |
2200 | ||
a11c9215 | 2201 | --- |
406c0f12 RS |
2202 | *** New command `Info-toc' (bound to T) creates a node with table of contents |
2203 | from the tree structure of menus of the current Info file. | |
2204 | ||
a11c9215 | 2205 | +++ |
406c0f12 RS |
2206 | *** New command `info-apropos' searches the indices of the known |
2207 | Info files on your system for a string, and builds a menu of the | |
2208 | possible matches. | |
2209 | ||
a11c9215 | 2210 | --- |
406c0f12 RS |
2211 | *** New command `Info-copy-current-node-name' (bound to w) copies |
2212 | the current Info node name into the kill ring. With a zero prefix | |
2213 | arg, puts the node name inside the `info' function call. | |
2214 | ||
a11c9215 | 2215 | +++ |
406c0f12 RS |
2216 | *** New face `info-xref-visited' distinguishes visited nodes from unvisited |
2217 | and a new option `Info-fontify-visited-nodes' to control this. | |
2218 | ||
a11c9215 | 2219 | --- |
406c0f12 RS |
2220 | *** http and ftp links in Info are now operational: they look like cross |
2221 | references and following them calls `browse-url'. | |
2222 | ||
2223 | +++ | |
2224 | *** Info now hides node names in menus and cross references by default. | |
7daddde2 | 2225 | |
406c0f12 RS |
2226 | If you prefer the old behavior, you can set the new user option |
2227 | `Info-hide-note-references' to nil. | |
2228 | ||
2229 | --- | |
2230 | *** Images in Info pages are supported. | |
7daddde2 | 2231 | |
406c0f12 RS |
2232 | Info pages show embedded images, in Emacs frames with image support. |
2233 | Info documentation that includes images, processed with makeinfo | |
2234 | version 4.7 or newer, compiles to Info pages with embedded images. | |
2235 | ||
2236 | +++ | |
2237 | *** The default value for `Info-scroll-prefer-subnodes' is now nil. | |
c64a682c | 2238 | |
30b0da81 | 2239 | --- |
7daddde2 | 2240 | *** `Info-index' offers completion. |
3996d07a | 2241 | |
406c0f12 RS |
2242 | ** Lisp mode changes: |
2243 | ||
30b0da81 | 2244 | --- |
7daddde2 | 2245 | *** Lisp mode now uses `font-lock-doc-face' for doc strings. |
62ce3608 | 2246 | |
1c6576ab | 2247 | +++ |
7daddde2 | 2248 | *** C-u C-M-q in Emacs Lisp mode pretty-prints the list after point. |
c145bbb3 | 2249 | |
406c0f12 | 2250 | *** New features in evaluation commands |
81f755ae | 2251 | |
85df292e | 2252 | +++ |
7daddde2 | 2253 | **** The function `eval-defun' (C-M-x) called on defface reinitializes |
30b0da81 | 2254 | the face to the value specified in the defface expression. |
1791907b | 2255 | |
a775dff4 | 2256 | +++ |
7daddde2 | 2257 | **** Typing C-x C-e twice prints the value of the integer result |
30b0da81 RS |
2258 | in additional formats (octal, hexadecimal, character) specified |
2259 | by the new function `eval-expression-print-format'. The same | |
2260 | function also defines the result format for `eval-expression' (M-:), | |
2261 | `eval-print-last-sexp' (C-j) and some edebug evaluation functions. | |
1791907b | 2262 | |
a775dff4 | 2263 | +++ |
c44da964 | 2264 | ** CC mode changes. |
a31a30b5 | 2265 | |
7b18d88f AM |
2266 | *** The CC Mode manual has been extensively revised. |
2267 | The information about using CC Mode has been separated from the larger | |
2268 | and more difficult chapters about configuration. | |
2269 | ||
2270 | *** Changes in Key Sequences | |
2271 | **** c-toggle-auto-hungry-state is no longer bound to C-c C-t. | |
2272 | ||
2273 | **** c-toggle-hungry-state is no longer bound to C-c C-d. | |
2274 | This binding has been taken over by c-hungry-delete-forwards. | |
2275 | ||
2276 | **** c-toggle-auto-state (C-c C-t) has been renamed to c-toggle-auto-newline. | |
2277 | c-toggle-auto-state remains as an alias. | |
2278 | ||
2279 | **** The new commands c-hungry-backspace and c-hungry-delete-forwards | |
2280 | have key bindings C-c C-DEL (or C-c DEL, for the benefit of TTYs) and | |
2281 | C-c C-d (or C-c C-<delete> or C-c <delete>) respectively. These | |
2282 | commands delete entire blocks of whitespace with a single | |
2283 | key-sequence. [N.B. "DEL" is the <backspace> key.] | |
2284 | ||
2285 | **** The new command c-toggle-electric-mode is bound to C-c C-l. | |
2286 | ||
2287 | **** The new command c-subword-mode is bound to C-c C-w. | |
2288 | ||
2289 | *** C-c C-s (`c-show-syntactic-information') now highlights the anchor | |
2290 | position(s). | |
2291 | ||
2292 | *** New Minor Modes | |
2293 | **** Electric Minor Mode toggles the electric action of non-alphabetic keys. | |
2294 | The new command c-toggle-electric-mode is bound to C-c C-l. Turning the | |
2295 | mode off can be helpful for editing chaotically indented code and for | |
2296 | users new to CC Mode, who sometimes find electric indentation | |
2297 | disconcerting. Its current state is displayed in the mode line with an | |
2298 | 'l', e.g. "C/al". | |
2299 | ||
2300 | **** Subword Minor Mode makes Emacs recognize word boundaries at upper case | |
2301 | letters in StudlyCapsIdentifiers. You enable this feature by C-c C-w. It can | |
2302 | also be used in non-CC Mode buffers. :-) Contributed by Masatake YAMATO. | |
2303 | ||
2304 | *** New clean-ups | |
2305 | ||
2306 | **** `comment-close-slash'. | |
2307 | With this clean-up, a block (i.e. c-style) comment can be terminated by | |
2308 | typing a slash at the start of a line. | |
2309 | ||
2310 | **** `c-one-liner-defun' | |
2311 | This clean-up compresses a short enough defun (for example, an AWK | |
2312 | pattern/action pair) onto a single line. "Short enough" is configurable. | |
2313 | ||
30b0da81 RS |
2314 | *** Font lock support. |
2315 | CC Mode now provides font lock support for all its languages. This | |
2316 | supersedes the font lock patterns that have been in the core font lock | |
2317 | package for C, C++, Java and Objective-C. Like indentation, font | |
2318 | locking is done in a uniform way across all languages (except the new | |
2319 | AWK mode - see below). That means that the new font locking will be | |
2320 | different from the old patterns in various details for most languages. | |
836c086b | 2321 | |
30b0da81 RS |
2322 | The main goal of the font locking in CC Mode is accuracy, to provide a |
2323 | dependable aid in recognizing the various constructs. Some, like | |
2324 | strings and comments, are easy to recognize while others like | |
2325 | declarations and types can be very tricky. CC Mode can go to great | |
2326 | lengths to recognize declarations and casts correctly, especially when | |
2327 | the types aren't recognized by standard patterns. This is a fairly | |
2328 | demanding analysis which can be slow on older hardware, and it can | |
2329 | therefore be disabled by choosing a lower decoration level with the | |
2330 | variable font-lock-maximum-decoration. | |
90e87070 | 2331 | |
30b0da81 | 2332 | Note that the most demanding font lock level has been tuned with lazy |
7b18d88f AM |
2333 | fontification in mind; Just-In-Time-Lock mode should be enabled for |
2334 | the highest font lock level (by default, it is). Fontifying a file | |
2335 | with several thousand lines in one go can take the better part of a | |
2336 | minute. | |
26fb226b | 2337 | |
30b0da81 RS |
2338 | **** The (c|c++|objc|java|idl|pike)-font-lock-extra-types variables |
2339 | are now used by CC Mode to recognize identifiers that are certain to | |
2340 | be types. (They are also used in cases that aren't related to font | |
2341 | locking.) At the maximum decoration level, types are often recognized | |
2342 | properly anyway, so these variables should be fairly restrictive and | |
2343 | not contain patterns for uncertain types. | |
fd42af9d | 2344 | |
30b0da81 RS |
2345 | **** Support for documentation comments. |
2346 | There is a "plugin" system to fontify documentation comments like | |
2347 | Javadoc and the markup within them. It's independent of the host | |
2348 | language, so it's possible to e.g. turn on Javadoc font locking in C | |
2349 | buffers. See the variable c-doc-comment-style for details. | |
236f1c76 | 2350 | |
7b18d88f AM |
2351 | Currently three kinds of doc comment styles are recognized: Sun's |
2352 | Javadoc, Autodoc (which is used in Pike) and GtkDoc (used in C). (The | |
2353 | last was contributed by Masatake YAMATO). This is by no means a | |
2354 | complete list of the most common tools; if your doc comment extractor | |
2355 | of choice is missing then please drop a note to bug-cc-mode@gnu.org. | |
fd4f8b36 | 2356 | |
30b0da81 RS |
2357 | **** Better handling of C++ templates. |
2358 | As a side effect of the more accurate font locking, C++ templates are | |
2359 | now handled much better. The angle brackets that delimit them are | |
2360 | given parenthesis syntax so that they can be navigated like other | |
2361 | parens. | |
89f8199f | 2362 | |
30b0da81 RS |
2363 | This also improves indentation of templates, although there still is |
2364 | work to be done in that area. E.g. it's required that multiline | |
2365 | template clauses are written in full and then refontified to be | |
2366 | recognized, and the indentation of nested templates is a bit odd and | |
2367 | not as configurable as it ought to be. | |
1f600b1b | 2368 | |
30b0da81 RS |
2369 | **** Improved handling of Objective-C and CORBA IDL. |
2370 | Especially the support for Objective-C and IDL has gotten an overhaul. | |
2371 | The special "@" declarations in Objective-C are handled correctly. | |
2372 | All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and | |
2373 | handled correctly, also wrt indentation. | |
a9c6d330 | 2374 | |
30b0da81 RS |
2375 | *** Support for the AWK language. |
2376 | Support for the AWK language has been introduced. The implementation is | |
2377 | based around GNU AWK version 3.1, but it should work pretty well with | |
2378 | any AWK. As yet, not all features of CC Mode have been adapted for AWK. | |
2379 | Here is a summary: | |
2d4ef682 | 2380 | |
30b0da81 RS |
2381 | **** Indentation Engine |
2382 | The CC Mode indentation engine fully supports AWK mode. | |
a4fc6fc9 | 2383 | |
30b0da81 RS |
2384 | AWK mode handles code formatted in the conventional AWK fashion: `{'s |
2385 | which start actions, user-defined functions, or compound statements are | |
2386 | placed on the same line as the associated construct; the matching `}'s | |
2387 | are normally placed under the start of the respective pattern, function | |
2388 | definition, or structured statement. | |
5e101746 | 2389 | |
7b18d88f AM |
2390 | The predefined line-up functions haven't yet been adapted for AWK |
2391 | mode, though some of them may work serendipitously. There shouldn't | |
2392 | be any problems writing custom indentation functions for AWK mode. | |
b54cfb55 | 2393 | |
30b0da81 RS |
2394 | **** Font Locking |
2395 | There is a single level of font locking in AWK mode, rather than the | |
2396 | three distinct levels the other modes have. There are several | |
2397 | idiosyncrasies in AWK mode's font-locking due to the peculiarities of | |
2398 | the AWK language itself. | |
7cc8f35a | 2399 | |
7b18d88f AM |
2400 | **** Comment and Movement Commands |
2401 | These commands all work for AWK buffers. The notion of "defun" has | |
2402 | been augmented to include AWK pattern-action pairs - the standard | |
2403 | "defun" commands on key sequences C-M-a, C-M-e, and C-M-h use this | |
2404 | extended definition. | |
e0c124ce | 2405 | |
7b18d88f AM |
2406 | **** "awk" style, Auto-newline Insertion and Clean-ups |
2407 | A new style, "awk" has been introduced, and this is now the default | |
2408 | style for AWK code. With auto-newline enabled, the clean-up | |
2409 | c-one-liner-defun (see above) is useful. | |
7cc8f35a | 2410 | |
30b0da81 RS |
2411 | *** New syntactic symbols in IDL mode. |
2412 | The top level constructs "module" and "composition" (from CIDL) are | |
2413 | now handled like "namespace" in C++: They are given syntactic symbols | |
2414 | module-open, module-close, inmodule, composition-open, | |
2415 | composition-close, and incomposition. | |
6625fc7d | 2416 | |
30b0da81 | 2417 | *** New functions to do hungry delete without enabling hungry delete mode. |
7b18d88f AM |
2418 | The new functions `c-hungry-backspace' and `c-hungry-delete-forward' |
2419 | provide hungry deletion without having to toggle a mode. They are | |
2420 | bound to C-c C-DEL and C-c C-d (and several variants, for the benefit | |
2421 | of different keyboard setups. See "Changes in key sequences" above). | |
6625fc7d | 2422 | |
7daddde2 | 2423 | *** Better control over `require-final-newline'. |
cb8d4d07 | 2424 | |
7daddde2 RS |
2425 | The variable `c-require-final-newline' specifies which of the modes |
2426 | implemented by CC mode should insert final newlines. Its value is a | |
2427 | list of modes, and only those modes should do it. By default the list | |
2428 | includes C, C++ and Objective-C modes. | |
2429 | ||
2430 | Whichever modes are in this list will set `require-final-newline' | |
2431 | based on `mode-require-final-newline'. | |
4e3dd7cf | 2432 | |
30b0da81 | 2433 | *** Format change for syntactic context elements. |
7daddde2 RS |
2434 | |
2435 | The elements in the syntactic context returned by `c-guess-basic-syntax' | |
2436 | and stored in `c-syntactic-context' has been changed somewhat to allow | |
30b0da81 RS |
2437 | attaching more information. They are now lists instead of single cons |
2438 | cells. E.g. a line that previously had the syntactic analysis | |
00b1ee61 | 2439 | |
30b0da81 | 2440 | ((inclass . 11) (topmost-intro . 13)) |
00b1ee61 | 2441 | |
2c7a8f63 | 2442 | is now analyzed as |
00b1ee61 | 2443 | |
30b0da81 | 2444 | ((inclass 11) (topmost-intro 13)) |
00b1ee61 | 2445 | |
30b0da81 RS |
2446 | In some cases there are more than one position given for a syntactic |
2447 | symbol. | |
00b1ee61 | 2448 | |
7b18d88f AM |
2449 | This change might affect code that calls `c-guess-basic-syntax' |
2450 | directly, and custom lineup functions if they use | |
2451 | `c-syntactic-context'. However, the argument given to lineup | |
2452 | functions is still a single cons cell with nil or an integer in the | |
2453 | cdr. | |
93607efd | 2454 | |
30b0da81 | 2455 | *** API changes for derived modes. |
7daddde2 | 2456 | |
30b0da81 RS |
2457 | There have been extensive changes "under the hood" which can affect |
2458 | derived mode writers. Some of these changes are likely to cause | |
2459 | incompatibilities with existing derived modes, but on the other hand | |
2460 | care has now been taken to make it possible to extend and modify CC | |
2461 | Mode with less risk of such problems in the future. | |
93607efd | 2462 | |
30b0da81 | 2463 | **** New language variable system. |
7b18d88f AM |
2464 | These are variables whose values vary between CC Mode's different |
2465 | languages. See the comment blurb near the top of cc-langs.el. | |
93607efd | 2466 | |
30b0da81 RS |
2467 | **** New initialization functions. |
2468 | The initialization procedure has been split up into more functions to | |
7daddde2 RS |
2469 | give better control: `c-basic-common-init', `c-font-lock-init', and |
2470 | `c-init-language-vars'. | |
93607efd | 2471 | |
30b0da81 RS |
2472 | *** Changes in analysis of nested syntactic constructs. |
2473 | The syntactic analysis engine has better handling of cases where | |
2474 | several syntactic constructs appear nested on the same line. They are | |
2475 | now handled as if each construct started on a line of its own. | |
93607efd | 2476 | |
30b0da81 RS |
2477 | This means that CC Mode now indents some cases differently, and |
2478 | although it's more consistent there might be cases where the old way | |
2479 | gave results that's more to one's liking. So if you find a situation | |
2480 | where you think that the indentation has become worse, please report | |
2481 | it to bug-cc-mode@gnu.org. | |
93607efd | 2482 | |
30b0da81 RS |
2483 | **** New syntactic symbol substatement-label. |
2484 | This symbol is used when a label is inserted between a statement and | |
2485 | its substatement. E.g: | |
2486 | ||
2487 | if (x) | |
2488 | x_is_true: | |
2489 | do_stuff(); | |
2490 | ||
2491 | *** Better handling of multiline macros. | |
2492 | ||
2493 | **** Syntactic indentation inside macros. | |
2494 | The contents of multiline #define's are now analyzed and indented | |
2495 | syntactically just like other code. This can be disabled by the new | |
7daddde2 RS |
2496 | variable `c-syntactic-indentation-in-macros'. A new syntactic symbol |
2497 | `cpp-define-intro' has been added to control the initial indentation | |
2498 | inside `#define's. | |
2499 | ||
2500 | **** New lineup function `c-lineup-cpp-define'. | |
30b0da81 | 2501 | |
30b0da81 RS |
2502 | Now used by default to line up macro continuation lines. The behavior |
2503 | of this function closely mimics the indentation one gets if the macro | |
2504 | is indented while the line continuation backslashes are temporarily | |
2505 | removed. If syntactic indentation in macros is turned off, it works | |
7daddde2 | 2506 | much line `c-lineup-dont-change', which was used earlier, but handles |
30b0da81 RS |
2507 | empty lines within the macro better. |
2508 | ||
2509 | **** Automatically inserted newlines continues the macro if used within one. | |
2510 | This applies to the newlines inserted by the auto-newline mode, and to | |
7daddde2 | 2511 | `c-context-line-break' and `c-context-open-line'. |
30b0da81 RS |
2512 | |
2513 | **** Better alignment of line continuation backslashes. | |
7daddde2 | 2514 | `c-backslash-region' tries to adapt to surrounding backslashes. New |
7b18d88f | 2515 | variable `c-backslash-max-column' puts a limit on how far out |
30b0da81 RS |
2516 | backslashes can be moved. |
2517 | ||
2518 | **** Automatic alignment of line continuation backslashes. | |
7daddde2 RS |
2519 | This is controlled by the new variable `c-auto-align-backslashes'. It |
2520 | affects `c-context-line-break', `c-context-open-line' and newlines | |
2521 | inserted in Auto-Newline mode. | |
7daddde2 | 2522 | |
7b18d88f | 2523 | **** Line indentation works better inside macros. |
30b0da81 RS |
2524 | Regardless whether syntactic indentation and syntactic indentation |
2525 | inside macros are enabled or not, line indentation now ignores the | |
2526 | line continuation backslashes. This is most noticeable when syntactic | |
2527 | indentation is turned off and there are empty lines (save for the | |
2528 | backslash) in the macro. | |
2529 | ||
2530 | *** indent-for-comment is more customizable. | |
2531 | The behavior of M-; (indent-for-comment) is now configurable through | |
7b18d88f AM |
2532 | the variable `c-indent-comment-alist'. The indentation behavior is |
2533 | based on the preceding code on the line, e.g. to get two spaces after | |
2534 | #else and #endif but indentation to `comment-column' in most other | |
2535 | cases (something which was hardcoded earlier). | |
30b0da81 | 2536 | |
7daddde2 RS |
2537 | *** New function `c-context-open-line'. |
2538 | It's the open-line equivalent of `c-context-line-break'. | |
30b0da81 RS |
2539 | |
2540 | *** New lineup functions | |
2541 | ||
7daddde2 | 2542 | **** `c-lineup-string-cont' |
30b0da81 RS |
2543 | This lineup function lines up a continued string under the one it |
2544 | continues. E.g: | |
2545 | ||
2546 | result = prefix + "A message " | |
2547 | "string."; <- c-lineup-string-cont | |
2548 | ||
7daddde2 | 2549 | **** `c-lineup-cascaded-calls' |
30b0da81 RS |
2550 | Lines up series of calls separated by "->" or ".". |
2551 | ||
7daddde2 | 2552 | **** `c-lineup-knr-region-comment' |
30b0da81 RS |
2553 | Gives (what most people think is) better indentation of comments in |
2554 | the "K&R region" between the function header and its body. | |
2555 | ||
7daddde2 RS |
2556 | **** `c-lineup-gcc-asm-reg' |
2557 | Provides better indentation inside asm blocks. | |
30b0da81 | 2558 | |
7daddde2 | 2559 | **** `c-lineup-argcont' |
30b0da81 | 2560 | Lines up continued function arguments after the preceding comma. |
30b0da81 RS |
2561 | |
2562 | *** Better caching of the syntactic context. | |
2563 | CC Mode caches the positions of the opening parentheses (of any kind) | |
2564 | of the lists surrounding the point. Those positions are used in many | |
2565 | places as anchor points for various searches. The cache is now | |
2566 | improved so that it can be reused to a large extent when the point is | |
2567 | moved. The less it moves, the less needs to be recalculated. | |
2568 | ||
2569 | The effect is that CC Mode should be fast most of the time even when | |
2570 | opening parens are hung (i.e. aren't in column zero). It's typically | |
2571 | only the first time after the point is moved far down in a complex | |
2572 | file that it'll take noticeable time to find out the syntactic | |
2573 | context. | |
2574 | ||
2575 | *** Statements are recognized in a more robust way. | |
2576 | Statements are recognized most of the time even when they occur in an | |
2577 | "invalid" context, e.g. in a function argument. In practice that can | |
2578 | happen when macros are involved. | |
2579 | ||
7daddde2 | 2580 | *** Improved the way `c-indent-exp' chooses the block to indent. |
30b0da81 RS |
2581 | It now indents the block for the closest sexp following the point |
2582 | whose closing paren ends on a different line. This means that the | |
2583 | point doesn't have to be immediately before the block to indent. | |
2584 | Also, only the block and the closing line is indented; the current | |
2585 | line is left untouched. | |
2586 | ||
2587 | *** Added toggle for syntactic indentation. | |
7daddde2 | 2588 | The function `c-toggle-syntactic-indentation' can be used to toggle |
30b0da81 RS |
2589 | syntactic indentation. |
2590 | ||
090475f3 SM |
2591 | ** In sh-script, a continuation line is only indented if the backslash was |
2592 | preceded by a SPC or a TAB. | |
290e4707 | 2593 | |
30b0da81 RS |
2594 | --- |
2595 | ** Perl mode has a new variable `perl-indent-continued-arguments'. | |
2596 | ||
da9356b0 RS |
2597 | --- |
2598 | ** The old Octave mode bindings C-c f and C-c i have been changed | |
2599 | to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate | |
2600 | bindings on control characters--thus, C-c C-i C-b is the same as | |
2601 | C-c C-i b, and so on. | |
2602 | ||
406c0f12 RS |
2603 | ** Fortran mode changes: |
2604 | ||
30b0da81 | 2605 | --- |
406c0f12 | 2606 | *** Fortran mode does more font-locking by default. Use level 3 |
30b0da81 | 2607 | highlighting for the old default. |
93607efd | 2608 | |
e42d6474 | 2609 | +++ |
406c0f12 | 2610 | *** Fortran mode has a new variable `fortran-directive-re'. |
30b0da81 RS |
2611 | Adapt this to match the format of any compiler directives you use. |
2612 | Lines that match are never indented, and are given distinctive font-locking. | |
e42d6474 | 2613 | |
2b6bb1f2 | 2614 | +++ |
406c0f12 | 2615 | *** F90 mode and Fortran mode have new navigation commands |
30b0da81 RS |
2616 | `f90-end-of-block', `f90-beginning-of-block', `f90-next-block', |
2617 | `f90-previous-block', `fortran-end-of-block', | |
2618 | `fortran-beginning-of-block'. | |
2619 | ||
2620 | --- | |
7daddde2 | 2621 | *** F90 mode and Fortran mode have support for `hs-minor-mode' (hideshow). |
30b0da81 RS |
2622 | It cannot deal with every code format, but ought to handle a sizeable |
2623 | majority. | |
2624 | ||
2625 | --- | |
406c0f12 | 2626 | *** The new function `f90-backslash-not-special' can be used to change |
30b0da81 RS |
2627 | the syntax of backslashes in F90 buffers. |
2628 | ||
2629 | --- | |
1918f5d5 | 2630 | ** Reftex mode changes |
f7735be5 | 2631 | |
b878c6c0 CD |
2632 | +++ |
2633 | *** Changes to RefTeX's table of contents | |
1918f5d5 CD |
2634 | |
2635 | The new command keys "<" and ">" in the TOC buffer promote/demote the | |
2636 | section at point or all sections in the current region, with full | |
2637 | support for multifile documents. | |
2638 | ||
2639 | The new command `reftex-toc-recenter' (`C-c -') shows the current | |
2640 | section in the TOC buffer without selecting the TOC window. | |
2641 | Recentering can happen automatically in idle time when the option | |
2642 | `reftex-auto-recenter-toc' is turned on. The highlight in the TOC | |
2643 | buffer stays when the focus moves to a different window. A dedicated | |
2644 | frame can show the TOC with the current section always automatically | |
2645 | highlighted. The frame is created and deleted from the toc buffer | |
2646 | with the `d' key. | |
2647 | ||
1918f5d5 CD |
2648 | The toc window can be split off horizontally instead of vertically. |
2649 | See new option `reftex-toc-split-windows-horizontally'. | |
2650 | ||
b878c6c0 CD |
2651 | Labels can be renamed globally from the table of contents using the |
2652 | key `M-%'. | |
2653 | ||
2654 | The new command `reftex-goto-label' jumps directly to a label | |
2655 | location. | |
2656 | ||
2657 | +++ | |
2658 | *** Changes related to citations and BibTeX database files | |
1918f5d5 | 2659 | |
b878c6c0 | 2660 | Commands that insert a citation now prompt for optional arguments when |
1918f5d5 CD |
2661 | called with a prefix argument. Related new options are |
2662 | `reftex-cite-prompt-optional-args' and `reftex-cite-cleanup-optional-args'. | |
2663 | ||
2664 | The new command `reftex-create-bibtex-file' creates a BibTeX database | |
2665 | with all entries referenced in the current document. The keys "e" and | |
2666 | "E" allow to produce a BibTeX database file from entries marked in a | |
b878c6c0 | 2667 | citation selection buffer. |
1918f5d5 | 2668 | |
b878c6c0 CD |
2669 | The command `reftex-citation' uses the word in the buffer before the |
2670 | cursor as a default search string. | |
1918f5d5 CD |
2671 | |
2672 | The support for chapterbib has been improved. Different chapters can | |
2673 | now use BibTeX or an explicit `thebibliography' environment. | |
2674 | ||
2675 | The macros which specify the bibliography file (like \bibliography) | |
2676 | can be configured with the new option `reftex-bibliography-commands'. | |
2677 | ||
2678 | Support for jurabib has been added. | |
2679 | ||
b878c6c0 CD |
2680 | +++ |
2681 | *** Global index matched may be verified with a user function | |
1918f5d5 CD |
2682 | |
2683 | During global indexing, a user function can verify an index match. | |
2684 | See new option `reftex-index-verify-function'. | |
2685 | ||
b878c6c0 CD |
2686 | +++ |
2687 | *** Parsing documents with many labels can be sped up. | |
1918f5d5 CD |
2688 | |
2689 | Operating in a document with thousands of labels can be sped up | |
b878c6c0 | 2690 | considerably by allowing RefTeX to derive the type of a label directly |
1918f5d5 CD |
2691 | from the label prefix like `eq:' or `fig:'. The option |
2692 | `reftex-trust-label-prefix' needs to be configured in order to enable | |
2693 | this feature. While the speed-up is significant, this may reduce the | |
2694 | quality of the context offered by RefTeX to describe a label. | |
2695 | ||
b878c6c0 CD |
2696 | +++ |
2697 | *** Miscellaneous changes | |
2698 | ||
2699 | The macros which input a file in LaTeX (like \input, \include) can be | |
2700 | configured in the new option `reftex-include-file-commands'. | |
2701 | ||
2702 | RefTeX supports global incremental search. | |
2703 | ||
1918f5d5 | 2704 | +++ |
30b0da81 RS |
2705 | ** Prolog mode has a new variable `prolog-font-lock-keywords' |
2706 | to support use of font-lock. | |
2707 | ||
406c0f12 RS |
2708 | ** HTML/SGML changes: |
2709 | ||
30b0da81 | 2710 | --- |
406c0f12 | 2711 | *** Emacs now tries to set up buffer coding systems for HTML/XML files |
30b0da81 | 2712 | automatically. |
a207b33c | 2713 | |
e42d6474 | 2714 | +++ |
406c0f12 | 2715 | *** SGML mode has indentation and supports XML syntax. |
30b0da81 RS |
2716 | The new variable `sgml-xml-mode' tells SGML mode to use XML syntax. |
2717 | When this option is enabled, SGML tags are inserted in XML style, | |
2718 | i.e., there is always a closing tag. | |
2719 | By default, its setting is inferred on a buffer-by-buffer basis | |
2720 | from the file name or buffer contents. | |
2721 | ||
e22fdc36 RW |
2722 | *** The variable `sgml-transformation' has been renamed to |
2723 | `sgml-transformation-function'. The old name is still available as | |
2724 | alias. | |
2725 | ||
30b0da81 | 2726 | +++ |
406c0f12 | 2727 | *** `xml-mode' is now an alias for `sgml-mode', which has XML support. |
30b0da81 RS |
2728 | |
2729 | ** TeX modes: | |
2730 | ||
2731 | +++ | |
2732 | *** C-c C-c prompts for a command to run, and tries to offer a good default. | |
2733 | ||
2734 | +++ | |
2735 | *** The user option `tex-start-options-string' has been replaced | |
2736 | by two new user options: `tex-start-options', which should hold | |
2737 | command-line options to feed to TeX, and `tex-start-commands' which should hold | |
2738 | TeX commands to use at startup. | |
2739 | ||
2740 | --- | |
2741 | *** verbatim environments are now highlighted in courier by font-lock | |
2742 | and super/sub-scripts are made into super/sub-scripts. | |
2743 | ||
2744 | +++ | |
7daddde2 | 2745 | *** New major mode Doctex mode, for *.dtx files. |
30b0da81 RS |
2746 | |
2747 | ** BibTeX mode: | |
7daddde2 RS |
2748 | |
2749 | *** The new command `bibtex-url' browses a URL for the BibTeX entry at | |
30b0da81 RS |
2750 | point (bound to C-c C-l and mouse-2, RET on clickable fields). |
2751 | ||
7daddde2 | 2752 | *** The new command `bibtex-entry-update' (bound to C-c C-u) updates |
f7735be5 EZ |
2753 | an existing BibTeX entry by inserting fields that may occur but are not |
2754 | present. | |
30b0da81 RS |
2755 | |
2756 | *** New `bibtex-entry-format' option `required-fields', enabled by default. | |
2757 | ||
7daddde2 | 2758 | *** `bibtex-maintain-sorted-entries' can take values `plain', |
30b0da81 RS |
2759 | `crossref', and `entry-class' which control the sorting scheme used |
2760 | for BibTeX entries. `bibtex-sort-entry-class' controls the sorting | |
2761 | scheme `entry-class'. TAB completion for reference keys and | |
2762 | automatic detection of duplicates does not require anymore that | |
7daddde2 | 2763 | `bibtex-maintain-sorted-entries' is non-nil. |
e42d6474 | 2764 | |
7daddde2 | 2765 | *** If the new variable `bibtex-parse-keys-fast' is non-nil, |
30b0da81 | 2766 | use fast but simplified algorithm for parsing BibTeX keys. |
59035302 | 2767 | |
7daddde2 | 2768 | *** If the new variable `bibtex-autoadd-commas' is non-nil, |
30b0da81 | 2769 | automatically add missing commas at end of BibTeX fields. |
59035302 | 2770 | |
7daddde2 | 2771 | *** The new variable `bibtex-autofill-types' contains a list of entry |
30b0da81 | 2772 | types for which fields are filled automatically (if possible). |
2a075e37 | 2773 | |
7daddde2 | 2774 | *** The new command `bibtex-complete' completes word fragment before |
30b0da81 | 2775 | point according to context (bound to M-tab). |
2a075e37 | 2776 | |
7daddde2 | 2777 | *** The new commands `bibtex-find-entry' and `bibtex-find-crossref' |
30b0da81 RS |
2778 | locate entries and crossref'd entries (bound to C-c C-s and C-c C-x). |
2779 | Crossref fields are clickable (bound to mouse-2, RET). | |
d9f7eb77 | 2780 | |
7daddde2 | 2781 | *** In BibTeX mode the command `fill-paragraph' (M-q) fills |
30b0da81 | 2782 | individual fields of a BibTeX entry. |
b54cfb55 | 2783 | |
7daddde2 | 2784 | *** The new variables `bibtex-files' and `bibtex-file-path' define a set |
30b0da81 | 2785 | of BibTeX files that are searched for entry keys. |
4e3dd7cf | 2786 | |
7daddde2 | 2787 | *** The new command `bibtex-validate-globally' checks for duplicate keys |
30b0da81 | 2788 | in multiple BibTeX files. |
4e3dd7cf | 2789 | |
7daddde2 | 2790 | *** The new command `bibtex-copy-summary-as-kill' pushes summary |
30b0da81 | 2791 | of BibTeX entry to kill ring (bound to C-c C-t). |
c721078e | 2792 | |
cdc61d35 SM |
2793 | *** The new variables bibtex-expand-strings and |
2794 | bibtex-autokey-expand-strings control the expansion of strings when | |
2795 | extracting the content of a BibTeX field. | |
2796 | ||
77e98f4c RW |
2797 | *** The variables `bibtex-autokey-name-case-convert' and |
2798 | `bibtex-autokey-titleword-case-convert' have been renamed to | |
2799 | `bibtex-autokey-name-case-convert-function' and | |
2800 | `bibtex-autokey-titleword-case-convert-function'. The old names are | |
2801 | still available as aliases. | |
2802 | ||
e22fdc36 RW |
2803 | ** In Artist mode the variable `artist-text-renderer' has been |
2804 | renamed to `artist-text-renderer-function'. The old name is still | |
2805 | available as alias. | |
2806 | ||
30b0da81 RS |
2807 | +++ |
2808 | ** In Enriched mode, `set-left-margin' and `set-right-margin' are now | |
2809 | by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l' | |
2810 | and `C-c C-r'. | |
63db1bb3 | 2811 | |
406c0f12 RS |
2812 | ** GUD changes: |
2813 | ||
2b6bb1f2 | 2814 | +++ |
406c0f12 | 2815 | *** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program |
4febb0e7 RS |
2816 | counter to the specified source line (the one where point is). |
2817 | ||
30b0da81 | 2818 | --- |
406c0f12 | 2819 | *** GUD mode has its own tool bar for controlling execution of the inferior |
30b0da81 RS |
2820 | and other common debugger commands. |
2821 | ||
da9356b0 RS |
2822 | +++ |
2823 | *** The new package gdb-ui.el provides an enhanced graphical interface to | |
b65dd340 | 2824 | GDB. You can interact with GDB through the GUD buffer in the usual way, but |
da9356b0 | 2825 | there are also further buffers which control the execution and describe the |
e6467bba | 2826 | state of your program. It can separate the input/output of your program from |
da9356b0 | 2827 | that of GDB and watches expressions in the speedbar. It also uses features of |
1bef8597 | 2828 | Emacs 21/22 such as the toolbar, and bitmaps in the fringe to indicate |
e6467bba | 2829 | breakpoints. |
da9356b0 | 2830 | |
b65dd340 NR |
2831 | To use this package just type M-x gdb. See the Emacs manual if you want the |
2832 | old behaviour. | |
da9356b0 | 2833 | |
639ec765 | 2834 | *** The variable tooltip-gud-tips-p has been removed. GUD tooltips can now be |
9432a9de NR |
2835 | toggled independently of normal tooltips with the minor mode |
2836 | `gud-tooltip-mode'. | |
da9356b0 RS |
2837 | |
2838 | +++ | |
2839 | *** In graphical mode, with a C program, GUD Tooltips have been extended to | |
2840 | display the #define directive associated with an identifier when program is | |
2841 | not executing. | |
2842 | ||
2b6bb1f2 | 2843 | --- |
ca64d378 | 2844 | ** GUD mode improvements for jdb: |
a1e3dda0 | 2845 | |
f7735be5 EZ |
2846 | *** Search for source files using jdb classpath and class information. |
2847 | Fast startup since there is no need to scan all source files up front. | |
2848 | There is also no need to create and maintain lists of source | |
2849 | directories to scan. Look at `gud-jdb-use-classpath' and | |
2850 | `gud-jdb-classpath' customization variables documentation. | |
a1e3dda0 RS |
2851 | |
2852 | *** Supports the standard breakpoint (gud-break, gud-clear) | |
f7735be5 EZ |
2853 | set/clear operations from Java source files under the classpath, stack |
2854 | traversal (gud-up, gud-down), and run until current stack finish | |
2855 | (gud-finish). | |
a1e3dda0 RS |
2856 | |
2857 | *** Supports new jdb (Java 1.2 and later) in addition to oldjdb | |
f7735be5 | 2858 | (Java 1.1 jdb). |
a1e3dda0 RS |
2859 | |
2860 | *** The previous method of searching for source files has been | |
f7735be5 EZ |
2861 | preserved in case someone still wants/needs to use it. |
2862 | Set `gud-jdb-use-classpath' to nil. | |
a1e3dda0 | 2863 | |
f7735be5 | 2864 | *** Added Customization Variables |
a1e3dda0 | 2865 | |
f7735be5 | 2866 | **** `gud-jdb-command-name'. What command line to use to invoke jdb. |
a1e3dda0 | 2867 | |
f7735be5 EZ |
2868 | **** `gud-jdb-use-classpath'. Allows selection of java source file searching |
2869 | method: set to t for new method, nil to scan `gud-jdb-directories' for | |
2870 | java sources (previous method). | |
a1e3dda0 | 2871 | |
f7735be5 EZ |
2872 | **** `gud-jdb-directories'. List of directories to scan and search for Java |
2873 | classes using the original gud-jdb method (if `gud-jdb-use-classpath' | |
2874 | is nil). | |
a1e3dda0 | 2875 | |
f7735be5 | 2876 | *** Minor Improvements |
a1e3dda0 | 2877 | |
f7735be5 | 2878 | **** The STARTTLS wrapper (starttls.el) can now use GNUTLS |
7daddde2 RS |
2879 | instead of the OpenSSL based `starttls' tool. For backwards |
2880 | compatibility, it prefers `starttls', but you can toggle | |
9e94e254 | 2881 | `starttls-use-gnutls' to switch to GNUTLS (or simply remove the |
7daddde2 | 2882 | `starttls' tool). |
9e94e254 | 2883 | |
f7735be5 | 2884 | **** Do not allow debugger output history variable to grow without bounds. |
a1e3dda0 | 2885 | |
406c0f12 RS |
2886 | ** Auto-Revert changes: |
2887 | ||
1c6576ab | 2888 | +++ |
406c0f12 | 2889 | *** You can now use Auto Revert mode to `tail' a file. |
7daddde2 | 2890 | |
30b0da81 RS |
2891 | If point is at the end of a file buffer before reverting, Auto Revert |
2892 | mode keeps it at the end after reverting. Similarly if point is | |
2893 | displayed at the end of a file buffer in any window, it stays at | |
2894 | the end of the buffer in that window. This allows to tail a file: | |
2895 | just put point at the end of the buffer and it stays there. This | |
da9356b0 | 2896 | rule applies to file buffers. For non-file buffers, the behavior can |
30b0da81 | 2897 | be mode dependent. |
16927a56 | 2898 | |
30b0da81 RS |
2899 | If you are sure that the file will only change by growing at the end, |
2900 | then you can tail the file more efficiently by using the new minor | |
2901 | mode Auto Revert Tail mode. The function `auto-revert-tail-mode' | |
2902 | toggles this mode. | |
3aa2f38a | 2903 | |
1c6576ab | 2904 | +++ |
406c0f12 | 2905 | *** Auto Revert mode is now more careful to avoid excessive reverts and |
30b0da81 RS |
2906 | other potential problems when deciding which non-file buffers to |
2907 | revert. This matters especially if Global Auto Revert mode is enabled | |
2908 | and `global-auto-revert-non-file-buffers' is non-nil. Auto Revert | |
2909 | mode only reverts a non-file buffer if the buffer has a non-nil | |
2910 | `revert-buffer-function' and a non-nil `buffer-stale-function', which | |
2911 | decides whether the buffer should be reverted. Currently, this means | |
2912 | that auto reverting works for Dired buffers (although this may not | |
2913 | work properly on all operating systems) and for the Buffer Menu. | |
6c0b2643 | 2914 | |
a775dff4 | 2915 | +++ |
406c0f12 | 2916 | *** If the new user option `auto-revert-check-vc-info' is non-nil, Auto |
30b0da81 RS |
2917 | Revert mode reliably updates version control info (such as the version |
2918 | control number in the mode line), in all version controlled buffers in | |
2919 | which it is active. If the option is nil, the default, then this info | |
2920 | only gets updated whenever the buffer gets reverted. | |
c60ee5e7 | 2921 | |
1c6576ab | 2922 | --- |
30b0da81 | 2923 | ** recentf changes. |
33d0b73f | 2924 | |
f7735be5 | 2925 | The recent file list is now automatically cleaned up when recentf mode is |
30b0da81 RS |
2926 | enabled. The new option `recentf-auto-cleanup' controls when to do |
2927 | automatic cleanup. | |
554b59cd | 2928 | |
6d0bcf3c DP |
2929 | The ten most recent files can be quickly opened by using the shortcut |
2930 | keys 1 to 9, and 0, when the recent list is displayed in a buffer via | |
2931 | the `recentf-open-files', or `recentf-open-more-files' commands. | |
2932 | ||
30b0da81 RS |
2933 | The `recentf-keep' option replaces `recentf-keep-non-readable-files-p' |
2934 | and provides a more general mechanism to customize which file names to | |
2935 | keep in the recent list. | |
f43ae016 | 2936 | |
6d0bcf3c DP |
2937 | With the more advanced option `recentf-filename-handlers', you can |
2938 | specify functions that successively transform recent file names. For | |
2939 | example, if set to `file-truename' plus `abbreviate-file-name', the | |
2940 | same file will not be in the recent list with different symbolic | |
2941 | links, and the file name will be abbreviated. | |
97f3be50 | 2942 | |
30b0da81 RS |
2943 | To follow naming convention, `recentf-menu-append-commands-flag' |
2944 | replaces the misnamed option `recentf-menu-append-commands-p'. The | |
2945 | old name remains available as alias, but has been marked obsolete. | |
b9e6b498 | 2946 | |
0fbe422d | 2947 | +++ |
30b0da81 | 2948 | ** Desktop package |
0fbe422d | 2949 | |
a775dff4 | 2950 | +++ |
7daddde2 RS |
2951 | *** Desktop saving is now a minor mode, `desktop-save-mode'. |
2952 | ||
a6b017c9 | 2953 | +++ |
7daddde2 RS |
2954 | *** The variable `desktop-enable' is obsolete. |
2955 | ||
2956 | Customize `desktop-save-mode' to enable desktop saving. | |
d71d20ea | 2957 | |
30b0da81 RS |
2958 | --- |
2959 | *** Buffers are saved in the desktop file in the same order as that in the | |
2960 | buffer list. | |
3f270c8a | 2961 | |
85df292e | 2962 | +++ |
7daddde2 RS |
2963 | *** The desktop package can be customized to restore only some buffers |
2964 | immediately, remaining buffers are restored lazily (when Emacs is | |
2965 | idle). | |
fc08c987 | 2966 | |
30b0da81 RS |
2967 | +++ |
2968 | *** New commands: | |
2969 | - desktop-revert reverts to the last loaded desktop. | |
2970 | - desktop-change-dir kills current desktop and loads a new. | |
2971 | - desktop-save-in-desktop-dir saves desktop in the directory from which | |
2972 | it was loaded. | |
2973 | - desktop-lazy-complete runs the desktop load to completion. | |
2974 | - desktop-lazy-abort aborts lazy loading of the desktop. | |
fc08c987 | 2975 | |
30b0da81 RS |
2976 | --- |
2977 | *** New customizable variables: | |
679ce4d5 | 2978 | - desktop-save. Determines whether the desktop should be saved when it is |
30b0da81 RS |
2979 | killed. |
2980 | - desktop-file-name-format. Format in which desktop file names should be saved. | |
2981 | - desktop-path. List of directories in which to lookup the desktop file. | |
2982 | - desktop-locals-to-save. List of local variables to save. | |
2983 | - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear. | |
2984 | - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear' | |
2985 | should not delete. | |
2986 | - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are | |
2987 | restored lazily (when Emacs is idle). | |
2988 | - desktop-lazy-verbose. Verbose reporting of lazily created buffers. | |
2989 | - desktop-lazy-idle-delay. Idle delay before starting to create buffers. | |
fc08c987 | 2990 | |
1c6576ab | 2991 | +++ |
30b0da81 | 2992 | *** New command line option --no-desktop |
3f270c8a | 2993 | |
30b0da81 RS |
2994 | --- |
2995 | *** New hooks: | |
2996 | - desktop-after-read-hook run after a desktop is loaded. | |
2997 | - desktop-no-desktop-file-hook run when no desktop file is found. | |
2998 | ||
2999 | --- | |
3000 | ** The saveplace.el package now filters out unreadable files. | |
a5768150 | 3001 | |
30b0da81 RS |
3002 | When you exit Emacs, the saved positions in visited files no longer |
3003 | include files that aren't readable, e.g. files that don't exist. | |
3004 | Customize the new option `save-place-forget-unreadable-files' to nil | |
3005 | to get the old behavior. The new options `save-place-save-skipped' | |
3006 | and `save-place-skip-check-regexp' allow further fine-tuning of this | |
3007 | feature. | |
c64a682c | 3008 | |
eb766f96 MK |
3009 | ** EDiff changes. |
3010 | ||
16757dcf | 3011 | +++ |
eb766f96 MK |
3012 | *** When comparing directories. |
3013 | Typing D brings up a buffer that lists the differences between the contents of | |
3014 | directories. Now it is possible to use this buffer to copy the missing files | |
3015 | from one directory to another. | |
3016 | ||
16757dcf | 3017 | +++ |
eb766f96 MK |
3018 | *** When comparing files or buffers. |
3019 | Typing the = key now offers to perform the word-by-word comparison of the | |
3020 | currently highlighted regions in an inferior Ediff session. If you answer 'n' | |
3021 | then it reverts to the old behavior and asks the user to select regions for | |
3022 | comparison. | |
3023 | ||
a6b017c9 | 3024 | +++ |
5d9c22fd | 3025 | *** The new command `ediff-backup' compares a file with its most recent |
813f3d41 RS |
3026 | backup using `ediff'. If you specify the name of a backup file, |
3027 | `ediff-backup' compares it with the file of which it is a backup. | |
3028 | ||
ca8f3642 | 3029 | +++ |
e94a3679 FP |
3030 | ** Etags changes. |
3031 | ||
73639417 FP |
3032 | *** New regular expressions features |
3033 | ||
3034 | **** New syntax for regular expressions, multi-line regular expressions. | |
a5768150 | 3035 | |
df3eebcb FP |
3036 | The syntax --ignore-case-regexp=/regex/ is now undocumented and retained |
3037 | only for backward compatibility. The new equivalent syntax is | |
3038 | --regex=/regex/i. More generally, it is --regex=/TAGREGEX/TAGNAME/MODS, | |
3039 | where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or | |
3040 | more characters among `i' (ignore case), `m' (multi-line) and `s' | |
6861f0e3 FP |
3041 | (single-line). The `m' and `s' modifiers behave as in Perl regular |
3042 | expressions: `m' allows regexps to match more than one line, while `s' | |
3043 | (which implies `m') means that `.' matches newlines. The ability to | |
3044 | span newlines allows writing of much more powerful regular expressions | |
3045 | and rapid prototyping for tagging new languages. | |
3046 | ||
a5768150 RS |
3047 | **** Regular expressions can use char escape sequences as in GCC. |
3048 | ||
6861f0e3 FP |
3049 | The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v, |
3050 | respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL, | |
f7735be5 | 3051 | CR, TAB, VT. |
6861f0e3 | 3052 | |
2c37653c | 3053 | **** Regular expressions can be bound to a given language. |
a5768150 | 3054 | |
df3eebcb FP |
3055 | The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags |
3056 | only for files of language LANGUAGE, and ignored otherwise. This is | |
3057 | particularly useful when storing regexps in a file. | |
3058 | ||
2c37653c | 3059 | **** Regular expressions can be read from a file. |
a5768150 | 3060 | |
df3eebcb FP |
3061 | The --regex=@regexfile option means read the regexps from a file, one |
3062 | per line. Lines beginning with space or tab are ignored. | |
3063 | ||
73639417 FP |
3064 | *** New language parsing features |
3065 | ||
d9256ccb | 3066 | **** The `::' qualifier triggers C++ parsing in C file. |
a5768150 | 3067 | |
d9256ccb FP |
3068 | Previously, only the `template' and `class' keywords had this effect. |
3069 | ||
2c7a8f63 | 3070 | **** The GCC __attribute__ keyword is now recognized and ignored. |
5dc59f2e | 3071 | |
dfcb9727 | 3072 | **** New language HTML. |
a5768150 RS |
3073 | |
3074 | Tags are generated for `title' as well as `h1', `h2', and `h3'. Also, | |
3075 | when `name=' is used inside an anchor and whenever `id=' is used. | |
dfcb9727 FP |
3076 | |
3077 | **** In Makefiles, constants are tagged. | |
a5768150 | 3078 | |
dfcb9727 FP |
3079 | If you want the old behavior instead, thus avoiding to increase the |
3080 | size of the tags file, use the --no-globals option. | |
3081 | ||
5dc59f2e | 3082 | **** New language Lua. |
a5768150 | 3083 | |
5dc59f2e | 3084 | All functions are tagged. |
dfcb9727 | 3085 | |
73639417 | 3086 | **** In Perl, packages are tags. |
a5768150 | 3087 | |
81d66c62 FP |
3088 | Subroutine tags are named from their package. You can jump to sub tags |
3089 | as you did before, by the sub name, or additionally by looking for | |
3090 | package::sub. | |
3091 | ||
dfcb9727 FP |
3092 | **** In Prolog, etags creates tags for rules in addition to predicates. |
3093 | ||
2c37653c | 3094 | **** New language PHP. |
a5768150 RS |
3095 | |
3096 | Functions, classes and defines are tags. If the --members option is | |
3097 | specified to etags, variables are tags also. | |
f175bfff | 3098 | |
73639417 | 3099 | **** New default keywords for TeX. |
a5768150 | 3100 | |
a0bbc0c5 FP |
3101 | The new keywords are def, newcommand, renewcommand, newenvironment and |
3102 | renewenvironment. | |
3103 | ||
af02e177 FP |
3104 | **** In C and derived languages, etags creates tags for #undef |
3105 | ||
679ce4d5 | 3106 | *** Honor #line directives. |
a5768150 | 3107 | |
81d66c62 FP |
3108 | When Etags parses an input file that contains C preprocessor's #line |
3109 | directives, it creates tags using the file name and line number | |
3110 | specified in those directives. This is useful when dealing with code | |
3111 | created from Cweb source files. When Etags tags the generated file, it | |
3112 | writes tags pointing to the source file. | |
bf8dd4e3 | 3113 | |
2c37653c | 3114 | *** New option --parse-stdin=FILE. |
a5768150 | 3115 | |
a0bbc0c5 | 3116 | This option is mostly useful when calling etags from programs. It can |
5cc4f104 | 3117 | be used (only once) in place of a file name on the command line. Etags |
dfcb9727 | 3118 | reads from standard input and marks the produced tags as belonging to |
a0bbc0c5 | 3119 | the file FILE. |
06ee6fcd | 3120 | |
30b0da81 | 3121 | ** VC Changes |
b5a67081 | 3122 | |
30b0da81 | 3123 | +++ |
a5768150 RS |
3124 | *** The key C-x C-q only changes the read-only state of the buffer |
3125 | (toggle-read-only). It no longer checks files in or out. | |
3126 | ||
3127 | We made this change because we held a poll and found that many users | |
3128 | were unhappy with the previous behavior. If you do prefer this | |
3129 | behavior, you can bind `vc-toggle-read-only' to C-x C-q in your | |
3130 | `.emacs' file: | |
b5a67081 | 3131 | |
30b0da81 | 3132 | (global-set-key "\C-x\C-q" 'vc-toggle-read-only) |
b5a67081 | 3133 | |
30b0da81 | 3134 | The function `vc-toggle-read-only' will continue to exist. |
b5a67081 | 3135 | |
30b0da81 | 3136 | +++ |
a5768150 RS |
3137 | *** The new variable `vc-cvs-global-switches' specifies switches that |
3138 | are passed to any CVS command invoked by VC. | |
3139 | ||
3140 | These switches are used as "global options" for CVS, which means they | |
3141 | are inserted before the command name. For example, this allows you to | |
3142 | specify a compression level using the `-z#' option for CVS. | |
b5a67081 | 3143 | |
30b0da81 RS |
3144 | +++ |
3145 | *** New backends for Subversion and Meta-CVS. | |
b5a67081 | 3146 | |
30b0da81 | 3147 | +++ |
a5768150 | 3148 | *** VC-Annotate mode enhancements |
b5a67081 | 3149 | |
a5768150 | 3150 | In VC-Annotate mode, you can now use the following key bindings for |
30b0da81 RS |
3151 | enhanced functionality to browse the annotations of past revisions, or |
3152 | to view diffs or log entries directly from vc-annotate-mode: | |
b5a67081 | 3153 | |
30b0da81 RS |
3154 | P: annotates the previous revision |
3155 | N: annotates the next revision | |
3156 | J: annotates the revision at line | |
3157 | A: annotates the revision previous to line | |
3158 | D: shows the diff of the revision at line with its previous revision | |
3159 | L: shows the log of the revision at line | |
3160 | W: annotates the workfile (most up to date) version | |
b5a67081 | 3161 | |
406c0f12 RS |
3162 | ** pcl-cvs changes: |
3163 | ||
30b0da81 | 3164 | +++ |
406c0f12 | 3165 | *** In pcl-cvs mode, there is a new `d y' command to view the diffs |
30b0da81 RS |
3166 | between the local version of the file and yesterday's head revision |
3167 | in the repository. | |
b5a67081 | 3168 | |
30b0da81 | 3169 | +++ |
406c0f12 | 3170 | *** In pcl-cvs mode, there is a new `d r' command to view the changes |
30b0da81 | 3171 | anyone has committed to the repository since you last executed |
a5768150 | 3172 | `checkout', `update' or `commit'. That means using cvs diff options |
30b0da81 | 3173 | -rBASE -rHEAD. |
b5a67081 | 3174 | |
c44da964 | 3175 | +++ |
a5768150 RS |
3176 | ** The new variable `mail-default-directory' specifies |
3177 | `default-directory' for mail buffers. This directory is used for | |
3178 | auto-save files of mail buffers. It defaults to "~/". | |
c44da964 RS |
3179 | |
3180 | +++ | |
a5768150 RS |
3181 | ** The mode line can indicate new mail in a directory or file. |
3182 | ||
3183 | See the documentation of the user option | |
c44da964 RS |
3184 | `display-time-mail-directory'. |
3185 | ||
da9356b0 RS |
3186 | ** Rmail changes: |
3187 | ||
3188 | --- | |
3189 | *** Rmail now displays 5-digit message ids in its summary buffer. | |
3190 | ||
c9ed8176 EZ |
3191 | *** The new commands rmail-end-of-message and rmail-summary end-of-message, |
3192 | by default bound to `/', go to the end of the current mail message in | |
3193 | Rmail and Rmail summary buffers. | |
3194 | ||
da9356b0 RS |
3195 | +++ |
3196 | *** Support for `movemail' from GNU mailutils was added to Rmail. | |
a5768150 | 3197 | |
da9356b0 RS |
3198 | This version of `movemail' allows to read mail from a wide range of |
3199 | mailbox formats, including remote POP3 and IMAP4 mailboxes with or | |
3200 | without TLS encryption. If GNU mailutils is installed on the system | |
3201 | and its version of `movemail' can be found in exec-path, it will be | |
3202 | used instead of the native one. | |
3203 | ||
30b0da81 | 3204 | ** Gnus package |
b5a67081 | 3205 | |
30b0da81 RS |
3206 | --- |
3207 | *** Gnus now includes Sieve and PGG | |
a5768150 | 3208 | |
30b0da81 RS |
3209 | Sieve is a library for managing Sieve scripts. PGG is a library to handle |
3210 | PGP/MIME. | |
b5a67081 | 3211 | |
30b0da81 RS |
3212 | --- |
3213 | *** There are many news features, bug fixes and improvements. | |
a5768150 | 3214 | |
30b0da81 | 3215 | See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details. |
b5a67081 | 3216 | |
30b0da81 RS |
3217 | --- |
3218 | ** MH-E changes. | |
b5a67081 | 3219 | |
70314b54 | 3220 | Upgraded to MH-E version 8.0.2. There have been major changes since |
30b0da81 | 3221 | version 5.0.2; see MH-E-NEWS for details. |
b5a67081 | 3222 | |
406c0f12 RS |
3223 | ** Calendar changes: |
3224 | ||
61298e17 RS |
3225 | +++ |
3226 | *** You can now use < and >, instead of C-x < and C-x >, to scroll | |
3227 | the calendar left or right. (The old key bindings still work too.) | |
3228 | ||
30b0da81 | 3229 | +++ |
406c0f12 | 3230 | *** There is a new calendar package, icalendar.el, that can be used to |
30b0da81 | 3231 | convert Emacs diary entries to/from the iCalendar format. |
b5a67081 | 3232 | |
30b0da81 | 3233 | +++ |
406c0f12 | 3234 | *** Diary sexp entries can have custom marking in the calendar. |
30b0da81 RS |
3235 | Diary sexp functions which only apply to certain days (such as |
3236 | `diary-block' or `diary-cyclic') now take an optional parameter MARK, | |
3237 | which is the name of a face or a single-character string indicating | |
3238 | how to highlight the day in the calendar display. Specifying a | |
3239 | single-character string as @var{mark} places the character next to the | |
3240 | day in the calendar. Specifying a face highlights the day with that | |
3241 | face. This lets you have different colors or markings for vacations, | |
3242 | appointments, paydays or anything else using a sexp. | |
b5a67081 | 3243 | |
30b0da81 | 3244 | +++ |
406c0f12 | 3245 | *** The new function `calendar-goto-day-of-year' (g D) prompts for a |
30b0da81 RS |
3246 | year and day number, and moves to that date. Negative day numbers |
3247 | count backward from the end of the year. | |
b5a67081 | 3248 | |
30b0da81 | 3249 | +++ |
406c0f12 | 3250 | *** The new Calendar function `calendar-goto-iso-week' (g w) |
30b0da81 RS |
3251 | prompts for a year and a week number, and moves to the first |
3252 | day of that ISO week. | |
b5a67081 | 3253 | |
30b0da81 | 3254 | --- |
406c0f12 | 3255 | *** The new variable `calendar-minimum-window-height' affects the |
30b0da81 | 3256 | window generated by the function `generate-calendar-window'. |
b5a67081 | 3257 | |
30b0da81 | 3258 | --- |
406c0f12 | 3259 | *** The functions `holiday-easter-etc' and `holiday-advent' now take |
30b0da81 RS |
3260 | optional arguments, in order to only report on the specified holiday |
3261 | rather than all. This makes customization of variables such as | |
3262 | `christian-holidays' simpler. | |
b5a67081 | 3263 | |
30b0da81 | 3264 | --- |
406c0f12 | 3265 | *** The function `simple-diary-display' now by default sets a header line. |
30b0da81 RS |
3266 | This can be controlled through the variables `diary-header-line-flag' |
3267 | and `diary-header-line-format'. | |
b5a67081 | 3268 | |
406c0f12 | 3269 | +++ |
a5768150 RS |
3270 | *** The procedure for activating appointment reminders has changed: |
3271 | use the new function `appt-activate'. The new variable | |
406c0f12 | 3272 | `appt-display-format' controls how reminders are displayed, replacing |
a5768150 | 3273 | `appt-issue-message', `appt-visible', and `appt-msg-window'. |
406c0f12 RS |
3274 | |
3275 | +++ | |
3276 | *** The new functions `diary-from-outlook', `diary-from-outlook-gnus', | |
3277 | and `diary-from-outlook-rmail' can be used to import diary entries | |
3278 | from Outlook-format appointments in mail messages. The variable | |
3279 | `diary-outlook-formats' can be customized to recognize additional | |
3280 | formats. | |
ffe5000a | 3281 | |
1ff10657 CY |
3282 | +++ |
3283 | ** Speedbar changes: | |
3284 | ||
3285 | *** Speedbar items can now be selected by clicking mouse-1, based on | |
3286 | the `mouse-1-click-follows-link' mechanism. | |
3287 | ||
3288 | *** SPC and DEL are no longer bound to scroll up/down in the speedbar | |
3289 | keymap. | |
3290 | ||
3291 | *** The new command `speedbar-toggle-line-expansion', bound to SPC, | |
3292 | contracts or expands the line under the cursor. | |
3293 | ||
3294 | *** New command `speedbar-create-directory', bound to `M'. | |
3295 | ||
3296 | *** The new commands `speedbar-expand-line-descendants' and | |
3297 | `speedbar-contract-line-descendants', bound to `[' and `]' | |
3298 | respectively, expand and contract the line under cursor with all of | |
3299 | its descendents. | |
3300 | ||
3301 | *** The new user option `speedbar-query-confirmation-method' controls | |
3302 | how querying is performed for file operations. A value of 'always | |
3303 | means to always query before file operations; 'none-but-delete means | |
3304 | to not query before any file operations, except before a file | |
3305 | deletion. | |
3306 | ||
3307 | *** The new user option `speedbar-select-frame-method' specifies how | |
3308 | to select a frame for displaying a file opened with the speedbar. A | |
3309 | value of 'attached means to use the attached frame (the frame that | |
3310 | speedbar was started from.) A number such as 1 or -1 means to pass | |
3311 | that number to `other-frame'. | |
3312 | ||
3313 | *** The new user option `speedbar-use-tool-tips-flag', if non-nil, | |
3314 | means to display tool-tips for speedbar items. | |
3315 | ||
3316 | *** The frame management code in speedbar.el has been split into a new | |
3317 | `dframe' library. Emacs Lisp code that makes use of the speedbar | |
3318 | should use `dframe-attached-frame' instead of | |
3319 | `speedbar-attached-frame', `dframe-timer' instead of `speedbar-timer', | |
3320 | `dframe-close-frame' instead of `speedbar-close-frame', and | |
3321 | `dframe-activity-change-focus-flag' instead of | |
3322 | `speedbar-activity-change-focus-flag'. The variables | |
3323 | `speedbar-update-speed' and `speedbar-navigating-speed' are also | |
3324 | obsolete; use `dframe-update-speed' instead. | |
3325 | ||
2b6bb1f2 | 3326 | --- |
30b0da81 | 3327 | ** sql changes. |
2461722b | 3328 | |
679ce4d5 | 3329 | *** The variable `sql-product' controls the highlighting of different |
30b0da81 RS |
3330 | SQL dialects. This variable can be set globally via Customize, on a |
3331 | buffer-specific basis via local variable settings, or for the current | |
3332 | session using the new SQL->Product submenu. (This menu replaces the | |
3333 | SQL->Highlighting submenu.) | |
2461722b | 3334 | |
30b0da81 | 3335 | The following values are supported: |
2461722b | 3336 | |
30b0da81 RS |
3337 | ansi ANSI Standard (default) |
3338 | db2 DB2 | |
3339 | informix Informix | |
3340 | ingres Ingres | |
3341 | interbase Interbase | |
3342 | linter Linter | |
3343 | ms Microsoft | |
3344 | mysql MySQL | |
3345 | oracle Oracle | |
3346 | postgres Postgres | |
3347 | solid Solid | |
3348 | sqlite SQLite | |
3349 | sybase Sybase | |
2461722b | 3350 | |
30b0da81 RS |
3351 | The current product name will be shown on the mode line following the |
3352 | SQL mode indicator. | |
2461722b | 3353 | |
30b0da81 | 3354 | The technique of setting `sql-mode-font-lock-defaults' directly in |
a5768150 | 3355 | your `.emacs' will no longer establish the default highlighting -- Use |
30b0da81 | 3356 | `sql-product' to accomplish this. |
cd3782b4 | 3357 | |
30b0da81 | 3358 | ANSI keywords are always highlighted. |
7920598e | 3359 | |
30b0da81 RS |
3360 | *** The function `sql-add-product-keywords' can be used to add |
3361 | font-lock rules to the product specific rules. For example, to have | |
a5768150 | 3362 | all identifiers ending in `_t' under MS SQLServer treated as a type, |
30b0da81 | 3363 | you would use the following line in your .emacs file: |
7920598e | 3364 | |
30b0da81 RS |
3365 | (sql-add-product-keywords 'ms |
3366 | '(("\\<\\w+_t\\>" . font-lock-type-face))) | |
2461722b | 3367 | |
a5768150 RS |
3368 | *** Oracle support includes keyword highlighting for Oracle 9i. |
3369 | ||
3370 | Most SQL and PL/SQL keywords are implemented. SQL*Plus commands are | |
30b0da81 | 3371 | highlighted in `font-lock-doc-face'. |
ffe5000a | 3372 | |
30b0da81 | 3373 | *** Microsoft SQLServer support has been significantly improved. |
a5768150 | 3374 | |
30b0da81 RS |
3375 | Keyword highlighting for SqlServer 2000 is implemented. |
3376 | sql-interactive-mode defaults to use osql, rather than isql, because | |
3377 | osql flushes its error stream more frequently. Thus error messages | |
3378 | are displayed when they occur rather than when the session is | |
3379 | terminated. | |
ffe5000a | 3380 | |
30b0da81 | 3381 | If the username and password are not provided to `sql-ms', osql is |
a5768150 | 3382 | called with the `-E' command line argument to use the operating system |
30b0da81 | 3383 | credentials to authenticate the user. |
cc801373 | 3384 | |
30b0da81 RS |
3385 | *** Postgres support is enhanced. |
3386 | Keyword highlighting of Postgres 7.3 is implemented. Prompting for | |
3387 | the username and the pgsql `-U' option is added. | |
cc801373 | 3388 | |
30b0da81 | 3389 | *** MySQL support is enhanced. |
679ce4d5 | 3390 | Keyword highlighting of MySql 4.0 is implemented. |
ffe5000a | 3391 | |
30b0da81 RS |
3392 | *** Imenu support has been enhanced to locate tables, views, indexes, |
3393 | packages, procedures, functions, triggers, sequences, rules, and | |
3394 | defaults. | |
e1fa392b | 3395 | |
30b0da81 | 3396 | *** Added SQL->Start SQLi Session menu entry which calls the |
a5768150 | 3397 | appropriate `sql-interactive-mode' wrapper for the current setting of |
30b0da81 | 3398 | `sql-product'. |
e1fa392b | 3399 | |
30b0da81 | 3400 | --- |
a5768150 | 3401 | *** sql.el supports the SQLite interpreter--call 'sql-sqlite'. |
9d00469f | 3402 | |
406c0f12 | 3403 | ** FFAP changes: |
dedbac89 | 3404 | |
30b0da81 | 3405 | +++ |
a5768150 RS |
3406 | *** New ffap commands and keybindings: |
3407 | ||
3408 | C-x C-r (`ffap-read-only'), | |
406c0f12 RS |
3409 | C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'), |
3410 | C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'), | |
3411 | C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame'). | |
dedbac89 | 3412 | |
406c0f12 | 3413 | --- |
a5768150 RS |
3414 | *** FFAP accepts wildcards in a file name by default. |
3415 | ||
3416 | C-x C-f passes the file name to `find-file' with non-nil WILDCARDS | |
3417 | argument, which visits multiple files, and C-x d passes it to `dired'. | |
ee31cd78 | 3418 | |
406c0f12 | 3419 | --- |
e22fdc36 RW |
3420 | ** Changes in Skeleton |
3421 | ||
3422 | *** In skeleton.el, `-' marks the `skeleton-point' without interregion interaction. | |
a5768150 RS |
3423 | |
3424 | `@' has reverted to only setting `skeleton-positions' and no longer | |
3425 | sets `skeleton-point'. Skeletons which used @ to mark | |
3426 | `skeleton-point' independent of `_' should now use `-' instead. The | |
3427 | updated `skeleton-insert' docstring explains these new features along | |
3428 | with other details of skeleton construction. | |
ee31cd78 | 3429 | |
e22fdc36 RW |
3430 | *** The variables `skeleton-transformation', `skeleton-filter', and |
3431 | `skeleton-pair-filter' have been renamed to | |
3432 | `skeleton-transformation-function', `skeleton-filter-function', and | |
3433 | `skeleton-pair-filter-function'. The old names are still available | |
3434 | as aliases. | |
3435 | ||
406c0f12 | 3436 | --- |
5c4757d3 RS |
3437 | ** Hideshow mode changes |
3438 | ||
3439 | *** New variable `hs-set-up-overlay' allows customization of the overlay | |
406c0f12 RS |
3440 | used to effect hiding for hideshow minor mode. Integration with isearch |
3441 | handles the overlay property `display' specially, preserving it during | |
3442 | temporary overlay showing in the course of an isearch operation. | |
30b0da81 | 3443 | |
5c4757d3 | 3444 | *** New variable `hs-allow-nesting' non-nil means that hiding a block does |
774d7c68 TTN |
3445 | not discard the hidden state of any "internal" blocks; when the parent |
3446 | block is later shown, the internal blocks remain hidden. Default is nil. | |
3447 | ||
406c0f12 | 3448 | +++ |
a5768150 | 3449 | ** `hide-ifdef-mode' now uses overlays rather than selective-display |
406c0f12 RS |
3450 | to hide its text. This should be mostly transparent but slightly |
3451 | changes the behavior of motion commands like C-e and C-p. | |
c8636435 | 3452 | |
406c0f12 | 3453 | --- |
a5768150 | 3454 | ** `partial-completion-mode' now handles partial completion on directory names. |
d0ee2ed3 | 3455 | |
406c0f12 RS |
3456 | --- |
3457 | ** The type-break package now allows `type-break-file-name' to be nil | |
3458 | and if so, doesn't store any data across sessions. This is handy if | |
a5768150 | 3459 | you don't want the `.type-break' file in your home directory or are |
406c0f12 | 3460 | annoyed by the need for interaction when you kill Emacs. |
7320911b | 3461 | |
406c0f12 RS |
3462 | --- |
3463 | ** `ps-print' can now print characters from the mule-unicode charsets. | |
a020987f | 3464 | |
406c0f12 | 3465 | Printing text with characters from the mule-unicode-* sets works with |
a5768150 RS |
3466 | `ps-print', provided that you have installed the appropriate BDF |
3467 | fonts. See the file INSTALL for URLs where you can find these fonts. | |
c90e7e43 | 3468 | |
406c0f12 RS |
3469 | --- |
3470 | ** New command `strokes-global-set-stroke-string'. | |
3471 | This is like `strokes-global-set-stroke', but it allows you to bind | |
3472 | the stroke directly to a string to insert. This is convenient for | |
3473 | using strokes as an input method. | |
0f7a93c1 | 3474 | |
c44da964 RS |
3475 | ** Emacs server changes: |
3476 | ||
3477 | +++ | |
3478 | *** You can have several Emacs servers on the same machine. | |
3479 | ||
3480 | % emacs --eval '(setq server-name "foo")' -f server-start & | |
3481 | % emacs --eval '(setq server-name "bar")' -f server-start & | |
3482 | % emacsclient -s foo file1 | |
3483 | % emacsclient -s bar file2 | |
3484 | ||
3485 | +++ | |
3486 | *** The `emacsclient' command understands the options `--eval' and | |
7404c0d4 | 3487 | `--display' which tell Emacs respectively to evaluate the given Lisp |
c44da964 RS |
3488 | expression and to use the given display when visiting files. |
3489 | ||
3490 | +++ | |
3491 | *** User option `server-mode' can be used to start a server process. | |
3492 | ||
406c0f12 RS |
3493 | --- |
3494 | ** LDAP support now defaults to ldapsearch from OpenLDAP version 2. | |
cbbfedb2 | 3495 | |
85df292e | 3496 | +++ |
406c0f12 | 3497 | ** You can now disable pc-selection-mode after enabling it. |
406c0f12 | 3498 | |
a5768150 RS |
3499 | M-x pc-selection-mode behaves like a proper minor mode, and with no |
3500 | argument it toggles the mode. Turning off PC-Selection mode restores | |
3501 | the global key bindings that were replaced by turning on the mode. | |
376de739 | 3502 | |
30b0da81 | 3503 | --- |
406c0f12 RS |
3504 | ** `uniquify-strip-common-suffix' tells uniquify to prefer |
3505 | `file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'. | |
092de21d | 3506 | |
406c0f12 RS |
3507 | --- |
3508 | ** Support for `magic cookie' standout modes has been removed. | |
a5768150 RS |
3509 | |
3510 | Emacs still works on terminals that require magic cookies in order to | |
3511 | use standout mode, but they can no longer display mode-lines in | |
3512 | inverse-video. | |
092de21d | 3513 | |
406c0f12 RS |
3514 | --- |
3515 | ** The game `mpuz' is enhanced. | |
092de21d | 3516 | |
406c0f12 RS |
3517 | `mpuz' now allows the 2nd factor not to have two identical digits. By |
3518 | default, all trivial operations involving whole lines are performed | |
3519 | automatically. The game uses faces for better visual feedback. | |
2e2d7ee6 | 3520 | |
27bc28bd LK |
3521 | ** battery.el changes: |
3522 | ||
3523 | --- | |
3524 | *** display-battery-mode replaces display-battery. | |
3525 | ||
30b0da81 | 3526 | --- |
27bc28bd | 3527 | *** battery.el now works on recent versions of OS X. |
08fd1251 | 3528 | |
406c0f12 | 3529 | --- |
a5768150 RS |
3530 | ** calculator.el now has radix grouping mode. |
3531 | ||
3532 | To enable this, set `calculator-output-radix' non-nil. In this mode a | |
3533 | separator character is used every few digits, making it easier to see | |
679ce4d5 | 3534 | byte boundaries etc. For more info, see the documentation of the |
a5768150 | 3535 | variable `calculator-radix-grouping-mode'. |
5b3dedcc | 3536 | |
30b0da81 | 3537 | --- |
406c0f12 | 3538 | ** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead. |
09fe18d3 | 3539 | |
406c0f12 RS |
3540 | --- |
3541 | ** iso-acc.el is now obsolete. Use one of the latin input methods instead. | |
98a51048 | 3542 | |
82a33a21 RF |
3543 | --- |
3544 | ** zone-mode.el is now obsolete. Use dns-mode.el instead. | |
3545 | ||
406c0f12 | 3546 | --- |
a5768150 | 3547 | ** cplus-md.el has been deleted. |
047ad6f5 TTN |
3548 | |
3549 | ** Ewoc changes | |
3550 | ||
3551 | *** The new function `ewoc-delete' deletes specified nodes. | |
3552 | ||
3553 | *** `ewoc-create' now takes optional arg NOSEP, which inhibits insertion of | |
3554 | a newline after each pretty-printed entry and after the header and footer. | |
3555 | This allows you to create multiple-entry ewocs on a single line and to | |
3556 | effect "invisible" nodes by arranging for the pretty-printer to not print | |
3557 | anything for those nodes. | |
3558 | ||
3559 | For example, these two sequences of expressions behave identically: | |
3560 | ||
3561 | ;; NOSEP nil | |
3562 | (defun PP (data) (insert (format "%S" data))) | |
3563 | (ewoc-create 'PP "start\n") | |
3564 | ||
3565 | ;; NOSEP t | |
3566 | (defun PP (data) (insert (format "%S\n" data))) | |
3567 | (ewoc-create 'PP "start\n\n" "\n" t) | |
3568 | ||
3958015d LT |
3569 | ** Locate changes |
3570 | ||
3571 | --- | |
3572 | *** By default, reverting the *Locate* buffer now just runs the last | |
3573 | `locate' command back over again without offering to update the locate | |
3574 | database (which normally only works if you have root privileges). If | |
3575 | you prefer the old behavior, set the new customizable option | |
3576 | `locate-update-when-revert' to t. | |
3577 | ||
406c0f12 | 3578 | \f |
c44da964 | 3579 | * Changes in Emacs 22.1 on non-free operating systems |
c1cbc25a | 3580 | |
e8d2a9b0 | 3581 | +++ |
43e5cbd9 JR |
3582 | ** The HOME directory defaults to Application Data under the user profile. |
3583 | ||
3584 | If you used a previous version of Emacs without setting the HOME | |
73d99a4b EZ |
3585 | environment variable and a `.emacs' was saved, then Emacs will continue |
3586 | using C:/ as the default HOME. But if you are installing Emacs afresh, | |
43e5cbd9 | 3587 | the default location will be the "Application Data" (or similar |
73d99a4b EZ |
3588 | localized name) subdirectory of your user profile. A typical location |
3589 | of this directory is "C:\Documents and Settings\USERNAME\Application Data", | |
3590 | where USERNAME is your user name. | |
3591 | ||
3592 | This change means that users can now have their own `.emacs' files on | |
3593 | shared computers, and the default HOME directory is less likely to be | |
3594 | read-only on computers that are administered by someone else. | |
43e5cbd9 | 3595 | |
ed2846bd | 3596 | +++ |
406c0f12 | 3597 | ** Passing resources on the command line now works on MS Windows. |
a5768150 | 3598 | |
406c0f12 RS |
3599 | You can use --xrm to pass resource settings to Emacs, overriding any |
3600 | existing values. For example: | |
09fe18d3 | 3601 | |
406c0f12 | 3602 | emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20" |
09fe18d3 | 3603 | |
406c0f12 RS |
3604 | will start up Emacs on an initial frame of 100x20 with red background, |
3605 | irrespective of geometry or background setting on the Windows registry. | |
e5847e56 | 3606 | |
406c0f12 RS |
3607 | --- |
3608 | ** On MS Windows, the "system caret" now follows the cursor. | |
a5768150 | 3609 | |
406c0f12 RS |
3610 | This enables Emacs to work better with programs that need to track |
3611 | the cursor, for example screen magnifiers and text to speech programs. | |
e5847e56 | 3612 | |
406c0f12 RS |
3613 | --- |
3614 | ** Tooltips now work on MS Windows. | |
a5768150 | 3615 | |
406c0f12 | 3616 | See the Emacs 21.1 NEWS entry for tooltips for details. |
e5847e56 | 3617 | |
406c0f12 RS |
3618 | --- |
3619 | ** Images are now supported on MS Windows. | |
a5768150 | 3620 | |
406c0f12 RS |
3621 | PBM and XBM images are supported out of the box. Other image formats |
3622 | depend on external libraries. All of these libraries have been ported | |
3623 | to Windows, and can be found in both source and binary form at | |
3624 | http://gnuwin32.sourceforge.net/. Note that libpng also depends on | |
3625 | zlib, and tiff depends on the version of jpeg that it was compiled | |
3626 | against. For additional information, see nt/INSTALL. | |
e5847e56 | 3627 | |
406c0f12 RS |
3628 | --- |
3629 | ** Sound is now supported on MS Windows. | |
a5768150 | 3630 | |
406c0f12 RS |
3631 | WAV format is supported on all versions of Windows, other formats such |
3632 | as AU, AIFF and MP3 may be supported in the more recent versions of | |
3633 | Windows, or when other software provides hooks into the system level | |
3634 | sound support for those formats. | |
06859ebd | 3635 | |
30b0da81 | 3636 | --- |
406c0f12 | 3637 | ** Different shaped mouse pointers are supported on MS Windows. |
a5768150 | 3638 | |
406c0f12 | 3639 | The mouse pointer changes shape depending on what is under the pointer. |
06859ebd | 3640 | |
30b0da81 | 3641 | --- |
406c0f12 | 3642 | ** Pointing devices with more than 3 buttons are now supported on MS Windows. |
a5768150 | 3643 | |
406c0f12 RS |
3644 | The new variable `w32-pass-extra-mouse-buttons-to-system' controls |
3645 | whether Emacs should handle the extra buttons itself (the default), or | |
3646 | pass them to Windows to be handled with system-wide functions. | |
678d2655 | 3647 | |
30b0da81 | 3648 | --- |
406c0f12 | 3649 | ** Emacs takes note of colors defined in Control Panel on MS-Windows. |
a5768150 | 3650 | |
406c0f12 RS |
3651 | The Control Panel defines some default colors for applications in much |
3652 | the same way as wildcard X Resources do on X. Emacs now adds these | |
3653 | colors to the colormap prefixed by System (eg SystemMenu for the | |
3654 | default Menu background, SystemMenuText for the foreground), and uses | |
3655 | some of them to initialize some of the default faces. | |
3656 | `list-colors-display' shows the list of System color names, in case | |
3657 | you wish to use them in other faces. | |
678d2655 | 3658 | |
406c0f12 RS |
3659 | --- |
3660 | ** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations. | |
a5768150 | 3661 | |
406c0f12 RS |
3662 | Those systems use Unicode internally, so this allows Emacs to share |
3663 | multilingual text with other applications. On other versions of | |
3664 | MS Windows, Emacs now uses the appropriate locale coding-system, so | |
3665 | the clipboard should work correctly for your local language without | |
3666 | any customizations. | |
06859ebd | 3667 | |
47bdd305 JR |
3668 | --- |
3669 | ** Running in a console window in Windows now uses the console size. | |
3670 | ||
3671 | Previous versions of Emacs erred on the side of having a usable Emacs | |
3672 | through telnet, even though that was inconvenient if you use Emacs in | |
3673 | a local console window with a scrollback buffer. The default value of | |
679ce4d5 | 3674 | w32-use-full-screen-buffer is now nil, which favors local console |
47bdd305 JR |
3675 | windows. Recent versions of Windows telnet also work well with this |
3676 | setting. If you are using an older telnet server then Emacs detects | |
3677 | that the console window dimensions that are reported are not sane, and | |
3678 | defaults to 80x25. If you use such a telnet server regularly at a size | |
3679 | other than 80x25, you can still manually set | |
3680 | w32-use-full-screen-buffer to t. | |
3681 | ||
406c0f12 | 3682 | --- |
a5768150 RS |
3683 | ** On Mac OS, `keyboard-coding-system' changes based on the keyboard script. |
3684 | ||
3685 | --- | |
3686 | ** The variable `mac-keyboard-text-encoding' and the constants | |
406c0f12 RS |
3687 | `kTextEncodingMacRoman', `kTextEncodingISOLatin1', and |
3688 | `kTextEncodingISOLatin2' are obsolete. | |
7d638a76 YM |
3689 | |
3690 | ** The variable `mac-command-key-is-meta' is obsolete. Use | |
3691 | `mac-command-modifier' and `mac-option-modifier' instead. | |
30b0da81 RS |
3692 | \f |
3693 | * Incompatible Lisp Changes in Emacs 22.1 | |
e71caa4e | 3694 | |
68ce47af KH |
3695 | ** The function find-operation-coding-system may be called with a cons |
3696 | (FILENAME . BUFFER) in the second argument if the first argument | |
3697 | OPERATION is `insert-file-contents', and thus a function registered in | |
3698 | `file-coding-system-alist' is also called with such an argument. | |
e5307343 | 3699 | |
240d926e RS |
3700 | --- |
3701 | ** The variables post-command-idle-hook and post-command-idle-delay have | |
3702 | been removed. Use run-with-idle-timer instead. | |
3703 | ||
ed2846bd | 3704 | +++ |
30b0da81 RS |
3705 | ** `suppress-keymap' now works by remapping `self-insert-command' to |
3706 | the command `undefined'. (In earlier Emacs versions, it used | |
3707 | `substitute-key-definition' to rebind self inserting characters to | |
3708 | `undefined'.) | |
c1cbc25a | 3709 | |
30b0da81 RS |
3710 | +++ |
3711 | ** Mode line display ignores text properties as well as the | |
3712 | :propertize and :eval forms in the value of a variable whose | |
3713 | `risky-local-variable' property is nil. | |
c44da964 | 3714 | |
66123014 EZ |
3715 | --- |
3716 | The function `comint-send-input' now accepts 3 optional arguments: | |
3717 | ||
3718 | (comint-send-input &optional no-newline artificial) | |
3719 | ||
3720 | Callers sending input not from the user should use bind the 3rd | |
3721 | argument `artificial' to a non-nil value, to prevent Emacs from | |
3722 | deleting the part of subprocess output that matches the input. | |
3723 | ||
c44da964 RS |
3724 | --- |
3725 | ** Support for Mocklisp has been removed. | |
685abb98 RS |
3726 | |
3727 | +++ | |
3728 | ** The variable `memory-full' now remains t until | |
3729 | there is no longer a shortage of memory. | |
5de261c4 | 3730 | |
3aa7c28e RS |
3731 | ** When Emacs receives a USR1 or USR2 signal, this generates |
3732 | an input event: usr1-signal or usr2-signal. | |
30b0da81 RS |
3733 | \f |
3734 | * Lisp Changes in Emacs 22.1 | |
c1cbc25a | 3735 | |
c44da964 | 3736 | ** General Lisp changes: |
c1cbc25a | 3737 | |
c1a4c74d TTN |
3738 | *** The function `expt' handles negative exponents differently. |
3739 | The value for `(expt A B)', if both A and B are integers and B is | |
3740 | negative, is now a float. For example: (expt 2 -2) => 0.25. | |
3741 | ||
30b0da81 | 3742 | +++ |
c44da964 | 3743 | *** The function `eql' is now available without requiring the CL package. |
c1cbc25a | 3744 | |
ed2846bd | 3745 | +++ |
c44da964 | 3746 | *** `makehash' is now obsolete. Use `make-hash-table' instead. |
4e14f66c | 3747 | |
7e995a23 | 3748 | +++ |
9bae34bf | 3749 | *** `add-to-list' takes an optional third argument, APPEND. |
d3a403e5 | 3750 | |
9bae34bf RS |
3751 | If APPEND is non-nil, the new element gets added at the end of the |
3752 | list instead of at the beginning. This change actually occurred in | |
3753 | Emacs 21.1, but was not documented then. | |
b19ac475 | 3754 | |
a5c99dc9 KS |
3755 | +++ |
3756 | *** New function `add-to-ordered-list' is like `add-to-list' but | |
10f401d2 | 3757 | associates a numeric ordering of each element added to the list. |
a5c99dc9 | 3758 | |
ed2846bd | 3759 | +++ |
9bae34bf RS |
3760 | *** New function `copy-tree' makes a copy of a tree. |
3761 | ||
d5b08376 | 3762 | It recursively copies through both CARs and CDRs. |
b2b681f1 | 3763 | |
30b0da81 | 3764 | +++ |
9bae34bf RS |
3765 | *** New function `delete-dups' deletes `equal' duplicate elements from a list. |
3766 | ||
3767 | It modifies the list destructively, like `delete'. Of several `equal' | |
3768 | occurrences of an element in the list, the one that's kept is the | |
3769 | first one. | |
b2b681f1 | 3770 | |
7cb0aae4 EZ |
3771 | +++ |
3772 | *** New function `add-to-history' adds an element to a history list. | |
3773 | ||
7cb0aae4 EZ |
3774 | Lisp packages should use this function to add elements to their |
3775 | history lists. | |
3776 | ||
ed7e6c32 KS |
3777 | If `history-delete-duplicates' is non-nil, it removes duplicates of |
3778 | the new element from the history list it updates. | |
3779 | ||
30b0da81 | 3780 | +++ |
9bae34bf RS |
3781 | *** New function `rassq-delete-all'. |
3782 | ||
3783 | (rassq-delete-all VALUE ALIST) deletes, from ALIST, each element whose | |
3784 | CDR is `eq' to the specified value. | |
b2b681f1 | 3785 | |
30b0da81 | 3786 | +++ |
9bae34bf RS |
3787 | *** The function `number-sequence' makes a list of equally-separated numbers. |
3788 | ||
3789 | For instance, (number-sequence 4 9) returns (4 5 6 7 8 9). By | |
3790 | default, the separation is 1, but you can specify a different | |
3791 | separation as the third argument. (number-sequence 1.5 6 2) returns | |
3792 | (1.5 3.5 5.5). | |
b2b681f1 | 3793 | |
30b0da81 | 3794 | +++ |
9bae34bf RS |
3795 | *** New variables `most-positive-fixnum' and `most-negative-fixnum'. |
3796 | ||
3797 | They hold the largest and smallest possible integer values. | |
b2b681f1 | 3798 | |
30b0da81 | 3799 | +++ |
9bae34bf RS |
3800 | *** Minor change in the function `format'. |
3801 | ||
3802 | Some flags that were accepted but not implemented (such as "*") are no | |
3803 | longer accepted. | |
b2b681f1 | 3804 | |
a775dff4 | 3805 | +++ |
9bae34bf RS |
3806 | *** Functions `get' and `plist-get' no longer give errors for bad plists. |
3807 | ||
3808 | They return nil for a malformed property list or if the list is | |
3809 | cyclic. | |
851e5562 | 3810 | |
30b0da81 | 3811 | +++ |
9bae34bf RS |
3812 | *** New functions `lax-plist-get' and `lax-plist-put'. |
3813 | ||
3814 | They are like `plist-get' and `plist-put', except that they compare | |
3815 | the property name using `equal' rather than `eq'. | |
851e5562 | 3816 | |
9f4b6e73 | 3817 | +++ |
9bae34bf RS |
3818 | *** New variable `print-continuous-numbering'. |
3819 | ||
3820 | When this is non-nil, successive calls to print functions use a single | |
3821 | numbering scheme for circular structure references. This is only | |
3822 | relevant when `print-circle' is non-nil. | |
c44da964 RS |
3823 | |
3824 | When you bind `print-continuous-numbering' to t, you should | |
3825 | also bind `print-number-table' to nil. | |
e91408d7 | 3826 | |
9f4b6e73 | 3827 | +++ |
c44da964 | 3828 | *** New function `macroexpand-all' expands all macros in a form. |
30b0da81 | 3829 | |
c44da964 RS |
3830 | It is similar to the Common-Lisp function of the same name. |
3831 | One difference is that it guarantees to return the original argument | |
3832 | if no expansion is done, which can be tested using `eq'. | |
8bc51bd1 | 3833 | |
b19ac475 | 3834 | +++ |
c44da964 RS |
3835 | *** The function `atan' now accepts an optional second argument. |
3836 | ||
3837 | When called with 2 arguments, as in `(atan Y X)', `atan' returns the | |
3838 | angle in radians between the vector [X, Y] and the X axis. (This is | |
3839 | equivalent to the standard C library function `atan2'.) | |
830047fd | 3840 | |
9adcb5f2 | 3841 | +++ |
9bae34bf | 3842 | *** A function or macro's doc string can now specify the calling pattern. |
30b0da81 | 3843 | |
9bae34bf RS |
3844 | You put this info in the doc string's last line. It should be |
3845 | formatted so as to match the regexp "\n\n(fn .*)\\'". If you don't | |
3846 | specify this explicitly, Emacs determines it from the actual argument | |
3847 | names. Usually that default is right, but not always. | |
d0cd7210 | 3848 | |
3e7274ae | 3849 | +++ |
9bae34bf RS |
3850 | *** New macro `with-local-quit' temporarily allows quitting. |
3851 | ||
3852 | A quit inside the body of `with-local-quit' is caught by the | |
3853 | `with-local-quit' form itself, but another quit will happen later once | |
679ce4d5 | 3854 | the code that has inhibited quitting exits. |
3e7274ae | 3855 | |
9bae34bf RS |
3856 | This is for use around potentially blocking or long-running code |
3857 | inside timer functions and `post-command-hook' functions. | |
3858 | ||
3859 | +++ | |
3860 | *** New macro `define-obsolete-function-alias'. | |
c44da964 | 3861 | |
9bae34bf | 3862 | This combines `defalias' and `make-obsolete'. |
7e995a23 | 3863 | |
30b0da81 | 3864 | +++ |
9bae34bf RS |
3865 | *** New function `unsafep' determines whether a Lisp form is safe. |
3866 | ||
3867 | It returns nil if the given Lisp form can't possibly do anything | |
3868 | dangerous; otherwise it returns a reason why the form might be unsafe | |
f7735be5 | 3869 | (calls unknown function, alters global variable, etc.). |
7e995a23 | 3870 | |
db5fe0a6 | 3871 | +++ |
41e7ed3a RS |
3872 | *** New macro `eval-at-startup' specifies expressions to |
3873 | evaluate when Emacs starts up. If this is done after startup, | |
3874 | it evaluates those expressions immediately. | |
3875 | ||
242a7584 | 3876 | This is useful in packages that can be preloaded. |
41e7ed3a | 3877 | |
a2e6384d JB |
3878 | *** `list-faces-display' takes an optional argument, REGEXP. |
3879 | ||
3880 | If it is non-nil, the function lists only faces matching this regexp. | |
3881 | ||
1ca9b532 | 3882 | +++ |
20bfe387 | 3883 | *** New functions `string-or-null-p' and `booleanp'. |
1ca9b532 | 3884 | |
20bfe387 SM |
3885 | `string-or-null-p' returns non-nil iff OBJECT is a string or nil. |
3886 | `booleanp' returns non-nil iff OBJECT is a t or nil. | |
1ca9b532 | 3887 | |
05bdf2d7 RS |
3888 | +++ |
3889 | *** New hook `command-error-function'. | |
3890 | ||
3891 | By setting this variable to a function, you can control | |
3892 | how the editor command loop shows the user an error message. | |
3893 | ||
c44da964 | 3894 | ** Lisp code indentation features: |
7e995a23 | 3895 | |
a775dff4 | 3896 | +++ |
9bae34bf RS |
3897 | *** The `defmacro' form can contain indentation and edebug declarations. |
3898 | ||
3899 | These declarations specify how to indent the macro calls in Lisp mode | |
3900 | and how to debug them with Edebug. You write them like this: | |
652dd271 | 3901 | |
c44da964 RS |
3902 | (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...) |
3903 | ||
3904 | DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The | |
9bae34bf | 3905 | possible declaration specifiers are: |
c44da964 RS |
3906 | |
3907 | (indent INDENT) | |
3908 | Set NAME's `lisp-indent-function' property to INDENT. | |
3909 | ||
3910 | (edebug DEBUG) | |
3911 | Set NAME's `edebug-form-spec' property to DEBUG. (This is | |
9bae34bf RS |
3912 | equivalent to writing a `def-edebug-spec' for the macro, |
3913 | but this is cleaner.) | |
53092de4 | 3914 | |
30b0da81 | 3915 | --- |
c44da964 | 3916 | *** cl-indent now allows customization of Indentation of backquoted forms. |
d18473b9 | 3917 | |
c44da964 RS |
3918 | See the new user option `lisp-backquote-indentation'. |
3919 | ||
3920 | --- | |
3921 | *** cl-indent now handles indentation of simple and extended `loop' forms. | |
3922 | ||
3923 | The new user options `lisp-loop-keyword-indentation', | |
3924 | `lisp-loop-forms-indentation', and `lisp-simple-loop-indentation' can | |
3925 | be used to customize the indentation of keywords and forms in loop | |
3926 | forms. | |
69348b2a | 3927 | |
ed2846bd | 3928 | +++ |
c44da964 | 3929 | ** Variable aliases: |
30b0da81 | 3930 | |
9bae34bf | 3931 | *** New function: defvaralias ALIAS-VAR BASE-VAR [DOCSTRING] |
30b0da81 RS |
3932 | |
3933 | This function defines the symbol ALIAS-VAR as a variable alias for | |
3934 | symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR | |
3935 | returns the value of BASE-VAR, and changing the value of ALIAS-VAR | |
3936 | changes the value of BASE-VAR. | |
3937 | ||
3938 | DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has | |
3939 | the same documentation as BASE-VAR. | |
3940 | ||
9bae34bf | 3941 | *** New function: indirect-variable VARIABLE |
30b0da81 RS |
3942 | |
3943 | This function returns the variable at the end of the chain of aliases | |
3944 | of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not | |
3945 | defined as an alias, the function returns VARIABLE. | |
3946 | ||
3947 | It might be noteworthy that variables aliases work for all kinds of | |
3948 | variables, including buffer-local and frame-local variables. | |
69348b2a | 3949 | |
ed2846bd | 3950 | +++ |
c44da964 RS |
3951 | *** The macro `define-obsolete-variable-alias' combines `defvaralias' and |
3952 | `make-obsolete-variable'. | |
69348b2a | 3953 | |
c44da964 | 3954 | ** defcustom changes: |
69348b2a | 3955 | |
f327867a BW |
3956 | +++ |
3957 | *** The package-version keyword has been added to provide | |
3958 | `customize-changed-options' functionality to packages in the future. | |
3959 | Developers who make use of this keyword must also update the new | |
3960 | variable `customize-package-emacs-version-alist'. | |
3961 | ||
c44da964 | 3962 | +++ |
9bae34bf | 3963 | *** The new customization type `float' requires a floating point number. |
69348b2a | 3964 | |
c44da964 | 3965 | ** String changes: |
30b0da81 | 3966 | |
c44da964 | 3967 | +++ |
9bae34bf RS |
3968 | *** The escape sequence \s is now interpreted as a SPACE character. |
3969 | ||
3970 | Exception: In a character constant, if it is followed by a `-' in a | |
3971 | character constant (e.g. ?\s-A), it is still interpreted as the super | |
3972 | modifier. In strings, \s is always interpreted as a space. | |
3973 | ||
3974 | +++ | |
3975 | *** A hex escape in a string constant forces the string to be multibyte. | |
30b0da81 | 3976 | |
c44da964 | 3977 | +++ |
9bae34bf | 3978 | *** An octal escape in a string constant forces the string to be unibyte. |
30b0da81 | 3979 | |
c44da964 RS |
3980 | +++ |
3981 | *** `split-string' now includes null substrings in the returned list if | |
3982 | the optional argument SEPARATORS is non-nil and there are matches for | |
3983 | SEPARATORS at the beginning or end of the string. If SEPARATORS is | |
3984 | nil, or if the new optional third argument OMIT-NULLS is non-nil, all | |
3985 | empty matches are omitted from the returned list. | |
30b0da81 | 3986 | |
c44da964 RS |
3987 | +++ |
3988 | *** New function `string-to-multibyte' converts a unibyte string to a | |
3989 | multibyte string with the same individual character codes. | |
30b0da81 | 3990 | |
c44da964 | 3991 | +++ |
9bae34bf | 3992 | *** New function `substring-no-properties' returns a substring without |
c44da964 | 3993 | text properties. |
30b0da81 | 3994 | |
c44da964 RS |
3995 | +++ |
3996 | *** The new function `assoc-string' replaces `assoc-ignore-case' and | |
3997 | `assoc-ignore-representation', which are still available, but have | |
3998 | been declared obsolete. | |
30b0da81 | 3999 | |
cb480394 EZ |
4000 | +++ |
4001 | *** New syntax: \uXXXX and \UXXXXXXXX specify Unicode code points in hex. | |
4002 | Use "\u0428" to specify a string consisting of CYRILLIC CAPITAL LETTER SHA, | |
4003 | or "\U0001D6E2" to specify one consisting of MATHEMATICAL ITALIC CAPITAL | |
4004 | ALPHA (the latter is greater than #xFFFF and thus needs the longer | |
4005 | syntax). Also available for characters. | |
4006 | ||
c44da964 | 4007 | +++ |
9bae34bf | 4008 | ** Displaying warnings to the user. |
30b0da81 | 4009 | |
9bae34bf RS |
4010 | See the functions `warn' and `display-warning', or the Lisp Manual. |
4011 | If you want to be sure the warning will not be overlooked, this | |
4012 | facility is much better than using `message', since it displays | |
4013 | warnings in a separate window. | |
5f6eef94 | 4014 | |
c44da964 RS |
4015 | +++ |
4016 | ** Progress reporters. | |
5f6eef94 | 4017 | |
c44da964 RS |
4018 | These provide a simple and uniform way for commands to present |
4019 | progress messages for the user. | |
05faee07 | 4020 | |
c44da964 RS |
4021 | See the new functions `make-progress-reporter', |
4022 | `progress-reporter-update', `progress-reporter-force-update', | |
4023 | `progress-reporter-done', and `dotimes-with-progress-reporter'. | |
05faee07 | 4024 | |
c44da964 | 4025 | ** Buffer positions: |
5f6eef94 | 4026 | |
c44da964 RS |
4027 | +++ |
4028 | *** Function `compute-motion' now calculates the usable window | |
4029 | width if the WIDTH argument is nil. If the TOPOS argument is nil, | |
4030 | the usable window height and width is used. | |
5f6eef94 | 4031 | |
c44da964 RS |
4032 | +++ |
4033 | *** The `line-move', `scroll-up', and `scroll-down' functions will now | |
4034 | modify the window vscroll to scroll through display rows that are | |
9bae34bf RS |
4035 | taller that the height of the window, for example in the presence of |
4036 | large images. To disable this feature, bind the new variable | |
4037 | `auto-window-vscroll' to nil. | |
5f6eef94 | 4038 | |
c44da964 | 4039 | +++ |
9bae34bf RS |
4040 | *** The argument to `forward-word', `backward-word' is optional. |
4041 | ||
4042 | It defaults to 1. | |
5f6eef94 | 4043 | |
c44da964 | 4044 | +++ |
9bae34bf RS |
4045 | *** Argument to `forward-to-indentation' and `backward-to-indentation' is optional. |
4046 | ||
4047 | It defaults to 1. | |
5f6eef94 | 4048 | |
c44da964 | 4049 | +++ |
f7735be5 | 4050 | *** New function `mouse-on-link-p' tests if a position is in a clickable link. |
9bae34bf RS |
4051 | |
4052 | This is the function used by the new `mouse-1-click-follows-link' | |
4053 | functionality. | |
d46aeafc | 4054 | |
c44da964 | 4055 | +++ |
9bae34bf RS |
4056 | *** New function `line-number-at-pos' returns the line number of a position. |
4057 | ||
4058 | It an optional buffer position argument that defaults to point. | |
4059 | ||
4060 | +++ | |
4061 | *** `field-beginning' and `field-end' take new optional argument, LIMIT. | |
4062 | ||
4063 | This argument tells them not to search beyond LIMIT. Instead they | |
4064 | give up and return LIMIT. | |
d46aeafc | 4065 | |
c44da964 RS |
4066 | +++ |
4067 | *** Function `pos-visible-in-window-p' now returns the pixel coordinates | |
679ce4d5 | 4068 | and partial visibility state of the corresponding row, if the PARTIALLY |
c44da964 | 4069 | arg is non-nil. |
05faee07 | 4070 | |
c44da964 RS |
4071 | +++ |
4072 | *** New functions `posn-at-point' and `posn-at-x-y' return | |
4073 | click-event-style position information for a given visible buffer | |
4074 | position or for a given window pixel coordinate. | |
d46aeafc | 4075 | |
c44da964 | 4076 | ** Text modification: |
5f6eef94 | 4077 | |
c44da964 | 4078 | +++ |
9bae34bf RS |
4079 | *** The new function `insert-for-yank' normally works like `insert', but |
4080 | removes the text properties in the `yank-excluded-properties' list | |
4081 | and handles the `yank-handler' text property. | |
4082 | ||
4083 | +++ | |
4084 | *** The new function `insert-buffer-substring-as-yank' is like | |
4085 | `insert-for-yank' except that it gets the text from another buffer as | |
4086 | in `insert-buffer-substring'. | |
5f6eef94 | 4087 | |
76bf15e9 | 4088 | +++ |
c44da964 | 4089 | *** The new function `insert-buffer-substring-no-properties' is like |
9bae34bf | 4090 | `insert-buffer-substring', but removes all text properties from the |
c44da964 | 4091 | inserted substring. |
76bf15e9 | 4092 | |
c44da964 RS |
4093 | +++ |
4094 | *** The new function `filter-buffer-substring' extracts a buffer | |
4095 | substring, passes it through a set of filter functions, and returns | |
9bae34bf | 4096 | the filtered substring. Use it instead of `buffer-substring' or |
c44da964 | 4097 | `delete-and-extract-region' when copying text into a user-accessible |
9bae34bf RS |
4098 | data structure, such as the kill-ring, X clipboard, or a register. |
4099 | ||
4100 | The list of filter function is specified by the new variable | |
4101 | `buffer-substring-filters'. For example, Longlines mode adds to | |
c44da964 RS |
4102 | `buffer-substring-filters' to remove soft newlines from the copied |
4103 | text. | |
06a49fc1 | 4104 | |
c44da964 RS |
4105 | +++ |
4106 | *** Function `translate-region' accepts also a char-table as TABLE | |
4107 | argument. | |
c6177909 | 4108 | |
c44da964 RS |
4109 | +++ |
4110 | *** The new translation table `translation-table-for-input' | |
4111 | is used for customizing self-insertion. The character to | |
4112 | be inserted is translated through it. | |
01b70437 | 4113 | |
c44da964 RS |
4114 | --- |
4115 | *** Text clones. | |
4a29bad2 | 4116 | |
c44da964 RS |
4117 | The new function `text-clone-create'. Text clones are chunks of text |
4118 | that are kept identical by transparently propagating changes from one | |
4119 | clone to the other. | |
0e7d7aae | 4120 | |
c44da964 RS |
4121 | --- |
4122 | *** The function `insert-string' is now obsolete. | |
f6537e03 | 4123 | |
0af4347a EZ |
4124 | ** Filling changes. |
4125 | ||
4126 | +++ | |
4127 | *** In determining an adaptive fill prefix, Emacs now tries the function in | |
4128 | `adaptive-fill-function' _before_ matching the buffer line against | |
4129 | `adaptive-fill-regexp' rather than _after_ it. | |
4130 | ||
c44da964 | 4131 | +++ |
9bae34bf | 4132 | ** Atomic change groups. |
c6de56a0 | 4133 | |
9bae34bf RS |
4134 | To perform some changes in the current buffer "atomically" so that |
4135 | they either all succeed or are all undone, use `atomic-change-group' | |
4136 | around the code that makes changes. For instance: | |
c6de56a0 | 4137 | |
9bae34bf RS |
4138 | (atomic-change-group |
4139 | (insert foo) | |
4140 | (delete-region x y)) | |
bf078377 | 4141 | |
9bae34bf RS |
4142 | If an error (or other nonlocal exit) occurs inside the body of |
4143 | `atomic-change-group', it unmakes all the changes in that buffer that | |
4144 | were during the execution of the body. The change group has no effect | |
4145 | on any other buffers--any such changes remain. | |
9c0fb8b9 | 4146 | |
9bae34bf RS |
4147 | If you need something more sophisticated, you can directly call the |
4148 | lower-level functions that `atomic-change-group' uses. Here is how. | |
51a8b435 | 4149 | |
9bae34bf RS |
4150 | To set up a change group for one buffer, call `prepare-change-group'. |
4151 | Specify the buffer as argument; it defaults to the current buffer. | |
4152 | This function returns a "handle" for the change group. You must save | |
4153 | the handle to activate the change group and then finish it. | |
c44da964 | 4154 | |
9bae34bf RS |
4155 | Before you change the buffer again, you must activate the change |
4156 | group. Pass the handle to `activate-change-group' afterward to | |
4157 | do this. | |
4158 | ||
4159 | After you make the changes, you must finish the change group. You can | |
4160 | either accept the changes or cancel them all. Call | |
4161 | `accept-change-group' to accept the changes in the group as final; | |
4162 | call `cancel-change-group' to undo them all. | |
4163 | ||
4164 | You should use `unwind-protect' to make sure the group is always | |
4165 | finished. The call to `activate-change-group' should be inside the | |
4166 | `unwind-protect', in case the user types C-g just after it runs. | |
4167 | (This is one reason why `prepare-change-group' and | |
4168 | `activate-change-group' are separate functions.) Once you finish the | |
4169 | group, don't use the handle again--don't try to finish the same group | |
4170 | twice. | |
4171 | ||
4172 | To make a multibuffer change group, call `prepare-change-group' once | |
4173 | for each buffer you want to cover, then use `nconc' to combine the | |
4174 | returned values, like this: | |
4175 | ||
4176 | (nconc (prepare-change-group buffer-1) | |
4177 | (prepare-change-group buffer-2)) | |
4178 | ||
4179 | You can then activate the multibuffer change group with a single call | |
4180 | to `activate-change-group', and finish it with a single call to | |
4181 | `accept-change-group' or `cancel-change-group'. | |
4182 | ||
4183 | Nested use of several change groups for the same buffer works as you | |
4184 | would expect. Non-nested use of change groups for the same buffer | |
4185 | will lead to undesirable results, so don't let it happen; the first | |
4186 | change group you start for any given buffer should be the last one | |
4187 | finished. | |
c44da964 RS |
4188 | |
4189 | ** Buffer-related changes: | |
4190 | ||
4191 | --- | |
4192 | *** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST. | |
9bae34bf | 4193 | |
c44da964 RS |
4194 | If it is non-nil, it specifies which buffers to list. |
4195 | ||
4196 | +++ | |
4197 | *** `kill-buffer-hook' is now a permanent local. | |
4198 | ||
9bae34bf RS |
4199 | +++ |
4200 | *** The new function `buffer-local-value' returns the buffer-local | |
4201 | binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not | |
4202 | have a buffer-local binding in buffer BUFFER, it returns the default | |
4203 | value of VARIABLE instead. | |
4204 | ||
f98dd4f8 RS |
4205 | *** The function `frame-or-buffer-changed-p' now lets you maintain |
4206 | various status records in parallel. | |
4207 | ||
f7735be5 | 4208 | It takes a variable (a symbol) as argument. If the variable is non-nil, |
f98dd4f8 RS |
4209 | then its value should be a vector installed previously by |
4210 | `frame-or-buffer-changed-p'. If the frame names, buffer names, buffer | |
4211 | order, or their read-only or modified flags have changed, since the | |
4212 | time the vector's contents were recorded by a previous call to | |
4213 | `frame-or-buffer-changed-p', then the function returns t. Otherwise | |
4214 | it returns nil. | |
4215 | ||
4216 | On the first call to `frame-or-buffer-changed-p', the variable's | |
4217 | value should be nil. `frame-or-buffer-changed-p' stores a suitable | |
4218 | vector into the variable and returns t. | |
4219 | ||
4220 | If the variable is itself nil, then `frame-or-buffer-changed-p' uses, | |
4221 | for compatibility, an internal variable which exists only for this | |
4222 | purpose. | |
4223 | ||
b6473e48 RF |
4224 | +++ |
4225 | *** The function `read-buffer' follows the convention for reading from | |
4226 | the minibuffer with a default value: if DEF is non-nil, the minibuffer | |
4227 | prompt provided in PROMPT is edited to show the default value provided | |
4228 | in DEF before the terminal colon and space. | |
4229 | ||
9bae34bf RS |
4230 | ** Searching and matching changes: |
4231 | ||
4232 | +++ | |
4233 | *** New function `looking-back' checks whether a regular expression matches | |
4234 | the text before point. Specifying the LIMIT argument bounds how far | |
4235 | back the match can start; this is a way to keep it from taking too long. | |
4236 | ||
4237 | +++ | |
4238 | *** The new variable `search-spaces-regexp' controls how to search | |
4239 | for spaces in a regular expression. If it is non-nil, it should be a | |
4240 | regular expression, and any series of spaces stands for that regular | |
4241 | expression. If it is nil, spaces stand for themselves. | |
4242 | ||
4243 | Spaces inside of constructs such as `[..]' and inside loops such as | |
4244 | `*', `+', and `?' are never replaced with `search-spaces-regexp'. | |
4245 | ||
4246 | +++ | |
4247 | *** New regular expression operators, `\_<' and `\_>'. | |
4248 | ||
4249 | These match the beginning and end of a symbol. A symbol is a | |
4250 | non-empty sequence of either word or symbol constituent characters, as | |
4251 | specified by the syntax table. | |
4252 | ||
4253 | --- | |
4254 | *** rx.el has new corresponding `symbol-end' and `symbol-start' elements. | |
4255 | ||
4256 | +++ | |
4257 | *** `skip-chars-forward' and `skip-chars-backward' now handle | |
4258 | character classes such as `[:alpha:]', along with individual | |
4259 | characters and ranges. | |
4260 | ||
4261 | --- | |
4262 | *** In `replace-match', the replacement text no longer inherits | |
4263 | properties from surrounding text. | |
c44da964 | 4264 | |
9bae34bf RS |
4265 | +++ |
4266 | *** The list returned by `(match-data t)' now has the buffer as a final | |
4267 | element, if the last match was on a buffer. `set-match-data' | |
4268 | accepts such a list for restoring the match state. | |
c44da964 | 4269 | |
b7aae902 KS |
4270 | +++ |
4271 | *** Functions `match-data' and `set-match-data' now have an optional | |
4272 | argument `reseat'. When non-nil, all markers in the match data list | |
f7735be5 | 4273 | passed to these functions will be reseated to point to nowhere. |
b7aae902 | 4274 | |
c44da964 | 4275 | +++ |
9bae34bf RS |
4276 | *** The default value of `sentence-end' is now defined using the new |
4277 | variable `sentence-end-without-space', which contains such characters | |
4278 | that end a sentence without following spaces. | |
4279 | ||
4280 | The function `sentence-end' should be used to obtain the value of the | |
4281 | variable `sentence-end'. If the variable `sentence-end' is nil, then | |
4282 | this function returns the regexp constructed from the variables | |
4283 | `sentence-end-without-period', `sentence-end-double-space' and | |
4284 | `sentence-end-without-space'. | |
c44da964 RS |
4285 | |
4286 | ** Undo changes: | |
4287 | ||
4288 | +++ | |
9bae34bf RS |
4289 | *** `buffer-undo-list' can allows programmable elements. |
4290 | ||
4291 | These elements have the form (apply FUNNAME . ARGS), where FUNNAME is | |
4292 | a symbol other than t or nil. That stands for a high-level change | |
4293 | that should be undone by evaluating (apply FUNNAME ARGS). | |
c44da964 RS |
4294 | |
4295 | These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS) | |
4296 | which indicates that the change which took place was limited to the | |
4297 | range BEG...END and increased the buffer size by DELTA. | |
4298 | ||
4299 | +++ | |
4300 | *** If the buffer's undo list for the current command gets longer than | |
9bae34bf | 4301 | `undo-outer-limit', garbage collection empties it. This is to prevent |
c44da964 | 4302 | it from using up the available memory and choking Emacs. |
9c0fb8b9 | 4303 | |
51a8b435 | 4304 | +++ |
da9356b0 | 4305 | ** New `yank-handler' text property can be used to control how |
9bae34bf | 4306 | previously killed text on the kill ring is reinserted. |
c64a682c | 4307 | |
9bae34bf | 4308 | The value of the `yank-handler' property must be a list with one to four |
30b0da81 RS |
4309 | elements with the following format: |
4310 | (FUNCTION PARAM NOEXCLUDE UNDO). | |
c64a682c | 4311 | |
30b0da81 RS |
4312 | The `insert-for-yank' function looks for a yank-handler property on |
4313 | the first character on its string argument (typically the first | |
9bae34bf | 4314 | element on the kill-ring). If a `yank-handler' property is found, |
30b0da81 | 4315 | the normal behavior of `insert-for-yank' is modified in various ways: |
c6de56a0 | 4316 | |
30b0da81 RS |
4317 | When FUNCTION is present and non-nil, it is called instead of `insert' |
4318 | to insert the string. FUNCTION takes one argument--the object to insert. | |
4319 | If PARAM is present and non-nil, it replaces STRING as the object | |
4320 | passed to FUNCTION (or `insert'); for example, if FUNCTION is | |
4321 | `yank-rectangle', PARAM should be a list of strings to insert as a | |
4322 | rectangle. | |
4323 | If NOEXCLUDE is present and non-nil, the normal removal of the | |
9bae34bf | 4324 | `yank-excluded-properties' is not performed; instead FUNCTION is |
30b0da81 RS |
4325 | responsible for removing those properties. This may be necessary |
4326 | if FUNCTION adjusts point before or after inserting the object. | |
4327 | If UNDO is present and non-nil, it is a function that will be called | |
4328 | by `yank-pop' to undo the insertion of the current object. It is | |
4329 | called with two arguments, the start and end of the current region. | |
da9356b0 | 4330 | FUNCTION can set `yank-undo-function' to override the UNDO value. |
c6de56a0 | 4331 | |
9bae34bf RS |
4332 | *** The functions `kill-new', `kill-append', and `kill-region' now have an |
4333 | optional argument to specify the `yank-handler' text property to put on | |
30b0da81 | 4334 | the killed text. |
c6de56a0 | 4335 | |
9bae34bf RS |
4336 | *** The function `yank-pop' will now use a non-nil value of the variable |
4337 | `yank-undo-function' (instead of `delete-region') to undo the previous | |
4338 | `yank' or `yank-pop' command (or a call to `insert-for-yank'). The function | |
4339 | `insert-for-yank' automatically sets that variable according to the UNDO | |
4340 | element of the string argument's `yank-handler' text property if present. | |
c6de56a0 | 4341 | |
30b0da81 RS |
4342 | *** The function `insert-for-yank' now supports strings where the |
4343 | `yank-handler' property does not span the first character of the | |
4344 | string. The old behavior is available if you call | |
4345 | `insert-for-yank-1' instead. | |
c6de56a0 | 4346 | |
9bae34bf RS |
4347 | ** Syntax table changes: |
4348 | ||
4349 | +++ | |
4350 | *** The macro `with-syntax-table' no longer copies the syntax table. | |
4351 | ||
4352 | +++ | |
4353 | *** The new function `syntax-after' returns the syntax code | |
4354 | of the character after a specified buffer position, taking account | |
4355 | of text properties as well as the character code. | |
4356 | ||
4357 | +++ | |
4358 | *** `syntax-class' extracts the class of a syntax code (as returned | |
4359 | by `syntax-after'). | |
4360 | ||
f19b57e3 | 4361 | +++ |
679ce4d5 | 4362 | *** The new function `syntax-ppss' provides an efficient way to find the |
9bae34bf | 4363 | current syntactic context at point. |
c6de56a0 | 4364 | |
c44da964 | 4365 | ** File operation changes: |
5ceea398 | 4366 | |
c44da964 RS |
4367 | +++ |
4368 | *** New vars `exec-suffixes' and `load-suffixes' used when | |
9bae34bf | 4369 | searching for an executable or an Emacs Lisp file. |
5ceea398 | 4370 | |
51a8b435 | 4371 | +++ |
c44da964 RS |
4372 | *** The new primitive `set-file-times' sets a file's access and |
4373 | modification times. Magic file name handlers can handle this | |
4374 | operation. | |
052797a7 | 4375 | |
51a8b435 | 4376 | +++ |
c44da964 RS |
4377 | *** The new function `file-remote-p' tests a file name and returns |
4378 | non-nil if it specifies a remote file (one that Emacs accesses using | |
4379 | its own special methods and not directly through the file system). | |
4380 | The value in that case is an identifier for the remote file system. | |
30b0da81 | 4381 | |
c44da964 | 4382 | +++ |
9bae34bf RS |
4383 | *** `buffer-auto-save-file-format' is the new name for what was |
4384 | formerly called `auto-save-file-format'. It is now a permanent local. | |
c44da964 RS |
4385 | |
4386 | +++ | |
4387 | *** Functions `file-name-sans-extension' and `file-name-extension' now | |
4388 | ignore the leading dots in file names, so that file names such as | |
4389 | `.emacs' are treated as extensionless. | |
4390 | ||
c44da964 RS |
4391 | +++ |
4392 | *** `visited-file-modtime' and `calendar-time-from-absolute' now return | |
4393 | a list of two integers, instead of a cons. | |
4394 | ||
4395 | +++ | |
4396 | *** `file-chase-links' now takes an optional second argument LIMIT which | |
4397 | specifies the maximum number of links to chase through. If after that | |
4398 | many iterations the file name obtained is still a symbolic link, | |
4399 | `file-chase-links' returns it anyway. | |
4400 | ||
4401 | +++ | |
4402 | *** The new hook `before-save-hook' is invoked by `basic-save-buffer' | |
4403 | before saving buffers. This allows packages to perform various final | |
f7735be5 | 4404 | tasks. For example, it can be used by the copyright package to make |
c44da964 RS |
4405 | sure saved files have the current year in any copyright headers. |
4406 | ||
4407 | +++ | |
9bae34bf RS |
4408 | *** If `buffer-save-without-query' is non-nil in some buffer, |
4409 | `save-some-buffers' will always save that buffer without asking (if | |
4410 | it's modified). | |
c44da964 | 4411 | |
1de7674c | 4412 | +++ |
c44da964 RS |
4413 | *** New function `locate-file' searches for a file in a list of directories. |
4414 | `locate-file' accepts a name of a file to search (a string), and two | |
4415 | lists: a list of directories to search in and a list of suffixes to | |
4416 | try; typical usage might use `exec-path' and `load-path' for the list | |
4417 | of directories, and `exec-suffixes' and `load-suffixes' for the list | |
4418 | of suffixes. The function also accepts a predicate argument to | |
4419 | further filter candidate files. | |
4420 | ||
4421 | One advantage of using this function is that the list of suffixes in | |
4422 | `exec-suffixes' is OS-dependant, so this function will find | |
f7735be5 | 4423 | executables without polluting Lisp code with OS dependencies. |
c44da964 RS |
4424 | |
4425 | --- | |
9bae34bf RS |
4426 | *** The precedence of file name handlers has been changed. |
4427 | ||
4428 | Instead of choosing the first handler that matches, | |
4429 | `find-file-name-handler' now gives precedence to a file name handler | |
4430 | that matches nearest the end of the file name. More precisely, the | |
4431 | handler whose (match-beginning 0) is the largest is chosen. In case | |
4432 | of ties, the old "first matched" rule applies. | |
c44da964 RS |
4433 | |
4434 | +++ | |
4435 | *** A file name handler can declare which operations it handles. | |
4436 | ||
4437 | You do this by putting an `operation' property on the handler name | |
4438 | symbol. The property value should be a list of the operations that | |
4439 | the handler really handles. It won't be called for any other | |
4440 | operations. | |
4441 | ||
4442 | This is useful for autoloaded handlers, to prevent them from being | |
4443 | autoloaded when not really necessary. | |
4444 | ||
c1105d05 MA |
4445 | +++ |
4446 | *** The function `make-auto-save-file-name' is now handled by file | |
4447 | name handlers. This will be exploited for remote files mainly. | |
4448 | ||
c44da964 RS |
4449 | ** Input changes: |
4450 | ||
8763553f CY |
4451 | +++ |
4452 | *** The functions `read-event', `read-char', and `read-char-exclusive' | |
4453 | have a new optional argument SECONDS. If non-nil, this specifies a | |
4454 | maximum time to wait for input, in seconds. If no input arrives after | |
4455 | this time elapses, the functions stop waiting and return nil. | |
4456 | ||
c44da964 RS |
4457 | +++ |
4458 | *** An interactive specification can now use the code letter 'U' to get | |
4459 | the up-event that was discarded in case the last key sequence read for a | |
9bae34bf | 4460 | previous `k' or `K' argument was a down-event; otherwise nil is used. |
c44da964 RS |
4461 | |
4462 | +++ | |
4463 | *** The new interactive-specification `G' reads a file name | |
4464 | much like `F', but if the input is a directory name (even defaulted), | |
4465 | it returns just the directory name. | |
4466 | ||
4467 | --- | |
9bae34bf | 4468 | *** Functions `y-or-n-p', `read-char', `read-key-sequence' and the like, that |
c44da964 RS |
4469 | display a prompt but don't use the minibuffer, now display the prompt |
4470 | using the text properties (esp. the face) of the prompt string. | |
4471 | ||
4472 | +++ | |
4473 | *** (while-no-input BODY...) runs BODY, but only so long as no input | |
4474 | arrives. If the user types or clicks anything, BODY stops as if a | |
9bae34bf | 4475 | quit had occurred. `while-no-input' returns the value of BODY, if BODY |
f98dd4f8 RS |
4476 | finishes. It returns nil if BODY was aborted by a quit, and t if |
4477 | BODY was aborted by arrival of input. | |
c44da964 RS |
4478 | |
4479 | ** Minibuffer changes: | |
4480 | ||
9bae34bf | 4481 | +++ |
c44da964 RS |
4482 | *** The new function `minibufferp' returns non-nil if its optional |
4483 | buffer argument is a minibuffer. If the argument is omitted, it | |
4484 | defaults to the current buffer. | |
4485 | ||
4486 | +++ | |
9bae34bf | 4487 | *** New function `minibuffer-selected-window' returns the window which |
c44da964 RS |
4488 | was selected when entering the minibuffer. |
4489 | ||
c44da964 RS |
4490 | +++ |
4491 | *** The `read-file-name' function now takes an additional argument which | |
679ce4d5 | 4492 | specifies a predicate which the file name read must satisfy. The |
c44da964 RS |
4493 | new variable `read-file-name-predicate' contains the predicate argument |
4494 | while reading the file name from the minibuffer; the predicate in this | |
4495 | variable is used by read-file-name-internal to filter the completion list. | |
4496 | ||
4497 | --- | |
9bae34bf RS |
4498 | *** The new variable `read-file-name-function' can be used by Lisp code |
4499 | to override the built-in `read-file-name' function. | |
c44da964 RS |
4500 | |
4501 | +++ | |
4502 | *** The new variable `read-file-name-completion-ignore-case' specifies | |
4503 | whether completion ignores case when reading a file name with the | |
4504 | `read-file-name' function. | |
4505 | ||
4506 | +++ | |
f7735be5 | 4507 | *** The new function `read-directory-name' is for reading a directory name. |
c44da964 | 4508 | |
9bae34bf RS |
4509 | It is like `read-file-name' except that the defaulting works better |
4510 | for directories, and completion inside it shows only directories. | |
c44da964 | 4511 | |
06e95e65 JL |
4512 | +++ |
4513 | *** The new variable `history-add-new-input' specifies whether to add new | |
4514 | elements in history. If set to nil, minibuffer reading functions don't | |
4515 | add new elements to the history list, so it is possible to do this | |
4516 | afterwards by calling `add-to-history' explicitly. | |
4517 | ||
9bae34bf | 4518 | ** Completion changes: |
c44da964 | 4519 | |
8aaba1c9 JL |
4520 | +++ |
4521 | *** The new function `minibuffer-completion-contents' returns the contents | |
4522 | of the minibuffer just before point. That is what completion commands | |
4523 | operate on. | |
4524 | ||
c44da964 | 4525 | +++ |
9bae34bf RS |
4526 | *** The functions `all-completions' and `try-completion' now accept lists |
4527 | of strings as well as hash-tables additionally to alists, obarrays | |
4528 | and functions. Furthermore, the function `test-completion' is now | |
4529 | exported to Lisp. The keys in alists and hash tables can be either | |
4530 | strings or symbols, which are automatically converted with to strings. | |
c44da964 RS |
4531 | |
4532 | +++ | |
9bae34bf RS |
4533 | *** The new macro `dynamic-completion-table' supports using functions |
4534 | as a dynamic completion table. | |
c44da964 | 4535 | |
9bae34bf | 4536 | (dynamic-completion-table FUN) |
c44da964 | 4537 | |
9bae34bf RS |
4538 | FUN is called with one argument, the string for which completion is required, |
4539 | and it should return an alist containing all the intended possible | |
4540 | completions. This alist can be a full list of possible completions so that FUN | |
4541 | can ignore the value of its argument. If completion is performed in the | |
4542 | minibuffer, FUN will be called in the buffer from which the minibuffer was | |
4543 | entered. `dynamic-completion-table' then computes the completion. | |
c44da964 RS |
4544 | |
4545 | +++ | |
9bae34bf RS |
4546 | *** The new macro `lazy-completion-table' initializes a variable |
4547 | as a lazy completion table. | |
c44da964 | 4548 | |
29f93de3 | 4549 | (lazy-completion-table VAR FUN) |
c44da964 | 4550 | |
9bae34bf | 4551 | If the completion table VAR is used for the first time (e.g., by passing VAR |
29f93de3 SM |
4552 | as an argument to `try-completion'), the function FUN is called with no |
4553 | arguments. FUN must return the completion table that will be stored in VAR. | |
4554 | If completion is requested in the minibuffer, FUN will be called in the buffer | |
4555 | from which the minibuffer was entered. The return value of | |
9bae34bf | 4556 | `lazy-completion-table' must be used to initialize the value of VAR. |
c44da964 RS |
4557 | |
4558 | +++ | |
4559 | ** Enhancements to keymaps. | |
4560 | ||
1101d5df EZ |
4561 | *** New keymaps for typing file names |
4562 | ||
4563 | Two new keymaps, `minibuffer-local-filename-completion-map' and | |
4564 | `minibuffer-local-must-match-filename-map', apply whenever | |
4565 | Emacs reads a file name in the minibuffer. These key maps override | |
4566 | the usual binding of SPC to `minibuffer-complete-word' (so that file | |
4567 | names with embedded spaces could be typed without the need to quote | |
4568 | the spaces). | |
4569 | ||
c44da964 RS |
4570 | *** Cleaner way to enter key sequences. |
4571 | ||
4572 | You can enter a constant key sequence in a more natural format, the | |
4573 | same one used for saving keyboard macros, using the macro `kbd'. For | |
4574 | example, | |
4575 | ||
4576 | (kbd "C-x C-f") => "\^x\^f" | |
4577 | ||
3f11901a KS |
4578 | Actually, this format has existed since Emacs 20.1. |
4579 | ||
c44da964 RS |
4580 | *** Interactive commands can be remapped through keymaps. |
4581 | ||
9bae34bf | 4582 | This is an alternative to using `defadvice' or `substitute-key-definition' |
c44da964 RS |
4583 | to modify the behavior of a key binding using the normal keymap |
4584 | binding and lookup functionality. | |
4585 | ||
4586 | When a key sequence is bound to a command, and that command is | |
4587 | remapped to another command, that command is run instead of the | |
4588 | original command. | |
4589 | ||
4590 | Example: | |
9bae34bf RS |
4591 | Suppose that minor mode `my-mode' has defined the commands |
4592 | `my-kill-line' and `my-kill-word', and it wants C-k (and any other key | |
4593 | bound to `kill-line') to run the command `my-kill-line' instead of | |
4594 | `kill-line', and likewise it wants to run `my-kill-word' instead of | |
4595 | `kill-word'. | |
c44da964 RS |
4596 | |
4597 | Instead of rebinding C-k and the other keys in the minor mode map, | |
9bae34bf RS |
4598 | command remapping allows you to directly map `kill-line' into |
4599 | `my-kill-line' and `kill-word' into `my-kill-word' using `define-key': | |
c44da964 RS |
4600 | |
4601 | (define-key my-mode-map [remap kill-line] 'my-kill-line) | |
4602 | (define-key my-mode-map [remap kill-word] 'my-kill-word) | |
4603 | ||
9bae34bf RS |
4604 | When `my-mode' is enabled, its minor mode keymap is enabled too. So |
4605 | when the user types C-k, that runs the command `my-kill-line'. | |
c44da964 | 4606 | |
9bae34bf RS |
4607 | Only one level of remapping is supported. In the above example, this |
4608 | means that if `my-kill-line' is remapped to `other-kill', then C-k still | |
4609 | runs `my-kill-line'. | |
c44da964 RS |
4610 | |
4611 | The following changes have been made to provide command remapping: | |
4612 | ||
4613 | - Command remappings are defined using `define-key' with a prefix-key | |
4614 | `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD | |
4615 | to definition DEF in keymap MAP. The definition is not limited to | |
4616 | another command; it can be anything accepted for a normal binding. | |
4617 | ||
4618 | - The new function `command-remapping' returns the binding for a | |
4619 | remapped command in the current keymaps, or nil if not remapped. | |
4620 | ||
9bae34bf | 4621 | - `key-binding' now remaps interactive commands unless the optional |
c44da964 RS |
4622 | third argument NO-REMAP is non-nil. |
4623 | ||
9bae34bf RS |
4624 | - `where-is-internal' now returns nil for a remapped command (e.g. |
4625 | `kill-line', when `my-mode' is enabled), and the actual key binding for | |
c44da964 RS |
4626 | the command it is remapped to (e.g. C-k for my-kill-line). |
4627 | It also has a new optional fifth argument, NO-REMAP, which inhibits | |
9bae34bf RS |
4628 | remapping if non-nil (e.g. it returns "C-k" for `kill-line', and |
4629 | "<kill-line>" for `my-kill-line'). | |
c44da964 RS |
4630 | |
4631 | - The new variable `this-original-command' contains the original | |
4632 | command before remapping. It is equal to `this-command' when the | |
4633 | command was not remapped. | |
4634 | ||
4635 | *** If text has a `keymap' property, that keymap takes precedence | |
4636 | over minor mode keymaps. | |
4637 | ||
4638 | *** The `keymap' property now also works at the ends of overlays and | |
9bae34bf | 4639 | text properties, according to their stickiness. This also means that it |
c44da964 RS |
4640 | works with empty overlays. The same hold for the `local-map' property. |
4641 | ||
4642 | *** Dense keymaps now handle inheritance correctly. | |
9bae34bf | 4643 | |
c44da964 RS |
4644 | Previously a dense keymap would hide all of the simple-char key |
4645 | bindings of the parent keymap. | |
4646 | ||
4647 | *** `define-key-after' now accepts keys longer than 1. | |
4648 | ||
4649 | *** New function `current-active-maps' returns a list of currently | |
4650 | active keymaps. | |
4651 | ||
4652 | *** New function `describe-buffer-bindings' inserts the list of all | |
4653 | defined keys and their definitions. | |
4654 | ||
9bae34bf | 4655 | *** New function `keymap-prompt' returns the prompt string of a keymap. |
c44da964 RS |
4656 | |
4657 | *** (map-keymap FUNCTION KEYMAP) applies the function to each binding | |
4658 | in the keymap. | |
4659 | ||
9bae34bf | 4660 | *** New variable `emulation-mode-map-alists'. |
c44da964 RS |
4661 | |
4662 | Lisp packages using many minor mode keymaps can now maintain their own | |
9bae34bf RS |
4663 | keymap alist separate from `minor-mode-map-alist' by adding their |
4664 | keymap alist to this list. | |
c44da964 | 4665 | |
2db8f173 SM |
4666 | *** The definition of a key-binding passed to define-key can use XEmacs-style |
4667 | key-sequences, such as [(control a)]. | |
9bae34bf | 4668 | ** Abbrev changes: |
c44da964 | 4669 | |
9bae34bf RS |
4670 | +++ |
4671 | *** The new function `copy-abbrev-table' copies an abbrev table. | |
c44da964 | 4672 | |
9bae34bf | 4673 | It returns a new abbrev table that is a copy of a given abbrev table. |
c44da964 | 4674 | |
9bae34bf RS |
4675 | +++ |
4676 | *** `define-abbrev' now accepts an optional argument SYSTEM-FLAG. | |
c44da964 | 4677 | |
9bae34bf RS |
4678 | If non-nil, this marks the abbrev as a "system" abbrev, which means |
4679 | that it won't be stored in the user's abbrevs file if he saves the | |
4680 | abbrevs. Major modes that predefine some abbrevs should always | |
4681 | specify this flag. | |
c44da964 RS |
4682 | |
4683 | +++ | |
4684 | ** Enhancements to process support | |
4685 | ||
9bae34bf RS |
4686 | *** Function `list-processes' now has an optional argument; if non-nil, |
4687 | it lists only the processes whose query-on-exit flag is set. | |
30b0da81 | 4688 | |
9bae34bf | 4689 | *** New fns `set-process-query-on-exit-flag' and `process-query-on-exit-flag'. |
30b0da81 | 4690 | |
9bae34bf RS |
4691 | These replace the old function `process-kill-without-query'. That |
4692 | function is still supported, but new code should use the new | |
4693 | functions. | |
4694 | ||
4695 | *** Function `signal-process' now accepts a process object or process | |
2c7a8f63 | 4696 | name in addition to a process id to identify the signaled process. |
30b0da81 RS |
4697 | |
4698 | *** Processes now have an associated property list where programs can | |
4699 | maintain process state and other per-process related information. | |
4700 | ||
9bae34bf RS |
4701 | Use the new functions `process-get' and `process-put' to access, add, |
4702 | and modify elements on this property list. Use the new functions | |
4703 | `process-plist' and `set-process-plist' to access and replace the | |
4704 | entire property list of a process. | |
052797a7 | 4705 | |
9bae34bf RS |
4706 | *** Function `accept-process-output' has a new optional fourth arg |
4707 | JUST-THIS-ONE. If non-nil, only output from the specified process | |
30b0da81 RS |
4708 | is handled, suspending output from other processes. If value is an |
4709 | integer, also inhibit running timers. This feature is generally not | |
4710 | recommended, but may be necessary for specific applications, such as | |
4711 | speech synthesis. | |
211a9f6b | 4712 | |
30b0da81 | 4713 | *** Adaptive read buffering of subprocess output. |
eb67c5d6 | 4714 | |
30b0da81 RS |
4715 | On some systems, when emacs reads the output from a subprocess, the |
4716 | output data is read in very small blocks, potentially resulting in | |
4717 | very poor performance. This behavior can be remedied to some extent | |
9bae34bf | 4718 | by setting the new variable `process-adaptive-read-buffering' to a |
30b0da81 | 4719 | non-nil value (the default), as it will automatically delay reading |
f7735be5 | 4720 | from such processes, allowing them to produce more output before |
30b0da81 | 4721 | emacs tries to read it. |
b0ada147 | 4722 | |
c44da964 RS |
4723 | *** The new function `call-process-shell-command'. |
4724 | ||
1bef8597 | 4725 | This executes a shell command synchronously in a separate process. |
32d0a9dc | 4726 | |
30b0da81 RS |
4727 | *** The new function `process-file' is similar to `call-process', but |
4728 | obeys file handlers. The file handler is chosen based on | |
c44da964 | 4729 | `default-directory'. |
ce4254bd | 4730 | |
9bae34bf RS |
4731 | *** A process filter function gets the output as multibyte string |
4732 | if the process specifies t for its filter's multibyteness. | |
4733 | ||
4734 | That multibyteness is decided by the value of | |
4735 | `default-enable-multibyte-characters' when the process is created, and | |
4736 | you can change it later with `set-process-filter-multibyte'. | |
ce4254bd | 4737 | |
c44da964 RS |
4738 | *** The new function `set-process-filter-multibyte' sets the |
4739 | multibyteness of the strings passed to the process's filter. | |
4740 | ||
4741 | *** The new function `process-filter-multibyte-p' returns the | |
4742 | multibyteness of the strings passed to the process's filter. | |
4743 | ||
4744 | *** If a process's coding system is `raw-text' or `no-conversion' and its | |
ce4254bd KH |
4745 | buffer is multibyte, the output of the process is at first converted |
4746 | to multibyte by `string-to-multibyte' then inserted in the buffer. | |
4747 | Previously, it was converted to multibyte by `string-as-multibyte', | |
4e07258f | 4748 | which was not compatible with the behavior of file reading. |
ce4254bd | 4749 | |
e50886d3 | 4750 | +++ |
30b0da81 | 4751 | ** Enhanced networking support. |
b08d5f59 | 4752 | |
9bae34bf RS |
4753 | *** The new `make-network-process' function makes network connections. |
4754 | It allows opening of stream and datagram connections to a server, as well as | |
30b0da81 | 4755 | create a stream or datagram server inside emacs. |
6eed9bed | 4756 | |
30b0da81 RS |
4757 | - A server is started using :server t arg. |
4758 | - Datagram connection is selected using :type 'datagram arg. | |
4759 | - A server can open on a random port using :service t arg. | |
4760 | - Local sockets are supported using :family 'local arg. | |
8a5db8ae KS |
4761 | - IPv6 is supported (when available). You may explicitly select IPv6 |
4762 | using :family 'ipv6 arg. | |
30b0da81 | 4763 | - Non-blocking connect is supported using :nowait t arg. |
da9356b0 | 4764 | - The process' property list can be initialized using :plist PLIST arg; |
30b0da81 RS |
4765 | a copy of the server process' property list is automatically inherited |
4766 | by new client processes created to handle incoming connections. | |
b6c2aa59 | 4767 | |
30b0da81 RS |
4768 | To test for the availability of a given feature, use featurep like this: |
4769 | (featurep 'make-network-process '(:type datagram)) | |
8a5db8ae | 4770 | (featurep 'make-network-process '(:family ipv6)) |
175573ac | 4771 | |
7404c0d4 | 4772 | *** The old `open-network-stream' now uses `make-network-process'. |
2155ecf3 | 4773 | |
7404c0d4 | 4774 | *** New functions `process-datagram-address', `set-process-datagram-address'. |
f08830d2 | 4775 | |
30b0da81 RS |
4776 | These functions are used with datagram-based network processes to get |
4777 | and set the current address of the remote partner. | |
c60ee5e7 | 4778 | |
7404c0d4 | 4779 | *** New function `format-network-address'. |
e50886d3 | 4780 | |
7404c0d4 | 4781 | This function reformats the Lisp representation of a network address |
30b0da81 RS |
4782 | to a printable string. For example, an IP address A.B.C.D and port |
4783 | number P is represented as a five element vector [A B C D P], and the | |
4784 | printable string returned for this vector is "A.B.C.D:P". See the doc | |
4785 | string for other formatting options. | |
a4ac5b17 | 4786 | |
a61d42f1 RS |
4787 | *** `process-contact' has an optional KEY argument. |
4788 | ||
4789 | Depending on this argument, you can get the complete list of network | |
4790 | process properties or a specific property. Using :local or :remote as | |
4791 | the KEY, you get the address of the local or remote end-point. | |
9252f7bc | 4792 | |
a61d42f1 RS |
4793 | An Inet address is represented as a 5 element vector, where the first |
4794 | 4 elements contain the IP address and the fifth is the port number. | |
56011a8c | 4795 | |
a61d42f1 | 4796 | *** New functions `stop-process' and `continue-process'. |
d2d70cb6 | 4797 | |
a61d42f1 RS |
4798 | These functions stop and restart communication through a network |
4799 | connection. For a server process, no connections are accepted in the | |
4800 | stopped state. For a client process, no input is received in the | |
4801 | stopped state. | |
4802 | ||
4803 | *** New function `network-interface-list'. | |
d2d70cb6 | 4804 | |
30b0da81 RS |
4805 | This function returns a list of network interface names and their |
4806 | current network addresses. | |
d2d70cb6 | 4807 | |
a61d42f1 | 4808 | *** New function `network-interface-info'. |
d2d70cb6 | 4809 | |
30b0da81 RS |
4810 | This function returns the network address, hardware address, current |
4811 | status, and other information about a specific network interface. | |
e50886d3 | 4812 | |
a61d42f1 RS |
4813 | *** Deleting a network process with `delete-process' calls the sentinel. |
4814 | ||
4815 | The status message passed to the sentinel for a deleted network | |
4816 | process is "deleted". The message passed to the sentinel when the | |
4817 | connection is closed by the remote peer has been changed to | |
4818 | "connection broken by remote peer". | |
3116d142 | 4819 | |
c44da964 | 4820 | ** Using window objects: |
7c3cb37d | 4821 | |
21beb82f | 4822 | +++ |
c44da964 | 4823 | *** New function `window-body-height'. |
add89676 | 4824 | |
c44da964 RS |
4825 | This is like `window-height' but does not count the mode line or the |
4826 | header line. | |
add89676 | 4827 | |
2cb72935 RS |
4828 | +++ |
4829 | *** You can now make a window as short as one line. | |
4830 | ||
4831 | A window that is just one line tall does not display either a mode | |
4832 | line or a header line, even if the variables `mode-line-format' and | |
4833 | `header-line-format' call for them. A window that is two lines tall | |
4834 | cannot display both a mode line and a header line at once; if the | |
4835 | variables call for both, only the mode line actually appears. | |
4836 | ||
30b0da81 | 4837 | +++ |
2cb72935 | 4838 | *** The new function `window-inside-edges' returns the edges of the |
30b0da81 RS |
4839 | actual text portion of the window, not including the scroll bar or |
4840 | divider line, the fringes, the display margins, the header line and | |
4841 | the mode line. | |
3bd7a6ed | 4842 | |
30b0da81 | 4843 | +++ |
2cb72935 | 4844 | *** The new functions `window-pixel-edges' and `window-inside-pixel-edges' |
30b0da81 | 4845 | return window edges in units of pixels, rather than columns and lines. |
3bd7a6ed | 4846 | |
e50886d3 | 4847 | +++ |
2cb72935 | 4848 | *** The new macro `with-selected-window' temporarily switches the |
c44da964 | 4849 | selected window without impacting the order of `buffer-list'. |
df13531d | 4850 | It saves and restores the current buffer, too. |
02ce3e80 | 4851 | |
30b0da81 | 4852 | +++ |
a61d42f1 | 4853 | *** `select-window' takes an optional second argument NORECORD. |
c44da964 RS |
4854 | |
4855 | This is like `switch-to-buffer'. | |
fc2938d1 | 4856 | |
e50886d3 | 4857 | +++ |
2cb72935 | 4858 | *** `save-selected-window' now saves and restores the selected window |
30b0da81 | 4859 | of every frame. This way, it restores everything that can be changed |
df13531d RS |
4860 | by calling `select-window'. It also saves and restores the current |
4861 | buffer. | |
79fab26b | 4862 | |
c5e0561f | 4863 | +++ |
c44da964 RS |
4864 | *** `set-window-buffer' has an optional argument KEEP-MARGINS. |
4865 | ||
4866 | If non-nil, that says to preserve the window's current margin, fringe, | |
4867 | and scroll-bar settings. | |
56592beb | 4868 | |
51369542 | 4869 | +++ |
7cf7e30f | 4870 | *** The new function `window-tree' returns a frame's window tree. |
51369542 | 4871 | |
b3910238 SM |
4872 | +++ |
4873 | *** The functions `get-lru-window' and `get-largest-window' take an optional | |
4874 | argument `dedicated'. If non-nil, those functions do not ignore | |
4875 | dedicated windows. | |
4876 | ||
161ef3be RS |
4877 | +++ |
4878 | *** The new function `adjust-window-trailing-edge' moves the right | |
4879 | or bottom edge of a window. It does not move other window edges. | |
4880 | ||
e50886d3 | 4881 | +++ |
30b0da81 | 4882 | ** Customizable fringe bitmaps |
a7bd9dc7 | 4883 | |
49af2995 KS |
4884 | *** New buffer-local variables `fringe-indicator-alist' and |
4885 | `fringe-cursor-alist' maps between logical (internal) fringe indicator | |
4886 | and cursor symbols and the actual fringe bitmaps to be displayed. | |
4887 | This decouples the logical meaning of the fringe indicators from the | |
679ce4d5 | 4888 | physical appearance, as well as allowing different fringe bitmaps to |
49af2995 KS |
4889 | be used in different windows showing different buffers. |
4890 | ||
c44da964 | 4891 | *** New function `define-fringe-bitmap' can now be used to create new |
30b0da81 | 4892 | fringe bitmaps, as well as change the built-in fringe bitmaps. |
1c6576ab | 4893 | |
30b0da81 | 4894 | To change a built-in bitmap, do (require 'fringe) and use the symbol |
679ce4d5 | 4895 | identifying the bitmap such as `left-truncation' or `continued-line'. |
2b6bb1f2 | 4896 | |
c44da964 RS |
4897 | *** New function `destroy-fringe-bitmap' deletes a fringe bitmap |
4898 | or restores a built-in one to its default value. | |
cc305a60 | 4899 | |
a61d42f1 RS |
4900 | *** New function `set-fringe-bitmap-face' specifies the face to be |
4901 | used for a specific fringe bitmap. The face is automatically merged | |
4902 | with the `fringe' face, so normally, the face should only specify the | |
4903 | foreground color of the bitmap. | |
2b6bb1f2 | 4904 | |
a61d42f1 | 4905 | *** There are new display properties, `left-fringe' and `right-fringe', |
30b0da81 RS |
4906 | that can be used to show a specific bitmap in the left or right fringe |
4907 | bitmap of the display line. | |
2b6bb1f2 | 4908 | |
c44da964 | 4909 | Format is `display (left-fringe BITMAP [FACE])', where BITMAP is a |
30b0da81 RS |
4910 | symbol identifying a fringe bitmap, either built-in or defined with |
4911 | `define-fringe-bitmap', and FACE is an optional face name to be used | |
4912 | for displaying the bitmap instead of the default `fringe' face. | |
4913 | When specified, FACE is automatically merged with the `fringe' face. | |
4914 | ||
4915 | *** New function `fringe-bitmaps-at-pos' returns the current fringe | |
4916 | bitmaps in the display line at a given buffer position. | |
2b6bb1f2 | 4917 | |
c44da964 RS |
4918 | ** Other window fringe features: |
4919 | ||
c5e0561f | 4920 | +++ |
c44da964 | 4921 | *** Controlling the default left and right fringe widths. |
2b6bb1f2 | 4922 | |
6f8968c8 KS |
4923 | The default left and right fringe widths for all windows of a frame |
4924 | can now be controlled by setting the `left-fringe' and `right-fringe' | |
4925 | frame parameters to an integer value specifying the width in pixels. | |
4926 | Setting the width to 0 effectively removes the corresponding fringe. | |
2b6bb1f2 | 4927 | |
6f8968c8 KS |
4928 | The actual default fringe widths for the frame may deviate from the |
4929 | specified widths, since the combined fringe widths must match an | |
4930 | integral number of columns. The extra width is distributed evenly | |
f7735be5 | 4931 | between the left and right fringe. To force a specific fringe width, |
6f8968c8 KS |
4932 | specify the width as a negative integer (if both widths are negative, |
4933 | only the left fringe gets the specified width). | |
2b6bb1f2 RS |
4934 | |
4935 | Setting the width to nil (the default), restores the default fringe | |
4936 | width which is the minimum number of pixels necessary to display any | |
4937 | of the currently defined fringe bitmaps. The width of the built-in | |
4938 | fringe bitmaps is 8 pixels. | |
4939 | ||
c5e0561f | 4940 | +++ |
c44da964 | 4941 | *** Per-window fringe and scrollbar settings |
6f8968c8 | 4942 | |
c44da964 | 4943 | **** Windows can now have their own individual fringe widths and |
30b0da81 | 4944 | position settings. |
6f8968c8 KS |
4945 | |
4946 | To control the fringe widths of a window, either set the buffer-local | |
4947 | variables `left-fringe-width', `right-fringe-width', or call | |
4948 | `set-window-fringes'. | |
4949 | ||
4950 | To control the fringe position in a window, that is, whether fringes | |
4951 | are positioned between the display margins and the window's text area, | |
4952 | or at the edges of the window, either set the buffer-local variable | |
4953 | `fringes-outside-margins' or call `set-window-fringes'. | |
4954 | ||
4955 | The function `window-fringes' can be used to obtain the current | |
4956 | settings. To make `left-fringe-width', `right-fringe-width', and | |
4957 | `fringes-outside-margins' take effect, you must set them before | |
4958 | displaying the buffer in a window, or use `set-window-buffer' to force | |
4959 | an update of the display margins. | |
4960 | ||
c44da964 | 4961 | **** Windows can now have their own individual scroll-bar settings |
6f8968c8 KS |
4962 | controlling the width and position of scroll-bars. |
4963 | ||
c44da964 RS |
4964 | To control the scroll-bar of a window, either set the buffer-local |
4965 | variables `scroll-bar-mode' and `scroll-bar-width', or call | |
4966 | `set-window-scroll-bars'. The function `window-scroll-bars' can be | |
4967 | used to obtain the current settings. To make `scroll-bar-mode' and | |
4968 | `scroll-bar-width' take effect, you must set them before displaying | |
4969 | the buffer in a window, or use `set-window-buffer' to force an update | |
4970 | of the display margins. | |
93607efd | 4971 | |
c44da964 | 4972 | ** Redisplay features: |
93607efd | 4973 | |
30b0da81 | 4974 | +++ |
c44da964 | 4975 | *** `sit-for' can now be called with args (SECONDS &optional NODISP). |
93607efd | 4976 | |
1bb32610 | 4977 | +++ |
ff97f952 KS |
4978 | *** Iconifying or deiconifying a frame no longer makes sit-for return. |
4979 | ||
4980 | +++ | |
4981 | *** New function `redisplay' causes an immediate redisplay if no input is | |
4982 | available, equivalent to (sit-for 0). The call (redisplay t) forces | |
4983 | an immediate redisplay even if input is pending. | |
1bb32610 | 4984 | |
30b0da81 | 4985 | +++ |
c44da964 RS |
4986 | *** New function `force-window-update' can initiate a full redisplay of |
4987 | one or all windows. Normally, this is not needed as changes in window | |
4988 | contents are detected automatically. However, certain implicit | |
4989 | changes to mode lines, header lines, or display properties may require | |
4990 | forcing an explicit window update. | |
93607efd | 4991 | |
30b0da81 | 4992 | +++ |
c44da964 | 4993 | *** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able |
30b0da81 RS |
4994 | to display CHAR. More precisely, if the selected frame's fontset has |
4995 | a font to display the character set that CHAR belongs to. | |
93607efd | 4996 | |
30b0da81 | 4997 | Fontsets can specify a font on a per-character basis; when the fontset |
da9356b0 | 4998 | does that, this value cannot be accurate. |
93607efd | 4999 | |
30b0da81 | 5000 | +++ |
c44da964 RS |
5001 | *** You can define multiple overlay arrows via the new |
5002 | variable `overlay-arrow-variable-list'. | |
93607efd | 5003 | |
679ce4d5 | 5004 | It contains a list of variables which contain overlay arrow position |
c44da964 | 5005 | markers, including the original `overlay-arrow-position' variable. |
93607efd | 5006 | |
c44da964 RS |
5007 | Each variable on this list can have individual `overlay-arrow-string' |
5008 | and `overlay-arrow-bitmap' properties that specify an overlay arrow | |
5009 | string (for non-window terminals) or fringe bitmap (for window | |
5010 | systems) to display at the corresponding overlay arrow position. | |
5011 | If either property is not set, the default `overlay-arrow-string' or | |
5012 | 'overlay-arrow-fringe-bitmap' will be used. | |
3f21fb3a | 5013 | |
30b0da81 | 5014 | +++ |
c44da964 | 5015 | *** New `line-height' and `line-spacing' properties for newline characters |
3f21fb3a | 5016 | |
c44da964 RS |
5017 | A newline can now have `line-height' and `line-spacing' text or overlay |
5018 | properties that control the height of the corresponding display row. | |
108eaabb | 5019 | |
c44da964 RS |
5020 | If the `line-height' property value is t, the newline does not |
5021 | contribute to the height of the display row; instead the height of the | |
5022 | newline glyph is reduced. Also, a `line-spacing' property on this | |
5023 | newline is ignored. This can be used to tile small images or image | |
5024 | slices without adding blank areas between the images. | |
108eaabb | 5025 | |
c44da964 RS |
5026 | If the `line-height' property value is a positive integer, the value |
5027 | specifies the minimum line height in pixels. If necessary, the line | |
5028 | height it increased by increasing the line's ascent. | |
108eaabb | 5029 | |
c44da964 RS |
5030 | If the `line-height' property value is a float, the minimum line |
5031 | height is calculated by multiplying the default frame line height by | |
5032 | the given value. | |
108eaabb | 5033 | |
c44da964 RS |
5034 | If the `line-height' property value is a cons (FACE . RATIO), the |
5035 | minimum line height is calculated as RATIO * height of named FACE. | |
5036 | RATIO is int or float. If FACE is t, it specifies the current face. | |
108eaabb | 5037 | |
c44da964 RS |
5038 | If the `line-height' property value is a cons (nil . RATIO), the line |
5039 | height is calculated as RATIO * actual height of the line's contents. | |
108eaabb | 5040 | |
c44da964 RS |
5041 | If the `line-height' value is a cons (HEIGHT . TOTAL), HEIGHT specifies |
5042 | the line height as described above, while TOTAL is any of the forms | |
5043 | described above and specifies the total height of the line, causing a | |
5044 | varying number of pixels to be inserted after the line to make it line | |
5045 | exactly that many pixels high. | |
108eaabb | 5046 | |
c44da964 RS |
5047 | If the `line-spacing' property value is an positive integer, the value |
5048 | is used as additional pixels to insert after the display line; this | |
5049 | overrides the default frame `line-spacing' and any buffer local value of | |
5050 | the `line-spacing' variable. | |
108eaabb | 5051 | |
c44da964 RS |
5052 | If the `line-spacing' property is a float or cons, the line spacing |
5053 | is calculated as specified above for the `line-height' property. | |
108eaabb | 5054 | |
30b0da81 | 5055 | +++ |
a61d42f1 | 5056 | *** The buffer local `line-spacing' variable can now have a float value, |
c44da964 | 5057 | which is used as a height relative to the default frame line height. |
108eaabb | 5058 | |
30b0da81 | 5059 | +++ |
c44da964 | 5060 | *** Enhancements to stretch display properties |
108eaabb | 5061 | |
c44da964 | 5062 | The display property stretch specification form `(space PROPS)', where |
f7735be5 | 5063 | PROPS is a property list, now allows pixel based width and height |
c44da964 | 5064 | specifications, as well as enhanced horizontal text alignment. |
f17c0a19 | 5065 | |
c44da964 RS |
5066 | The value of these properties can now be a (primitive) expression |
5067 | which is evaluated during redisplay. The following expressions | |
5068 | are supported: | |
f17c0a19 | 5069 | |
c44da964 RS |
5070 | EXPR ::= NUM | (NUM) | UNIT | ELEM | POS | IMAGE | FORM |
5071 | NUM ::= INTEGER | FLOAT | SYMBOL | |
5072 | UNIT ::= in | mm | cm | width | height | |
5073 | ELEM ::= left-fringe | right-fringe | left-margin | right-margin | |
5074 | | scroll-bar | text | |
5075 | POS ::= left | center | right | |
5076 | FORM ::= (NUM . EXPR) | (OP EXPR ...) | |
5077 | OP ::= + | - | |
f17c0a19 | 5078 | |
c44da964 RS |
5079 | The form `NUM' specifies a fractional width or height of the default |
5080 | frame font size. The form `(NUM)' specifies an absolute number of | |
5081 | pixels. If a symbol is specified, its buffer-local variable binding | |
5082 | is used. The `in', `mm', and `cm' units specifies the number of | |
5083 | pixels per inch, milli-meter, and centi-meter, resp. The `width' and | |
5084 | `height' units correspond to the width and height of the current face | |
5085 | font. An image specification corresponds to the width or height of | |
5086 | the image. | |
d9f7eb77 | 5087 | |
c44da964 RS |
5088 | The `left-fringe', `right-fringe', `left-margin', `right-margin', |
5089 | `scroll-bar', and `text' elements specify to the width of the | |
5090 | corresponding area of the window. | |
d9f7eb77 | 5091 | |
c44da964 RS |
5092 | The `left', `center', and `right' positions can be used with :align-to |
5093 | to specify a position relative to the left edge, center, or right edge | |
5094 | of the text area. One of the above window elements (except `text') | |
5095 | can also be used with :align-to to specify that the position is | |
5096 | relative to the left edge of the given area. Once the base offset for | |
5097 | a relative position has been set (by the first occurrence of one of | |
679ce4d5 | 5098 | these symbols), further occurrences of these symbols are interpreted as |
c44da964 | 5099 | the width of the area. |
d278091b | 5100 | |
c44da964 RS |
5101 | For example, to align to the center of the left-margin, use |
5102 | :align-to (+ left-margin (0.5 . left-margin)) | |
18232c16 | 5103 | |
c44da964 RS |
5104 | If no specific base offset is set for alignment, it is always relative |
5105 | to the left edge of the text area. For example, :align-to 0 in a | |
a61d42f1 | 5106 | header line aligns with the first text column in the text area. |
18232c16 | 5107 | |
c44da964 RS |
5108 | The value of the form `(NUM . EXPR)' is the value of NUM multiplied by |
5109 | the value of the expression EXPR. For example, (2 . in) specifies a | |
5110 | width of 2 inches, while (0.5 . IMAGE) specifies half the width (or | |
5111 | height) of the specified image. | |
d278091b | 5112 | |
c44da964 RS |
5113 | The form `(+ EXPR ...)' adds up the value of the expressions. |
5114 | The form `(- EXPR ...)' negates or subtracts the value of the expressions. | |
d278091b | 5115 | |
30b0da81 | 5116 | +++ |
c44da964 RS |
5117 | *** Normally, the cursor is displayed at the end of any overlay and |
5118 | text property string that may be present at the current window | |
5119 | position. The cursor can now be placed on any character of such | |
5120 | strings by giving that character a non-nil `cursor' text property. | |
18232c16 | 5121 | |
0e7d7aae | 5122 | +++ |
c44da964 RS |
5123 | *** The display space :width and :align-to text properties are now |
5124 | supported on text terminals. | |
18232c16 | 5125 | |
30b0da81 | 5126 | +++ |
c44da964 | 5127 | *** Support for displaying image slices |
18232c16 | 5128 | |
c44da964 RS |
5129 | **** New display property (slice X Y WIDTH HEIGHT) can be used with |
5130 | an image property to display only a specific slice of the image. | |
18232c16 | 5131 | |
a61d42f1 | 5132 | **** Function `insert-image' has new optional fourth arg to |
c44da964 | 5133 | specify image slice (X Y WIDTH HEIGHT). |
18232c16 | 5134 | |
a61d42f1 | 5135 | **** New function `insert-sliced-image' inserts a given image as a |
c44da964 | 5136 | specified number of evenly sized slices (rows x columns). |
18232c16 | 5137 | |
a775dff4 | 5138 | +++ |
c44da964 | 5139 | *** Images can now have an associated image map via the :map property. |
18232c16 | 5140 | |
c44da964 RS |
5141 | An image map is an alist where each element has the format (AREA ID PLIST). |
5142 | An AREA is specified as either a rectangle, a circle, or a polygon: | |
5143 | A rectangle is a cons (rect . ((X0 . Y0) . (X1 . Y1))) specifying the | |
5144 | pixel coordinates of the upper left and bottom right corners. | |
5145 | A circle is a cons (circle . ((X0 . Y0) . R)) specifying the center | |
5146 | and the radius of the circle; R can be a float or integer. | |
5147 | A polygon is a cons (poly . [X0 Y0 X1 Y1 ...]) where each pair in the | |
5148 | vector describes one corner in the polygon. | |
11ef2a3b | 5149 | |
c44da964 RS |
5150 | When the mouse pointer is above a hot-spot area of an image, the |
5151 | PLIST of that hot-spot is consulted; if it contains a `help-echo' | |
5152 | property it defines a tool-tip for the hot-spot, and if it contains | |
5153 | a `pointer' property, it defines the shape of the mouse cursor when | |
a61d42f1 | 5154 | it is over the hot-spot. See the variable `void-area-text-pointer' |
c44da964 | 5155 | for possible pointer shapes. |
11ef2a3b | 5156 | |
c44da964 RS |
5157 | When you click the mouse when the mouse pointer is over a hot-spot, |
5158 | an event is composed by combining the ID of the hot-spot with the | |
5159 | mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'. | |
7e07a66d | 5160 | |
979f56ac CY |
5161 | +++ |
5162 | *** The function `find-image' now searches in etc/images/ and etc/. | |
5163 | The new variable `image-load-path' is a list of locations in which to | |
5164 | search for image files. The default is to search in etc/images, then | |
5165 | in etc/, and finally in the directories specified by `load-path'. | |
5166 | Subdirectories of etc/ and etc/images are not recursively searched; if | |
5167 | you put an image file in a subdirectory, you have to specify it | |
5168 | explicitly; for example, if an image is put in etc/images/foo/bar.xpm: | |
5169 | ||
5170 | (defimage foo-image '((:type xpm :file "foo/bar.xpm"))) | |
5171 | ||
d5b08376 BW |
5172 | Note that all images formerly located in the lisp directory have been |
5173 | moved to etc/images. | |
5174 | ||
5175 | +++ | |
5176 | *** New function `image-load-path-for-library' returns a suitable | |
5177 | search path for images relative to library. This function is useful in | |
5178 | external packages to save users from having to update | |
5179 | `image-load-path'. | |
5180 | ||
436a2ccd | 5181 | +++ |
b5572755 KS |
5182 | *** The new variable `max-image-size' defines the maximum size of |
5183 | images that Emacs will load and display. | |
436a2ccd | 5184 | |
c44da964 | 5185 | ** Mouse pointer features: |
3d619ea1 | 5186 | |
c44da964 RS |
5187 | +++ (lispref) |
5188 | ??? (man) | |
5189 | *** The mouse pointer shape in void text areas (i.e. after the end of a | |
5190 | line or below the last line in the buffer) of the text window is now | |
5191 | controlled by the new variable `void-text-area-pointer'. The default | |
5192 | is to use the `arrow' (non-text) pointer. Other choices are `text' | |
5193 | (or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'. | |
3d619ea1 | 5194 | |
85df292e | 5195 | +++ |
c44da964 RS |
5196 | *** The mouse pointer shape over an image can now be controlled by the |
5197 | :pointer image property. | |
a0a23346 | 5198 | |
f6537e03 | 5199 | +++ |
c44da964 | 5200 | *** The mouse pointer shape over ordinary text or images can now be |
679ce4d5 | 5201 | controlled/overridden via the `pointer' text property. |
15aeeda5 | 5202 | |
c44da964 | 5203 | ** Mouse event enhancements: |
15aeeda5 | 5204 | |
30b0da81 | 5205 | +++ |
a61d42f1 RS |
5206 | *** Mouse events for clicks on window fringes now specify `left-fringe' |
5207 | or `right-fringe' as the area. | |
e519464c | 5208 | |
30b0da81 | 5209 | +++ |
a61d42f1 RS |
5210 | *** All mouse events now include a buffer position regardless of where |
5211 | you clicked. For mouse clicks in window margins and fringes, this is | |
5212 | a sensible buffer position corresponding to the surrounding text. | |
e519464c | 5213 | |
30b0da81 | 5214 | +++ |
a61d42f1 | 5215 | *** `posn-point' now returns buffer position for non-text area events. |
31e0fbdd | 5216 | |
30b0da81 | 5217 | +++ |
a61d42f1 | 5218 | *** Function `mouse-set-point' now works for events outside text area. |
31e0fbdd | 5219 | |
f6537e03 | 5220 | +++ |
c44da964 RS |
5221 | *** New function `posn-area' returns window area clicked on (nil means |
5222 | text area). | |
1e892206 | 5223 | |
30b0da81 | 5224 | +++ |
a61d42f1 RS |
5225 | *** Mouse events include actual glyph column and row for all event types |
5226 | and all areas. | |
1e892206 | 5227 | |
30b0da81 | 5228 | +++ |
a61d42f1 RS |
5229 | *** New function `posn-actual-col-row' returns the actual glyph coordinates |
5230 | of the mouse event position. | |
1e892206 | 5231 | |
c44da964 | 5232 | +++ |
a61d42f1 | 5233 | *** Mouse events can now indicate an image object clicked on. |
60a501d7 | 5234 | |
c44da964 | 5235 | +++ |
a61d42f1 | 5236 | *** Mouse events include relative X and Y pixel coordinates relative to |
c44da964 | 5237 | the top left corner of the object (image or character) clicked on. |
fd13a3cc | 5238 | |
c44da964 RS |
5239 | +++ |
5240 | *** Mouse events include the pixel width and height of the object | |
5241 | (image or character) clicked on. | |
fd13a3cc | 5242 | |
c44da964 | 5243 | +++ |
a61d42f1 RS |
5244 | *** New functions 'posn-object', 'posn-object-x-y', 'posn-object-width-height'. |
5245 | ||
5246 | These return the image or string object of a mouse click, the X and Y | |
5247 | pixel coordinates relative to the top left corner of that object, and | |
5248 | the total width and height of that object. | |
fd13a3cc | 5249 | |
c44da964 | 5250 | ** Text property and overlay changes: |
8e9e520b | 5251 | |
c44da964 | 5252 | +++ |
a61d42f1 RS |
5253 | *** Arguments for `remove-overlays' are now optional, so that you can |
5254 | remove all overlays in the buffer with just (remove-overlays). | |
30b0da81 | 5255 | |
c44da964 | 5256 | +++ |
a61d42f1 | 5257 | *** New variable `char-property-alias-alist'. |
30b0da81 | 5258 | |
c44da964 RS |
5259 | This variable allows you to create alternative names for text |
5260 | properties. It works at the same level as `default-text-properties', | |
5261 | although it applies to overlays as well. This variable was introduced | |
5262 | to implement the `font-lock-face' property. | |
30b0da81 RS |
5263 | |
5264 | +++ | |
c44da964 RS |
5265 | *** New function `get-char-property-and-overlay' accepts the same |
5266 | arguments as `get-char-property' and returns a cons whose car is the | |
5267 | return value of `get-char-property' called with those arguments and | |
5268 | whose cdr is the overlay in which the property was found, or nil if | |
5269 | it was found as a text property or not found at all. | |
fd13a3cc | 5270 | |
30b0da81 | 5271 | +++ |
a61d42f1 RS |
5272 | *** The new function `remove-list-of-text-properties'. |
5273 | ||
5274 | It is like `remove-text-properties' except that it takes a list of | |
5275 | property names as argument rather than a property list. | |
8e9e520b | 5276 | |
c44da964 | 5277 | ** Face changes |
fd13a3cc | 5278 | |
2f294ab8 CY |
5279 | +++ |
5280 | *** The variable `facemenu-unlisted-faces' has been removed. | |
5281 | Emacs has a lot more faces than in the past, and nearly all of them | |
5282 | needed to be excluded. The new variable `facemenu-listed-faces' lists | |
5283 | the faces to include in the face menu. | |
5284 | ||
30b0da81 | 5285 | +++ |
c44da964 RS |
5286 | *** The new face attribute condition `min-colors' can be used to tailor |
5287 | the face color to the number of colors supported by a display, and | |
5288 | define the foreground and background colors accordingly so that they | |
5289 | look best on a terminal that supports at least this many colors. This | |
5290 | is now the preferred method for defining default faces in a way that | |
5291 | makes a good use of the capabilities of the display. | |
fd13a3cc | 5292 | |
c44da964 | 5293 | +++ |
a61d42f1 | 5294 | *** New function `display-supports-face-attributes-p' can be used to test |
c44da964 | 5295 | whether a given set of face attributes is actually displayable. |
fd13a3cc | 5296 | |
c44da964 RS |
5297 | A new predicate `supports' has also been added to the `defface' face |
5298 | specification language, which can be used to do this test for faces | |
a61d42f1 | 5299 | defined with `defface'. |
fd13a3cc | 5300 | |
30b0da81 | 5301 | --- |
c44da964 RS |
5302 | *** The special treatment of faces whose names are of the form `fg:COLOR' |
5303 | or `bg:COLOR' has been removed. Lisp programs should use the | |
5304 | `defface' facility for defining faces with specific colors, or use | |
5305 | the feature of specifying the face attributes :foreground and :background | |
5306 | directly in the `face' property instead of using a named face. | |
205f1dde | 5307 | |
30b0da81 | 5308 | +++ |
c44da964 RS |
5309 | *** The first face specification element in a defface can specify |
5310 | `default' instead of frame classification. Then its attributes act as | |
5311 | defaults that apply to all the subsequent cases (and can be overridden | |
5312 | by them). | |
205f1dde | 5313 | |
c44da964 RS |
5314 | +++ |
5315 | *** The variable `face-font-rescale-alist' specifies how much larger | |
5316 | (or smaller) font we should use. For instance, if the value is | |
5317 | '((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10 | |
5318 | point, we actually use a font of 13 point if the font matches | |
5319 | SOME-FONTNAME-PATTERN. | |
205f1dde | 5320 | |
30b0da81 | 5321 | --- |
c44da964 RS |
5322 | *** The function `face-differs-from-default-p' now truly checks |
5323 | whether the given face displays differently from the default face or | |
5324 | not (previously it did only a very cursory check). | |
205f1dde | 5325 | |
f6537e03 | 5326 | +++ |
a61d42f1 RS |
5327 | *** `face-attribute', `face-foreground', `face-background', `face-stipple'. |
5328 | ||
5329 | These now accept a new optional argument, INHERIT, which controls how | |
5330 | face inheritance is used when determining the value of a face | |
5331 | attribute. | |
6ba3d6bc | 5332 | |
f6537e03 | 5333 | +++ |
c44da964 RS |
5334 | *** New functions `face-attribute-relative-p' and `merge-face-attribute' |
5335 | help with handling relative face attributes. | |
9ade4a7d | 5336 | |
f6537e03 | 5337 | +++ |
c44da964 | 5338 | *** The priority of faces in an :inherit attribute face list is reversed. |
3bdb7f80 | 5339 | |
c44da964 RS |
5340 | If a face contains an :inherit attribute with a list of faces, earlier |
5341 | faces in the list override later faces in the list; in previous | |
5342 | releases of Emacs, the order was the opposite. This change was made | |
5343 | so that :inherit face lists operate identically to face lists in text | |
5344 | `face' properties. | |
4e3dd7cf | 5345 | |
16691d29 JL |
5346 | --- |
5347 | *** On terminals, faces with the :inverse-video attribute are displayed | |
5348 | with swapped foreground and background colors even when one of them is | |
5349 | not specified. In previous releases of Emacs, if either foreground | |
5350 | or background color was unspecified, colors were not swapped. This | |
5351 | was inconsistent with the face behavior under X. | |
5352 | ||
f6537e03 | 5353 | --- |
c44da964 RS |
5354 | *** `set-fontset-font', `fontset-info', `fontset-font' now operate on |
5355 | the default fontset if the argument NAME is nil.. | |
f6078b98 | 5356 | |
c44da964 | 5357 | ** Font-Lock changes: |
f6078b98 | 5358 | |
0e7d7aae | 5359 | +++ |
c44da964 | 5360 | *** New special text property `font-lock-face'. |
f6078b98 | 5361 | |
c44da964 RS |
5362 | This property acts like the `face' property, but it is controlled by |
5363 | M-x font-lock-mode. It is not, strictly speaking, a builtin text | |
5364 | property. Instead, it is implemented inside font-core.el, using the | |
5365 | new variable `char-property-alias-alist'. | |
2a1e884e | 5366 | |
30b0da81 | 5367 | +++ |
c44da964 | 5368 | *** font-lock can manage arbitrary text-properties beside `face'. |
2a1e884e | 5369 | |
a61d42f1 | 5370 | **** the FACENAME returned in `font-lock-keywords' can be a list of the |
c44da964 RS |
5371 | form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set other |
5372 | properties than `face'. | |
2a1e884e | 5373 | |
a61d42f1 | 5374 | **** `font-lock-extra-managed-props' can be set to make sure those |
c44da964 | 5375 | extra properties are automatically cleaned up by font-lock. |
30b0da81 RS |
5376 | |
5377 | --- | |
c44da964 | 5378 | *** jit-lock obeys a new text-property `jit-lock-defer-multiline'. |
596d02bc | 5379 | |
c44da964 RS |
5380 | If a piece of text with that property gets contextually refontified |
5381 | (see `jit-lock-defer-contextually'), then all of that text will | |
5382 | be refontified. This is useful when the syntax of a textual element | |
5383 | depends on text several lines further down (and when `font-lock-multiline' | |
5384 | is not appropriate to solve that problem). For example in Perl: | |
596d02bc | 5385 | |
c44da964 RS |
5386 | s{ |
5387 | foo | |
5388 | }{ | |
5389 | bar | |
5390 | }e | |
d33c4505 | 5391 | |
c44da964 RS |
5392 | Adding/removing the last `e' changes the `bar' from being a piece of |
5393 | text to being a piece of code, so you'd put a `jit-lock-defer-multiline' | |
5394 | property over the second half of the command to force (deferred) | |
5395 | refontification of `bar' whenever the `e' is added/removed. | |
21b6d966 | 5396 | |
05a1066f SM |
5397 | *** `font-lock-extend-region-functions' makes it possible to alter the way |
5398 | the fontification region is chosen. This can be used to prevent rounding | |
5399 | up to whole lines, or to extend the region to include all related lines | |
5400 | of multiline constructs so that such constructs get properly recognized. | |
5401 | ||
c44da964 | 5402 | ** Major mode mechanism changes: |
21b6d966 | 5403 | |
9f89426b | 5404 | +++ |
c44da964 RS |
5405 | *** `set-auto-mode' now gives the interpreter magic line (if present) |
5406 | precedence over the file name. Likewise an `<?xml' or `<!DOCTYPE' | |
5407 | declaration will give the buffer XML or SGML mode, based on the new | |
f7735be5 | 5408 | variable `magic-mode-alist'. |
9f89426b | 5409 | |
0e7d7aae | 5410 | +++ |
a61d42f1 RS |
5411 | *** Use the new function `run-mode-hooks' to run the major mode's mode hook. |
5412 | ||
5413 | +++ | |
5414 | *** All major mode functions should now run the new normal hook | |
5415 | `after-change-major-mode-hook', at their very end, after the mode | |
5416 | hooks. `run-mode-hooks' does this automatically. | |
9356fe5a | 5417 | |
c44da964 RS |
5418 | --- |
5419 | *** If a major mode function has a non-nil `no-clone-indirect' | |
5420 | property, `clone-indirect-buffer' signals an error if you use | |
5421 | it in that buffer. | |
4f4fada2 | 5422 | |
30b0da81 | 5423 | +++ |
c44da964 RS |
5424 | *** Major modes can define `eldoc-documentation-function' |
5425 | locally to provide Eldoc functionality by some method appropriate to | |
5426 | the language. | |
4f4fada2 | 5427 | |
c4f59bcf | 5428 | +++ |
c44da964 RS |
5429 | *** `define-derived-mode' by default creates a new empty abbrev table. |
5430 | It does not copy abbrevs from the parent mode's abbrev table. | |
c4f59bcf | 5431 | |
75e20bec | 5432 | +++ |
c44da964 RS |
5433 | *** The new function `run-mode-hooks' and the new macro `delay-mode-hooks' |
5434 | are used by `define-derived-mode' to make sure the mode hook for the | |
5435 | parent mode is run at the end of the child mode. | |
75e20bec | 5436 | |
c44da964 | 5437 | ** Minor mode changes: |
e0c124ce | 5438 | |
bc3b02f9 | 5439 | +++ |
c44da964 RS |
5440 | *** `define-minor-mode' now accepts arbitrary additional keyword arguments |
5441 | and simply passes them to `defcustom', if applicable. | |
bc3b02f9 | 5442 | |
5df034de | 5443 | +++ |
c44da964 | 5444 | *** `minor-mode-list' now holds a list of minor mode commands. |
5df034de | 5445 | |
a61d42f1 | 5446 | +++ |
c44da964 | 5447 | *** `define-global-minor-mode'. |
1c6576ab | 5448 | |
c44da964 RS |
5449 | This is a new name for what was formerly called |
5450 | `easy-mmode-define-global-mode'. The old name remains as an alias. | |
f67cc62e | 5451 | |
c44da964 | 5452 | ** Command loop changes: |
f67cc62e | 5453 | |
30b0da81 | 5454 | +++ |
c44da964 | 5455 | *** The new function `called-interactively-p' does what many people |
a61d42f1 RS |
5456 | have mistakenly believed `interactive-p' to do: it returns t if the |
5457 | calling function was called through `call-interactively'. | |
5458 | ||
5459 | Only use this when you cannot solve the problem by adding a new | |
c44da964 | 5460 | INTERACTIVE argument to the command. |
6710ea06 | 5461 | |
a775dff4 | 5462 | +++ |
c44da964 | 5463 | *** The function `commandp' takes an additional optional argument. |
16927a56 | 5464 | |
c44da964 RS |
5465 | If it is non-nil, then `commandp' checks for a function that could be |
5466 | called with `call-interactively', and does not return t for keyboard | |
5467 | macros. | |
30b0da81 | 5468 | |
51a8b435 | 5469 | +++ |
c44da964 RS |
5470 | *** When a command returns, the command loop moves point out from |
5471 | within invisible text, in the same way it moves out from within text | |
5472 | covered by an image or composition property. | |
16927a56 | 5473 | |
c44da964 RS |
5474 | This makes it generally unnecessary to mark invisible text as intangible. |
5475 | This is particularly good because the intangible property often has | |
5476 | unexpected side-effects since the property applies to everything | |
5477 | (including `goto-char', ...) whereas this new code is only run after | |
5478 | `post-command-hook' and thus does not care about intermediate states. | |
8727d588 | 5479 | |
30b0da81 | 5480 | +++ |
c44da964 RS |
5481 | *** If a command sets `transient-mark-mode' to `only', that |
5482 | enables Transient Mark mode for the following command only. | |
5483 | During that following command, the value of `transient-mark-mode' | |
5484 | is `identity'. If it is still `identity' at the end of the command, | |
5485 | the next return to the command loop changes to nil. | |
1c1d3d69 | 5486 | |
30b0da81 | 5487 | +++ |
c44da964 RS |
5488 | *** Both the variable and the function `disabled-command-hook' have |
5489 | been renamed to `disabled-command-function'. The variable | |
5490 | `disabled-command-hook' has been kept as an obsolete alias. | |
1c1d3d69 | 5491 | |
bcdf2143 | 5492 | +++ |
c44da964 RS |
5493 | *** `emacsserver' now runs `pre-command-hook' and `post-command-hook' |
5494 | when it receives a request from emacsclient. | |
bcdf2143 | 5495 | |
c44da964 | 5496 | ** Lisp file loading changes: |
406c0f12 | 5497 | |
c44da964 RS |
5498 | +++ |
5499 | *** `load-history' can now have elements of the form (t . FUNNAME), | |
5500 | which means FUNNAME was previously defined as an autoload (before the | |
5501 | current file redefined it). | |
0df7a0b6 | 5502 | |
51a8b435 | 5503 | +++ |
c44da964 RS |
5504 | *** `load-history' now records (defun . FUNNAME) when a function is |
5505 | defined. For a variable, it records just the variable name. | |
8e8223e2 | 5506 | |
51a8b435 | 5507 | +++ |
a61d42f1 RS |
5508 | *** The function `symbol-file' can now search specifically for function, |
5509 | variable or face definitions. | |
0ec6b206 | 5510 | |
51a8b435 | 5511 | +++ |
c44da964 RS |
5512 | *** `provide' and `featurep' now accept an optional second argument |
5513 | to test/provide subfeatures. Also `provide' now checks `after-load-alist' | |
5514 | and runs any code associated with the provided feature. | |
30b0da81 | 5515 | |
c44da964 RS |
5516 | --- |
5517 | *** The variable `recursive-load-depth-limit' has been deleted. | |
5518 | Emacs now signals an error if the same file is loaded with more | |
5519 | than 3 levels of nesting. | |
7c3cb37d | 5520 | |
a7bd9dc7 | 5521 | +++ |
c44da964 | 5522 | ** Byte compiler changes: |
8e8223e2 | 5523 | |
a61d42f1 | 5524 | *** The byte compiler now displays the actual line and character |
c44da964 | 5525 | position of errors, where possible. Additionally, the form of its |
a61d42f1 RS |
5526 | warning and error messages have been brought into line with GNU standards |
5527 | for these. As a result, you can use next-error and friends on the | |
5528 | compilation output buffer. | |
202082d3 | 5529 | |
c44da964 RS |
5530 | *** The new macro `with-no-warnings' suppresses all compiler warnings |
5531 | inside its body. In terms of execution, it is equivalent to `progn'. | |
5532 | ||
5533 | *** You can avoid warnings for possibly-undefined symbols with a | |
5534 | simple convention that the compiler understands. (This is mostly | |
5535 | useful in code meant to be portable to different Emacs versions.) | |
5536 | Write forms like the following, or code that macroexpands into such | |
5537 | forms: | |
5538 | ||
5539 | (if (fboundp 'foo) <then> <else>) | |
5540 | (if (boundp 'foo) <then> <else) | |
5541 | ||
5542 | In the first case, using `foo' as a function inside the <then> form | |
5543 | won't produce a warning if it's not defined as a function, and in the | |
5544 | second case, using `foo' as a variable won't produce a warning if it's | |
5545 | unbound. The test must be in exactly one of the above forms (after | |
5546 | macro expansion), but such tests can be nested. Note that `when' and | |
5547 | `unless' expand to `if', but `cond' doesn't. | |
5548 | ||
5549 | *** `(featurep 'xemacs)' is treated by the compiler as nil. This | |
5550 | helps to avoid noisy compiler warnings in code meant to run under both | |
5551 | Emacs and XEmacs and can sometimes make the result significantly more | |
5552 | efficient. Since byte code from recent versions of XEmacs won't | |
5553 | generally run in Emacs and vice versa, this optimization doesn't lose | |
5554 | you anything. | |
5555 | ||
7404c0d4 | 5556 | *** The local variable `no-byte-compile' in Lisp files is now obeyed. |
c44da964 RS |
5557 | |
5558 | --- | |
5559 | *** When a Lisp file uses CL functions at run-time, compiling the file | |
5560 | now issues warnings about these calls, unless the file performs | |
5561 | (require 'cl) when loaded. | |
5562 | ||
5563 | ** Frame operations: | |
63ca0a6e | 5564 | |
30b0da81 | 5565 | +++ |
c44da964 | 5566 | *** New functions `frame-current-scroll-bars' and `window-current-scroll-bars'. |
30b0da81 RS |
5567 | |
5568 | These functions return the current locations of the vertical and | |
5569 | horizontal scroll bars in a frame or window. | |
30de4b24 | 5570 | |
51a8b435 | 5571 | +++ |
c44da964 RS |
5572 | *** The new function `modify-all-frames-parameters' modifies parameters |
5573 | for all (existing and future) frames. | |
30de4b24 | 5574 | |
51a8b435 | 5575 | +++ |
c44da964 RS |
5576 | *** The new frame parameter `tty-color-mode' specifies the mode to use |
5577 | for color support on character terminal frames. Its value can be a | |
5578 | number of colors to support, or a symbol. See the Emacs Lisp | |
5579 | Reference manual for more detailed documentation. | |
1c6576ab | 5580 | |
51a8b435 | 5581 | +++ |
c44da964 RS |
5582 | *** When using non-toolkit scroll bars with the default width, |
5583 | the `scroll-bar-width' frame parameter value is nil. | |
026f408d | 5584 | |
c44da964 | 5585 | ** Mule changes: |
026f408d | 5586 | |
51a8b435 | 5587 | +++ |
c44da964 | 5588 | *** Already true in Emacs 21.1, but not emphasized clearly enough: |
026f408d | 5589 | |
c44da964 RS |
5590 | Multibyte buffers can now faithfully record all 256 character codes |
5591 | from 0 to 255. As a result, most of the past reasons to use unibyte | |
5592 | buffers no longer exist. We only know of three reasons to use them | |
5593 | now: | |
6c0b2643 | 5594 | |
c44da964 | 5595 | 1. If you prefer to use unibyte text all of the time. |
6c0b2643 | 5596 | |
c44da964 RS |
5597 | 2. For reading files into temporary buffers, when you want to avoid |
5598 | the time it takes to convert the format. | |
6c0b2643 | 5599 | |
c44da964 RS |
5600 | 3. For binary files where format conversion would be pointless and |
5601 | wasteful. | |
32ebbc3a | 5602 | |
c44da964 | 5603 | --- |
a61d42f1 | 5604 | *** `set-buffer-file-coding-system' now takes an additional argument, |
c44da964 | 5605 | NOMODIFY. If it is non-nil, it means don't mark the buffer modified. |
6c0b2643 | 5606 | |
30b0da81 | 5607 | +++ |
c44da964 RS |
5608 | *** The new variable `auto-coding-functions' lets you specify functions |
5609 | to examine a file being visited and deduce the proper coding system | |
5610 | for it. (If the coding system is detected incorrectly for a specific | |
5611 | file, you can put a `coding:' tags to override it.) | |
6c0b2643 | 5612 | |
30b0da81 | 5613 | --- |
c44da964 RS |
5614 | *** The new function `merge-coding-systems' fills in unspecified aspects |
5615 | of one coding system from another coding system. | |
6c0b2643 | 5616 | |
c44da964 RS |
5617 | --- |
5618 | *** New coding system property `mime-text-unsuitable' indicates that | |
5619 | the coding system's `mime-charset' is not suitable for MIME text | |
5620 | parts, e.g. utf-16. | |
ace64e0a | 5621 | |
51a8b435 | 5622 | +++ |
c44da964 RS |
5623 | *** New function `decode-coding-inserted-region' decodes a region as if |
5624 | it is read from a file without decoding. | |
123ac55e | 5625 | |
c44da964 RS |
5626 | --- |
5627 | *** New CCL functions `lookup-character' and `lookup-integer' access | |
5628 | hash tables defined by the Lisp function `define-translation-hash-table'. | |
0b559506 | 5629 | |
c44da964 | 5630 | --- |
a61d42f1 | 5631 | *** New function `quail-find-key' returns a list of keys to type in the |
c44da964 | 5632 | current input method to input a character. |
6b3daede | 5633 | |
c44da964 | 5634 | ** Mode line changes: |
c94472fc | 5635 | |
a775dff4 | 5636 | +++ |
c44da964 | 5637 | *** New function `format-mode-line'. |
f24485f1 | 5638 | |
a61d42f1 | 5639 | This returns the mode line or header line of the selected (or a |
c44da964 | 5640 | specified) window as a string with or without text properties. |
30de4b24 | 5641 | |
f60a6f87 | 5642 | +++ |
c44da964 RS |
5643 | *** The new mode-line construct `(:propertize ELT PROPS...)' can be |
5644 | used to add text properties to mode-line elements. | |
71c88486 | 5645 | |
30b0da81 | 5646 | +++ |
c44da964 RS |
5647 | *** The new `%i' and `%I' constructs for `mode-line-format' can be used |
5648 | to display the size of the accessible part of the buffer on the mode | |
5649 | line. | |
30b0da81 | 5650 | |
a6b017c9 | 5651 | +++ |
86270ecf | 5652 | *** Mouse-face on mode-line (and header-line) is now supported. |
b1ffef12 | 5653 | |
c44da964 | 5654 | ** Menu manipulation changes: |
30b0da81 | 5655 | |
c44da964 RS |
5656 | --- |
5657 | *** To manipulate the File menu using easy-menu, you must specify the | |
5658 | proper name "file". In previous Emacs versions, you had to specify | |
5659 | "files", even though the menu item itself was changed to say "File" | |
5660 | several versions ago. | |
71c88486 | 5661 | |
c44da964 RS |
5662 | --- |
5663 | *** The dummy function keys made by easy-menu are now always lower case. | |
5664 | If you specify the menu item name "Ada", for instance, it uses `ada' | |
5665 | as the "key" bound by that key binding. | |
30de4b24 | 5666 | |
c44da964 RS |
5667 | This is relevant only if Lisp code looks for the bindings that were |
5668 | made with easy-menu. | |
ffe5000a | 5669 | |
f60a6f87 | 5670 | --- |
c44da964 RS |
5671 | *** `easy-menu-define' now allows you to use nil for the symbol name |
5672 | if you don't need to give the menu a name. If you install the menu | |
5673 | into other keymaps right away (MAPS is non-nil), it usually doesn't | |
5674 | need to have a name. | |
5675 | ||
5676 | ** Operating system access: | |
c494f663 | 5677 | |
85df292e | 5678 | +++ |
c44da964 RS |
5679 | *** The new primitive `get-internal-run-time' returns the processor |
5680 | run time used by Emacs since start-up. | |
4e3dd7cf | 5681 | |
c44da964 RS |
5682 | +++ |
5683 | *** Functions `user-uid' and `user-real-uid' now return floats if the | |
5684 | user UID doesn't fit in a Lisp integer. Function `user-full-name' | |
5685 | accepts a float as UID parameter. | |
30b0da81 | 5686 | |
c44da964 RS |
5687 | +++ |
5688 | *** New function `locale-info' accesses locale information. | |
30b0da81 | 5689 | |
c44da964 RS |
5690 | --- |
5691 | *** On MS Windows, locale-coding-system is used to interact with the OS. | |
5692 | The Windows specific variable w32-system-coding-system, which was | |
5693 | formerly used for that purpose is now an alias for locale-coding-system. | |
30b0da81 | 5694 | |
c44da964 RS |
5695 | --- |
5696 | *** New function `redirect-debugging-output' can be used to redirect | |
5697 | debugging output on the stderr file handle to a file. | |
5698 | ||
5699 | ** Miscellaneous: | |
30b0da81 RS |
5700 | |
5701 | +++ | |
c44da964 | 5702 | *** A number of hooks have been renamed to better follow the conventions: |
30b0da81 | 5703 | |
a61d42f1 RS |
5704 | `find-file-hooks' to `find-file-hook', |
5705 | `find-file-not-found-hooks' to `find-file-not-found-functions', | |
5706 | `write-file-hooks' to `write-file-functions', | |
5707 | `write-contents-hooks' to `write-contents-functions', | |
5708 | `x-lost-selection-hooks' to `x-lost-selection-functions', | |
5709 | `x-sent-selection-hooks' to `x-sent-selection-functions', | |
5710 | `delete-frame-hook' to `delete-frame-functions'. | |
30b0da81 | 5711 | |
c44da964 | 5712 | In each case the old name remains as an alias for the moment. |
30b0da81 | 5713 | |
c44da964 | 5714 | +++ |
f7735be5 | 5715 | *** Variable `local-write-file-hooks' is marked obsolete. |
c44da964 RS |
5716 | |
5717 | Use the LOCAL arg of `add-hook'. | |
30b0da81 RS |
5718 | |
5719 | --- | |
c44da964 RS |
5720 | *** New function `x-send-client-message' sends a client message when |
5721 | running under X. | |
9bae34bf RS |
5722 | |
5723 | ** GC changes: | |
5724 | ||
dd44836c SM |
5725 | +++ |
5726 | *** New variable `gc-cons-percentage' automatically grows the GC cons threshold | |
290e4707 SS |
5727 | as the heap size increases. |
5728 | ||
9bae34bf RS |
5729 | +++ |
5730 | *** New variables `gc-elapsed' and `gcs-done' provide extra information | |
5731 | on garbage collection. | |
5732 | ||
5733 | +++ | |
5734 | *** The normal hook `post-gc-hook' is run at the end of garbage collection. | |
5735 | ||
5736 | The hook is run with GC inhibited, so use it with care. | |
5737 | \f | |
5738 | * New Packages for Lisp Programming in Emacs 22.1 | |
5739 | ||
5740 | +++ | |
a5768150 RS |
5741 | ** The new library button.el implements simple and fast `clickable |
5742 | buttons' in emacs buffers. Buttons are much lighter-weight than the | |
5743 | `widgets' implemented by widget.el, and can be used by lisp code that | |
5744 | doesn't require the full power of widgets. Emacs uses buttons for | |
5745 | such things as help and apropos buffers. | |
9bae34bf RS |
5746 | |
5747 | --- | |
5748 | ** The new library tree-widget.el provides a widget to display a set | |
5749 | of hierarchical data as an outline. For example, the tree-widget is | |
5750 | well suited to display a hierarchy of directories and files. | |
5751 | ||
f19b57e3 | 5752 | +++ |
9bae34bf RS |
5753 | ** The new library bindat.el provides functions to unpack and pack |
5754 | binary data structures, such as network packets, to and from Lisp | |
5755 | data structures. | |
5756 | ||
9bae34bf RS |
5757 | --- |
5758 | ** master-mode.el implements a minor mode for scrolling a slave | |
5759 | buffer without leaving your current buffer, the master buffer. | |
5760 | ||
5761 | It can be used by sql.el, for example: the SQL buffer is the master | |
5762 | and its SQLi buffer is the slave. This allows you to scroll the SQLi | |
5763 | buffer containing the output from the SQL buffer containing the | |
5764 | commands. | |
5765 | ||
5766 | This is how to use sql.el and master.el together: the variable | |
5767 | sql-buffer contains the slave buffer. It is a local variable in the | |
5768 | SQL buffer. | |
5769 | ||
5770 | (add-hook 'sql-mode-hook | |
5771 | (function (lambda () | |
5772 | (master-mode t) | |
5773 | (master-set-slave sql-buffer)))) | |
5774 | (add-hook 'sql-set-sqli-hook | |
5775 | (function (lambda () | |
5776 | (master-set-slave sql-buffer)))) | |
5777 | ||
a5768150 RS |
5778 | +++ |
5779 | ** The new library benchmark.el does timing measurements on Lisp code. | |
5780 | ||
5781 | This includes measuring garbage collection time. | |
5782 | ||
9bae34bf RS |
5783 | +++ |
5784 | ** The new library testcover.el does test coverage checking. | |
5785 | ||
5786 | This is so you can tell whether you've tested all paths in your Lisp | |
5787 | code. It works with edebug. | |
5788 | ||
5789 | The function `testcover-start' instruments all functions in a given | |
5790 | file. Then test your code. The function `testcover-mark-all' adds | |
5791 | overlay "splotches" to the Lisp file's buffer to show where coverage | |
5792 | is lacking. The command `testcover-next-mark' (bind it to a key!) | |
5793 | will move point forward to the next spot that has a splotch. | |
5794 | ||
5795 | Normally, a red splotch indicates the form was never completely | |
5796 | evaluated; a brown splotch means it always evaluated to the same | |
5797 | value. The red splotches are skipped for forms that can't possibly | |
5798 | complete their evaluation, such as `error'. The brown splotches are | |
5799 | skipped for forms that are expected to always evaluate to the same | |
5800 | value, such as (setq x 14). | |
5801 | ||
5802 | For difficult cases, you can add do-nothing macros to your code to | |
5803 | help out the test coverage tool. The macro `noreturn' suppresses a | |
5804 | red splotch. It is an error if the argument to `noreturn' does | |
5805 | return. The macro `1value' suppresses a brown splotch for its argument. | |
5806 | This macro is a no-op except during test-coverage -- then it signals | |
5807 | an error if the argument actually returns differing values. | |
251584f3 | 5808 | |
efeb796b | 5809 | |
05197f40 | 5810 | \f |
a933dad1 DL |
5811 | ---------------------------------------------------------------------- |
5812 | Copyright information: | |
5813 | ||
9a21d88b KS |
5814 | Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 |
5815 | Free Software Foundation, Inc. | |
a933dad1 DL |
5816 | |
5817 | Permission is granted to anyone to make or distribute verbatim copies | |
5818 | of this document as received, in any medium, provided that the | |
5819 | copyright notice and this permission notice are preserved, | |
5820 | thus giving the recipient permission to redistribute in turn. | |
5821 | ||
5822 | Permission is granted to distribute modified versions | |
5823 | of this document, or of portions of it, | |
5824 | under the above conditions, provided also that they | |
5825 | carry prominent notices stating who last changed them. | |
05197f40 | 5826 | \f |
a933dad1 DL |
5827 | Local variables: |
5828 | mode: outline | |
5829 | paragraph-separate: "[ \f]*$" | |
5830 | end: | |
ab5796a9 MB |
5831 | |
5832 | arch-tag: 1aca9dfa-2ac4-4d14-bebf-0007cee12793 |