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