Document new System colors on MS-Windows
[bpt/emacs.git] / etc / NEWS
CommitLineData
c67de8ba 1GNU Emacs NEWS -- history of user-visible changes. 2003-05-21
175573ac 2Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
a933dad1
DL
3See the end for copying conditions.
4
5Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
3787e12e 6For older news, see the file ONEWS
a933dad1 7
ad8d610b
KS
8Temporary note:
9 +++ indicates that the appropriate manual has already been updated.
10 --- means no change in the manuals is called for.
11When you add a new item, please add it without either +++ or ---
1a0b9ae4 12so we will look at it and add it to the manual.
ad8d610b 13
05197f40 14\f
d278091b 15* Installation Changes in Emacs 21.4
76fb24bb 16
0571f2d8
JD
17** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
18when you run configure. This requires Gtk+ 2.0 or newer.
19
2b6bb1f2 20---
d2a53bb7
PJ
21** Emacs can now be built without sound support.
22
4208da83
SM
23** The `emacsserver' program has been removed, replaced with elisp code.
24
2b6bb1f2 25---
76fb24bb
PJ
26** Emacs now supports new configure options `--program-prefix',
27`--program-suffix' and `--program-transform-name' that affect the names of
28installed programs.
29
2b6bb1f2 30---
81f755ae 31** By default, Emacs now uses a setgid helper program to update game
672ab90b
CW
32scores. The directory ${localstatedir}/games/emacs is the normal
33place for game scores to be stored. This may be controlled by the
34configure option `--with-game-dir'. The specific user that Emacs uses
35to own the game scores is controlled by `--with-game-user'. If access
5167cfda
CW
36to a game user is not available, then scores will be stored separately
37in each user's home directory.
81f755ae 38
cd7d2d9e
EZ
39---
40** Leim is now part of the Emacs distribution.
41You no longer need to download a separate tarball in order to build
42Emacs with Leim.
43
4e5cdb4f
KS
44+++
45** The Emacs Lisp Reference Manual is now part of the distribution.
46
47The ELisp reference manual in Info format is built as part of the
48Emacs build procedure and installed together with the Emacs User
49Manual. A menu item was added to the menu bar that makes it easy
50accessible (Help->More Manuals->Emacs Lisp Reference).
51
52---
53** The Introduction to Programming in Emacs Lisp manual is now part of
54the distribution.
55
56This manual is now part of the standard distribution and is installed,
57together with the Emacs User Manual, into the Info directory. A menu
58item was added to the menu bar that makes it easy accessible
59(Help->More Manuals->Introduction to Emacs Lisp).
60
c60ee5e7
JB
61** Support for Cygwin was added.
62
73791277
EZ
63---
64** Support for AIX 5.1 was added.
65
a17b3614 66---
1096bcc0
GM
67** Support for FreeBSD/Alpha has been added.
68
a17b3614
EZ
69---
70** Support for BSD/OS 5.0 was added.
71
84913e36
EZ
72---
73** Support for GNU/Linux systems on S390 machines was added.
74
82e119fb
EZ
75---
76** Support for MacOS X was added.
77See the files mac/README and mac/INSTALL for build instructions.
78
2b6bb1f2 79---
3fa4ac47 80** Support for GNU/Linux systems on X86-64 machines was added.
16927a56 81
d2d70cb6 82---
4e5cdb4f
KS
83** A French translation of the `Emacs Survival Guide' is available.
84
85---
86** A French translation of the Emacs Tutorial is available.
87
88\f
89* Changes in Emacs 21.4
d2d70cb6 90
bf078377
SM
91** BibTeX mode:
92*** New `bibtex-entry-format' option `required-fields', enabled by default.
93*** bibtex-maintain-sorted-entries can take values `plain',
94`crossref', and `entry-class' which control the sorting scheme used
95for BibTeX entries. `bibtex-sort-entry-class' controls the sorting
96scheme `entry-class'.
97
6f8968c8
KS
98** When display margins are present in a window, the fringes are now
99displayed between the margins and the buffer's text area, rather than
100at the edges of the window.
101
bd9b2b20 102** A window may now have individual fringe and scroll-bar settings,
6f8968c8
KS
103in addition to the individual display margin settings.
104
105Such individual settings are now preserved when windows are split
bd9b2b20 106horizontally or vertically, a saved window configuration is restored,
6f8968c8
KS
107or when the frame is resized.
108
2a89019f
SM
109** Under X, mouse-wheel-mode is turned on by default.
110
c67de8ba
DL
111** The X resource useXIM can be used to turn off use of XIM, which may
112speed up Emacs with slow networking to the X server.
113
114** `describe-char' can show data from the Unicode database file. See
115user option `unicode-data'.
116
a95cefd7 117** `undo-only' does an undo which does not redo any previous undo.
c64a682c
SM
118
119** `uniquify-strip-common-suffix' tells uniquify to prefer
120`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
121
122** If the user visits a file larger than `large-file-warning-threshold',
123Emacs will prompt her for confirmation.
124
347003be
DL
125** A UTF-7 coding system is available in the library `utf-7'.
126
556621f6
NR
127** GUD mode has its own tool bar for controlling execution of the inferior
128and other common debugger commands.
129
1d1d1b1f
JB
130** recentf changes.
131
132The recent file list is now automatically cleanup when recentf mode is
133enabled. The new option `recentf-auto-cleanup' controls when to do
134automatic cleanup.
135
136With the more advanced option: `recentf-filename-handler', you can
137specify a function that transforms filenames handled by recentf. For
138example, if set to `file-truename', the same file will not be in the
139recent list with different symbolic links.
140
141To follow naming convention, `recentf-keep-non-readable-files-flag'
142and `recentf-menu-append-commands-flag' respectively replace the
143misnamed options `recentf-keep-non-readable-files-p' and
144`recentf-menu-append-commands-p'. The old names remain available as
145aliases, but have been marked obsolete.
146
4cdf4bde
DL
147** The default for the paper size (variable ps-paper-type) is taken
148from the locale.
61cb0b53 149
5ab0ceed
RS
150** Init file changes
151
152You can now put the init files .emacs and .emacs_SHELL under
153~/.emacs.d or directly under ~. Emacs will find them in either place.
154
0ec6b206
SM
155** partial-completion-mode now does partial completion on directory names.
156
ff6a3bfb
RS
157** skeleton.el now supports using - to mark the skeleton-point without
158 interregion interaction. @ has reverted to only setting
159 skeleton-positions and no longer sets skeleton-point. Skeletons
160 which used @ to mark skeleton-point independent of _ should now use -
161 instead. The updated skeleton-insert docstring explains these new
162 features along with other details of skeleton construction.
163
a1b4049d
BW
164** MH-E changes.
165
924df208 166Upgraded to MH-E version 7.3. There have been major changes since
a1b4049d
BW
167version 5.0.2; see MH-E-NEWS for details.
168
5b8b9fa7 169+++
175573ac
DL
170** The `emacsclient' command understands the options `--eval' and
171`--display' which tell Emacs respectively to evaluate the given elisp
172expression and to use the given display when visiting files.
173
174** User option `server-mode' can be used to start a server process.
5b8b9fa7 175
f5d0cc77
RS
176+++
177** The mode line position information now comes before the major mode.
178When the file is maintained under version control, that information
179appears between the position information and the major mode.
2c37653c 180
957e7c38
RS
181** C-x s (save-some-buffers) now offers an option `d' to diff a buffer
182against its file, so you can see what changes you would be saving.
183
2e4e635a
RS
184+++
185** You can now customize the use of window fringes. To control this
186for all frames, use M-x fringe-mode or the Show/Hide submenu of the
187top-level Options menu, or customize the `fringe-mode' variable. To
188control this for a specific frame, use the command M-x
189set-fringe-style.
555c87d8 190
2e4e635a 191+++
d7b590b1
MR
192** There is a new user option `mail-default-directory' that allows you
193to specify the value of `default-directory' for mail buffers. This
194directory is used for auto-save files of mail buffers. It defaults to
195"~/".
196
2b6bb1f2 197+++
af7272b1
RS
198** When you are root, and you visit a file whose modes specify
199read-only, the Emacs buffer is now read-only too. Type C-x C-q if you
200want to make the buffer writable. (As root, you will in fact be able
201to alter the file.)
202
cc305a60
RS
203** The new command `revert-buffer-with-coding-system' (C-x RET r)
204revisits the current file using a coding system that you specify.
205
8798ecdb
KH
206** The new command `recode-file-name' changes the encoding of the name
207of a file.
208
dacec596 209---
4cdf4bde 210** `ps-print' can now print characters from the mule-unicode charsets.
dacec596
EZ
211
212Printing text with characters from the mule-unicode-* sets works with
213ps-print, provided that you have installed the appropriate BDF fonts.
214See the file INSTALL for URLs where you can find these fonts.
215
b03763f4
EZ
216---
217** The new options `buffers-menu-show-directories' and
218`buffers-menu-show-status' let you control how buffers are displayed
219in the menu dropped down when you click "Buffers" from the menu bar.
220
221`buffers-menu-show-directories' controls whether the menu displays
222leading directories as part of the file name visited by the buffer.
223If its value is `unless-uniquify', the default, directories will be
224shown unless uniquify-buffer-name-style' is non-nil. The value of nil
225and t turn the display of directories off and on, respectively.
226
227`buffers-menu-show-status' controls whether the Buffers menu includes
228the modified and read-only status of the buffers. By default it is
229t, and the status is shown.
230
231Setting these variables directly does not take effect until next time
232the Buffers menu is regenerated.
233
2e4e635a 234+++
4d3eda1c 235** The commands M-x customize-face and M-x customize-face-other-window
2e4e635a
RS
236now look at the character after point. If a face or faces are
237specified for that character, the commands by default customize those
238faces.
4d3eda1c 239
175573ac
DL
240** New language environments: French, Ukrainian, Windows-1251, Tajik,
241Bulgarian, Belarusian, Ukrainian, UTF-8, Windows-1255, Welsh, Latin-6,
4cdf4bde
DL
242Latin-7, Lithuanian, Latvian, Swedish, Slovenian, Croatian, Georgian,
243Italian, Russian, Malayalam, Tamil, Russian, Chinese-EUC-TW. (Set up
244automatically according to the locale.)
175573ac
DL
245
246** Indian support has been updated.
247The in-is13194 coding system is now Unicode-based. CDAC fonts are
248assumed. There is a framework for supporting various
4cdf4bde
DL
249Indian scripts, but currently only Devanagari, Malayalam and Tamil are
250supported.
fc2938d1 251
813f3d41 252---
fc2938d1
DL
253** New input methods: latin-alt-postfix, latin-postfix, latin-prefix,
254ukrainian-computer, belarusian, bulgarian-bds, russian-computer,
255vietnamese-telex, lithuanian-numeric, lithuanian-keyboard,
256latvian-keyboard, welsh, georgian, rfc1345, ucs, sgml,
4cdf4bde
DL
257bulgarian-phonetic, dutch, slovenian, croatian, malayalam-inscript,
258tamil-inscript.
fc2938d1 259
813f3d41
RS
260---
261** A new coding system `euc-tw' has been added for traditional Chinese
262in CNS encoding; it accepts both Big 5 and CNS as input; on saving,
263Big 5 is then converted to CNS.
264
265---
fc2938d1
DL
266** Many new coding systems are available by loading the `code-pages'
267library. These include complete versions of most of those in
a4ac5b17 268codepage.el, based on Unicode mappings.
fc2938d1 269
347003be
DL
270** The utf-8/16 coding systems have been enhanced.
271By default, untranslatable utf-8 sequences (mostly representing CJK
272characters) are simply composed into single quasi-characters. User
273option `utf-translate-cjk' arranges to translate many utf-8 CJK
274character sequences into real Emacs characters in a similar way to the
275Mule-UCS system. This uses significant space, so is not the default.
276You can augment/amend the CJK translation via hash tables
277`ucs-mule-cjk-to-unicode' and `ucs-unicode-to-mule-cjk'. The utf-8
278coding system now also encodes characters from most of Emacs's
742f8710 279one-dimensional internal charsets, specifically the ISO-8859 ones.
347003be 280The utf-16 coding system is affected similarly.
a4ac5b17
DL
281
282** iso-10646-1 (`Unicode') fonts can be used to display any range of
283characters encodable by the utf-8 coding system. Just specify the
284fontset appropriately.
fc2938d1
DL
285
286** New command `ucs-insert' inserts a character specified by its
a4ac5b17 287unicode.
fc2938d1 288
1c6576ab 289+++
a4ac5b17
DL
290** Limited support for character `unification' has been added.
291Emacs now knows how to translate between different representations of
292the same characters in various Emacs charsets according to standard
293Unicode mappings. This applies mainly to characters in the ISO 8859
294sets plus some other 8-bit sets, but can be extended. For instance,
295translation works amongst the Emacs ...-iso8859-... charsets and the
296mule-unicode-... ones.
297
298By default this translation will happen automatically on encoding.
299Self-inserting characters are translated to make the input conformant
300with the encoding of the buffer in which it's being used, where
301possible.
fc2938d1
DL
302
303You can force a more complete unification with the user option
304unify-8859-on-decoding-mode. That maps all the Latin-N character sets
305into Unicode characters (from the latin-iso8859-1 and
a4ac5b17
DL
306mule-unicode-0100-24ff charsets) on decoding. Note that this mode
307will often effectively clobber data with an iso-2022 encoding.
fc2938d1
DL
308
309** There is support for decoding Greek and Cyrillic characters into
310either Unicode (the mule-unicode charsets) or the iso-8859 charsets,
311when possible. The latter are more space-efficient. This is
e9b9ec8b 312controlled by user option utf-fragment-on-decoding.
8f9891ab 313
7443bd8e
KH
314** The new command `set-file-name-coding-system' (C-x RET F) sets
315coding system for encoding and decoding file names. A new menu item
316(Options->Mule->Set Coding Systems->For File Name) invokes this
317command.
318
2a1e884e 319---
2e4e635a 320** The scrollbar under LessTif or Motif has a smoother drag-scrolling.
5a597a71
SM
321On the other hand, the size of the thumb does not represent the actual
322amount of text shown any more (only a crude approximation of it).
323
267bdad3
EZ
324+++
325** Emacs can produce an underscore-like (horizontal bar) cursor.
326The underscore cursor is set by putting `(cursor-type . hbar)' in
327default-frame-alist. It supports variable heights, like the `bar'
328cursor does.
329
c0e48b0b
RS
330** Filesets are collections of files. You can define a fileset in
331various ways, such as based on a directory tree or based on
332program files that include other program files.
333
334Once you have defined a fileset, you can perform various operations on
335all the files in it, such as visiting them or searching and replacing
336in them.
337
172f1af1
EZ
338---
339** PO translation files are decoded according to their MIME headers
340when Emacs visits them.
341
2a1e884e 342---
ded0c207
EZ
343** The game `mpuz' is enhanced.
344
345`mpuz' now allows the 2nd factor not to have two identical digits. By
346default, all trivial operations involving whole lines are performed
347automatically. The game uses faces for better visual feedback.
348
2e4e635a 349+++
d5ec54b6
KS
350** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
351now shown as a hollow box or a thin bar. However, you can control how
352it blinks off by setting the variable `blink-cursor-alist'.
353
3bdb7f80 354
16425473 355+++
60ddd063 356** Emacs now supports compound-text Extended Segments in X selections.
9eb53288
EZ
357
358Some versions of X, notably XFree86, use Extended Segments to encode
359in X selections characters that belong to character sets which are not
a4ac5b17
DL
360part of the list of approved standard encodings defined by the
361compound text spec. An example of such non-standard encodings is
362BIG5. The new coding system `compound-text-with-extensions' supports
363these extensions, and is now used by default for encoding and decoding
364X selections. If you don't want this support, set
365`selection-coding-system' to `compound-text'.
9eb53288 366
63a4cd16
EZ
367+++
368** The parameters of automatic hscrolling can now be customized.
63a7fdcf
EZ
369The variable `hscroll-margin' determines how many columns away from
370the window edge point is allowed to get before automatic hscrolling
371will horizontally scroll the window. The default value is 5.
1a667242 372
63a7fdcf
EZ
373The variable `hscroll-step' determines how many columns automatic
374hscrolling will scroll the window when point gets too close to the
375window edge. If its value is zero, the default, Emacs scrolls the
376window so as to center point. If its value is an integer, it says how
377many columns to scroll. If the value is a floating-point number, it
378gives the fraction of the window's width to scroll the window.
379
813f3d41
RS
380The variable `automatic-hscrolling' was renamed to
381`auto-hscroll-mode'. The old name is still available as an alias.
382
bf078377 383** TeX modes:
a95cefd7 384*** C-c C-c prompts for a command to run, and tries to offer a good default.
2a1e884e 385+++
0ec6b206 386*** The user option `tex-start-options-string' has been replaced
63bfbe6f
RS
387by two new user options: `tex-start-options', which should hold
388command-line options to feed to TeX, and `tex-start-commands' which should hold
389TeX commands to use at startup.
0ec6b206
SM
390*** verbatim environments are now highlighted in courier by font-lock
391and super/sub-scripts are made into super/sub-scripts.
63bfbe6f 392
c64a682c
SM
393*** New major mode doctex-mode for *.dtx files.
394
2a1e884e 395+++
b0ada147
RS
396** New display feature: focus follows the mouse from one Emacs window
397to another, even within a frame. If you set the variable
398mouse-autoselect-window to non-nil value, moving the mouse to a
399different Emacs window will select that window (minibuffer window can
400be selected only when it is active). The default is nil, so that this
401feature is not enabled.
3996d07a 402
1c6576ab
RS
403+++
404** The new command `describe-char' (C-u C-x =) pops up a buffer with
405description various information about a character, including its
406encodings and syntax, its text properties, overlays, and widgets at
407point. You can get more information about some of them, by clicking
408on mouse-sensitive areas or moving there and pressing RET.
c145bbb3 409
81f755ae
CW
410+++
411** The new command `multi-occur' is just like `occur', except it can
412search multiple buffers. There is also a new command
413`multi-occur-by-filename-regexp' which allows you to specify the
414buffers to search by their filename. Internally, Occur mode has been
415rewritten, and now uses font-lock, among other changes.
416
2a1e884e 417+++
b2bd7aff
RS
418** Emacs normally highlights mouse sensitive text whenever the mouse
419is over the text. By setting the new variable `mouse-highlight', you
420can optionally enable mouse highlighting only after you move the
421mouse, so that highlighting disappears when you press a key. You can
422also disable mouse highlighting.
90e87070 423
2a1e884e 424+++
fd42af9d
SM
425** font-lock: in modes like C and Lisp where the fontification assumes that
426an open-paren in column 0 is always outside of any string or comment,
427font-lock now highlights any such open-paren-in-column-zero in bold-red
428if it is inside a string or a comment, to indicate that it can cause
429trouble with fontification and/or indentation.
430
236f1c76
EZ
431+++
432** There's a new face `minibuffer-prompt'.
433Emacs adds this face to the list of text properties stored in the
434variable `minibuffer-prompt-properties', which is used to display the
435prompt string.
436
9a770d8d 437+++
fd4f8b36
KS
438** The new face `mode-line-inactive' is used to display the mode line
439of non-selected windows. The `mode-line' face is now used to display
440the mode line of the currently selected window.
441
89f8199f
KS
442The new variable `mode-line-in-non-selected-windows' controls whether
443the `mode-line-inactive' face is used.
444
2e4e635a 445---
1f600b1b 446** A menu item "Show/Hide" was added to the top-level menu "Options".
2e4e635a
RS
447This menu allows you to turn various display features on and off (such
448as the fringes, the tool bar, the speedbar, and the menu bar itself).
449You can also move the vertical scroll bar to either side here or turn
450it off completely. There is also a menu-item to toggle displaying of
451current date and time, current line and column number in the
452mode-line.
1f600b1b 453
2e4e635a 454---
a9c6d330
PA
455** Speedbar has moved from the "Tools" top level menu to "Show/Hide".
456
2a1e884e 457+++
347003be 458** Emacs can now indicate in the mode-line the presence of new e-mail
2a1e884e 459in a directory or in a file. See the documentation of the user option
7c961dc2 460`display-time-mail-directory'.
2d4ef682 461
90e0f637
EZ
462+++
463** The new option `Info-scroll-prefer-subnodes' causes Info to behave
464like the stand-alone Info reader (from the GNU Texinfo package) as far
465as motion between nodes and their subnodes is concerned. If it is t
466(the default), Emacs behaves as before when you type SPC in a menu: it
467visits the subnode pointed to by the first menu entry. If this option
468is nil, SPC scrolls to the end of the current node, and only then goes
469to the first menu item, like the stand-alone reader does.
470
471This change was already in Emacs 21.1, but wasn't advertised in the
472NEWS.
473
a4fc6fc9
PJ
474---
475** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
476
e58d8457 477+++
5e101746 478** You can now disable pc-selection-mode after enabling it.
e58d8457 479M-x pc-selection-mode behaves like a proper minor mode, and with no
5e101746
RS
480argument it toggles the mode.
481
482Turning off PC-Selection mode restores the global key bindings
483that were replaced by turning on the mode.
484
2e4e635a 485+++
b54cfb55
CW
486** Emacs now displays a splash screen by default even if command-line
487arguments were given. The new command-line option --no-splash
488disables the splash screen; see also the variable
489`inhibit-startup-message' (which is also aliased as
490`inhibit-splash-screen').
491
7cc8f35a
EZ
492** Changes in support of colors on character terminals
493
e0c124ce 494+++
7cc8f35a 495*** The new command-line option --color=MODE lets you specify a standard
e0c124ce
EZ
496mode for a tty color support. It is meant to be used on character
497terminals whose capabilities are not set correctly in the terminal
498database, or with terminal emulators which support colors, but don't
499set the TERM environment variable to a name of a color-capable
500terminal. "emacs --color" uses the same color commands as GNU `ls'
501when invoked with "ls --color", so if your terminal can support colors
502in "ls --color", it will support "emacs --color" as well. See the
503user manual for the possible values of the MODE parameter.
504
7cc8f35a
EZ
505---
506*** Emacs now supports several character terminals which provide more
507than 8 colors. For example, for `xterm', 16-color, 88-color, and
508256-color modes are supported. Emacs automatically notes at startup
509the extended number of colors, and defines the appropriate entries for
510all of these colors.
511
512---
513*** There's a new support for colors on `rxvt' terminal emulator.
514
6625fc7d
EZ
515+++
516** Emacs can now be invoked in full-screen mode on a windowed display.
517
518When Emacs is invoked on a window system, the new command-line options
519`--fullwidth', `--fullheight', and `--fullscreen' produce a frame
520whose width, height, or both width and height take up the entire
616d7a51 521screen size. (For now, this does not work with some window managers.)
6625fc7d 522
1c6576ab
RS
523---
524** Info-index offers completion.
59b59892 525
2b6bb1f2 526---
a8f57660 527** Emacs now tries to set up buffer coding systems for HTML/XML files
2b6bb1f2 528automatically.
cb8d4d07 529
2b6bb1f2 530+++
eaffd16d 531** The new command `comint-insert-previous-argument' in comint-derived
4e3dd7cf
MB
532modes (shell-mode etc) inserts arguments from previous command lines,
533like bash's `ESC .' binding. It is bound by default to `C-c .', but
534otherwise behaves quite similarly to the bash version.
535
2b6bb1f2 536+++
00b1ee61
RS
537** Changes in C-h bindings:
538
539C-h e displays the *Messages* buffer.
540
541C-h followed by a control character is used for displaying files
542 that do not change:
543
544C-h C-f displays the FAQ.
545C-h C-e displays the PROBLEMS file.
546
547The info-search bindings on C-h C-f, C-h C-k and C-h C-i
548have been moved to C-h F, C-h K and C-h S.
549
93607efd
KS
550C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands.
551
552- C-h c and C-h k report the actual command (after possible remapping)
553 run by the key sequence.
554
555- C-h w and C-h f on a command which has been remapped now report the
556 command it is remapped to, and the keys which can be used to run
557 that command.
558
559For example, if C-k is bound to kill-line, and kill-line is remapped
bf8dd4e3 560to new-kill-line, these commands now report:
93607efd
KS
561
562- C-h c and C-h k C-k reports:
563 C-k runs the command new-kill-line
564
565- C-h w and C-h f kill-line reports:
566 kill-line is remapped to new-kill-line which is on C-k, <deleteline>
567
568- C-h w and C-h f new-kill-line reports:
569 new-kill-line is on C-k
570
2b6bb1f2 571+++
a207b33c
RS
572** C-w in incremental search now grabs either a character or a word,
573making the decision in a heuristic way. This new job is done by the
574command `isearch-yank-word-or-char'. To restore the old behavior,
575bind C-w to `isearch-yank-word' in `isearch-mode-map'.
576
2b6bb1f2 577+++
d9f7eb77
RS
578** Yanking text now discards certain text properties that can
579be inconvenient when you did not expect them. The variable
580`yank-excluded-properties' specifies which ones. Insertion
581of register contents and rectangles also discards these properties.
582
1c6576ab 583+++
b54cfb55
CW
584** Occur, Info, and comint-derived modes now support using
585M-x font-lock-mode to toggle fontification. The variable
586`Info-fontify' is no longer applicable; to disable fontification,
587remove `turn-on-font-lock' from `Info-mode-hook'.
588
1c6576ab 589+++
4e3dd7cf
MB
590** M-x grep now tries to avoid appending `/dev/null' to the command line
591by using GNU grep `-H' option instead. M-x grep will automatically
592detect whether this is possible or not the first time it is invoked.
593When `-H' is used, the grep command line supplied by the user is passed
594unchanged to the system to execute, which allows more complicated
595command lines to be used than was possible before.
596
1c6576ab 597---
4e3dd7cf
MB
598** The face-customization widget has been reworked to be less confusing.
599In particular, when you enable a face attribute using the corresponding
600check-box, there's no longer a redundant `*' option in value selection
601for that attribute; the values you can choose are only those which make
602sense for the attribute. When an attribute is de-selected by unchecking
603its check-box, then the (now ignored, but still present temporarily in
604case you re-select the attribute) value is hidden.
605
3116d142 606+++
c721078e
RS
607** When you set or reset a variable's value in a Customize buffer,
608the previous value becomes the "backup value" of the variable.
609You can go back to that backup value by selecting "Use Backup Value"
610under the "[State]" button.
611
63db1bb3
MR
612** The new customization type `float' specifies numbers with floating
613point (no integers are allowed).
614
2b6bb1f2
RS
615+++
616** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program
4febb0e7
RS
617counter to the specified source line (the one where point is).
618
2b6bb1f2 619---
ca64d378 620** GUD mode improvements for jdb:
a1e3dda0
RS
621
622*** Search for source files using jdb classpath and class
623 information. Fast startup since there is no need to scan all
624 source files up front. There is also no need to create and maintain
625 lists of source directories to scan. Look at `gud-jdb-use-classpath'
626 and `gud-jdb-classpath' customization variables documentation.
627
628*** Supports the standard breakpoint (gud-break, gud-clear)
629 set/clear operations from java source files under the classpath, stack
630 traversal (gud-up, gud-down), and run until current stack finish
631 (gud-finish).
632
633*** Supports new jdb (Java 1.2 and later) in addition to oldjdb
634 (Java 1.1 jdb).
635
636*** The previous method of searching for source files has been
637 preserved in case someone still wants/needs to use it.
638 Set gud-jdb-use-classpath to nil.
639
640 Added Customization Variables
641
642*** gud-jdb-command-name. What command line to use to invoke jdb.
643
644*** gud-jdb-use-classpath. Allows selection of java source file searching
645 method: set to t for new method, nil to scan gud-jdb-directories for
646 java sources (previous method).
647
648*** gud-jdb-directories. List of directories to scan and search for java
649 classes using the original gud-jdb method (if gud-jdb-use-classpath
650 is nil).
651
652 Minor Improvements
653
654*** Do not allow debugger output history variable to grow without bounds.
655
1c6576ab 656+++
43a88bc1
SM
657** hide-ifdef-mode now uses overlays rather than selective-display
658to hide its text. This should be mostly transparent but slightly
659changes the behavior of motion commands line C-e and C-p.
660
1c6576ab 661+++
8f3f2fe5
RS
662** In Dired's ! command (dired-do-shell-command), `*' and `?' now
663control substitution of the file names only when they are surrounded
664by whitespace. This means you can now use them as shell wildcards
665too. If you want to use just plain `*' as a wildcard, type `*""'; the
6ab3cbb5 666doublequotes make no difference in the shell, but they prevent
8f3f2fe5
RS
667special treatment in `dired-do-shell-command'.
668
1c6576ab 669+++
05ea8efd
RS
670** Dired's v command now runs external viewers to view certain
671types of files. The variable `dired-view-command-alist' controls
672what external viewers to use and when.
673
1c6576ab 674+++
111ed14e
SM
675** Unquoted `$' in file names do not signal an error any more when
676the corresponding environment variable does not exist.
677Instead, the `$ENVVAR' text is left as is, so that `$$' quoting
678is only rarely needed.
679
1c6576ab 680---
f67cc62e 681** jit-lock can now be delayed with `jit-lock-defer-time'.
8ea55f33
EZ
682
683If this variable is non-nil, its value should be the amount of Emacs
fbe51115 684idle time in seconds to wait before starting fontification. For
8ea55f33
EZ
685example, if you set `jit-lock-defer-time' to 0.25, fontification will
686only happen after 0.25s of idle time.
f67cc62e 687
cad113ae
KG
688+++
689** Marking commands extend the region when invoked multiple times. If
690you hit M-C-SPC (mark-sexp), M-@ (mark-word), M-h (mark-paragraph), or
691C-M-h (mark-defun) repeatedly, the marked region will now be extended
692each time, so you can mark the next two sexps with M-C-SPC M-C-SPC,
693for example. This feature also works for mark-end-of-sentence, if you
694bind that to a key.
6710ea06 695
2b6bb1f2 696+++
18f10eda
RS
697** Some commands do something special in Transient Mark mode when the
698mark is active--for instance, they limit their operation to the
699region. Even if you don't normally use Transient Mark mode, you might
700want to get this behavior from a particular command. There are two
2b6bb1f2
RS
701ways you can enable Transient Mark mode and activate the mark, for one
702command only.
18f10eda 703
2b6bb1f2
RS
704One method is to type C-SPC C-SPC; this enables Transient Mark mode
705and sets the mark at point. The other method is to type C-u C-x C-x.
706This enables Transient Mark mode temporarily but does not alter the
707mark or the region.
32f665fa 708
2b6bb1f2
RS
709After these commands, Transient Mark mode remains enabled until you
710deactivate the mark. That typically happens when you type a command
711that alters the buffer, but you can also deactivate the mark by typing
712C-g.
66aa61d8 713
2b6bb1f2 714+++
66aa61d8
KS
715** A prefix argument is no longer required to repeat a jump to a
716previous mark, i.e. C-u C-SPC C-SPC C-SPC ... will cycle through the
717mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump.
718
1c6576ab 719+++
a474d59c
RS
720** In the *Occur* buffer, `o' switches to it in another window, and
721C-o displays the current line's occurrence in another window without
722switching to it.
7c425d82 723
1c6576ab 724+++
7c425d82
RS
725** When you specify a frame size with --geometry, the size applies to
726all frames you create. A position specified with --geometry only
727affects the initial frame.
728
efe459e4 729+++
fbe51115
PJ
730** M-h (mark-paragraph) now accepts a prefix arg.
731With positive arg, M-h marks the current and the following paragraphs;
564b1f76
EZ
732if the arg is negative, it marks the current and the preceding
733paragraphs.
efe459e4 734
3a7a0095
RS
735** In Dired, the w command now copies the current line's file name
736into the kill ring.
737
1c6576ab 738+++
b04dcf45
RS
739** The variables dired-free-space-program and dired-free-space-args
740have been renamed to directory-free-space-program and
741directory-free-space-args, and they now apply whenever Emacs puts a
742directory listing into a buffer.
743
1c6576ab 744---
6710ea06
SM
745** mouse-wheels can now scroll a specific fraction of the window
746(rather than a fixed number of lines) and the scrolling is `progressive'.
747
cc563ece
KS
748** Unexpected yanking of text due to accidental clicking on the mouse
749wheel button (typically mouse-2) during wheel scrolling is now avoided.
750This behaviour can be customized via the mouse-wheel-click-event and
751mouse-wheel-inhibit-click-time variables.
752
2b6bb1f2 753+++
457c233a
DL
754** The keyboard-coding-system is now automatically set based on your
755current locale settings if you are not using a window system. This
756may mean that the META key doesn't work but generates non-ASCII
757characters instead, depending on how the terminal (or terminal
758emulator) works. Use `set-keyboard-coding-system' (or customize
759keyboard-coding-system) if you prefer META to work (the old default)
760or if the locale doesn't describe the character set actually generated
761by the keyboard. See Info node `Single-Byte Character Support'.
16927a56 762
3aa2f38a
RS
763+++
764** Emacs now reads the standard abbrevs file ~/.abbrev_defs
273a3930
EZ
765automatically at startup, if it exists. When Emacs offers to save
766modified buffers, it saves the abbrevs too if they have changed. It
767can do this either silently or asking for confirmation first,
2bc8d7c8 768according to the value of `save-abbrevs'.
3aa2f38a 769
1c6576ab 770+++
830047fd
RS
771** Display of hollow cursors now obeys the buffer-local value (if any)
772of `cursor-in-non-selected-windows' in the buffer that the cursor
773appears in.
6c0b2643 774
d5ec54b6
KS
775** The variable `cursor-in-non-selected-windows' can now be set to any
776of the recognized cursor types.
c60ee5e7 777
1c6576ab 778+++
85b073d6
EZ
779** The default values of `tooltip-delay' and `tooltip-hide-delay'
780were changed.
781
2b6bb1f2 782---
cd963ca0
GM
783** On terminals whose erase-char is ^H (Backspace), Emacs
784now uses normal-erase-is-backspace-mode.
785
1c6576ab 786---
758bf24f
GM
787** The variable `auto-save-file-name-transforms' now has a third element that
788controls whether or not the function `make-auto-save-file-name' will
789attempt to construct a unique auto-save name (e.g. for remote files).
790
f5d0cc77
RS
791+++
792** Diary sexp entries can have custom marking in the calendar.
793Diary sexp functions which only apply to certain days (such as
794`diary-block' or `diary-cyclic' now take an optional parameter MARK,
795which is the name of a face or a single-character string indicating
796how to highlight the day in the calendar display. Specifying a
797single-character string as @var{mark} places the character next to the
798day in the calendar. Specifying a face highlights the day with that
799face. This lets you have different colors or markings for vacations,
800appointments, paydays or anything else using a sexp.
801
3f270c8a
AS
802** VC Changes
803
fc08c987
AS
804*** The key C-x C-q no longer checks files in or out, it only changes
805the read-only state of the buffer (toggle-read-only). We made this
806change because we held a poll and found that many users were unhappy
807with the previous behavior. If you do prefer this behavior, you
808can bind `vc-toggle-read-only' to C-x C-q in your .emacs:
809
810 (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
811
812The function `vc-toggle-read-only' will continue to exist.
813
1c6576ab 814+++
3f270c8a
AS
815*** There is a new user option `vc-cvs-global-switches' that allows
816you to specify switches that are passed to any CVS command invoked
817by VC. These switches are used as "global options" for CVS, which
818means they are inserted before the command name. For example, this
819allows you to specify a compression level using the "-z#" option for
820CVS.
821
c64a682c
SM
822*** New backends for Subversion and Meta-CVS.
823
eb766f96
MK
824** EDiff changes.
825
16757dcf 826+++
eb766f96
MK
827*** When comparing directories.
828Typing D brings up a buffer that lists the differences between the contents of
829directories. Now it is possible to use this buffer to copy the missing files
830from one directory to another.
831
16757dcf 832+++
eb766f96
MK
833*** When comparing files or buffers.
834Typing the = key now offers to perform the word-by-word comparison of the
835currently highlighted regions in an inferior Ediff session. If you answer 'n'
836then it reverts to the old behavior and asks the user to select regions for
837comparison.
838
5d9c22fd 839*** The new command `ediff-backup' compares a file with its most recent
813f3d41
RS
840backup using `ediff'. If you specify the name of a backup file,
841`ediff-backup' compares it with the file of which it is a backup.
842
ca8f3642 843+++
e94a3679
FP
844** Etags changes.
845
73639417
FP
846*** New regular expressions features
847
848**** New syntax for regular expressions, multi-line regular expressions.
df3eebcb
FP
849The syntax --ignore-case-regexp=/regex/ is now undocumented and retained
850only for backward compatibility. The new equivalent syntax is
851--regex=/regex/i. More generally, it is --regex=/TAGREGEX/TAGNAME/MODS,
852where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or
853more characters among `i' (ignore case), `m' (multi-line) and `s'
6861f0e3
FP
854(single-line). The `m' and `s' modifiers behave as in Perl regular
855expressions: `m' allows regexps to match more than one line, while `s'
856(which implies `m') means that `.' matches newlines. The ability to
857span newlines allows writing of much more powerful regular expressions
858and rapid prototyping for tagging new languages.
859
2c37653c 860**** Regular expressions can use char escape sequences as in Gcc.
6861f0e3
FP
861The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v,
862respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL,
863CR, TAB, VT,
864
2c37653c 865**** Regular expressions can be bound to a given language.
df3eebcb
FP
866The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags
867only for files of language LANGUAGE, and ignored otherwise. This is
868particularly useful when storing regexps in a file.
869
2c37653c 870**** Regular expressions can be read from a file.
df3eebcb
FP
871The --regex=@regexfile option means read the regexps from a file, one
872per line. Lines beginning with space or tab are ignored.
873
73639417
FP
874*** New language parsing features
875
d9256ccb
FP
876**** The `::' qualifier triggers C++ parsing in C file.
877Previously, only the `template' and `class' keywords had this effect.
878
73639417 879**** In Perl, packages are tags.
81d66c62
FP
880Subroutine tags are named from their package. You can jump to sub tags
881as you did before, by the sub name, or additionally by looking for
882package::sub.
883
2c37653c
FP
884**** New language PHP.
885Tags are functions, classes and defines.
f175bfff
FP
886If the --members option is specified to etags, tags are vars also.
887
2c37653c
FP
888**** New language HTML.
889Title and h1, h2, h3 are tagged. Also, tags are generated when name= is
890used inside an anchor and whenever id= is used.
891
73639417 892**** New default keywords for TeX.
a0bbc0c5
FP
893The new keywords are def, newcommand, renewcommand, newenvironment and
894renewenvironment.
895
2c37653c 896**** In Makefiles, constants are tagged.
dfd67a62 897If you want the old behavior instead, thus avoiding to increase the
f175bfff
FP
898size of the tags file, use the --no-globals option.
899
900**** In Prolog, etags creates tags for rules in addition to predicates.
81d66c62
FP
901
902*** Honour #line directives.
903When Etags parses an input file that contains C preprocessor's #line
904directives, it creates tags using the file name and line number
905specified in those directives. This is useful when dealing with code
906created from Cweb source files. When Etags tags the generated file, it
907writes tags pointing to the source file.
bf8dd4e3 908
2c37653c 909*** New option --parse-stdin=FILE.
a0bbc0c5 910This option is mostly useful when calling etags from programs. It can
5cc4f104 911be used (only once) in place of a file name on the command line. Etags
a0bbc0c5
FP
912will read from standard input and mark the produced tags as belonging to
913the file FILE.
06ee6fcd 914
c30567b7 915+++
406f228c
PJ
916** The command line option --no-windows has been changed to
917--no-window-system. The old one still works, but is deprecated.
918
1c6576ab 919+++
7ea42709
RS
920** The command `list-text-properties-at' has been deleted because
921C-u C-x = gives the same information and more.
922
1c6576ab 923+++
3a426197 924** `buffer-menu' and `list-buffers' now list buffers whose names begin
1c6576ab
RS
925with a space, when those buffers are visiting files. Normally buffers
926whose names begin with space are omitted.
c30567b7 927
2b6bb1f2 928+++
3a426197
RS
929** You can now customize fill-nobreak-predicate to control where
930filling can break lines. We provide two sample predicates,
931fill-single-word-nobreak-p and fill-french-nobreak-p.
8e8223e2 932
1c6576ab 933+++
1d57ac82
SS
934** New user option `add-log-always-start-new-record'.
935When this option is enabled, M-x add-change-log-entry will always
936start a new record regardless of when the last record is.
937
2b6bb1f2 938+++
2881ae98
SM
939** SGML mode has indentation and supports XML syntax.
940The new variable `sgml-xml-mode' tells SGML mode to use XML syntax.
54c0e682 941When this option is enabled, SGML tags are inserted in XML style,
79014980 942i.e., there is always a closing tag.
2881ae98 943By default, its setting is inferred on a buffer-by-buffer basis
54c0e682 944from the file name or buffer contents.
79014980 945
2b6bb1f2 946+++
9252f7bc 947** `xml-mode' is now an alias for `sgml-mode', which has XML support.
cb8d4d07 948
1c6576ab 949+++
aae126ea 950** New user option `isearch-resume-enabled'.
dfd67a62 951This option can be disabled, to avoid the normal behavior of isearch
aae126ea
KS
952which puts calls to `isearch-resume' in the command history.
953
2a1e884e 954---
3ddf952f
GM
955** When the *scratch* buffer is recreated, its mode is set from
956initial-major-mode, which normally is lisp-interaction-mode,
79014980 957instead of using default-major-mode.
3ddf952f 958
2a1e884e 959---
1c6576ab 960** Lisp mode now uses font-lock-doc-face for the docstrings.
30de4b24 961
1c6576ab
RS
962---
963** Perl mode has a new variable `perl-indent-continued-arguments'.
30de4b24 964
2d588beb 965+++
1c6576ab 966** Fortran mode has a new variable `fortran-directive-re'.
2d588beb
GM
967Adapt this to match the format of any compiler directives you use.
968Lines that match are never indented, and are given distinctive font-locking.
a68c5400 969
1c6576ab
RS
970---
971** F90 mode has new navigation commands `f90-end-of-block',
0d9e03be 972`f90-beginning-of-block', `f90-next-block', `f90-previous-block'.
e47b1d49 973
1c6576ab
RS
974---
975** Prolog mode has a new variable `prolog-font-lock-keywords'
2629d743
TTN
976to support use of font-lock.
977
1c6576ab 978+++
026f408d
SM
979** `special-display-buffer-names' and `special-display-regexps' now
980understand two new boolean pseudo-frame-parameters `same-frame' and
981`same-window'.
982
1c6576ab 983+++
6c0b2643
GM
984** M-x setenv now expands environment variables of the form `$foo' and
985`${foo}' in the specified new value of the environment variable. To
986include a `$' in the value, use `$$'.
987
30743573 988+++
58a11372
EZ
989** File-name completion can now ignore directories.
990If an element of the list in `completion-ignored-extensions' ends in a
991slash `/', it indicates a subdirectory that should be ignored when
992completing file names. Elements of `completion-ignored-extensions'
993which do not end in a slash are never considered when a completion
994candidate is a directory.
995
1c6576ab 996+++
af7272b1
RS
997** The completion commands TAB, SPC and ? in the minibuffer apply only
998to the text before point. If there is text in the buffer after point,
1c6576ab
RS
999it remains unchanged.
1000
2a1e884e 1001+++
6c0b2643
GM
1002** New user option `inhibit-startup-buffer-menu'.
1003When loading many files, for instance with `emacs *', Emacs normally
1004displays a buffer menu. This option turns the buffer menu off.
1005
2a1e884e 1006---
6c0b2643
GM
1007** Rmail now displays 5-digit message ids in its summary buffer.
1008
2a1e884e 1009---
d3d268d5
JR
1010** On MS Windows, the "system caret" now follows the cursor.
1011This enables Emacs to work better with programs that need to track
1012the cursor, for example screen magnifiers and text to speech programs.
1013
2a1e884e 1014---
f58b2333
JR
1015** Tooltips now work on MS Windows.
1016See the Emacs 21.1 NEWS entry for tooltips for details.
1017
2a1e884e 1018---
3b7db268
JR
1019** Images are now supported on MS Windows.
1020PBM and XBM images are supported out of the box. Other image formats
1021depend on external libraries. All of these libraries have been ported
1022to Windows, and can be found in both source and binary form at
1023http://gnuwin32.sourceforge.net/. Note that libpng also depends on
1024zlib, and tiff depends on the version of jpeg that it was compiled
1025against.
a3dde781 1026
f85bf1bf
JR
1027---
1028** Sound is now supported on MS Windows.
1029WAV format is supported on all versions of Windows, other formats such
6c098dbe 1030as AU, AIFF and MP3 may be supported in the more recent versions of
f85bf1bf
JR
1031Windows, or when other software provides hooks into the system level
1032sound support for those formats.
1033
6c098dbe
JR
1034---
1035** Different shaped mouse pointers are supported on MS Windows.
1036The mouse pointer changes shape depending on what is under the pointer.
1037
1c6576ab 1038---
01a7f683
JR
1039** Pointing devices with more than 3 buttons are now supported on MS Windows.
1040The new variable `w32-pass-extra-mouse-buttons-to-system' controls
1041whether Emacs should handle the extra buttons itself (the default), or
1042pass them to Windows to be handled with system-wide functions.
1043
d18c4f98
JR
1044---
1045** Emacs takes note of colors defined in Control Panel on MS-Windows.
1046The Control Panel defines some default colors for applications in
1047much the same way as wildcard X Resources do on X. Emacs now
1048adds these colors to the colormap prefixed by System (eg SystemMenu
1049for the default Menu background, SystemMenuText for the foreground),
1050and uses some of them to initialize some of the default faces.
1051`list-colors-display' will show the list of System color names if you
1052wish to use them in other faces.
1053
2b6bb1f2 1054+++
98659da6
KG
1055** Under X11, it is possible to swap Alt and Meta (and Super and Hyper).
1056The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym',
1057and `x-super-keysym' can be used to choose which keysyms Emacs should
1058use for the modifiers. For example, the following two lines swap
1059Meta and Alt:
1060 (setq x-alt-keysym 'meta)
1061 (setq x-meta-keysym 'alt)
1062
4e5cdb4f 1063* New modes and packages in 21.4
8f8da2d0 1064
a95cefd7 1065** GDB-Script-mode is used for files like .gdbinit.
556621f6
NR
1066** GDB-UI is now part of the Emacs distribution.
1067
1068This mode acts as an enhanced graphical user interface to GDB. You can
1069interact with GDB through the GUD buffer in the usual way, but there are also
1070further buffers which control the execution and describe the state of your
1071program. It separates the input/output of your program from that of GDB and
1072displays expressions and their current values in their own buffers. It also
1073uses features of Emacs 21 such as the display margin for breakpoints, and the
1074tool bar.
1075
1076Use M-x gdba to start GDB-UI.
1077
8f8da2d0 1078---
cd3782b4
KS
1079** Ido mode is now part of the Emacs distribution.
1080
1081The ido (interactively do) package is an extension of the iswitchb
1082package to do interactive opening of files and directories in addition
1083to interactive buffer switching. Ido is a superset of iswitchb (with
1084a few exceptions), so don't enable both packages.
ffe5000a 1085
2b6bb1f2 1086---
cd3782b4
KS
1087** CUA mode is now part of the Emacs distribution.
1088
1089The new cua package provides CUA-like keybindings using C-x for
2461722b
KS
1090cut (kill), C-c for copy, C-v for paste (yank), and C-z for undo.
1091With cua, the region can be set and extended using shifted movement
1092keys (like pc-selection-mode) and typed text replaces the active
1093region (like delete-selection-mode). Do not enable these modes with
1094cua-mode. Customize the variable `cua-mode' to enable cua.
1095
1096In addition, cua provides unified rectangle support with visible
1097rectangle highlighting: Use S-return to start a rectangle, extend it
1098using the movement commands (or mouse-3), and cut or copy it using C-x
1099or C-c (using C-w and M-w also works).
1100
1101Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to
1102fill it with blanks or another character, use M-u or M-l to upcase or
1103downcase the rectangle, use M-i to increment the numbers in the
1104rectangle, use M-n to fill the rectangle with a numeric sequence (such
1105as 10 20 30...), use M-r to replace a regexp in the rectangle, and use
1106M-' or M-/ to restrict command on the rectangle to a subset of the
1107rows. See the commentary in cua-base.el for more rectangle commands.
1108
1109Cua also provides unified support for registers: Use a numeric
1110prefix argument between 0 and 9, i.e. M-0 .. M-9, for C-x, C-c, and
1111C-v to cut or copy into register 0-9, or paste from register 0-9.
1112
1113The last text deleted (not killed) is automatically stored in
1114register 0. This includes text deleted by typing text.
1115
1116Finally, cua provides a global mark which is set using S-C-space.
1117When the global mark is active, any text which is cut or copied is
1118automatically inserted at the global mark position. See the
1119commentary in cua-base.el for more global mark related commands.
1120
1121The features of cua also works with the standard emacs bindings for
1122kill, copy, yank, and undo. If you want to use cua mode, but don't
1123want the C-x, C-c, C-v, and C-z bindings, you may customize the
1124`cua-enable-cua-keys' variable.
1125
cd3782b4
KS
1126Note: This version of cua mode is not backwards compatible with older
1127versions of cua.el and cua-mode.el. To ensure proper operation, you
1128must remove older versions of cua.el or cua-mode.el as well as the
1129loading and customization of those packages from the .emacs file.
1130
4e5cdb4f 1131** The new keypad setup package provides several common bindings for
7920598e
KS
1132the numeric keypad which is available on most keyboards. The numeric
1133keypad typically has the digits 0 to 9, a decimal point, keys marked
1134+, -, /, and *, an Enter key, and a NumLock toggle key. The keypad
1135package only controls the use of the digit and decimal keys.
1136
1137By customizing the variables `keypad-setup', `keypad-shifted-setup',
1138`keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by
1139using the function `keypad-setup', you can rebind all digit keys and
1140the decimal key of the keypad in one step for each of the four
1141possible combinations of the Shift key state (not pressed/pressed) and
1142the NumLock toggle state (off/on).
1143
1144The choices for the keypad keys in each of the above states are:
1145`Plain numeric keypad' where the keys generates plain digits,
1146`Numeric keypad with decimal key' where the character produced by the
1147decimal key can be customized individually (for internationalization),
1148`Numeric Prefix Arg' where the keypad keys produce numeric prefix args
1149for emacs editing commands, `Cursor keys' and `Shifted Cursor keys'
1150where the keys work like (shifted) arrow keys, home/end, etc., and
63e489f5
KS
1151`Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.)
1152are left unspecified and can be bound individually through the global
1153or local keymaps.
2461722b 1154
4e5cdb4f 1155** The new kmacro package provides a simpler user interface to
ffe5000a
KS
1156emacs' keyboard macro facilities.
1157
e1fa392b
KS
1158Basically, it uses two function keys (default F3 and F4) like this:
1159F3 starts a macro, F4 ends the macro, and pressing F4 again executes
1160the last macro. While defining the macro, F3 inserts a counter value
ffe5000a
KS
1161which automatically increments every time the macro is executed.
1162
cc801373
KS
1163There is now a keyboard macro ring which stores the most recently
1164defined macros.
1165
1166The C-x C-k sequence is now a prefix for the kmacro keymap which
1167defines bindings for moving through the keyboard macro ring,
1168C-x C-k C-p and C-x C-k C-n, editing the last macro C-x C-k C-e,
1169manipulating the macro counter and format via C-x C-k C-c,
1170C-x C-k C-a, and C-x C-k C-f. See the commentary in kmacro.el
1171for more commands.
1172
2c37653c 1173The normal macro bindings C-x (, C-x ), and C-x e now interfaces to
cc801373 1174the keyboard macro ring.
ffe5000a 1175
f1f83e21
KS
1176The C-x e command now automatically terminates the current macro
1177before calling it, if used while defining a macro.
e1fa392b
KS
1178
1179In addition, when ending or calling a macro with C-x e, the macro can
1180be repeated immediately by typing just the `e'. You can customize
1181this behaviour via the variable kmacro-call-repeat-key and
1182kmacro-call-repeat-with-arg.
1183
f1f83e21
KS
1184Keyboard macros can now be debugged and edited interactively.
1185C-x C-k SPC will step through the last keyboard macro one key sequence
1186at a time, prompting for the actions to take.
1187
675d000f
RS
1188---
1189** The old Octave mode bindings C-c f and C-c i have been changed
1190to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate
1191bindings on control characters--thus, C-c C-i C-b is the same as
1192C-c C-i b, and so on.
1193
cd3782b4
KS
1194** The printing package is now part of the Emacs distribution.
1195
1196If you enable the printing package by including (require 'printing) in
1197the .emacs file, the normal Print item on the File menu is replaced
1198with a Print sub-menu which allows you to preview output through
1199ghostview, use ghostscript to print (if you don't have a PostScript
1200printer) or send directly to printer a PostScript code generated by
1201`ps-print' package. Use M-x pr-help for more information.
1202
66f520db 1203+++
4e5cdb4f 1204** Calc is now part of the Emacs distribution.
66f520db
EZ
1205
1206Calc is an advanced desk calculator and mathematical tool written in
1207Emacs Lisp. Its documentation is in a separate manual; within Emacs,
52901be1
EZ
1208type "C-h i m calc RET" to read that manual. A reference card is
1209available in `etc/calccard.tex' and `etc/calccard.ps'.
66f520db 1210
10088409 1211+++
4e5cdb4f 1212** Tramp is now part of the distribution.
c3d82b69
KG
1213
1214This package is similar to Ange-FTP: it allows you to edit remote
1215files. But whereas Ange-FTP uses FTP to access the remote host,
1216Tramp uses a shell connection. The shell connection is always used
1217for filename completion and directory listings and suchlike, but for
1218the actual file transfer, you can choose between the so-called
1219`inline' methods (which transfer the files through the shell
1220connection using base64 or uu encoding) and the `out-of-band' methods
1221(which invoke an external copying program such as `rcp' or `scp' or
1222`rsync' to do the copying).
1223
1224Shell connections can be acquired via `rsh', `ssh', `telnet' and also
1225`su' and `sudo'.
1226
2a1e884e 1227---
4e5cdb4f 1228** The new global minor mode `file-name-shadow-mode' modifies the way
49a42d13
MB
1229filenames being entered by the user in the minibuffer are displayed, so
1230that it's clear when part of the entered filename will be ignored due to
1231emacs' filename parsing rules. The ignored portion can be made dim,
1232invisible, or otherwise less visually noticable. The display method may
1233be displayed by customizing the variable `file-name-shadow-properties'.
4e3dd7cf 1234
2b6bb1f2 1235---
4e5cdb4f 1236** The ruler-mode.el library provides a minor mode for displaying an
3c0fd84c
GM
1237"active" ruler in the header line. You can use the mouse to visually
1238change the `fill-column', `window-margins' and `tab-stop-list'
1239settings.
1240
2b6bb1f2 1241---
4e5cdb4f 1242** The minor mode Reveal mode makes text visible on the fly as you
a95cefd7 1243move your cursor into hidden regions of the buffer.
8a1f8073
SM
1244It should work with any package that uses overlays to hide parts
1245of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
1246
2a1e884e 1247There is also Global Reveal mode which affects all buffers.
adb6f9dc 1248
2a1e884e 1249---
4e5cdb4f 1250** The new package ibuffer provides a powerful, completely
81f755ae
CW
1251customizable replacement for buff-menu.el.
1252
4e5cdb4f 1253** The new package table.el implements editable, WYSIWYG, embedded
813f3d41
RS
1254`text tables' in Emacs buffers. It simulates the effect of putting
1255these tables in a special major mode. The package emulates WYSIWYG
1256table editing available in modern word processors. The package also
1257can generate a table source in typesetting and markup languages such
1258as latex and html from the visually laid out text table.
1259
9cc1eb89 1260+++
4e5cdb4f
KS
1261** SES mode (ses-mode) is a new major mode for creating and editing
1262spreadsheet files. Besides the usual Emacs features (intuitive command
1263letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers
1264viral immunity and import/export of tab-separated values.
1265
2a1e884e
RS
1266---
1267** Support for `magic cookie' standout modes has been removed.
4e3dd7cf
MB
1268Emacs will still work on terminals that require magic cookies in order
1269to use standout mode, however they will not be able to display
1270mode-lines in inverse-video.
1271
9252f7bc 1272---
a8adf791 1273** The obsolete C mode (c-mode.el) has been removed to avoid problems
347003be 1274with Custom. cplus-md.el, which required it, has also been removed.
a8adf791 1275
500ae430
DL
1276** New package benchmark.el contains simple support for convenient
1277timing measurements of code (including the garbage collection component).
1278
6c0b2643 1279\f
d278091b 1280* Lisp Changes in Emacs 21.4
830047fd 1281
bf078377
SM
1282** The kill-buffer-hook is now permanent-local.
1283
9c0fb8b9
SM
1284** The `local-map' property now also works at the ends of overlays and
1285text-properties, according to their stickiness. This also means that it
1286works with empty overlays. The same hold for the `keymap' property.
1287
1288** `select-window' takes a second optional argument `norecord', like
1289`switch-to-buffer'. `with-selected-window' is a new macro that uses
1290this to temporarily switch the selected window without impacting
1291the order of buffer-list.
1292
c64a682c
SM
1293** (map-keymap FUNCTION KEYMAP) applies the function to each binding
1294in the keymap.
1295
1296** VC changes for backends:
1297*** (vc-switches BACKEND OPERATION) is a new function for use by backends.
1298*** The new `find-version' backend function replaces the `destfile'
1299parameter of the `checkout' backend function.
1300Old code still works thanks to a default `find-version' behavior that
1301uses the old `destfile' parameter.
1302
5ceea398
RS
1303** `minor-mode-list' now holds a list of minor mode commands.
1304
1305** The new command `modify-all-frames-parameters' modifies parameters
1306for all (existing and future) frames.
1307
1308** `sit-for' can now be called with args (SECONDS &optional NODISP).
052797a7
SM
1309
1310** New standard font-lock face `font-lock-preprocessor-face'.
1311
1312** The macro `with-syntax-table' does not copy the table any more.
1313
211a9f6b
KH
1314** The variable `face-font-rescale-alist' specifies how much larger
1315(or smaller) font we should use. For instance, if the value is
87a4ed45 1316'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10
211a9f6b
KH
1317point, we actually use a font of 13 point if the font matches
1318SOME-FONTNAME-PATTERN.
1319
eb67c5d6
RS
1320** The function `number-sequence' returns a list of equally-separated
1321numbers. For instance, (number-sequence 4 9) returns (4 5 6 7 8 9).
1322By default, the separation is 1, but you can specify a different separation
1323as the third argument. (number-sequence 1.5 6 2) returns (1.5 3.5 5.5).
1324
b0ada147
RS
1325** `file-chase-links' now takes an optional second argument LIMIT which
1326specifies the maximum number of links to chase through. If after that
1327many iterations the file name obtained is still a symbolic link,
1328`file-chase-links' returns it anyway.
1329
32d0a9dc
KH
1330** `set-fontset-font', `fontset-info', `fontset-font' now operate on
1331the default fontset if the argument NAME is nil..
1332
63a08a73 1333** The escape sequence \s is now interpreted as a SPACE character,
b23375aa
KS
1334unless it is followed by a `-' in a character constant (e.g. ?\s-A),
1335in which case it is still interpreted as the super modifier.
1336In strings, \s is always interpreted as a space.
1337
ce4254bd
KH
1338** New function `set-process-filter-multibyte' sets the multibyteness
1339of a string given to a process's filter.
1340
1341** New function `process-filter-multibyte-p' returns t if
1342a string given to a process's filter is multibyte.
1343
1344** A filter function of a process is called with a multibyte string if
1345the filter's multibyteness is t. That multibyteness is decided by the
1346value of `default-enable-multibyte-characters' when the process is
1347created and can be changed later by `set-process-filter-multibyte'.
1348
1349** If a process's coding system is raw-text or no-conversion and its
1350buffer is multibyte, the output of the process is at first converted
1351to multibyte by `string-to-multibyte' then inserted in the buffer.
1352Previously, it was converted to multibyte by `string-as-multibyte',
1353which was not compatible with the behaviour of file reading.
1354
b08d5f59
KH
1355** New function `string-to-multibyte' converts a unibyte string to a
1356multibyte string with the same individual character codes.
1357
6eed9bed
DL
1358** New variables `gc-elapsed' and `gcs-done' provide extra information
1359on garbage collection.
1360
b08d5f59
KH
1361** New function `decode-coding-inserted-region' decodes a region as if
1362it is read from a file without decoding.
b6c2aa59 1363
175573ac
DL
1364** New function `langinfo' accesses locale information.
1365
2155ecf3
RS
1366** `save-selected-window' now saves and restores the selected window
1367of every frame. This way, it restores everything that can be changed
1368by calling `select-window'.
1369
1370** `easy-menu-define' now allows you to use nil for the symbol name
1371if you don't need to give the menu a name. If you install the menu
1372into other keymaps right away (MAPS is non-nil), it usually doesn't
1373need to have a name.
1374
f08830d2
DL
1375** Byte compiler changes:
1376
1377*** `(featurep 'xemacs)' is treated by the compiler as nil. This
1378helps to avoid noisy compiler warnings in code meant to run under both
1379Emacs and XEmacs and may sometimes make the result significantly more
1380efficient. Since byte code from recent versions of XEmacs won't
1381generally run in Emacs and vice versa, this optimization doesn't lose
1382you anything.
1383
1384*** You can avoid warnings for possibly-undefined symbols with a
1385simple convention that the compiler understands. (This is mostly
1386useful in code meant to be portable to different Emacs versions.)
1387Write forms like the following, or code that macroexpands into such
1388forms:
1389
1390 (if (fboundp 'foo) <then> <else>)
1391 (if (boundp 'foo) <then> <else)
1392
1393In the first case, using `foo' as a function inside the <then> form
1394won't produce a warning if it's not defined as a function, and in the
1395second case, using `foo' as a variable won't produce a warning if it's
1396unbound. The test must be in exactly one of the above forms (after
1397macro expansion), but such tests may be nested. Note that `when' and
1398`unless' expand to `if', but `cond' doesn't.
c60ee5e7 1399
a4ac5b17
DL
1400** New translation table `translation-table-for-input'.
1401
9252f7bc
RS
1402+++
1403** `load-history' can now have elements of the form (t . FUNNAME),
a4ac5b17 1404which means FUNNAME was previously defined as an autoload (before the
9252f7bc
RS
1405current file redefined it).
1406
d2d70cb6
JY
1407** New Lisp library testcover.el works with edebug to help you determine
1408whether you've tested all your Lisp code. Function testcover-start
1409instruments all functions in a given file. Then test your code. Function
1410testcover-mark-all adds overlay "splotches" to the Lisp file's buffer to
1411show where coverage is lacking. Command testcover-next-mark (bind it to
1412a key!) will move point forward to the next spot that has a splotch.
1413
1414*** Normally, a red splotch indicates the form was never completely evaluated;
1415a brown splotch means it always evaluated to the same value. The red
1416splotches are skipped for forms that can't possibly complete their evaluation,
1417such as `error'. The brown splotches are skipped for forms that are expected
1418to always evaluate to the same value, such as (setq x 14).
1419
1420*** For difficult cases, you can add do-nothing macros to your code to help
1421out the test coverage tool. The macro 1value suppresses a brown splotch for
1422its argument. The macro noreturn suppresses a red splotch.
1423
9cc1eb89 1424+++
d2d70cb6
JY
1425** New function unsafep returns nil if the given Lisp form can't possibly
1426do anything dangerous; otherwise it returns a reason why the form might be
1427unsafe (calls dangerous function, alters global variable, etc).
1428
3116d142
RS
1429** When you are printing using print-continuous-numbering,
1430if no objects have had to be recorded in print-number-table,
1431all elements of print-number-table are nil.
1432
7c3cb37d
RS
1433** When using non-toolkit scroll bars with the default width,
1434the scroll-bar-width frame parameter value is nil.
1435
1436** The new function copy-abbrev-table returns a new abbrev table that
1437is a copy of a given abbrev table.
1438
21beb82f 1439+++
add89676
RS
1440** The option --script FILE runs Emacs in batch mode and loads FILE.
1441It is useful for writing Emacs Lisp shell script files, because they
21beb82f 1442can start with this line:
add89676
RS
1443
1444 #!/usr/bin/emacs --script
1445
02ce3e80
SM
1446** A function's docstring can now hold the function's usage info on
1447its last line. It should match the regexp "\n\n(fn.*)\\'".
1448
fc2938d1
DL
1449** New CCL functions `lookup-character' and `lookup-integer' access
1450hash tables defined by the Lisp function `define-translation-hash-table'.
1451
3bcd2096
JPW
1452** The new function `minibufferp' returns non-nil if its optional buffer
1453argument is a minibuffer. If the argument is omitted it defaults to
1454the current buffer.
79fab26b 1455
56592beb
RS
1456** There is a new Warnings facility; see the functions `warn'
1457and `display-warning'.
1458
a7bd9dc7
SM
1459** The functions all-completions and try-completion now accept lists
1460of strings as well as hash-tables additionally to alists, obarrays
1461and functions. Furthermore, the function `test-completion' is now
1462exported to Lisp.
1463
1c6576ab
RS
1464** When pure storage overflows while dumping, Emacs now prints how
1465much pure storage it will approximately need.
1466
2b6bb1f2
RS
1467** The new variable `auto-coding-functions' lets you specify functions
1468to examine a file being visited and deduce the proper coding system
1469for it. (If the coding system is detected incorrectly for a specific
1470file, you can put a `coding:' tags to override it.)
1471
cc305a60
RS
1472** The new function `merge-coding-systems' fills in unspecified aspects
1473of one coding system from another coding system.
1474
2b6bb1f2
RS
1475** The variable `safe-local-eval-forms' specifies a list of forms that
1476are ok to evaluate when they appear in an `eval' local variables
1477specification. Normally Emacs asks for confirmation before evaluating
1478such a form, but if the form appears in this list, no confirmation is
1479needed.
1480
1481** If a function has a non-nil `safe-local-eval-function' property,
1482that means it is ok to evaluate some calls to that function when it
1483appears in an `eval' local variables specification. If the property
1484is t, then any form calling that function with constant arguments is
1485ok. If the property is a function or list of functions, they are called
1486with the form as argument, and if any returns t, the form is ok to call.
1487
1488If the form is not "ok to call", that means Emacs asks for
1489confirmation as before.
1490
6f8968c8 1491** Controlling the default left and right fringe widths.
2b6bb1f2 1492
6f8968c8
KS
1493The default left and right fringe widths for all windows of a frame
1494can now be controlled by setting the `left-fringe' and `right-fringe'
1495frame parameters to an integer value specifying the width in pixels.
1496Setting the width to 0 effectively removes the corresponding fringe.
2b6bb1f2 1497
6f8968c8
KS
1498The actual default fringe widths for the frame may deviate from the
1499specified widths, since the combined fringe widths must match an
1500integral number of columns. The extra width is distributed evenly
1501between the left and right fringe. For force a specific fringe width,
1502specify the width as a negative integer (if both widths are negative,
1503only the left fringe gets the specified width).
2b6bb1f2
RS
1504
1505Setting the width to nil (the default), restores the default fringe
1506width which is the minimum number of pixels necessary to display any
1507of the currently defined fringe bitmaps. The width of the built-in
1508fringe bitmaps is 8 pixels.
1509
6f8968c8
KS
1510** Per-window fringes settings
1511
1512Windows can now have their own individual fringe widths and position
1513settings.
1514
1515To control the fringe widths of a window, either set the buffer-local
1516variables `left-fringe-width', `right-fringe-width', or call
1517`set-window-fringes'.
1518
1519To control the fringe position in a window, that is, whether fringes
1520are positioned between the display margins and the window's text area,
1521or at the edges of the window, either set the buffer-local variable
1522`fringes-outside-margins' or call `set-window-fringes'.
1523
1524The function `window-fringes' can be used to obtain the current
1525settings. To make `left-fringe-width', `right-fringe-width', and
1526`fringes-outside-margins' take effect, you must set them before
1527displaying the buffer in a window, or use `set-window-buffer' to force
1528an update of the display margins.
1529
1530** Per-window vertical scroll-bar settings
1531
1532Windows can now have their own individual scroll-bar settings
1533controlling the width and position of scroll-bars.
1534
1535To control the scroll-bar of a window, either set the buffer-local
1536variables `scroll-bar-mode' and `scroll-bar-width', or call
1537`set-window-scroll-bars'. The function `window-scroll-bars' can be
1538used to obtain the current settings. To make `scroll-bar-mode' and
1539`scroll-bar-width' take effect, you must set them before displaying
1540the buffer in a window, or use `set-window-buffer' to force an update
1541of the display margins.
1542
1543** The function `set-window-buffer' now has an optional third argument
1544KEEP-MARGINS which will preserve the window's current margin, fringe,
1545and scroll-bar settings if non-nil.
1546
f2aa473a 1547+++
2881ae98
SM
1548** Renamed file hooks to follow the convention:
1549find-file-hooks to find-file-hook,
1550find-file-not-found-hooks to find-file-not-found-functions,
1551write-file-hooks to write-file-functions,
1552write-contents-hooks to write-contents-functions.
1553Marked local-write-file-hooks as obsolete (use the LOCAL arg of `add-hook').
1554
c60ee5e7 1555** The new variable `delete-frame-functions' replaces `delete-frame-hook'.
7757cdaf
JPW
1556It was renamed to follow the naming conventions for abnormal hooks. The old
1557name remains available as an alias, but has been marked obsolete.
1558
02f20f98
KS
1559** The `read-file-name' function now takes an additional argument which
1560specifies a predicate which the file name read must satify. The
1561new variable `read-file-name-predicate' contains the predicate argument
1562while reading the file name from the minibuffer; the predicate in this
1563variable is used by read-file-name-internal to filter the completion list.
1564
1565** The new variable `read-file-name-function' can be used by lisp code
1566to override the internal read-file-name function.
1567
21b6d966
KS
1568** The new function `read-directory-name' can be used instead of
1569`read-file-name' to read a directory name; when used, completion
1570will only show directories.
1571
af7272b1
RS
1572** The new function `file-remote-p' tests a file name and returns
1573non-nil if it specifies a remote file (one that Emacs accesses using
1574its own special methods and not directly through the file system).
1575
1576** When a Lisp file uses CL functions at run-time, compiling the file
1577now issues warnings about these calls, unless the file performs
1578(require 'cl) when loaded.
1579
1c6576ab 1580** The new Lisp library fringe.el controls the apperance of fringes.
555c87d8 1581
ee9e0c25
GM
1582** The `defmacro' form may contain declarations specifying how to
1583indent the macro in Lisp mode and how to debug it with Edebug. The
1584syntax of defmacro has been extended to
1585
1586 (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...)
1587
1588DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The
1589declaration specifiers supported are:
1590
1591(indent INDENT)
1592 Set NAME's `lisp-indent-function' property to INDENT.
1593
1594(edebug DEBUG)
1595 Set NAME's `edebug-form-spec' property to DEBUG. (This is
1596 equivalent to writing a `def-edebug-spec' for the macro.
1597
93607efd
KS
1598** Interactive commands can be remapped through keymaps.
1599
1600This is an alternative to using defadvice or substitute-key-definition
dfd67a62 1601to modify the behavior of a key binding using the normal keymap
93607efd
KS
1602binding and lookup functionality.
1603
1604When a key sequence is bound to a command, and that command is
1605remapped to another command, that command is run instead of the
1606original command.
1607
1608Example:
1609Suppose that minor mode my-mode has defined the commands
1610my-kill-line and my-kill-word, and it wants C-k (and any other key
1611bound to kill-line) to run the command my-kill-line instead of
1612kill-line, and likewise it wants to run my-kill-word instead of
1613kill-word.
1614
1615Instead of rebinding C-k and the other keys in the minor mode map,
1616command remapping allows you to directly map kill-line into
1617my-kill-line and kill-word into my-kill-word through the minor mode
1618map using define-key:
1619
a8959ac2
KS
1620 (define-key my-mode-map [remap kill-line] 'my-kill-line)
1621 (define-key my-mode-map [remap kill-word] 'my-kill-word)
93607efd
KS
1622
1623Now, when my-mode is enabled, and the user enters C-k or M-d,
1624the commands my-kill-line and my-kill-word are run.
1625
1626Notice that only one level of remapping is supported. In the above
1627example, this means that if my-kill-line is remapped to other-kill,
1628then C-k still runs my-kill-line.
1629
1630The following changes have been made to provide command remapping:
1631
a8959ac2
KS
1632- Command remappings are defined using `define-key' with a prefix-key
1633 `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD
1634 to definition DEF in keymap MAP. The definition is not limited to
1635 another command; it can be anything accepted for a normal binding.
93607efd 1636
a84db054
KS
1637- The new function `command-remapping' returns the binding for a
1638 remapped command in the current keymaps, or nil if not remapped.
93607efd
KS
1639
1640- key-binding now remaps interactive commands unless the optional
a8959ac2 1641 third argument NO-REMAP is non-nil.
93607efd
KS
1642
1643- where-is-internal now returns nil for a remapped command (e.g.
1644 kill-line if my-mode is enabled), and the actual key binding for
1645 the command it is remapped to (e.g. C-k for my-kill-line).
1646 It also has a new optional fifth argument, NO-REMAP, which inhibits
1647 remapping if non-nil (e.g. it returns C-k for kill-line and
1648 <kill-line> for my-kill-line).
1649
1650- The new variable `this-original-command' contains the original
1651 command before remapping. It is equal to `this-command' when the
1652 command was not remapped.
1653
3f21fb3a
KS
1654** New variable emulation-mode-map-alists.
1655
1656Lisp packages using many minor mode keymaps can now maintain their own
1657keymap alist separate from minor-mode-map-alist by adding their keymap
1658alist to this list.
1659
108eaabb
RS
1660** Atomic change groups.
1661
1662To perform some changes in the current buffer "atomically" so that
1663they either all succeed or are all undone, use `atomic-change-group'
1664around the code that makes changes. For instance:
1665
1666 (atomic-change-group
1667 (insert foo)
1668 (delete-region x y))
1669
1670If an error (or other nonlocal exit) occurs inside the body of
1671`atomic-change-group', it unmakes all the changes in that buffer that
1672were during the execution of the body. The change group has no effect
1673on any other buffers--any such changes remain.
1674
1675If you need something more sophisticated, you can directly call the
1676lower-level functions that `atomic-change-group' uses. Here is how.
1677
1678To set up a change group for one buffer, call `prepare-change-group'.
1679Specify the buffer as argument; it defaults to the current buffer.
1680This function returns a "handle" for the change group. You must save
1681the handle to activate the change group and then finish it.
1682
1683Before you change the buffer again, you must activate the change
1684group. Pass the handle to `activate-change-group' afterward to
1685do this.
1686
1687After you make the changes, you must finish the change group. You can
1688either accept the changes or cancel them all. Call
1689`accept-change-group' to accept the changes in the group as final;
1690call `cancel-change-group' to undo them all.
1691
1692You should use `unwind-protect' to make sure the group is always
1693finished. The call to `activate-change-group' should be inside the
1694`unwind-protect', in case the user types C-g just after it runs.
1695(This is one reason why `prepare-change-group' and
1696`activate-change-group' are separate functions.) Once you finish the
1697group, don't use the handle again--don't try to finish the same group
1698twice.
1699
1700To make a multibuffer change group, call `prepare-change-group' once
1701for each buffer you want to cover, then use `nconc' to combine the
1702returned values, like this:
1703
1704 (nconc (prepare-change-group buffer-1)
1705 (prepare-change-group buffer-2))
1706
1707You can then activate the multibuffer change group with a single call
1708to `activate-change-group', and finish it with a single call to
1709`accept-change-group' or `cancel-change-group'.
1710
1711Nested use of several change groups for the same buffer works as you
1712would expect. Non-nested use of change groups for the same buffer
1713will lead to undesirable results, so don't let it happen; the first
1714change group you start for any given buffer should be the last one
1715finished.
1716
f17c0a19
CW
1717+++
1718** New variable char-property-alias-alist.
1719
1720This variable allows you to create alternative names for text
1721properties. It works at the same level as `default-text-properties',
1722although it applies to overlays as well. This variable was introduced
1723to implement the `font-lock-face' property.
1724
1725** New special text property `font-lock-face'.
1726
1727This property acts like the `face' property, but it is controlled by
1728M-x font-lock-mode. It is not, strictly speaking, a builtin text
1729property. Instead, it is implemented inside font-core.el, using the
1730new variable `char-property-alias-alist'.
1731
d9f7eb77
RS
1732** New function remove-list-of-text-properties.
1733
1734The new function `remove-list-of-text-properties' is almost the same
1735as `remove-text-properties'. The only difference is that it takes
1736a list of property names as argument rather than a property list.
1737
18232c16 1738** New function insert-for-yank.
d278091b 1739
18232c16
KS
1740This function normally works like `insert' but removes the text
1741properties in the `yank-excluded-properties' list. However, if the
1742inserted text has a `yank-handler' text property on the first
1743character of the string, the insertion of the text may be modified in
1744a number of ways. See the description of `yank-handler' below.
1745
1746** New function insert-buffer-substring-as-yank.
1747
1748This function works like `insert-buffer-substring', but removes the
1749text properties in the `yank-excluded-properties' list.
d278091b
KS
1750
1751** New function insert-buffer-substring-no-properties.
1752
18232c16
KS
1753This function is like insert-buffer-substring, but removes all
1754text properties from the inserted substring.
1755
1756** New `yank-handler' text property may be used to control how
1757previously killed text on the kill-ring is reinserted.
1758
1759The value of the yank-handler property must be a list with one to five
1760elements with the following format:
a6098104 1761 (FUNCTION PARAM NOEXCLUDE UNDO).
18232c16
KS
1762
1763The `insert-for-yank' function looks for a yank-handler property on
1764the first character on its string argument (typically the first
1765element on the kill-ring). If a yank-handler property is found,
1766the normal behaviour of `insert-for-yank' is modified in various ways:
1767
1768 When FUNCTION is present and non-nil, it is called instead of `insert'
1769to insert the string. FUNCTION takes one argument--the object to insert.
1770 If PARAM is present and non-nil, it replaces STRING as the object
1771passed to FUNCTION (or `insert'); for example, if FUNCTION is
1772`yank-rectangle', PARAM should be a list of strings to insert as a
1773rectangle.
1774 If NOEXCLUDE is present and non-nil, the normal removal of the
1775yank-excluded-properties is not performed; instead FUNCTION is
1776responsible for removing those properties. This may be necessary
1777if FUNCTION adjusts point before or after inserting the object.
1778 If UNDO is present and non-nil, it is a function that will be called
1779by `yank-pop' to undo the insertion of the current object. It is
c60ee5e7 1780called with two arguments, the start and end of the current region.
18232c16 1781FUNCTION may set `yank-undo-function' to override the UNDO value.
18232c16
KS
1782
1783*** The functions kill-new, kill-append, and kill-region now has an
1784optional third argument to specify the yank-handler text property
1785to put on the killed text.
1786
1787*** The function yank-pop will now use a non-nil value of the variable
1788`yank-undo-function' (instead of delete-region) to undo the previous
1789yank or yank-pop command (or a call to insert-for-yank). The function
1790insert-for-yank automatically sets that variable according to the UNDO
1791element of the string argument's yank-handler text property if present.
1792
11ef2a3b
MB
1793** New function display-supports-face-attributes-p may be used to test
1794whether a given set of face attributes is actually displayable.
1795
1796A new predicate `supports' has also been added to the `defface' face
1797specification language, which can be used to do this test for faces
1798defined with defface.
1799
3d619ea1
MB
1800** face-attribute, face-foreground, face-background, and face-stipple now
1801accept a new optional argument, INHERIT, which controls how face
1802inheritance is used when determining the value of a face attribute.
1803
1804** New functions face-attribute-relative-p and merge-face-attribute
1805help with handling relative face attributes.
1806
15aeeda5
KS
1807** Enhancements to process support
1808
1809*** Function list-processes now has an optional argument; if non-nil,
1810only the processes whose query-on-exit flag is set are listed.
1811
1812*** New set-process-query-on-exit-flag and process-query-on-exit-flag
1813functions. The existing process-kill-without-query function is still
1814supported, but new code should use the new functions.
1815
1816*** Function signal-process now accepts a process object or process
1817name in addition to a process id to identify the signalled process.
1818
e519464c 1819*** Processes now have an associated property list where programs can
c60ee5e7 1820maintain process state and other per-process related information.
e519464c
KS
1821
1822The new functions process-get and process-put are used to access, add,
1823and modify elements on this property list.
1824
1825The new low-level functions process-plist and set-process-plist are
1826used to access and replace the entire property list of a process.
1827
15aeeda5 1828
fd13a3cc 1829** Enhanced networking support.
1e892206 1830
fd13a3cc
KS
1831*** There is a new `make-network-process' function which supports
1832opening of stream and datagram connections to a server, as well as
1833create a stream or datagram server inside emacs.
1e892206 1834
fd13a3cc 1835- A server is started using :server t arg.
60a501d7 1836- Datagram connection is selected using :type 'datagram arg.
fd13a3cc
KS
1837- A server can open on a random port using :service t arg.
1838- Local sockets are supported using :family 'local arg.
1839- Non-blocking connect is supported using :nowait t arg.
e519464c
KS
1840- The process' property list may be initialized using :plist PLIST arg;
1841 a copy of the server process' property list is automatically inherited
1842 by new client processes created to handle incoming connections.
1e892206 1843
60a501d7
KS
1844To test for the availability of a given feature, use featurep like this:
1845 (featurep 'make-network-process '(:type datagram))
1846
fd13a3cc
KS
1847*** Original open-network-stream is now emulated using make-network-process.
1848
1849*** New function open-network-stream-nowait.
1850
1851This function initiates a non-blocking connect and returns immediately
8e9e520b
KS
1852without waiting for the connection to be established. It takes the
1853filter and sentinel functions as arguments; when the non-blocking
1854connect completes, the sentinel is called with a status string
1855matching "open" or "failed".
fd13a3cc
KS
1856
1857*** New function open-network-stream-server.
8e9e520b
KS
1858
1859This function creates a network server process for a TCP service.
1860When a client connects to the specified service, a new subprocess
1861is created to handle the new connection, and the sentinel function
1862is called for the new process.
fd13a3cc
KS
1863
1864*** New functions process-datagram-address and set-process-datagram-address.
8e9e520b
KS
1865
1866These functions are used with datagram-based network processes to get
1867and set the current address of the remote partner.
fd13a3cc 1868
4e5cdb4f 1869*** New function format-network-address.
8e9e520b
KS
1870
1871This function reformats the lisp representation of a network address
1872to a printable string. For example, an IP address A.B.C.D and port
1873number P is represented as a five element vector [A B C D P], and the
1874printable string returned for this vector is "A.B.C.D:P". See the doc
1875string for other formatting options.
4e5cdb4f 1876
fd13a3cc
KS
1877*** By default, the function process-contact still returns (HOST SERVICE)
1878for a network process. Using the new optional KEY arg, the complete list
1879of network process properties or a specific property can be selected.
1880
1881Using :local and :remote as the KEY, the address of the local or
1882remote end-point is returned. An Inet address is represented as a 5
1883element vector, where the first 4 elements contain the IP address and
1884the fifth is the port number.
1885
1886*** Network processes can now be stopped and restarted with
1887`stop-process' and `continue-process'. For a server process, no
1888connections are accepted in the stopped state. For a client process,
1889no input is received in the stopped state.
1890
6ba3d6bc
CW
1891** New function copy-tree.
1892
9ade4a7d
RS
1893** New function substring-no-properties.
1894
3bdb7f80
KS
1895** New function minibuffer-selected-window.
1896
4e3dd7cf
MB
1897** New function `call-process-shell-command'.
1898
f6078b98
RS
1899** The dummy function keys made by easymenu
1900are now always lower case. If you specify the
1901menu item name "Ada", for instance, it uses `ada'
1902as the "key" bound by that key binding.
1903
1904This is relevant only if Lisp code looks for
1905the bindings that were made with easymenu.
1906
1907** The function `commandp' takes an additional optional
1908argument. If it is non-nil, then `commandp' checks
1909for a function that could be called with `call-interactively',
1910and does not return t for keyboard macros.
1911
2a1e884e
RS
1912** master-mode.el implements a minor mode for scrolling a slave
1913buffer without leaving your current buffer, the master buffer.
1914
1915It can be used by sql.el, for example: the SQL buffer is the master
1916and its SQLi buffer is the slave. This allows you to scroll the SQLi
1917buffer containing the output from the SQL buffer containing the
1918commands.
1919
1920This is how to use sql.el and master.el together: the variable
1921sql-buffer contains the slave buffer. It is a local variable in the
1922SQL buffer.
1923
1924(add-hook 'sql-mode-hook
1925 (function (lambda ()
1926 (master-mode t)
1927 (master-set-slave sql-buffer))))
1928(add-hook 'sql-set-sqli-hook
1929 (function (lambda ()
1930 (master-set-slave sql-buffer))))
1931
596d02bc
RS
1932** File local variables.
1933
1934A file local variables list cannot specify a string with text
1935properties--any specified text properties are discarded.
1936
f5798fbd
RS
1937+++
1938*** The meanings of scroll-up-aggressively and scroll-down-aggressively
1939have been interchanged, so that the former now controls scrolling up,
1940and the latter now controls scrolling down.
1941
d33c4505
RS
1942+++
1943** New function window-body-height.
1944
1945This is like window-height but does not count the mode line
1946or the header line.
1947
21b6d966
KS
1948** New function format-mode-line.
1949
1950This returns the mode-line or header-line of the selected (or a
f4d7915c 1951specified) window as a string with or without text properties.
21b6d966 1952
9356fe5a
RS
1953** New functions `lax-plist-get' and `lax-plist-put'.
1954
1955These functions are like `plist-get' and `plist-put' except that they
1956compare the property name using `equal' rather than `eq'.
1957
4f4fada2
RS
1958** New function `tool-bar-local-item-from-menu'
1959
9252f7bc 1960The `tool-bar-add-item-from-menu' must not be used (as previously
4f4fada2
RS
1961recommended) for making entries in the tool bar for local keymaps.
1962Instead, use the function `tool-bar-local-item-from-menu', which lets
1963you specify the map to use as an argument.
1964
c4f59bcf
EZ
1965+++
1966** The function `atan' now accepts an optional second argument.
1967
1968When called with 2 arguments, as in `(atan Y X)', `atan' returns the
1969angle in radians between the vector [X, Y] and the X axis. (This is
1970equivalent to the standard C library function `atan2'.)
1971
75e20bec
RS
1972+++
1973** You can now make a window as short as one line.
1974
1975A window that is just one line tall does not display either a mode
1976line or a header line, even if the variables `mode-line-format' and
1977`header-line-format' call for them. A window that is two lines tall
1978cannot display both a mode line and a header line at once; if the
1979variables call for both, only the mode line actually appears.
1980
e0c124ce
EZ
1981+++
1982** The new frame parameter `tty-color-mode' specifies the mode to use
1983for color support on character terminal frames. Its value can be a
1984number of colors to support, or a symbol. See the Emacs Lisp
1985Reference manual for more detailed documentation.
1986
596d02bc
RS
1987** Mode line display ignores text properties in the value
1988of a variable whose `risky-local-variables' property is nil.
1989
1c6576ab
RS
1990---
1991** Indentation of simple and extended loop forms has been added to the
1992cl-indent package. The new user options
1993`lisp-loop-keyword-indentation', `lisp-loop-forms-indentation', and
1994`lisp-simple-loop-indentation' can be used to customize the
1995indentation of keywords and forms in loop forms.
1996
1997---
1998** Indentation of backquoted forms has been made customizable in the
1999cl-indent package. See the new user option `lisp-backquote-indentation'.
2000
aaddfb29
RS
2001** Already true in Emacs 21.1, but not emphasized clearly enough:
2002
2003Multibyte buffers can now faithfully record all 256 character codes
2004from 0 to 255. As a result, most of the past reasons to use unibyte
2005buffers no longer exist. We only know of three reasons to use them
2006now:
2007
20081. If you prefer to use unibyte text all of the time.
2009
20102. For reading files into temporary buffers, when you want to avoid
2011the time it takes to convert the format.
2012
20133. For binary files where format conversion would be pointless and
2014wasteful.
2015
edde72f6
RS
2016** If text has a `keymap' property, that keymap takes precedence
2017over minor mode keymaps.
2018
0065bb74
RS
2019** A hex escape in a string forces the string to be multibyte.
2020An octal escape makes it unibyte.
2021
5ceea398
RS
2022** At the end of a command, point moves out from within invisible
2023text, in the same way it moves out from within text covered by an
2024image or composition property.
2025
c64a682c
SM
2026This makes it generally unnecessary to mark invisible text as intangible.
2027This is particularly good because the intangible property often has
2028unexpected side-effects since the property applies to everything
2029(including `goto-char', ...) whereas this new code is only run after
2030post-command-hook and thus does not care about intermediate states.
2031
bf36a6d3
MB
2032** Only one of the beginning or end of an invisible, intangible region is
2033considered an acceptable value for point; which one is determined by
2034examining how the invisible/intangible properties are inherited when new
f10b84c8
RS
2035text is inserted adjacent to them. (The `front-sticky' and `rear-sticky'
2036properties control this.)
2037
2038If the invisible/intangible would be inherited by any text inserted
2039before this region, then the position before it is considered
2040unacceptable, and point is forced to continue (if moving forwards, to
2041the position following the invisible/intangible text; if moving
2042backwards, to one position before). If the properties would be
2043inherited by any text inserted after, then the position after is
2044considered unacceptable, and point is forced to keep moving (if moving
2045backwards, to the position preceding the invisible/intangible text; if
2046moving forwards, to one position later).
bf36a6d3
MB
2047
2048Thus, point can only go to one end of an invisible, intangible region, but
2049not the other one. This prevents C-f and C-b from appearing to stand still
2050on the screen.
2051
f10b84c8
RS
2052You should not set it up so that both the position before and the position
2053after are unacceptable.
2054
bf36a6d3
MB
2055** field-beginning and field-end now accept an additional optional
2056argument, LIMIT.
4e02881b 2057
ef8aee62 2058+++
1b8c66fe
RS
2059** define-abbrev now accepts an optional argument SYSTEM-FLAG. If
2060non-nil, this marks the abbrev as a "system" abbrev, which means that
2061it won't be stored in the user's abbrevs file if he saves the abbrevs.
2062Major modes that predefine some abbrevs should always specify this
2063flag.
2064
c95eaa61
PJ
2065** Support for Mocklisp has been removed.
2066
2067** The function insert-string is now obsolete.
2068
111ed14e
SM
2069** The precedence of file-name-handlers has been changed.
2070Instead of blindly choosing the first handler that matches,
2071find-file-name-handler now gives precedence to a file-name handler
2072that matches near the end of the file name. More specifically, the
2073handler whose (match-beginning 0) is the largest is chosen.
2074In case of ties, the old "first matched" rule applies.
2075
cfaa4a1b 2076** Dense keymaps now handle inheritance correctly.
59b59892
SM
2077Previously a dense keymap would hide all of the simple-char key
2078bindings of the parent keymap.
cfaa4a1b 2079
f67cc62e
SM
2080** jit-lock obeys a new text-property `jit-lock-defer-multiline'.
2081If a piece of text with that property gets contextually refontified
2082(see jit-lock-defer-contextually), then all of that text will
2083be refontified. This is useful when the syntax of a textual element
2084depends on text several lines further down (and when font-lock-multiline
2085is not appropriate to solve that problem). For example in Perl:
2086
2087 s{
2088 foo
2089 }{
2090 bar
2091 }e
2092
2093Adding/removing the last `e' changes the `bar' from being a piece of
2094text to being a piece of code, so you'd put a jit-lock-defer-multiline
2095property over the second half of the command to force (deferred)
2096refontification of `bar' whenever the `e' is added/removed.
2097
6710ea06 2098** describe-vector now takes a second argument `describer' which is
fbe51115 2099called to print the entries' values. It defaults to `princ'.
6710ea06 2100
16927a56
SM
2101** defcustom and other custom declarations now use a default group
2102(the last group defined in the same file) when no :group was given.
2103
2104** emacsserver now runs pre-command-hook and post-command-hook when
2105it receives a request from emacsclient.
2106
8727d588
RS
2107** The variable `recursive-load-depth-limit' has been deleted.
2108Emacs now signals an error if the same file is loaded with more
2109than 3 levels of nesting.
2110
2111** The default values of paragraph-start and indent-line-function have
2112been changed to reflect those used in Text mode rather than those used
2113in Indented-Text mode.
16927a56 2114
1c1d3d69
RS
2115** If a major mode function has a non-nil `no-clone-indirect'
2116property, `clone-indirect-buffer' signals an error if you use
2117it in that buffer.
2118
2119** If you set `query-replace-skip-read-only' non-nil,
2120`query-replace' and related functions simply ignore
2121a match if part of it has a read-only property.
2122
ae4000f1 2123** In `replace-match', the replacement text no longer inherits
1ff74324 2124properties from surrounding text.
1c1d3d69 2125
830047fd
RS
2126** New function `buffer-local-value'.
2127
2128- Function: buffer-local-value variable buffer
2129
2130This function returns the buffer-local binding of VARIABLE (a symbol)
2131in buffer BUFFER. If VARIABLE does not have a buffer-local binding in
2132buffer BUFFER, it returns the default value of VARIABLE instead.
6c0b2643 2133
8e8223e2
SM
2134** New function `text-clone-create'. Text clones are chunks of text
2135that are kept identical by transparently propagating changes from one
2136clone to the other.
2137
2138** font-lock can manage arbitrary text-properties beside `face'.
2139*** the FACENAME returned in font-lock-keywords can be a list
d390f4aa 2140of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set
8e8223e2
SM
2141other properties than `face'.
2142*** font-lock-extra-managed-props can be set to make sure those extra
2143properties are automatically cleaned up by font-lock.
2144
0df7a0b6
EZ
2145** The special treatment of faces whose names are of the form `fg:COLOR'
2146or `bg:COLOR' has been removed. Lisp programs should use the
2147`defface' facility for defining faces with specific colors.
2148
8e8223e2
SM
2149** The new function `run-mode-hooks' and the new macro `delay-mode-hooks'
2150are used by define-derived-mode to make sure the mode hook for the
2151parent mode is run at the end of the child mode.
2152
0ec6b206
SM
2153** define-minor-mode now accepts arbitrary additional keyword arguments
2154and simply passes them to defcustom, if applicable.
2155
7c3cb37d
RS
2156** define-derived-mode by default creates a new empty abbrev table.
2157It does not copy abbrevs from the parent mode's abbrev table.
2158
a7bd9dc7 2159+++
8e8223e2
SM
2160** `provide' and `featurep' now accept an optional second argument
2161to test/provide subfeatures. Also `provide' now checks `after-load-alist'
2162and run any code associated with the provided feature.
2163
5b6a51aa
GM
2164** The variable `compilation-parse-errors-filename-function' can
2165be used to transform filenames found in compilation output.
2166
202082d3
EZ
2167+++
2168** Functions `file-name-sans-extension' and `file-name-extension' now
2169ignore the leading dots in file names, so that file names such as
2170`.emacs' are treated as extensionless.
2171
63ca0a6e
GM
2172** Functions `user-uid' and `user-real-uid' now return floats if the
2173user UID doesn't fit in a Lisp integer. Function `user-full-name'
2174accepts a float as UID parameter.
2175
30de4b24
SM
2176** `define-key-after' now accepts keys longer than 1.
2177
30de4b24
SM
2178** The local variable `no-byte-compile' in elisp files is now obeyed.
2179
1c6576ab
RS
2180** The Emacs Lisp byte-compiler now displays the actual line and
2181character position of errors, where possible. Additionally, the form
2182of its warning and error messages have been brought more in line with
2183the output of other GNU tools.
2184
026f408d
SM
2185** New functions `keymap-prompt' and `current-active-maps'.
2186
2187** New function `describe-buffer-bindings'.
2188
2189** New vars `exec-suffixes' and `load-suffixes' used when
2190searching for an executable resp. an elisp file.
2191
cb8d4d07 2192** Variable aliases have been implemented:
6c0b2643 2193
3fdb4c50 2194- Function: defvaralias ALIAS-VAR BASE-VAR [DOCSTRING]
6c0b2643 2195
3fdb4c50
JB
2196This function defines the symbol ALIAS-VAR as a variable alias for
2197symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR
2198returns the value of BASE-VAR, and changing the value of ALIAS-VAR
2199changes the value of BASE-VAR.
6c0b2643 2200
32ebbc3a
JB
2201DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has
2202the same documentation as BASE-VAR.
2203
6c0b2643
GM
2204- Function: indirect-variable VARIABLE
2205
2206This function returns the variable at the end of the chain of aliases
2207of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not
2208defined as an alias, the function returns VARIABLE.
2209
2210It might be noteworthy that variables aliases work for all kinds of
2211variables, including buffer-local and frame-local variables.
2212
2213** Functions from `post-gc-hook' are run at the end of garbage
2214collection. The hook is run with GC inhibited, so use it with care.
2215
ace64e0a
GM
2216** If the second argument to `copy-file' is the name of a directory,
2217the file is copied to that directory instead of signaling an error.
2218
123ac55e
GM
2219** The variables most-positive-fixnum and most-negative-fixnum
2220have been moved from the CL package to the core.
2221
0b559506
JR
2222** On MS Windows, locale-coding-system is used to interact with the OS.
2223The Windows specific variable w32-system-coding-system, which was
2224formerly used for that purpose is now an alias for locale-coding-system.
2225
6b3daede
GM
2226** Functions y-or-n-p, read-char, read-keysequence and alike that
2227display a prompt but don't use the minibuffer now display the prompt
2228using the text properties (esp. the face) of the prompt string.
2229
30de4b24
SM
2230** New packages:
2231
2232*** The new package syntax.el provides an efficient way to find the
2233current syntactic context (as returned by parse-partial-sexp).
2234
ffe5000a
KS
2235*** The new package bindat.el provides functions to unpack and pack
2236binary data structures, such as network packets, to and from Lisp
2237data structures.
2238
e95768c5 2239*** The TCL package tcl-mode.el was replaced by tcl.el.
c494f663
CW
2240This was actually done in Emacs-21.1, and was not documented.
2241
4e3dd7cf
MB
2242*** The new package button.el implements simple and fast `clickable buttons'
2243in emacs buffers. `buttons' are much lighter-weight than the `widgets'
2244implemented by widget.el, and can be used by lisp code that doesn't
2245require the full power of widgets. Emacs uses buttons for such things
2246as help and apropos buffers.
2247
6c0b2643 2248\f
251584f3
DL
2249* Installation Changes in Emacs 21.1
2250
889be0a1
DL
2251See the INSTALL file for information on installing extra libraries and
2252fonts to take advantage of the new graphical features and extra
2253charsets in this release.
2254
f4988be7
GM
2255** Support for GNU/Linux on IA64 machines has been added.
2256
424d8b44
DL
2257** Support for LynxOS has been added.
2258
1fa28578 2259** There are new configure options associated with the support for
163ea954
RS
2260images and toolkit scrollbars. Use the --help option in `configure'
2261to list them.
6344985d 2262
5ed8d5af 2263** You can build a 64-bit Emacs for SPARC/Solaris systems which
60dd7e0e 2264support 64-bit executables and also on Irix 6.5. This increases the
8628686a
DL
2265maximum buffer size. See etc/MACHINES for instructions. Changes to
2266build on other 64-bit systems should be straightforward modulo any
2267necessary changes to unexec.
f4988be7 2268
efeb796b
EZ
2269** There is a new configure option `--disable-largefile' to omit
2270Unix-98-style support for large files if that is available.
2271
2272** There is a new configure option `--without-xim' that instructs
2273Emacs to not use X Input Methods (XIM), if these are available.
2274
2275** `movemail' defaults to supporting POP. You can turn this off using
2276the --without-pop configure option, should that be necessary.
d9c9b920 2277
e90813b8 2278** This version can be built for the Macintosh, but does not implement
a7c13351 2279all of the new display features described below. The port currently
d69aa2e3
EZ
2280lacks unexec, asynchronous processes, and networking support. See the
2281"Emacs and the Mac OS" appendix in the Emacs manual, for the
2282description of aspects specific to the Mac.
d9c9b920 2283
efeb796b
EZ
2284** Note that the MS-Windows port does not yet implement various of the
2285new display features described below.
2286
05197f40 2287\f
1fa28578
GM
2288* Changes in Emacs 21.1
2289
1e7db2e9
GM
2290** Emacs has a new redisplay engine.
2291
2292The new redisplay handles characters of variable width and height.
2293Italic text can be used without redisplay problems. Fonts containing
2294oversized characters, i.e. characters larger than the logical height
2295of a font can be used. Images of various formats can be displayed in
2296the text.
2297
2298** Emacs has a new face implementation.
2299
2300The new faces no longer fundamentally use X font names to specify the
2301font. Instead, each face has several independent attributes--family,
2302height, width, weight and slant--that it may or may not specify.
2303These attributes can be merged from various faces, and then together
2304specify a font.
2305
2306Faces are supported on terminals that can display color or fonts.
2307These terminal capabilities are auto-detected. Details can be found
2308under Lisp changes, below.
2309
2310** Emacs can display faces on TTY frames.
2311
2312Emacs automatically detects terminals that are able to display colors.
2313Faces with a weight greater than normal are displayed extra-bright, if
2314the terminal supports it. Faces with a weight less than normal and
2315italic faces are displayed dimmed, if the terminal supports it.
2316Underlined faces are displayed underlined if possible. Other face
2317attributes such as `overline', `strike-through', and `box' are ignored
2318on terminals.
2319
2320The command-line options `-fg COLOR', `-bg COLOR', and `-rv' are now
2321supported on character terminals.
2322
efeb796b
EZ
2323Emacs automatically remaps all X-style color specifications to one of
2324the colors supported by the terminal. This means you could have the
2325same color customizations that work both on a windowed display and on
2326a TTY or when Emacs is invoked with the -nw option.
2327
1e7db2e9
GM
2328** New default font is Courier 12pt under X.
2329
efeb796b
EZ
2330** Sound support
2331
2332Emacs supports playing sound files on GNU/Linux and FreeBSD (Voxware
2333driver and native BSD driver, a.k.a. Luigi's driver). Currently
2334supported file formats are RIFF-WAVE (*.wav) and Sun Audio (*.au).
c8682017
EZ
2335You must configure Emacs with the option `--with-sound=yes' to enable
2336sound support.
efeb796b 2337
1e7db2e9
GM
2338** Emacs now resizes mini-windows if appropriate.
2339
2340If a message is longer than one line, or minibuffer contents are
2341longer than one line, Emacs can resize the minibuffer window unless it
2342is on a frame of its own. You can control resizing and the maximum
2343minibuffer window size by setting the following variables:
2344
2345- User option: max-mini-window-height
2346
2347Maximum height for resizing mini-windows. If a float, it specifies a
2348fraction of the mini-window frame's height. If an integer, it
2349specifies a number of lines.
2350
2351Default is 0.25.
2352
2353- User option: resize-mini-windows
2354
2355How to resize mini-windows. If nil, don't resize. If t, always
2356resize to fit the size of the text. If `grow-only', let mini-windows
2357grow only, until they become empty, at which point they are shrunk
2358again.
2359
2360Default is `grow-only'.
2361
2362** LessTif support.
2363
2364Emacs now runs with the LessTif toolkit (see
a04c6760 2365<http://www.lesstif.org>). You will need version 0.92.26, or later.
1e7db2e9
GM
2366
2367** LessTif/Motif file selection dialog.
2368
2369When Emacs is configured to use LessTif or Motif, reading a file name
2370from a menu will pop up a file selection dialog if `use-dialog-box' is
2371non-nil.
2372
8f80abd8
EZ
2373** File selection dialog on MS-Windows is supported.
2374
2375When a file is visited by clicking File->Open, the MS-Windows version
2376now pops up a standard file selection dialog where you can select a
2377file to visit. File->Save As also pops up that dialog.
2378
1e7db2e9
GM
2379** Toolkit scroll bars.
2380
2381Emacs now uses toolkit scroll bars if available. When configured for
2382LessTif/Motif, it will use that toolkit's scroll bar. Otherwise, when
2383configured for Lucid and Athena widgets, it will use the Xaw3d scroll
2384bar if Xaw3d is available. You can turn off the use of toolkit scroll
2385bars by specifying `--with-toolkit-scroll-bars=no' when configuring
2386Emacs.
2387
2388When you encounter problems with the Xaw3d scroll bar, watch out how
2389Xaw3d is compiled on your system. If the Makefile generated from
2390Xaw3d's Imakefile contains a `-DNARROWPROTO' compiler option, and your
2391Emacs system configuration file `s/your-system.h' does not contain a
2392define for NARROWPROTO, you might consider adding it. Take
2393`s/freebsd.h' as an example.
2394
2395Alternatively, if you don't have access to the Xaw3d source code, take
2396a look at your system's imake configuration file, for example in the
2397directory `/usr/X11R6/lib/X11/config' (paths are different on
2398different systems). You will find files `*.cf' there. If your
2399system's cf-file contains a line like `#define NeedWidePrototypes NO',
2400add a `#define NARROWPROTO' to your Emacs system configuration file.
2401
2402The reason for this is that one Xaw3d function uses `double' or
2403`float' function parameters depending on the setting of NARROWPROTO.
2404This is not a problem when Imakefiles are used because each system's
3593c177 2405imake configuration file contains the necessary information. Since
1e7db2e9
GM
2406Emacs doesn't use imake, this has do be done manually.
2407
1e7db2e9
GM
2408** Tool bar support.
2409
2410Emacs supports a tool bar at the top of a frame under X. For details
2411of how to define a tool bar, see the page describing Lisp-level
2412changes. Tool-bar global minor mode controls whether or not it is
2413displayed and is on by default. The appearance of the bar is improved
2414if Emacs has been built with XPM image support. Otherwise monochrome
2415icons will be used.
2416
2417To make the tool bar more useful, we need contributions of extra icons
70fae708 2418for specific modes (with copyright assignments).
1e7db2e9 2419
1e7db2e9
GM
2420** Tooltips.
2421
2422Tooltips are small X windows displaying a help string at the current
2423mouse position. The Lisp package `tooltip' implements them. You can
2424turn them off via the user option `tooltip-mode'.
2425
2426Tooltips also provides support for GUD debugging. If activated,
2427variable values can be displayed in tooltips by pointing at them with
2428the mouse in source buffers. You can customize various aspects of the
2429tooltip display in the group `tooltip'.
2430
efeb796b
EZ
2431** Automatic Hscrolling
2432
2433Horizontal scrolling now happens automatically if
2434`automatic-hscrolling' is set (the default). This setting can be
2435customized.
2436
2437If a window is scrolled horizontally with set-window-hscroll, or
2438scroll-left/scroll-right (C-x <, C-x >), this serves as a lower bound
2439for automatic horizontal scrolling. Automatic scrolling will scroll
2440the text more to the left if necessary, but won't scroll the text more
2441to the right than the column set with set-window-hscroll etc.
2442
1e7db2e9
GM
2443** When using a windowing terminal, each Emacs window now has a cursor
2444of its own. By default, when a window is selected, the cursor is
2445solid; otherwise, it is hollow. The user-option
ab9c49cf 2446`cursor-in-non-selected-windows' controls how to display the
1e7db2e9 2447cursor in non-selected windows. If nil, no cursor is shown, if
2018166d 2448non-nil a hollow box cursor is shown.
1e7db2e9
GM
2449
2450** Fringes to the left and right of windows are used to display
2451truncation marks, continuation marks, overlay arrows and alike. The
2452foreground, background, and stipple of these areas can be changed by
2453customizing face `fringe'.
2454
2455** The mode line under X is now drawn with shadows by default.
2456You can change its appearance by modifying the face `mode-line'.
2457In particular, setting the `:box' attribute to nil turns off the 3D
2458appearance of the mode line. (The 3D appearance makes the mode line
2459occupy more space, and thus might cause the first or the last line of
2460the window to be partially obscured.)
2461
2462The variable `mode-line-inverse-video', which was used in older
46ff99c0
MB
2463versions of emacs to make the mode-line stand out, is now deprecated.
2464However, setting it to nil will cause the `mode-line' face to be
2465ignored, and mode-lines to be drawn using the default text face.
1e7db2e9 2466
1e7db2e9
GM
2467** Mouse-sensitive mode line.
2468
6b9572dc
EZ
2469Different parts of the mode line have been made mouse-sensitive on all
2470systems which support the mouse. Moving the mouse to a
2471mouse-sensitive part in the mode line changes the appearance of the
2472mouse pointer to an arrow, and help about available mouse actions is
2473displayed either in the echo area, or in the tooltip window if you
2474have enabled one.
1e7db2e9
GM
2475
2476Currently, the following actions have been defined:
2477
3aa2f38a 2478- Mouse-1 on the buffer name in the mode line goes to the next buffer.
1e7db2e9 2479
3aa2f38a 2480- Mouse-3 on the buffer-name goes to the previous buffer.
1e7db2e9
GM
2481
2482- Mouse-2 on the read-only or modified status in the mode line (`%' or
2483`*') toggles the status.
2484
2485- Mouse-3 on the mode name displays a minor-mode menu.
2486
1e7db2e9
GM
2487** Hourglass pointer
2488
2489Emacs can optionally display an hourglass pointer under X. You can
2490turn the display on or off by customizing group `cursor'.
2491
1e7db2e9
GM
2492** Blinking cursor
2493
2494M-x blink-cursor-mode toggles a blinking cursor under X and on
2495terminals having terminal capabilities `vi', `vs', and `ve'. Blinking
2496and related parameters like frequency and delay can be customized in
2497the group `cursor'.
2498
1e7db2e9
GM
2499** New font-lock support mode `jit-lock-mode'.
2500
2501This support mode is roughly equivalent to `lazy-lock' but is
2502generally faster. It supports stealth and deferred fontification.
2503See the documentation of the function `jit-lock-mode' for more
2504details.
2505
2506Font-lock uses jit-lock-mode as default support mode, so you don't
2507have to do anything to activate it.
2508
efeb796b
EZ
2509** The default binding of the Delete key has changed.
2510
2511The new user-option `normal-erase-is-backspace' can be set to
2512determine the effect of the Delete and Backspace function keys.
2513
2514On window systems, the default value of this option is chosen
2515according to the keyboard used. If the keyboard has both a Backspace
2516key and a Delete key, and both are mapped to their usual meanings, the
2517option's default value is set to t, so that Backspace can be used to
2518delete backward, and Delete can be used to delete forward. On
2519keyboards which either have only one key (usually labeled DEL), or two
2520keys DEL and BS which produce the same effect, the option's value is
2521set to nil, and these keys delete backward.
2522
2523If not running under a window system, setting this option accomplishes
2524a similar effect by mapping C-h, which is usually generated by the
2525Backspace key, to DEL, and by mapping DEL to C-d via
2526`keyboard-translate'. The former functionality of C-h is available on
2527the F1 key. You should probably not use this setting on a text-only
2528terminal if you don't have both Backspace, Delete and F1 keys.
2529
2530Programmatically, you can call function normal-erase-is-backspace-mode
2531to toggle the behavior of the Delete and Backspace keys.
2532
1e7db2e9
GM
2533** The default for user-option `next-line-add-newlines' has been
2534changed to nil, i.e. C-n will no longer add newlines at the end of a
2535buffer by default.
2536
2537** The <home> and <end> keys now move to the beginning or end of the
2538current line, respectively. C-<home> and C-<end> move to the
2539beginning and end of the buffer.
2540
2541** Emacs now checks for recursive loads of Lisp files. If the
2542recursion depth exceeds `recursive-load-depth-limit', an error is
2543signaled.
2544
2545** When an error is signaled during the loading of the user's init
2546file, Emacs now pops up the *Messages* buffer.
2547
1e7db2e9
GM
2548** Emacs now refuses to load compiled Lisp files which weren't
2549compiled with Emacs. Set `load-dangerous-libraries' to t to change
2550this behavior.
2551
efeb796b 2552The reason for this change is an incompatible change in XEmacs's byte
1e7db2e9
GM
2553compiler. Files compiled with XEmacs can contain byte codes that let
2554Emacs dump core.
2555
2556** Toggle buttons and radio buttons in menus.
2557
2558When compiled with LessTif (or Motif) support, Emacs uses toolkit
2559widgets for radio and toggle buttons in menus. When configured for
2560Lucid, Emacs draws radio buttons and toggle buttons similar to Motif.
2561
2562** The menu bar configuration has changed. The new configuration is
2563more CUA-compliant. The most significant change is that Options is
2564now a separate menu-bar item, with Mule and Customize as its submenus.
2565
2566** Item Save Options on the Options menu allows saving options set
2567using that menu.
2568
1e7db2e9
GM
2569** Highlighting of trailing whitespace.
2570
2571When `show-trailing-whitespace' is non-nil, Emacs displays trailing
2572whitespace in the face `trailing-whitespace'. Trailing whitespace is
2573defined as spaces or tabs at the end of a line. To avoid busy
2574highlighting when entering new text, trailing whitespace is not
2575displayed if point is at the end of the line containing the
2576whitespace.
2577
1e7db2e9
GM
2578** C-x 5 1 runs the new command delete-other-frames which deletes
2579all frames except the selected one.
2580
2581** The new user-option `confirm-kill-emacs' can be customized to
2582let Emacs ask for confirmation before exiting.
2583
1e7db2e9
GM
2584** The header line in an Info buffer is now displayed as an emacs
2585header-line (which is like a mode-line, but at the top of the window),
2586so that it remains visible even when the buffer has been scrolled.
2587This behavior may be disabled by customizing the option
2588`Info-use-header-line'.
2589
1e7db2e9
GM
2590** Polish, Czech, German, and French translations of Emacs' reference card
2591have been added. They are named `pl-refcard.tex', `cs-refcard.tex',
2592`de-refcard.tex' and `fr-refcard.tex'. Postscript files are included.
2593
2594** An `Emacs Survival Guide', etc/survival.tex, is available.
2595
2596** A reference card for Dired has been added. Its name is
2597`dired-ref.tex'. A French translation is available in
2598`fr-drdref.tex'.
2599
1e7db2e9
GM
2600** C-down-mouse-3 is bound differently. Now if the menu bar is not
2601displayed it pops up a menu containing the items which would be on the
2602menu bar. If the menu bar is displayed, it pops up the major mode
2603menu or the Edit menu if there is no major mode menu.
2604
efeb796b 2605** Variable `load-path' is no longer customizable through Customize.
17851d9d 2606
a19e85cc 2607You can no longer use `M-x customize-variable' to customize `load-path'
17851d9d
EZ
2608because it now contains a version-dependent component. You can still
2609use `add-to-list' and `setq' to customize this variable in your
2610`~/.emacs' init file or to modify it from any Lisp program in general.
1e7db2e9 2611
1e7db2e9
GM
2612** C-u C-x = provides detailed information about the character at
2613point in a pop-up window.
2614
1e7db2e9
GM
2615** Emacs can now support 'wheeled' mice (such as the MS IntelliMouse)
2616under XFree86. To enable this, use the `mouse-wheel-mode' command, or
2617customize the variable `mouse-wheel-mode'.
2618
2619The variables `mouse-wheel-follow-mouse' and `mouse-wheel-scroll-amount'
2620determine where and by how much buffers are scrolled.
2621
1e7db2e9
GM
2622** Emacs' auto-save list files are now by default stored in a
2623sub-directory `.emacs.d/auto-save-list/' of the user's home directory.
2624(On MS-DOS, this subdirectory's name is `_emacs.d/auto-save.list/'.)
aa082854 2625You can customize `auto-save-list-file-prefix' to change this location.
1e7db2e9 2626
1e7db2e9
GM
2627** The function `getenv' is now callable interactively.
2628
eb1b0c74
GM
2629** The new user-option `even-window-heights' can be set to nil
2630to prevent `display-buffer' from evening out window heights.
2631
c607d53d 2632** The new command M-x delete-trailing-whitespace RET will delete the
346598f1 2633trailing whitespace within the current restriction. You can also add
c607d53d
SS
2634this function to `write-file-hooks' or `local-write-file-hooks'.
2635
4104194e 2636** When visiting a file with M-x find-file-literally, no newlines will
1e36ff68
DL
2637be added to the end of the buffer even if `require-final-newline' is
2638non-nil.
4104194e 2639
ba9eeda1
GM
2640** The new user-option `find-file-suppress-same-file-warnings' can be
2641set to suppress warnings ``X and Y are the same file'' when visiting a
2642file that is already visited under a different name.
2643
42ac0ae5
GM
2644** The new user-option `electric-help-shrink-window' can be set to
2645nil to prevent adjusting the help window size to the buffer size.
2646
ba9eeda1 2647** New command M-x describe-character-set reads a character set name
eb27839a 2648and displays information about that.
b941a14b 2649
25ad1371
GM
2650** The new variable `auto-mode-interpreter-regexp' contains a regular
2651expression matching interpreters, for file mode determination.
2652
2653This regular expression is matched against the first line of a file to
2654determine the file's mode in `set-auto-mode' when Emacs can't deduce a
2655mode from the file's name. If it matches, the file is assumed to be
2656interpreted by the interpreter matched by the second group of the
2657regular expression. The mode is then determined as the mode
2658associated with that interpreter in `interpreter-mode-alist'.
2659
40e857ea 2660** New function executable-make-buffer-file-executable-if-script-p is
424d8b44 2661suitable as an after-save-hook as an alternative to `executable-chmod'.
40e857ea 2662
c08398de
DL
2663** The most preferred coding-system is now used to save a buffer if
2664buffer-file-coding-system is `undecided' and it is safe for the buffer
2665contents. (The most preferred is set by set-language-environment or
2666by M-x prefer-coding-system.) Thus if you visit an ASCII file and
2667insert a non-ASCII character from your current language environment,
2668the file will be saved silently with the appropriate coding.
2669Previously you would be prompted for a safe coding system.
2670
efeb796b
EZ
2671** The many obsolete language `setup-...-environment' commands have
2672been removed -- use `set-language-environment'.
2673
efeb796b
EZ
2674** The new Custom option `keyboard-coding-system' specifies a coding
2675system for keyboard input.
2676
3d6cd763
GM
2677** New variable `inhibit-iso-escape-detection' determines if Emacs'
2678coding system detection algorithm should pay attention to ISO2022's
2679escape sequences. If this variable is non-nil, the algorithm ignores
2680such escape sequences. The default value is nil, and it is
2681recommended not to change it except for the special case that you
07b14857 2682always want to read any escape code verbatim. If you just want to
3d6cd763 2683read a specific file without decoding escape codes, use C-x RET c
07b14857
KH
2684(`universal-coding-system-argument'). For instance, C-x RET c latin-1
2685RET C-x C-f filename RET.
26ae8525 2686
0b8a3a6d
DL
2687** Variable `default-korean-keyboard' is initialized properly from the
2688environment variable `HANGUL_KEYBOARD_TYPE'.
2689
0b8a3a6d
DL
2690** New command M-x list-charset-chars reads a character set name and
2691displays all characters in that character set.
2692
2693** M-x set-terminal-coding-system (C-x RET t) now allows CCL-based
2694coding systems such as cpXXX and cyrillic-koi8.
2695
efeb796b
EZ
2696** Emacs now attempts to determine the initial language environment
2697and preferred and locale coding systems systematically from the
2698LC_ALL, LC_CTYPE, and LANG environment variables during startup.
2699
efeb796b
EZ
2700** New language environments `Polish', `Latin-8' and `Latin-9'.
2701Latin-8 and Latin-9 correspond respectively to the ISO character sets
27028859-14 (Celtic) and 8859-15 (updated Latin-1, with the Euro sign).
2703GNU Intlfonts doesn't support these yet but recent X releases have
27048859-15. See etc/INSTALL for information on obtaining extra fonts.
2705There are new Leim input methods for Latin-8 and Latin-9 prefix (only)
2706and Polish `slash'.
2707
efeb796b
EZ
2708** New language environments `Dutch' and `Spanish'.
2709These new environments mainly select appropriate translations
2710of the tutorial.
2711
2712** In Ethiopic language environment, special key bindings for
2713function keys are changed as follows. This is to conform to "Emacs
2714Lisp Coding Convention".
2715
2716 new command old-binding
2717 --- ------- -----------
2718 f3 ethio-fidel-to-sera-buffer f5
2719 S-f3 ethio-fidel-to-sera-region f5
2720 C-f3 ethio-fidel-to-sera-mail-or-marker f5
2721
2722 f4 ethio-sera-to-fidel-buffer unchanged
2723 S-f4 ethio-sera-to-fidel-region unchanged
2724 C-f4 ethio-sera-to-fidel-mail-or-marker unchanged
2725
2726 S-f5 ethio-toggle-punctuation f3
2727 S-f6 ethio-modify-vowel f6
2728 S-f7 ethio-replace-space f7
2729 S-f8 ethio-input-special-character f8
2730 S-f9 ethio-replace-space unchanged
2731 C-f9 ethio-toggle-space f2
2732
bd161121
EZ
2733** There are new Leim input methods.
2734New input methods "turkish-postfix", "turkish-alt-postfix",
2735"greek-mizuochi", "TeX", and "greek-babel" are now part of the Leim
2736package.
2737
efeb796b
EZ
2738** The rule of input method "slovak" is slightly changed. Now the
2739rules for translating "q" and "Q" to "`" (backquote) are deleted, thus
2740typing them inserts "q" and "Q" respectively. Rules for translating
2741"=q", "+q", "=Q", and "+Q" to "`" are also deleted. Now, to input
2742"`", you must type "=q".
2743
efeb796b
EZ
2744** When your terminal can't display characters from some of the ISO
27458859 character sets but can display Latin-1, you can display
2746more-or-less mnemonic sequences of ASCII/Latin-1 characters instead of
2747empty boxes (under a window system) or question marks (not under a
2748window system). Customize the option `latin1-display' to turn this
2749on.
2750
efeb796b
EZ
2751** M-; now calls comment-dwim which tries to do something clever based
2752on the context. M-x kill-comment is now an alias to comment-kill,
2753defined in newcomment.el. You can choose different styles of region
2754commenting with the variable `comment-style'.
5cb6a58e 2755
5898e075
DL
2756** New user options `display-time-mail-face' and
2757`display-time-use-mail-icon' control the appearance of mode-line mail
2758indicator used by the display-time package. On a suitable display the
2759indicator can be an icon and is mouse-sensitive.
2760
cc181e95
GM
2761** On window-systems, additional space can be put between text lines
2762on the display using several methods
2763
2764- By setting frame parameter `line-spacing' to PIXELS. PIXELS must be
2765a positive integer, and specifies that PIXELS number of pixels should
2766be put below text lines on the affected frame or frames.
2767
2768- By setting X resource `lineSpacing', class `LineSpacing'. This is
5820dead 2769equivalent to specifying the frame parameter.
cc181e95 2770
da4496b6 2771- By specifying `--line-spacing=N' or `-lsp N' on the command line.
cc181e95
GM
2772
2773- By setting buffer-local variable `line-spacing'. The meaning is
2774the same, but applies to the a particular buffer only.
2775
3b4fa1b2 2776** The new command `clone-indirect-buffer' can be used to create
1c459486 2777an indirect buffer that is a twin copy of the current buffer. The
3b4fa1b2 2778command `clone-indirect-buffer-other-window', bound to C-x 4 c,
1c459486 2779does the same but displays the indirect buffer in another window.
0daee095 2780
176256a1 2781** New user options `backup-directory-alist' and
3bbc50af
DL
2782`make-backup-file-name-function' control the placement of backups,
2783typically in a single directory or in an invisible sub-directory.
176256a1 2784
dd0add8e
DL
2785** New commands iso-iso2sgml and iso-sgml2iso convert between Latin-1
2786characters and the corresponding SGML (HTML) entities.
2787
699238d9 2788** New X resources recognized
100b3cbb 2789
7233c5bd
GM
2790*** The X resource `synchronous', class `Synchronous', specifies
2791whether Emacs should run in synchronous mode. Synchronous mode
2792is useful for debugging X problems.
2793
2794Example:
2795
699238d9 2796 emacs.synchronous: true
7233c5bd 2797
100b3cbb
GM
2798*** The X resource `visualClass, class `VisualClass', specifies the
2799visual Emacs should use. The resource's value should be a string of
2800the form `CLASS-DEPTH', where CLASS is the name of the visual class,
2801and DEPTH is the requested color depth as a decimal number. Valid
2802visual class names are
2803
2804 TrueColor
2805 PseudoColor
2806 DirectColor
2807 StaticColor
2808 GrayScale
2809 StaticGray
2810
2811Visual class names specified as X resource are case-insensitive, i.e.
2812`pseudocolor', `Pseudocolor' and `PseudoColor' all have the same
2813meaning.
2814
2815The program `xdpyinfo' can be used to list the visual classes
2816supported on your display, and which depths they have. If
2817`visualClass' is not specified, Emacs uses the display's default
2818visual.
2819
2820Example:
2821
699238d9 2822 emacs.visualClass: TrueColor-8
100b3cbb
GM
2823
2824*** The X resource `privateColormap', class `PrivateColormap',
2825specifies that Emacs should use a private colormap if it is using the
2826default visual, and that visual is of class PseudoColor. Recognized
2827resource values are `true' or `on'.
2828
2829Example:
2830
699238d9 2831 emacs.privateColormap: true
100b3cbb 2832
a933dad1
DL
2833** Faces and frame parameters.
2834
2835There are four new faces `scroll-bar', `border', `cursor' and `mouse'.
2836Setting the frame parameters `scroll-bar-foreground' and
2837`scroll-bar-background' sets foreground and background color of face
2838`scroll-bar' and vice versa. Setting frame parameter `border-color'
2839sets the background color of face `border' and vice versa. Likewise
2840for frame parameters `cursor-color' and face `cursor', and frame
2841parameter `mouse-color' and face `mouse'.
2842
2843Changing frame parameter `font' sets font-related attributes of the
2844`default' face and vice versa. Setting frame parameters
79214ddf 2845`foreground-color' or `background-color' sets the colors of the
a933dad1
DL
2846`default' face and vice versa.
2847
f77a4a8a
GM
2848** New face `menu'.
2849
2850The face `menu' can be used to change colors and font of Emacs' menus.
f77a4a8a 2851
a933dad1
DL
2852** New frame parameter `screen-gamma' for gamma correction.
2853
2854The new frame parameter `screen-gamma' specifies gamma-correction for
2855colors. Its value may be nil, the default, in which case no gamma
2856correction occurs, or a number > 0, usually a float, that specifies
2857the screen gamma of a frame's display.
2858
2859PC monitors usually have a screen gamma of 2.2. smaller values result
2860in darker colors. You might want to try a screen gamma of 1.5 for LCD
2861color displays. The viewing gamma Emacs uses is 0.4545. (1/2.2).
2862
2863The X resource name of this parameter is `screenGamma', class
2864`ScreenGamma'.
2865
a933dad1
DL
2866** Tabs and variable-width text.
2867
2868Tabs are now displayed with stretch properties; the width of a tab is
2869defined as a multiple of the normal character width of a frame, and is
2870independent of the fonts used in the text where the tab appears.
2871Thus, tabs can be used to line up text in different fonts.
2872
2873** Enhancements of the Lucid menu bar
2874
2875*** The Lucid menu bar now supports the resource "margin".
2876
2877 emacs.pane.menubar.margin: 5
2878
79dd1637
RS
2879The default margin is 4 which makes the menu bar appear like the
2880LessTif/Motif one.
a933dad1 2881
79dd1637
RS
2882*** Arrows that indicate sub-menus are now drawn with shadows, as in
2883LessTif and Motif.
a933dad1 2884
a933dad1
DL
2885** A block cursor can be drawn as wide as the glyph under it under X.
2886
2887As an example: if a block cursor is over a tab character, it will be
2888drawn as wide as that tab on the display. To do this, set
2889`x-stretch-cursor' to a non-nil value.
2890
2891** Empty display lines at the end of a buffer may be marked with a
efeb796b 2892bitmap (this is similar to the tilde displayed by vi and Less).
a933dad1
DL
2893
2894This behavior is activated by setting the buffer-local variable
2895`indicate-empty-lines' to a non-nil value. The default value of this
2896variable is found in `default-indicate-empty-lines'.
2897
2898** There is a new "aggressive" scrolling method.
2899
2900When scrolling up because point is above the window start, if the
d9e66103 2901value of the buffer-local variable `scroll-up-aggressively' is a
a933dad1 2902number, Emacs chooses a new window start so that point ends up that
d5951185 2903fraction of the window's height from the top of the window.
a933dad1
DL
2904
2905When scrolling down because point is below the window end, if the
8a33023e 2906value of the buffer-local variable `scroll-down-aggressively' is a
a933dad1 2907number, Emacs chooses a new window start so that point ends up that
d5951185 2908fraction of the window's height from the bottom of the window.
a933dad1 2909
efeb796b
EZ
2910** You can now easily create new *Info* buffers using either
2911M-x clone-buffer, C-u m <entry> RET or C-u g <entry> RET.
2912M-x clone-buffer can also be used on *Help* and several other special
2913buffers.
2914
2915** The command `Info-search' now uses a search history.
2916
2917** Listing buffers with M-x list-buffers (C-x C-b) now shows
2918abbreviated file names. Abbreviations can be customized by changing
2919`directory-abbrev-alist'.
2920
efeb796b
EZ
2921** A new variable, backup-by-copying-when-privileged-mismatch, gives
2922the highest file uid for which backup-by-copying-when-mismatch will be
2923forced on. The assumption is that uids less than or equal to this
2924value are special uids (root, bin, daemon, etc.--not real system
2925users) and that files owned by these users should not change ownership,
2926even if your system policy allows users other than root to edit them.
2927
2928The default is 200; set the variable to nil to disable the feature.
2929
a933dad1
DL
2930** The rectangle commands now avoid inserting undesirable spaces,
2931notably at the end of lines.
2932
2933All these functions have been rewritten to avoid inserting unwanted
2934spaces, and an optional prefix now allows them to behave the old way.
2935
8748ecc0 2936** The function `replace-rectangle' is an alias for `string-rectangle'.
eee54b0e 2937
8748ecc0
GM
2938** The new command M-x string-insert-rectangle is like `string-rectangle',
2939but inserts text instead of replacing it.
2ce72bfa 2940
a933dad1
DL
2941** The new command M-x query-replace-regexp-eval acts like
2942query-replace-regexp, but takes a Lisp expression which is evaluated
2943after each match to get the replacement text.
2944
d5483ab1
GM
2945** M-x query-replace recognizes a new command `e' (or `E') that lets
2946you edit the replacement string.
4ff40dd0 2947
75823f67
EZ
2948** The new command mail-abbrev-complete-alias, bound to `M-TAB'
2949(if you load the library `mailabbrev'), lets you complete mail aliases
2950in the text, analogous to lisp-complete-symbol.
4ff40dd0 2951
efeb796b 2952** The variable `echo-keystrokes' may now have a floating point value.
889be0a1 2953
efeb796b
EZ
2954** If your init file is compiled (.emacs.elc), `user-init-file' is set
2955to the source name (.emacs.el), if that exists, after loading it.
327652be 2956
efeb796b
EZ
2957** The help string specified for a menu-item whose definition contains
2958the property `:help HELP' is now displayed under X, on MS-Windows, and
2959MS-DOS, either in the echo area or with tooltips. Many standard menus
2960displayed by Emacs now have help strings.
a32da22c 2961
75823f67 2962--
efeb796b
EZ
2963** New user option `read-mail-command' specifies a command to use to
2964read mail from the menu etc.
559cee90 2965
efeb796b
EZ
2966** The environment variable `EMACSLOCKDIR' is no longer used on MS-Windows.
2967This environment variable was used when creating lock files. Emacs on
2968MS-Windows does not use this variable anymore. This change was made
2969before Emacs 21.1, but wasn't documented until now.
559cee90 2970
efeb796b
EZ
2971** Highlighting of mouse-sensitive regions is now supported in the
2972MS-DOS version of Emacs.
424d8b44 2973
efeb796b
EZ
2974** The new command `msdos-set-mouse-buttons' forces the MS-DOS version
2975of Emacs to behave as if the mouse had a specified number of buttons.
2976This comes handy with mice that don't report their number of buttons
2977correctly. One example is the wheeled mice, which report 3 buttons,
2978but clicks on the middle button are not passed to the MS-DOS version
2979of Emacs.
eb2aac9d 2980
efeb796b 2981** Customize changes
eb2aac9d 2982
efeb796b
EZ
2983*** Customize now supports comments about customized items. Use the
2984`State' menu to add comments, or give a prefix argument to
2985M-x customize-set-variable or M-x customize-set-value. Note that
2986customization comments will cause the customizations to fail in
2987earlier versions of Emacs.
1b24b888 2988
efeb796b
EZ
2989*** The new option `custom-buffer-done-function' says whether to kill
2990Custom buffers when you've done with them or just bury them (the
2991default).
79c78e77 2992
efeb796b
EZ
2993*** If Emacs was invoked with the `-q' or `--no-init-file' options, it
2994does not allow you to save customizations in your `~/.emacs' init
2995file. This is because saving customizations from such a session would
2996wipe out all the other customizationss you might have on your init
2997file.
79c78e77 2998
7e97c157
EZ
2999** If Emacs was invoked with the `-q' or `--no-init-file' options, it
3000does not save disabled and enabled commands for future sessions, to
3001avoid overwriting existing customizations of this kind that are
3002already in your init file.
3003
efeb796b 3004** New features in evaluation commands
3476b54a 3005
efeb796b
EZ
3006*** The commands to evaluate Lisp expressions, such as C-M-x in Lisp
3007modes, C-j in Lisp Interaction mode, and M-:, now bind the variables
3008print-level, print-length, and debug-on-error based on the new
3009customizable variables eval-expression-print-level,
3010eval-expression-print-length, and eval-expression-debug-on-error.
a933dad1 3011
f37e8c77
EZ
3012The default values for the first two of these variables are 12 and 4
3013respectively, which means that `eval-expression' now prints at most
3014the first 12 members of a list and at most 4 nesting levels deep (if
3015the list is longer or deeper than that, an ellipsis `...' is
3016printed).
3017
75c5350a
GM
3018<RET> or <mouse-2> on the printed text toggles between an abbreviated
3019printed representation and an unabbreviated one.
f6e6cdf2 3020
f37e8c77
EZ
3021The default value of eval-expression-debug-on-error is t, so any error
3022during evaluation produces a backtrace.
3023
3a426197 3024*** The function `eval-defun' (C-M-x) now loads Edebug and instruments
5e03eb84
GM
3025code when called with a prefix argument.
3026
b1c609b1
GM
3027** CC mode changes.
3028
3029Note: This release contains changes that might not be compatible with
3030current user setups (although it's believed that these
3031incompatibilities will only show in very uncommon circumstances).
3032However, since the impact is uncertain, these changes may be rolled
3033back depending on user feedback. Therefore there's no forward
3034compatibility guarantee wrt the new features introduced in this
3035release.
3036
e120bebf
GM
3037*** The hardcoded switch to "java" style in Java mode is gone.
3038CC Mode used to automatically set the style to "java" when Java mode
3039is entered. This has now been removed since it caused too much
3040confusion.
3041
3042However, to keep backward compatibility to a certain extent, the
3043default value for c-default-style now specifies the "java" style for
3044java-mode, but "gnu" for all other modes (as before). So you won't
3045notice the change if you haven't touched that variable.
3046
3047*** New cleanups, space-before-funcall and compact-empty-funcall.
3048Two new cleanups have been added to c-cleanup-list:
3049
3050space-before-funcall causes a space to be inserted before the opening
3051parenthesis of a function call, which gives the style "foo (bar)".
3052
3053compact-empty-funcall causes any space before a function call opening
3054parenthesis to be removed if there are no arguments to the function.
3055It's typically useful together with space-before-funcall to get the
3056style "foo (bar)" and "foo()".
3057
3058*** Some keywords now automatically trigger reindentation.
3059Keywords like "else", "while", "catch" and "finally" have been made
3060"electric" to make them reindent automatically when they continue an
3061earlier statement. An example:
3062
3063for (i = 0; i < 17; i++)
3064 if (a[i])
3065 res += a[i]->offset;
3066else
3067
3068Here, the "else" should be indented like the preceding "if", since it
3069continues that statement. CC Mode will automatically reindent it after
3070the "else" has been typed in full, since it's not until then it's
3071possible to decide whether it's a new statement or a continuation of
3072the preceding "if".
3073
3074CC Mode uses Abbrev mode to achieve this, which is therefore turned on
3075by default.
3076
3077*** M-a and M-e now moves by sentence in multiline strings.
3078Previously these two keys only moved by sentence in comments, which
3079meant that sentence movement didn't work in strings containing
3080documentation or other natural language text.
3081
3082The reason it's only activated in multiline strings (i.e. strings that
3083contain a newline, even when escaped by a '\') is to avoid stopping in
3084the short strings that often reside inside statements. Multiline
3085strings almost always contain text in a natural language, as opposed
3086to other strings that typically contain format specifications,
3087commands, etc. Also, it's not that bothersome that M-a and M-e misses
3088sentences in single line strings, since they're short anyway.
3089
3090*** Support for autodoc comments in Pike mode.
3091Autodoc comments for Pike are used to extract documentation from the
3092source, like Javadoc in Java. Pike mode now recognize this markup in
3093comment prefixes and paragraph starts.
3094
3095*** The comment prefix regexps on c-comment-prefix may be mode specific.
3096When c-comment-prefix is an association list, it specifies the comment
3097line prefix on a per-mode basis, like c-default-style does. This
3098change came about to support the special autodoc comment prefix in
3099Pike mode only.
3100
3101*** Better handling of syntactic errors.
3102The recovery after unbalanced parens earlier in the buffer has been
3103improved; CC Mode now reports them by dinging and giving a message
3104stating the offending line, but still recovers and indent the
3105following lines in a sane way (most of the time). An "else" with no
3106matching "if" is handled similarly. If an error is discovered while
3107indenting a region, the whole region is still indented and the error
3108is reported afterwards.
3109
3110*** Lineup functions may now return absolute columns.
3111A lineup function can give an absolute column to indent the line to by
3112returning a vector with the desired column as the first element.
3113
3114*** More robust and warning-free byte compilation.
3115Although this is strictly not a user visible change (well, depending
3116on the view of a user), it's still worth mentioning that CC Mode now
3117can be compiled in the standard ways without causing trouble. Some
3118code have also been moved between the subpackages to enhance the
3119modularity somewhat. Thanks to Martin Buchholz for doing the
3120groundwork.
3121
7972fcfc
GM
3122*** c-style-variables-are-local-p now defaults to t.
3123This is an incompatible change that has been made to make the behavior
3124of the style system wrt global variable settings less confusing for
3125non-advanced users. If you know what this variable does you might
3126want to set it to nil in your .emacs, otherwise you probably don't
3127have to bother.
3128
3129Defaulting c-style-variables-are-local-p to t avoids the confusing
3130situation that occurs when a user sets some style variables globally
487522fe 3131and edits both a Java and a non-Java file in the same Emacs session.
7972fcfc
GM
3132If the style variables aren't buffer local in this case, loading of
3133the second file will cause the default style (either "gnu" or "java"
3134by default) to override the global settings made by the user.
3135
b1c609b1
GM
3136*** New initialization procedure for the style system.
3137When the initial style for a buffer is determined by CC Mode (from the
3138variable c-default-style), the global values of style variables now
3139take precedence over the values specified by the chosen style. This
3140is different than the old behavior: previously, the style-specific
3141settings would override the global settings. This change makes it
3142possible to do simple configuration in the intuitive way with
3143Customize or with setq lines in one's .emacs file.
3144
3145By default, the global value of every style variable is the new
3146special symbol set-from-style, which causes the value to be taken from
3147the style system. This means that in effect, only an explicit setting
3148of a style variable will cause the "overriding" behavior described
3149above.
3150
3151Also note that global settings override style-specific settings *only*
3152when the initial style of a buffer is chosen by a CC Mode major mode
3153function. When a style is chosen in other ways --- for example, by a
3154call like (c-set-style "gnu") in a hook, or via M-x c-set-style ---
3155then the style-specific values take precedence over any global style
3156values. In Lisp terms, global values override style-specific values
3157only when the new second argument to c-set-style is non-nil; see the
3158function documentation for more info.
3159
3160The purpose of these changes is to make it easier for users,
3161especially novice users, to do simple customizations with Customize or
3162with setq in their .emacs files. On the other hand, the new system is
3163intended to be compatible with advanced users' customizations as well,
3164such as those that choose styles in hooks or whatnot. This new system
3165is believed to be almost entirely compatible with current
3166configurations, in spite of the changed precedence between style and
3167global variable settings when a buffer's default style is set.
3168
3169(Thanks to Eric Eide for clarifying this explanation a bit.)
3170
3171**** c-offsets-alist is now a customizable variable.
3172This became possible as a result of the new initialization behavior.
3173
3174This variable is treated slightly differently from the other style
3175variables; instead of using the symbol set-from-style, it will be
3176completed with the syntactic symbols it doesn't already contain when
3177the style is first initialized. This means it now defaults to the
3178empty list to make all syntactic elements get their values from the
3179style system.
3180
3181**** Compatibility variable to restore the old behavior.
3182In case your configuration doesn't work with this change, you can set
3183c-old-style-variable-behavior to non-nil to get the old behavior back
3184as far as possible.
3185
3186*** Improvements to line breaking and text filling.
3187CC Mode now handles this more intelligently and seamlessly wrt the
3188surrounding code, especially inside comments. For details see the new
3189chapter about this in the manual.
3190
3191**** New variable to recognize comment line prefix decorations.
3192The variable c-comment-prefix-regexp has been added to properly
3193recognize the line prefix in both block and line comments. It's
3194primarily used to initialize the various paragraph recognition and
3195adaptive filling variables that the text handling functions uses.
3196
3197**** New variable c-block-comment-prefix.
3198This is a generalization of the now obsolete variable
3199c-comment-continuation-stars to handle arbitrary strings.
3200
3201**** CC Mode now uses adaptive fill mode.
3202This to make it adapt better to the paragraph style inside comments.
3203
3204It's also possible to use other adaptive filling packages inside CC
3205Mode, notably Kyle E. Jones' Filladapt mode (http://wonderworks.com/).
3206A new convenience function c-setup-filladapt sets up Filladapt for use
3207inside CC Mode.
3208
3209Note though that the 2.12 version of Filladapt lacks a feature that
3210causes it to work suboptimally when c-comment-prefix-regexp can match
3211the empty string (which it commonly does). A patch for that is
3212available from the CC Mode web site (http://www.python.org/emacs/
3213cc-mode/).
3214
9ed462b7
EZ
3215**** The variables `c-hanging-comment-starter-p' and
3216`c-hanging-comment-ender-p', which controlled how comment starters and
3217enders were filled, are not used anymore. The new version of the
3218function `c-fill-paragraph' keeps the comment starters and enders as
3219they were before the filling.
3220
b1c609b1
GM
3221**** It's now possible to selectively turn off auto filling.
3222The variable c-ignore-auto-fill is used to ignore auto fill mode in
3223specific contexts, e.g. in preprocessor directives and in string
3224literals.
3225
3226**** New context sensitive line break function c-context-line-break.
3227It works like newline-and-indent in normal code, and adapts the line
3228prefix according to the comment style when used inside comments. If
3229you're normally using newline-and-indent, you might want to switch to
3230this function.
3231
3232*** Fixes to IDL mode.
3233It now does a better job in recognizing only the constructs relevant
3234to IDL. E.g. it no longer matches "class" as the beginning of a
3235struct block, but it does match the CORBA 2.3 "valuetype" keyword.
3236Thanks to Eric Eide.
3237
3238*** Improvements to the Whitesmith style.
3239It now keeps the style consistently on all levels and both when
3240opening braces hangs and when they don't.
3241
3242**** New lineup function c-lineup-whitesmith-in-block.
3243
3244*** New lineup functions c-lineup-template-args and c-indent-multi-line-block.
3245See their docstrings for details. c-lineup-template-args does a
3246better job of tracking the brackets used as parens in C++ templates,
3247and is used by default to line up continued template arguments.
3248
3249*** c-lineup-comment now preserves alignment with a comment on the
3250previous line. It used to instead preserve comments that started in
3251the column specified by comment-column.
3252
3253*** c-lineup-C-comments handles "free form" text comments.
3254In comments with a long delimiter line at the start, the indentation
3255is kept unchanged for lines that start with an empty comment line
3256prefix. This is intended for the type of large block comments that
3257contain documentation with its own formatting. In these you normally
3258don't want CC Mode to change the indentation.
3259
3260*** The `c' syntactic symbol is now relative to the comment start
3261instead of the previous line, to make integers usable as lineup
3262arguments.
3263
3264*** All lineup functions have gotten docstrings.
3265
3266*** More preprocessor directive movement functions.
3267c-down-conditional does the reverse of c-up-conditional.
3268c-up-conditional-with-else and c-down-conditional-with-else are
3269variants of these that also stops at "#else" lines (suggested by Don
3270Provan).
3271
3272*** Minor improvements to many movement functions in tricky situations.
3273
efeb796b 3274** Dired changes
c407c570 3275
efeb796b
EZ
3276*** New variable `dired-recursive-deletes' determines if the delete
3277command will delete non-empty directories recursively. The default
3278is, delete only empty directories.
c407c570 3279
efeb796b
EZ
3280*** New variable `dired-recursive-copies' determines if the copy
3281command will copy directories recursively. The default is, do not
3282copy directories recursively.
87be76f6 3283
efeb796b
EZ
3284*** In command `dired-do-shell-command' (usually bound to `!') a `?'
3285in the shell command has a special meaning similar to `*', but with
3286the difference that the command will be run on each file individually.
3353ef5a 3287
efeb796b
EZ
3288*** The new command `dired-find-alternate-file' (usually bound to `a')
3289replaces the Dired buffer with the buffer for an alternate file or
3290directory.
c407c570 3291
a320a8e7 3292*** The new command `dired-show-file-type' (usually bound to `y') shows
efeb796b
EZ
3293a message in the echo area describing what type of file the point is on.
3294This command invokes the external program `file' do its work, and so
3295will only work on systems with that program, and will be only as
3296accurate or inaccurate as it is.
3297
3298*** Dired now properly handles undo changes of adding/removing `-R'
3299from ls switches.
3300
3301*** Dired commands that prompt for a destination file now allow the use
3302of the `M-n' command in the minibuffer to insert the source filename,
3303which the user can then edit. This only works if there is a single
3304source file, not when operating on multiple marked files.
a933dad1 3305
efeb796b 3306** Gnus changes.
87be76f6 3307
efeb796b
EZ
3308The Gnus NEWS entries are short, but they reflect sweeping changes in
3309four areas: Article display treatment, MIME treatment,
3310internationalization and mail-fetching.
87be76f6 3311
efeb796b
EZ
3312*** The mail-fetching functions have changed. See the manual for the
3313many details. In particular, all procmail fetching variables are gone.
87be76f6 3314
efeb796b 3315If you used procmail like in
87be76f6 3316
efeb796b
EZ
3317(setq nnmail-use-procmail t)
3318(setq nnmail-spool-file 'procmail)
3319(setq nnmail-procmail-directory "~/mail/incoming/")
3320(setq nnmail-procmail-suffix "\\.in")
35384f06 3321
efeb796b 3322this now has changed to
87be76f6 3323
efeb796b
EZ
3324(setq mail-sources
3325 '((directory :path "~/mail/incoming/"
3326 :suffix ".in")))
d7b511c4 3327
efeb796b
EZ
3328More information is available in the info doc at Select Methods ->
3329Getting Mail -> Mail Sources
d67f47e4 3330
efeb796b
EZ
3331*** Gnus is now a MIME-capable reader. This affects many parts of
3332Gnus, and adds a slew of new commands. See the manual for details.
3333Separate MIME packages like RMIME, mime-compose etc., will probably no
3334longer work; remove them and use the native facilities.
d7b511c4 3335
efeb796b
EZ
3336The FLIM/SEMI package still works with Emacs 21, but if you want to
3337use the native facilities, you must remove any mailcap.el[c] that was
3338installed by FLIM/SEMI version 1.13 or earlier.
9d453139 3339
efeb796b
EZ
3340*** Gnus has also been multilingualized. This also affects too many
3341parts of Gnus to summarize here, and adds many new variables. There
3342are built-in facilities equivalent to those of gnus-mule.el, which is
3343now just a compatibility layer.
4b9347b3 3344
75823f67
EZ
3345*** gnus-mule.el is now just a compatibility layer over the built-in
3346Gnus facilities.
3347
efeb796b
EZ
3348*** gnus-auto-select-first can now be a function to be
3349called to position point.
4b9347b3 3350
efeb796b
EZ
3351*** The user can now decide which extra headers should be included in
3352summary buffers and NOV files.
79214ddf 3353
efeb796b
EZ
3354*** `gnus-article-display-hook' has been removed. Instead, a number
3355of variables starting with `gnus-treat-' have been added.
79214ddf 3356
efeb796b
EZ
3357*** The Gnus posting styles have been redone again and now work in a
3358subtly different manner.
aca0be23 3359
efeb796b
EZ
3360*** New web-based backends have been added: nnslashdot, nnwarchive
3361and nnultimate. nnweb has been revamped, again, to keep up with
3362ever-changing layouts.
79214ddf 3363
efeb796b 3364*** Gnus can now read IMAP mail via nnimap.
79214ddf 3365
efeb796b 3366*** There is image support of various kinds and some sound support.
8c463abe 3367
efeb796b 3368** Changes in Texinfo mode.
8c463abe 3369
efeb796b
EZ
3370*** A couple of new key bindings have been added for inserting Texinfo
3371macros
79214ddf 3372
efeb796b
EZ
3373 Key binding Macro
3374 -------------------------
3375 C-c C-c C-s @strong
3376 C-c C-c C-e @emph
3377 C-c C-c u @uref
3378 C-c C-c q @quotation
3379 C-c C-c m @email
3380 C-c C-o @<block> ... @end <block>
3381 M-RET @item
79214ddf 3382
efeb796b 3383*** The " key now inserts either " or `` or '' depending on context.
79214ddf 3384
efeb796b 3385** Changes in Outline mode.
79214ddf 3386
efeb796b
EZ
3387There is now support for Imenu to index headings. A new command
3388`outline-headers-as-kill' copies the visible headings in the region to
3389the kill ring, e.g. to produce a table of contents.
89d57763 3390
efeb796b 3391** Changes to Emacs Server
79214ddf 3392
efeb796b
EZ
3393*** The new option `server-kill-new-buffers' specifies what to do
3394with buffers when done with them. If non-nil, the default, buffers
3395are killed, unless they were already present before visiting them with
3396Emacs Server. If nil, `server-temp-file-regexp' specifies which
3397buffers to kill, as before.
79214ddf 3398
efeb796b
EZ
3399Please note that only buffers are killed that still have a client,
3400i.e. buffers visited with `emacsclient --no-wait' are never killed in
3401this way.
3402
3403** Both emacsclient and Emacs itself now accept command line options
3404of the form +LINE:COLUMN in addition to +LINE.
3405
3406** Changes to Show Paren mode.
3407
3408*** Overlays used by Show Paren mode now use a priority property.
3409The new user option show-paren-priority specifies the priority to
3410use. Default is 1000.
79214ddf 3411
efeb796b
EZ
3412** New command M-x check-parens can be used to find unbalanced paren
3413groups and strings in buffers in Lisp mode (or other modes).
f6737cde 3414
efeb796b 3415** Changes to hideshow.el
3f6e4b8b 3416
efeb796b 3417*** Generalized block selection and traversal
f6737cde 3418
efeb796b
EZ
3419A block is now recognized by its start and end regexps (both strings),
3420and an integer specifying which sub-expression in the start regexp
3421serves as the place where a `forward-sexp'-like function can operate.
3422See the documentation of variable `hs-special-modes-alist'.
f6737cde 3423
efeb796b
EZ
3424*** During incremental search, if Hideshow minor mode is active,
3425hidden blocks are temporarily shown. The variable `hs-headline' can
3426be used in the mode line format to show the line at the beginning of
3427the open block.
f6737cde 3428
efeb796b
EZ
3429*** User option `hs-hide-all-non-comment-function' specifies a
3430function to be called at each top-level block beginning, instead of
3431the normal block-hiding function.
f6737cde 3432
efeb796b 3433*** The command `hs-show-region' has been removed.
f6737cde 3434
efeb796b
EZ
3435*** The key bindings have changed to fit the Emacs conventions,
3436roughly imitating those of Outline minor mode. Notably, the prefix
3437for all bindings is now `C-c @'. For details, see the documentation
3438for `hs-minor-mode'.
f6737cde 3439
efeb796b
EZ
3440*** The variable `hs-show-hidden-short-form' has been removed, and
3441hideshow.el now always behaves as if this variable were set to t.
f6737cde 3442
efeb796b 3443** Changes to Change Log mode and Add-Log functions
f6737cde 3444
efeb796b
EZ
3445*** If you invoke `add-change-log-entry' from a backup file, it makes
3446an entry appropriate for the file's parent. This is useful for making
3447log entries by comparing a version with deleted functions.
0c68ce6f 3448
efeb796b
EZ
3449**** New command M-x change-log-merge merges another log into the
3450current buffer.
d521e087 3451
efeb796b
EZ
3452*** New command M-x change-log-redate fixes any old-style date entries
3453in a log file.
1e7db2e9 3454
efeb796b
EZ
3455*** Change Log mode now adds a file's version number to change log
3456entries if user-option `change-log-version-info-enabled' is non-nil.
3457Unless the file is under version control the search for a file's
3458version number is performed based on regular expressions from
3459`change-log-version-number-regexp-list' which can be customized.
3460Version numbers are only found in the first 10 percent of a file.
3461
3462*** Change Log mode now defines its own faces for font-lock highlighting.
3463
3464** Changes to cmuscheme
3465
3466*** The user-option `scheme-program-name' has been renamed
3467`cmuscheme-program-name' due to conflicts with xscheme.el.
3468
3469** Changes in Font Lock
3470
3471*** The new function `font-lock-remove-keywords' can be used to remove
3472font-lock keywords from the current buffer or from a specific major mode.
3473
3474*** Multi-line patterns are now supported. Modes using this, should
3475set font-lock-multiline to t in their font-lock-defaults.
3476
3477*** `font-lock-syntactic-face-function' allows major-modes to choose
3478the face used for each string/comment.
3479
3480*** A new standard face `font-lock-doc-face'.
3481Meant for Lisp docstrings, Javadoc comments and other "documentation in code".
3482
3483** Changes to Shell mode
3484
3485*** The `shell' command now accepts an optional argument to specify the buffer
3486to use, which defaults to "*shell*". When used interactively, a
3487non-default buffer may be specified by giving the `shell' command a
3488prefix argument (causing it to prompt for the buffer name).
3489
3490** Comint (subshell) changes
3491
3492These changes generally affect all modes derived from comint mode, which
3493include shell-mode, gdb-mode, scheme-interaction-mode, etc.
3494
3495*** Comint now by default interprets some carriage-control characters.
3496Comint now removes CRs from CR LF sequences, and treats single CRs and
3497BSs in the output in a way similar to a terminal (by deleting to the
3498beginning of the line, or deleting the previous character,
3499respectively). This is achieved by adding `comint-carriage-motion' to
3500the `comint-output-filter-functions' hook by default.
3501
3502*** By default, comint no longer uses the variable `comint-prompt-regexp'
3503to distinguish prompts from user-input. Instead, it notices which
3504parts of the text were output by the process, and which entered by the
3505user, and attaches `field' properties to allow emacs commands to use
3506this information. Common movement commands, notably beginning-of-line,
3507respect field boundaries in a fairly natural manner. To disable this
3508feature, and use the old behavior, customize the user option
3509`comint-use-prompt-regexp-instead-of-fields'.
3510
3511*** Comint now includes new features to send commands to running processes
3512and redirect the output to a designated buffer or buffers.
3513
3514*** The command M-x comint-redirect-send-command reads a command and
3515buffer name from the mini-buffer. The command is sent to the current
3516buffer's process, and its output is inserted into the specified buffer.
3517
3518The command M-x comint-redirect-send-command-to-process acts like
3519M-x comint-redirect-send-command but additionally reads the name of
3520the buffer whose process should be used from the mini-buffer.
3521
3522*** Packages based on comint now highlight user input and program prompts,
3523and support choosing previous input with mouse-2. To control these features,
3524see the user-options `comint-highlight-input' and `comint-highlight-prompt'.
3525
3526*** The new command `comint-write-output' (usually bound to `C-c C-s')
3527saves the output from the most recent command to a file. With a prefix
3528argument, it appends to the file.
3529
3530*** The command `comint-kill-output' has been renamed `comint-delete-output'
3531(usually bound to `C-c C-o'); the old name is aliased to it for
3532compatibility.
3533
3534*** The new function `comint-add-to-input-history' adds commands to the input
3535ring (history).
3536
3537*** The new variable `comint-input-history-ignore' is a regexp for
3538identifying history lines that should be ignored, like tcsh time-stamp
3539strings, starting with a `#'. The default value of this variable is "^#".
3540
3541** Changes to Rmail mode
3542
3543*** The new user-option rmail-user-mail-address-regexp can be
3544set to fine tune the identification of the correspondent when
3545receiving new mail. If it matches the address of the sender, the
3546recipient is taken as correspondent of a mail. If nil, the default,
3547`user-login-name' and `user-mail-address' are used to exclude yourself
3548as correspondent.
3549
3550Usually you don't have to set this variable, except if you collect
3551mails sent by you under different user names. Then it should be a
3552regexp matching your mail addresses.
3553
3554*** The new user-option rmail-confirm-expunge controls whether and how
3555to ask for confirmation before expunging deleted messages from an
3556Rmail file. You can choose between no confirmation, confirmation
3557with y-or-n-p, or confirmation with yes-or-no-p. Default is to ask
3558for confirmation with yes-or-no-p.
3559
3560*** RET is now bound in the Rmail summary to rmail-summary-goto-msg,
3561like `j'.
3562
3563*** There is a new user option `rmail-digest-end-regexps' that
3564specifies the regular expressions to detect the line that ends a
3565digest message.
3566
3567*** The new user option `rmail-automatic-folder-directives' specifies
3568in which folder to put messages automatically.
3569
3570*** The new function `rmail-redecode-body' allows to fix a message
3571with non-ASCII characters if Emacs happens to decode it incorrectly
3572due to missing or malformed "charset=" header.
3573
3574** The new user-option `mail-envelope-from' can be used to specify
3575an envelope-from address different from user-mail-address.
3576
75823f67
EZ
3577** The variable mail-specify-envelope-from controls whether to
3578use the -f option when sending mail.
3579
f68113db
EZ
3580** The Rmail command `o' (`rmail-output-to-rmail-file') now writes the
3581current message in the internal `emacs-mule' encoding, rather than in
3582the encoding taken from the variable `buffer-file-coding-system'.
3583This allows to save messages whose characters cannot be safely encoded
3584by the buffer's coding system, and makes sure the message will be
3585displayed correctly when you later visit the target Rmail file.
3586
3587If you want your Rmail files be encoded in a specific coding system
3588other than `emacs-mule', you can customize the variable
3589`rmail-file-coding-system' to set its value to that coding system.
3590
efeb796b
EZ
3591** Changes to TeX mode
3592
3593*** The default mode has been changed from `plain-tex-mode' to
3594`latex-mode'.
3595
3596*** latex-mode now has a simple indentation algorithm.
3597
3598*** M-f and M-p jump around \begin...\end pairs.
3599
3600*** Added support for outline-minor-mode.
3601
3602** Changes to RefTeX mode
3603
3604*** RefTeX has new support for index generation. Index entries can be
3605 created with `C-c <', with completion available on index keys.
3606 Pressing `C-c /' indexes the word at the cursor with a default
3607 macro. `C-c >' compiles all index entries into an alphabetically
3608 sorted *Index* buffer which looks like the final index. Entries
3609 can be edited from that buffer.
3610
3611*** Label and citation key selection now allow to select several
3612 items and reference them together (use `m' to mark items, `a' or
3613 `A' to use all marked entries).
3614
3615*** reftex.el has been split into a number of smaller files to reduce
3616 memory use when only a part of RefTeX is being used.
3617
3618*** a new command `reftex-view-crossref-from-bibtex' (bound to `C-c &'
3619 in BibTeX-mode) can be called in a BibTeX database buffer in order
3620 to show locations in LaTeX documents where a particular entry has
3621 been cited.
3622
3623** Emacs Lisp mode now allows multiple levels of outline headings.
3624The level of a heading is determined from the number of leading
3625semicolons in a heading line. Toplevel forms starting with a `('
3626in column 1 are always made leaves.
3627
3628** The M-x time-stamp command (most commonly used on write-file-hooks)
3629has the following new features:
3630
3631*** The patterns for finding the time stamp and for updating a pattern
3632may match text spanning multiple lines. For example, some people like
3633to have the filename and date on separate lines. The new variable
3634time-stamp-inserts-lines controls the matching for multi-line patterns.
3635
3636*** More than one time stamp can be updated in the same file. This
3637feature is useful if you need separate time stamps in a program source
3638file to both include in formatted documentation and insert in the
3639compiled binary. The same time-stamp will be written at each matching
3640pattern. The variable time-stamp-count enables this new feature; it
3641defaults to 1.
3642
3643** Partial Completion mode now completes environment variables in
3644file names.
3645
3646** Ispell changes
fbc164de 3647
efeb796b
EZ
3648*** The command `ispell' now spell-checks a region if
3649transient-mark-mode is on, and the mark is active. Otherwise it
3650spell-checks the current buffer.
59c1bf85 3651
efeb796b
EZ
3652*** Support for synchronous subprocesses - DOS/Windoze - has been
3653added.
732b9cdd 3654
efeb796b
EZ
3655*** An "alignment error" bug was fixed when a manual spelling
3656correction is made and re-checked.
b8b2ea31 3657
4cdf4bde 3658*** Italian, Portuguese, and Slovak dictionary definitions have been added.
b8b2ea31 3659
efeb796b
EZ
3660*** Region skipping performance has been vastly improved in some
3661cases.
b8b2ea31 3662
efeb796b
EZ
3663*** Spell checking HTML buffers has been improved and isn't so strict
3664on syntax errors.
3665
3666*** The buffer-local words are now always placed on a new line at the
3667end of the buffer.
3668
3669*** Spell checking now works in the MS-DOS version of Emacs.
3670
efeb796b
EZ
3671** Makefile mode changes
3672
3673*** The mode now uses the abbrev table `makefile-mode-abbrev-table'.
b8b2ea31 3674
efeb796b
EZ
3675*** Conditionals and include statements are now highlighted when
3676Fontlock mode is active.
1e406be0 3677
efeb796b 3678** Isearch changes
e33b0397 3679
efeb796b
EZ
3680*** Isearch now puts a call to `isearch-resume' in the command history,
3681so that searches can be resumed.
e33b0397 3682
3a426197 3683*** In Isearch mode, C-M-s and C-M-r are now bound like C-s and C-r,
efeb796b
EZ
3684respectively, i.e. you can repeat a regexp isearch with the same keys
3685that started the search.
3686
3687*** In Isearch mode, mouse-2 in the echo area now yanks the current
3688selection into the search string rather than giving an error.
6f8ea2ae 3689
efeb796b 3690*** There is a new lazy highlighting feature in incremental search.
c0510d27 3691
efeb796b
EZ
3692Lazy highlighting is switched on/off by customizing variable
3693`isearch-lazy-highlight'. When active, all matches for the current
3694search string are highlighted. The current match is highlighted as
3695before using face `isearch' or `region'. All other matches are
3696highlighted using face `isearch-lazy-highlight-face' which defaults to
3697`secondary-selection'.
5d94f558 3698
efeb796b
EZ
3699The extra highlighting makes it easier to anticipate where the cursor
3700will end up each time you press C-s or C-r to repeat a pending search.
3701Highlighting of these additional matches happens in a deferred fashion
3702using "idle timers," so the cycles needed do not rob isearch of its
3703usual snappy response.
dc28878c 3704
efeb796b
EZ
3705If `isearch-lazy-highlight-cleanup' is set to t, highlights for
3706matches are automatically cleared when you end the search. If it is
3707set to nil, you can remove the highlights manually with `M-x
3708isearch-lazy-highlight-cleanup'.
95931eb1 3709
54baed30
GM
3710** VC Changes
3711
3712VC has been overhauled internally. It is now modular, making it
3713easier to plug-in arbitrary version control backends. (See Lisp
3714Changes for details on the new structure.) As a result, the mechanism
3715to enable and disable support for particular version systems has
3716changed: everything is now controlled by the new variable
60a441a5 3717`vc-handled-backends'. Its value is a list of symbols that identify
54baed30
GM
3718version systems; the default is '(RCS CVS SCCS). When finding a file,
3719each of the backends in that list is tried in order to see whether the
3720file is registered in that backend.
3721
3722When registering a new file, VC first tries each of the listed
3723backends to see if any of them considers itself "responsible" for the
3724directory of the file (e.g. because a corresponding subdirectory for
3725master files exists). If none of the backends is responsible, then
3726the first backend in the list that could register the file is chosen.
3727As a consequence, the variable `vc-default-back-end' is now obsolete.
3728
3729The old variable `vc-master-templates' is also obsolete, although VC
3730still supports it for backward compatibility. To define templates for
3731RCS or SCCS, you should rather use the new variables
3732vc-{rcs,sccs}-master-templates. (There is no such feature under CVS
3733where it doesn't make sense.)
3734
3735The variables `vc-ignore-vc-files' and `vc-handle-cvs' are also
3736obsolete now, you must set `vc-handled-backends' to nil or exclude
3737`CVS' from the list, respectively, to achieve their effect now.
3738
3739*** General Changes
3740
3741The variable `vc-checkout-carefully' is obsolete: the corresponding
3742checks are always done now.
3743
327652be 3744VC Dired buffers are now kept up-to-date during all version control
54baed30
GM
3745operations.
3746
c286608e
SM
3747`vc-diff' output is now displayed in `diff-mode'.
3748`vc-print-log' uses `log-view-mode'.
3749`vc-log-mode' (used for *VC-Log*) has been replaced by `log-edit-mode'.
3750
22933be8
AS
3751The command C-x v m (vc-merge) now accepts an empty argument as the
3752first revision number. This means that any recent changes on the
3753current branch should be picked up from the repository and merged into
3754the working file (``merge news'').
3755
3756The commands C-x v s (vc-create-snapshot) and C-x v r
3757(vc-retrieve-snapshot) now ask for a directory name from which to work
3758downwards.
3759
3760*** Multiple Backends
3761
3762VC now lets you register files in more than one backend. This is
3763useful, for example, if you are working with a slow remote CVS
3764repository. You can then use RCS for local editing, and occasionally
3765commit your changes back to CVS, or pick up changes from CVS into your
3766local RCS archives.
3767
3768To make this work, the ``more local'' backend (RCS in our example)
3769should come first in `vc-handled-backends', and the ``more remote''
3770backend (CVS) should come later. (The default value of
3771`vc-handled-backends' already has it that way.)
3772
60a441a5
AS
3773You can then commit changes to another backend (say, RCS), by typing
3774C-u C-x v v RCS RET (i.e. vc-next-action now accepts a backend name as
3775a revision number). VC registers the file in the more local backend
3776if that hasn't already happened, and commits to a branch based on the
3777current revision number from the more remote backend.
22933be8
AS
3778
3779If a file is registered in multiple backends, you can switch to
3780another one using C-x v b (vc-switch-backend). This does not change
3781any files, it only changes VC's perspective on the file. Use this to
3782pick up changes from CVS while working under RCS locally.
3783
3784After you are done with your local RCS editing, you can commit your
3785changes back to CVS using C-u C-x v v CVS RET. In this case, the
3786local RCS archive is removed after the commit, and the log entry
3787buffer is initialized to contain the entire RCS change log of the file.
3788
54baed30
GM
3789*** Changes for CVS
3790
3791There is a new user option, `vc-cvs-stay-local'. If it is `t' (the
3792default), then VC avoids network queries for files registered in
3793remote repositories. The state of such files is then only determined
3794by heuristics and past information. `vc-cvs-stay-local' can also be a
3795regexp to match against repository hostnames; only files from hosts
3796that match it are treated locally. If the variable is nil, then VC
3797queries the repository just as often as it does for local files.
3798
22933be8
AS
3799If `vc-cvs-stay-local' is on, then VC also makes local backups of
3800repository versions. This means that ordinary diffs (C-x v =) and
3801revert operations (C-x v u) can be done completely locally, without
3802any repository interactions at all. The name of a local version
3803backup of FILE is FILE.~REV.~, where REV is the repository version
3804number. This format is similar to that used by C-x v ~
3805(vc-version-other-window), except for the trailing dot. As a matter
3806of fact, the two features can each use the files created by the other,
3807the only difference being that files with a trailing `.' are deleted
105602b1
EZ
3808automatically after commit. (This feature doesn't work on MS-DOS,
3809since DOS disallows more than a single dot in the trunk of a file
3810name.)
22933be8 3811
54baed30
GM
3812If `vc-cvs-stay-local' is on, and there have been changes in the
3813repository, VC notifies you about it when you actually try to commit.
3814If you want to check for updates from the repository without trying to
22933be8 3815commit, you can either use C-x v m RET to perform an update on the
54baed30
GM
3816current file, or you can use C-x v r RET to get an update for an
3817entire directory tree.
3818
3819The new user option `vc-cvs-use-edit' indicates whether VC should call
3820"cvs edit" to make files writeable; it defaults to `t'. (This option
3821is only meaningful if the CVSREAD variable is set, or if files are
3822"watched" by other developers.)
3823
22933be8
AS
3824The commands C-x v s (vc-create-snapshot) and C-x v r
3825(vc-retrieve-snapshot) are now also implemented for CVS. If you give
60a441a5 3826an empty snapshot name to the latter, that performs a `cvs update',
22933be8
AS
3827starting at the given directory.
3828
54baed30
GM
3829*** Lisp Changes in VC
3830
3831VC has been restructured internally to make it modular. You can now
3832add support for arbitrary version control backends by writing a
3833library that provides a certain set of backend-specific functions, and
3834then telling VC to use that library. For example, to add support for
60a441a5
AS
3835a version system named SYS, you write a library named vc-sys.el, which
3836provides a number of functions vc-sys-... (see commentary at the top
54baed30 3837of vc.el for a detailed list of them). To make VC use that library,
60a441a5
AS
3838you need to put it somewhere into Emacs' load path and add the symbol
3839`SYS' to the list `vc-handled-backends'.
54baed30 3840
c4ed232b 3841** The customizable EDT emulation package now supports the EDT
732b9cdd
GM
3842SUBS command and EDT scroll margins. It also works with more
3843terminal/keyboard configurations and it now works under XEmacs.
3844See etc/edt-user.doc for more information.
3845
a933dad1
DL
3846** New modes and packages
3847
79b9f6e0
MB
3848*** The new global minor mode `minibuffer-electric-default-mode'
3849automatically hides the `(default ...)' part of minibuffer prompts when
3850the default is not applicable.
3851
b95b34e5
GM
3852*** Artist is an Emacs lisp package that allows you to draw lines,
3853rectangles and ellipses by using your mouse and/or keyboard. The
3854shapes are made up with the ascii characters |, -, / and \.
3855
3856Features are:
3857
3858- Intersecting: When a `|' intersects with a `-', a `+' is
3859 drawn, like this: | \ /
c607d53d 3860 --+-- X
b95b34e5
GM
3861 | / \
3862
3863- Rubber-banding: When drawing lines you can interactively see the
3864 result while holding the mouse button down and moving the mouse. If
3865 your machine is not fast enough (a 386 is a bit too slow, but a
3866 pentium is well enough), you can turn this feature off. You will
3867 then see 1's and 2's which mark the 1st and 2nd endpoint of the line
3868 you are drawing.
3869
3870- Arrows: After having drawn a (straight) line or a (straight)
3871 poly-line, you can set arrows on the line-ends by typing < or >.
3872
3873- Flood-filling: You can fill any area with a certain character by
3874 flood-filling.
3875
3876- Cut copy and paste: You can cut, copy and paste rectangular
3877 regions. Artist also interfaces with the rect package (this can be
3878 turned off if it causes you any trouble) so anything you cut in
3879 artist can be yanked with C-x r y and vice versa.
c607d53d 3880
b95b34e5
GM
3881- Drawing with keys: Everything you can do with the mouse, you can
3882 also do without the mouse.
3883
3884- Aspect-ratio: You can set the variable artist-aspect-ratio to
3885 reflect the height-width ratio for the font you are using. Squares
3886 and circles are then drawn square/round. Note, that once your
3887 ascii-file is shown with font with a different height-width ratio,
3888 the squares won't be square and the circles won't be round.
3889
3890- Drawing operations: The following drawing operations are implemented:
3891
3892 lines straight-lines
3893 rectangles squares
3894 poly-lines straight poly-lines
3895 ellipses circles
3896 text (see-thru) text (overwrite)
3897 spray-can setting size for spraying
3898 vaporize line vaporize lines
3899 erase characters erase rectangles
3900
3901 Straight lines are lines that go horizontally, vertically or
3902 diagonally. Plain lines go in any direction. The operations in
3903 the right column are accessed by holding down the shift key while
3904 drawing.
3905
3906 It is possible to vaporize (erase) entire lines and connected lines
3907 (rectangles for example) as long as the lines being vaporized are
3908 straight and connected at their endpoints. Vaporizing is inspired
3909 by the drawrect package by Jari Aalto <jari.aalto@poboxes.com>.
3910
3911- Picture mode compatibility: Artist is picture mode compatible (this
3912 can be turned off).
3913
4473cdd9
JW
3914*** The new package Eshell is an operating system command shell
3915implemented entirely in Emacs Lisp. Use `M-x eshell' to invoke it.
3916It functions similarly to bash and zsh, and allows running of Lisp
3917functions and external commands using the same syntax. It supports
3918history lists, aliases, extended globbing, smart scrolling, etc. It
3919will work on any platform Emacs has been ported to. And since most of
3920the basic commands -- ls, rm, mv, cp, ln, du, cat, etc. -- have been
3921rewritten in Lisp, it offers an operating-system independent shell,
3922all within the scope of your Emacs process.
3923
90cbf47e
GM
3924*** The new package timeclock.el is a mode is for keeping track of time
3925intervals. You can use it for whatever purpose you like, but the
3926typical scenario is to keep track of how much time you spend working
3927on certain projects.
3928
baf7eee4
GM
3929*** The new package hi-lock.el provides commands to highlight matches
3930of interactively entered regexps. For example,
abb2db1c 3931
d96d6bb0 3932 M-x highlight-regexp RET clearly RET RET
abb2db1c
GM
3933
3934will highlight all occurrences of `clearly' using a yellow background
3935face. New occurrences of `clearly' will be highlighted as they are
3936typed. `M-x unhighlight-regexp RET' will remove the highlighting.
3937Any existing face can be used for highlighting and a set of
3938appropriate faces is provided. The regexps can be written into the
3939current buffer in a form that will be recognized the next time the
baf7eee4
GM
3940corresponding file is read. There are commands to highlight matches
3941to phrases and to highlight entire lines containing a match.
abb2db1c 3942
d96d6bb0 3943*** The new package zone.el plays games with Emacs' display when
abb2db1c
GM
3944Emacs is idle.
3945
b4c3513f
EZ
3946*** The new package tildify.el allows to add hard spaces or other text
3947fragments in accordance with the current major mode.
3948
31fc5d15
GM
3949*** The new package xml.el provides a simple but generic XML
3950parser. It doesn't parse the DTDs however.
3951
5cb6a58e
SM
3952*** The comment operations are now provided by the newcomment.el
3953package which allows different styles of comment-region and should
3954be more robust while offering the same functionality.
601e0081
SM
3955`comment-region' now doesn't always comment a-line-at-a-time, but only
3956comments the region, breaking the line at point if necessary.
5cb6a58e 3957
578979ee
GM
3958*** The Ebrowse package implements a C++ class browser and tags
3959facilities tailored for use with C++. It is documented in a
3960separate Texinfo file.
3961
424d8b44
DL
3962*** The PCL-CVS package available by either running M-x cvs-examine or
3963by visiting a CVS administrative directory (with a prefix argument)
3964provides an alternative interface to VC-dired for CVS. It comes with
3965`log-view-mode' to view RCS and SCCS logs and `log-edit-mode' used to
8a33023e 3966enter check-in log messages.
dc1178bf 3967
6abca616
EZ
3968*** The new package called `woman' allows to browse Unix man pages
3969without invoking external programs.
3970
3971The command `M-x woman' formats manual pages entirely in Emacs Lisp
3972and then displays them, like `M-x manual-entry' does. Unlike
3973`manual-entry', `woman' does not invoke any external programs, so it
3974is useful on systems such as MS-DOS/MS-Windows where the `man' and
490f2e7b 3975Groff or `troff' commands are not readily available.
6abca616
EZ
3976
3977The command `M-x woman-find-file' asks for the file name of a man
3978page, then formats and displays it like `M-x woman' does.
3979
5e5dff44
GM
3980*** The new command M-x re-builder offers a convenient interface for
3981authoring regular expressions with immediate visual feedback.
3982
3983The buffer from which the command was called becomes the target for
3984the regexp editor popping up in a separate window. Matching text in
3985the target buffer is immediately color marked during the editing.
3986Each sub-expression of the regexp will show up in a different face so
3987even complex regexps can be edited and verified on target data in a
3988single step.
3989
3990On displays not supporting faces the matches instead blink like
3991matching parens to make them stand out. On such a setup you will
3992probably also want to use the sub-expression mode when the regexp
3993contains such to get feedback about their respective limits.
3994
f7136ee8
GM
3995*** glasses-mode is a minor mode that makes
3996unreadableIdentifiersLikeThis readable. It works as glasses, without
3997actually modifying content of a buffer.
3998
bbd9b566
GM
3999*** The package ebnf2ps translates an EBNF to a syntactic chart in
4000PostScript.
4001
4002Currently accepts ad-hoc EBNF, ISO EBNF and Bison/Yacc.
4003
4004The ad-hoc default EBNF syntax has the following elements:
4005
4006 ; comment (until end of line)
4007 A non-terminal
4008 "C" terminal
4009 ?C? special
4010 $A default non-terminal
4011 $"C" default terminal
4012 $?C? default special
4013 A = B. production (A is the header and B the body)
4014 C D sequence (C occurs before D)
4015 C | D alternative (C or D occurs)
4016 A - B exception (A excluding B, B without any non-terminal)
4017 n * A repetition (A repeats n (integer) times)
4018 (C) group (expression C is grouped together)
4019 [C] optional (C may or not occurs)
4020 C+ one or more occurrences of C
4021 {C}+ one or more occurrences of C
4022 {C}* zero or more occurrences of C
4023 {C} zero or more occurrences of C
4024 C / D equivalent to: C {D C}*
4025 {C || D}+ equivalent to: C {D C}*
4026 {C || D}* equivalent to: [C {D C}*]
4027 {C || D} equivalent to: [C {D C}*]
4028
4029Please, see ebnf2ps documentation for EBNF syntax and how to use it.
4030
99453a38
GM
4031*** The package align.el will align columns within a region, using M-x
4032align. Its mode-specific rules, based on regular expressions,
4033determine where the columns should be split. In C and C++, for
4034example, it will align variable names in declaration lists, or the
4035equal signs of assignments.
4036
559cee90
DL
4037*** `paragraph-indent-minor-mode' is a new minor mode supporting
4038paragraphs in the same style as `paragraph-indent-text-mode'.
4039
6448a6b3
GM
4040*** bs.el is a new package for buffer selection similar to
4041list-buffers or electric-buffer-list. Use M-x bs-show to display a
2018166d 4042buffer menu with this package. See the Custom group `bs'.
6448a6b3 4043
6344985d
GM
4044*** find-lisp.el is a package emulating the Unix find command in Lisp.
4045
249652b1
GM
4046*** calculator.el is a small calculator package that is intended to
4047replace desktop calculators such as xcalc and calc.exe. Actually, it
4048is not too small - it has more features than most desktop calculators,
4049and can be customized easily to get many more functions. It should
4050not be confused with "calc" which is a much bigger mathematical tool
4051which answers different needs.
4052
3476b54a
GM
4053*** The minor modes cwarn-mode and global-cwarn-mode highlights
4054suspicious C and C++ constructions. Currently, assignments inside
4055expressions, semicolon following `if', `for' and `while' (except, of
4056course, after a `do .. while' statement), and C++ functions with
4057reference parameters are recognized. The modes require font-lock mode
4058to be enabled.
4059
8964fec7
SM
4060*** smerge-mode.el provides `smerge-mode', a simple minor-mode for files
4061containing diff3-style conflict markers, such as generated by RCS.
4062
a933dad1
DL
4063*** 5x5.el is a simple puzzle game.
4064
16837afc
GM
4065*** hl-line.el provides `hl-line-mode', a minor mode to highlight the
4066current line in the current buffer. It also provides
dfd67a62 4067`global-hl-line-mode' to provide the same behavior in all buffers.
a933dad1
DL
4068
4069*** ansi-color.el translates ANSI terminal escapes into text-properties.
4070
fba448c1 4071Please note: if `ansi-color-for-comint-mode' and
8901d1ac
GM
4072`global-font-lock-mode' are non-nil, loading ansi-color.el will
4073disable font-lock and add `ansi-color-apply' to
4074`comint-preoutput-filter-functions' for all shell-mode buffers. This
4075displays the output of "ls --color=yes" using the correct foreground
4076and background colors.
4077
a933dad1
DL
4078*** delphi.el provides a major mode for editing the Delphi (Object
4079Pascal) language.
4080
4081*** quickurl.el provides a simple method of inserting a URL based on
4082the text at point.
4083
4084*** sql.el provides an interface to SQL data bases.
4085
8d54eb69
DL
4086*** fortune.el uses the fortune program to create mail/news signatures.
4087
732b9cdd
GM
4088*** whitespace.el is a package for warning about and cleaning bogus
4089whitespace in a file.
a933dad1 4090
ebcfda83
GM
4091*** PostScript mode (ps-mode) is a new major mode for editing PostScript
4092files. It offers: interaction with a PostScript interpreter, including
4093(very basic) error handling; fontification, easily customizable for
4094interpreter messages; auto-indentation; insertion of EPSF templates and
4095often used code snippets; viewing of BoundingBox; commenting out /
4096uncommenting regions; conversion of 8bit characters to PostScript octal
4097codes. All functionality is accessible through a menu.
4098
4099*** delim-col helps to prettify columns in a text region or rectangle.
4100
4101Here is an example of columns:
4102
4103horse apple bus
4104dog pineapple car EXTRA
4105porcupine strawberry airplane
4106
4107Doing the following settings:
4108
4109 (setq delimit-columns-str-before "[ ")
4110 (setq delimit-columns-str-after " ]")
4111 (setq delimit-columns-str-separator ", ")
4112 (setq delimit-columns-separator "\t")
4113
4114
4115Selecting the lines above and typing:
4116
4117 M-x delimit-columns-region
4118
4119It results:
4120
4121[ horse , apple , bus , ]
4122[ dog , pineapple , car , EXTRA ]
4123[ porcupine, strawberry, airplane, ]
4124
4125delim-col has the following options:
4126
4127 delimit-columns-str-before Specify a string to be inserted
4128 before all columns.
4129
4130 delimit-columns-str-separator Specify a string to be inserted
4131 between each column.
4132
4133 delimit-columns-str-after Specify a string to be inserted
4134 after all columns.
4135
4136 delimit-columns-separator Specify a regexp which separates
4137 each column.
4138
4139delim-col has the following commands:
4140
4141 delimit-columns-region Prettify all columns in a text region.
4142 delimit-columns-rectangle Prettify all columns in a text rectangle.
4143
2018166d
DL
4144*** Recentf mode maintains a menu for visiting files that were
4145operated on recently. User option recentf-menu-filter specifies a
4146menu filter function to change the menu appearance. For example, the
4147recent file list can be displayed:
f507826c 4148
31fc5d15 4149- organized by major modes, directories or user defined rules.
8a33023e
GM
4150- sorted by file paths, file names, ascending or descending.
4151- showing paths relative to the current default-directory
f507826c 4152
31fc5d15
GM
4153The `recentf-filter-changer' menu filter function allows to
4154dynamically change the menu appearance.
f507826c 4155
8062f458
DL
4156*** elide-head.el provides a mechanism for eliding boilerplate header
4157text.
4158
36e24b82 4159*** footnote.el provides `footnote-mode', a minor mode supporting use
91735437
DL
4160of footnotes. It is intended for use with Message mode, but isn't
4161specific to Message mode.
4162
36e24b82
DL
4163*** diff-mode.el provides `diff-mode', a major mode for
4164viewing/editing context diffs (patches). It is selected for files
4165with extension `.diff', `.diffs', `.patch' and `.rej'.
4166
aaa659ef
DL
4167*** EUDC, the Emacs Unified Directory Client, provides a common user
4168interface to access directory servers using different directory
4169protocols. It has a separate manual.
4170
eee54b0e
DL
4171*** autoconf.el provides a major mode for editing configure.in files
4172for Autoconf, selected automatically.
4173
612839b6
GM
4174*** windmove.el provides moving between windows.
4175
5d94f558 4176*** crm.el provides a facility to read multiple strings from the
612839b6 4177minibuffer with completion.
aaa659ef 4178
399da7e3
DL
4179*** todo-mode.el provides management of TODO lists and integration
4180with the diary features.
4181
6e417ca5
DL
4182*** autoarg.el provides a feature reported from Twenex Emacs whereby
4183numeric keys supply prefix args rather than self inserting.
4184
4a27bdfb
GM
4185*** The function `turn-off-auto-fill' unconditionally turns off Auto
4186Fill mode.
4187
dace60cf
JW
4188*** pcomplete.el is a library that provides programmable completion
4189facilities for Emacs, similar to what zsh and tcsh offer. The main
4190difference is that completion functions are written in Lisp, meaning
4191they can be profiled, debugged, etc.
a18a342d 4192
9540ec3f
EZ
4193*** antlr-mode is a new major mode for editing ANTLR grammar files.
4194It is automatically turned on for files whose names have the extension
4195`.g'.
4196
efeb796b
EZ
4197** Changes in sort.el
4198
4199The function sort-numeric-fields interprets numbers starting with `0'
4200as octal and numbers starting with `0x' or `0X' as hexadecimal. The
4201new user-option sort-numeric-base can be used to specify a default
4202numeric base.
4203
4204** Changes to Ange-ftp
4205
efeb796b
EZ
4206*** Ange-ftp allows you to specify of a port number in remote file
4207names cleanly. It is appended to the host name, separated by a hash
4208sign, e.g. `/foo@bar.org#666:mumble'. (This syntax comes from EFS.)
4209
4210*** If the new user-option `ange-ftp-try-passive-mode' is set, passive
4211ftp mode will be used if the ftp client supports that.
4212
4213*** Ange-ftp handles the output of the w32-style clients which
4214output ^M at the end of lines.
4215
efeb796b
EZ
4216** The recommended way of using Iswitchb is via the new global minor
4217mode `iswitchb-mode'.
4218
efeb796b
EZ
4219** Just loading the msb package doesn't switch on Msb mode anymore.
4220If you have `(require 'msb)' in your .emacs, please replace it with
4221`(msb-mode 1)'.
4222
4223** Flyspell mode has various new options. See the `flyspell' Custom
4224group.
4225
4226** The user option `backward-delete-char-untabify-method' controls the
4227behavior of `backward-delete-char-untabify'. The following values
4228are recognized:
4229
4230`untabify' -- turn a tab to many spaces, then delete one space;
4231`hungry' -- delete all whitespace, both tabs and spaces;
4232`all' -- delete all whitespace, including tabs, spaces and newlines;
4233nil -- just delete one character.
4234
4235Default value is `untabify'.
4236
4237[This change was made in Emacs 20.3 but not mentioned then.]
4238
4239** In Cperl mode `cperl-invalid-face' should now be a normal face
4240symbol, not double-quoted.
4241
4242** Some packages are declared obsolete, to be removed in a future
4243version. They are: auto-show, c-mode, hilit19, hscroll, ooutline,
4244profile, rnews, rnewspost, and sc. Their implementations have been
4245moved to lisp/obsolete.
4246
4247** auto-compression mode is no longer enabled just by loading jka-compr.el.
4248To control it, set `auto-compression-mode' via Custom or use the
4249`auto-compression-mode' command.
4250
4251** `browse-url-gnome-moz' is a new option for
4252`browse-url-browser-function', invoking Mozilla in GNOME, and
4253`browse-url-kde' can be chosen for invoking the KDE browser.
4254
4255** The user-option `browse-url-new-window-p' has been renamed to
4256`browse-url-new-window-flag'.
4257
efeb796b
EZ
4258** The functions `keep-lines', `flush-lines' and `how-many' now
4259operate on the active region in Transient Mark mode.
4260
efeb796b
EZ
4261** `gnus-user-agent' is a new possibility for `mail-user-agent'. It
4262is like `message-user-agent', but with all the Gnus paraphernalia.
4263
4264** The Strokes package has been updated. If your Emacs has XPM
4265support, you can use it for pictographic editing. In Strokes mode,
4266use C-mouse-2 to compose a complex stoke and insert it into the
4267buffer. You can encode or decode a strokes buffer with new commands
4268M-x strokes-encode-buffer and M-x strokes-decode-buffer. There is a
4269new command M-x strokes-list-strokes.
4270
efeb796b
EZ
4271** Hexl contains a new command `hexl-insert-hex-string' which inserts
4272a string of hexadecimal numbers read from the mini-buffer.
4273
4274** Hexl mode allows to insert non-ASCII characters.
4275
4276The non-ASCII characters are encoded using the same encoding as the
4277file you are visiting in Hexl mode.
4278
4279** Shell script mode changes.
4280
4281Shell script mode (sh-script) can now indent scripts for shells
4282derived from sh and rc. The indentation style is customizable, and
4283sh-script can attempt to "learn" the current buffer's style.
4284
4285** Etags changes.
4286
4287*** In DOS, etags looks for file.cgz if it cannot find file.c.
4288
4289*** New option --ignore-case-regex is an alternative to --regex. It is now
4290possible to bind a regexp to a language, by prepending the regexp with
4291{lang}, where lang is one of the languages that `etags --help' prints out.
4292This feature is useful especially for regex files, where each line contains
4293a regular expression. The manual contains details.
4294
4295*** In C and derived languages, etags creates tags for function
4296declarations when given the --declarations option.
4297
4298*** In C++, tags are created for "operator". The tags have the form
4299"operator+", without spaces between the keyword and the operator.
4300
4301*** You shouldn't generally need any more the -C or -c++ option: etags
4302automatically switches to C++ parsing when it meets the `class' or
4303`template' keywords.
4304
4305*** Etags now is able to delve at arbitrary deeps into nested structures in
4306C-like languages. Previously, it was limited to one or two brace levels.
4307
4308*** New language Ada: tags are functions, procedures, packages, tasks, and
4309types.
4310
4311*** In Fortran, `procedure' is not tagged.
4312
4313*** In Java, tags are created for "interface".
4314
4315*** In Lisp, "(defstruct (foo", "(defun (operator" and similar constructs
4316are now tagged.
4317
4318*** In makefiles, tags the targets.
4319
4320*** In Perl, the --globals option tags global variables. my and local
4321variables are tagged.
4322
4323*** New language Python: def and class at the beginning of a line are tags.
4324
4325*** .ss files are Scheme files, .pdb is Postscript with C syntax, .psw is
4326for PSWrap.
4327
efeb796b
EZ
4328** Changes in etags.el
4329
4330*** The new user-option tags-case-fold-search can be used to make
4331tags operations case-sensitive or case-insensitive. The default
4332is to use the same setting as case-fold-search.
4333
4334*** You can display additional output with M-x tags-apropos by setting
4335the new variable tags-apropos-additional-actions.
4336
4337If non-nil, the variable's value should be a list of triples (TITLE
4338FUNCTION TO-SEARCH). For each triple, M-x tags-apropos processes
4339TO-SEARCH and lists tags from it. TO-SEARCH should be an alist,
4340obarray, or symbol. If it is a symbol, the symbol's value is used.
4341
4342TITLE is a string to use to label the list of tags from TO-SEARCH.
4343
4344FUNCTION is a function to call when an entry is selected in the Tags
4345List buffer. It is called with one argument, the selected symbol.
4346
4347A useful example value for this variable might be something like:
4348
4349 '(("Emacs Lisp" Info-goto-emacs-command-node obarray)
4350 ("Common Lisp" common-lisp-hyperspec common-lisp-hyperspec-obarray)
4351 ("SCWM" scwm-documentation scwm-obarray))
4352
4353*** The face tags-tag-face can be used to customize the appearance
4354of tags in the output of M-x tags-apropos.
4355
4356*** Setting tags-apropos-verbose to a non-nil value displays the
4357names of tags files in the *Tags List* buffer.
4358
4359*** You can now search for tags that are part of the filename itself.
4360If you have tagged the files topfile.c subdir/subfile.c
4361/tmp/tempfile.c, you can now search for tags "topfile.c", "subfile.c",
4362"dir/sub", "tempfile", "tempfile.c". If the tag matches the file name,
4363point will go to the beginning of the file.
4364
4365*** Compressed files are now transparently supported if
4366auto-compression-mode is active. You can tag (with Etags) and search
4367(with find-tag) both compressed and uncompressed files.
4368
4369*** Tags commands like M-x tags-search no longer change point
4370in buffers where no match is found. In buffers where a match is
4371found, the original value of point is pushed on the marker ring.
4372
efeb796b
EZ
4373** Fortran mode has a new command `fortran-strip-sequence-nos' to
4374remove text past column 72. The syntax class of `\' in Fortran is now
4375appropriate for C-style escape sequences in strings.
4376
4377** SGML mode's default `sgml-validate-command' is now `nsgmls'.
4378
efeb796b
EZ
4379** A new command `view-emacs-problems' (C-h P) displays the PROBLEMS file.
4380
efeb796b
EZ
4381** The Dabbrev package has a new user-option `dabbrev-ignored-regexps'
4382containing a list of regular expressions. Buffers matching a regular
4383expression from that list, are not checked.
4384
4385** Emacs can now figure out modification times of remote files.
4386When you do C-x C-f /user@host:/path/file RET and edit the file,
4387and someone else modifies the file, you will be prompted to revert
4388the buffer, just like for the local files.
4389
4390** The buffer menu (C-x C-b) no longer lists the *Buffer List* buffer.
4391
efeb796b
EZ
4392** When invoked with a prefix argument, the command `list-abbrevs' now
4393displays local abbrevs, only.
4394
965bc065
DL
4395** Refill minor mode provides preliminary support for keeping
4396paragraphs filled as you modify them.
4397
4e8864c7
GM
4398** The variable `double-click-fuzz' specifies how much the mouse
4399may be moved between clicks that are recognized as a pair. Its value
4400is measured in pixels.
4401
965bc065
DL
4402** The new global minor mode `auto-image-file-mode' allows image files
4403to be visited as images.
4404
68d0efa6
GM
4405** Two new user-options `grep-command' and `grep-find-command'
4406were added to compile.el.
4407
a933dad1
DL
4408** Withdrawn packages
4409
4410*** mldrag.el has been removed. mouse.el provides the same
4411functionality with aliases for the mldrag functions.
25a81338 4412
3261c1d8
DL
4413*** eval-reg.el has been obsoleted by changes to edebug.el and removed.
4414
4415*** ph.el has been obsoleted by EUDC and removed.
ce75fd23 4416
05197f40 4417\f
01242779
DL
4418* Incompatible Lisp changes
4419
4420There are a few Lisp changes which are not backwards-compatible and
4421may require changes to existing code. Here is a list for reference.
3b6936cc 4422See the sections below for details.
01242779 4423
89d57763 4424** Since `format' preserves text properties, the idiom
9b2a085d 4425`(format "%s" foo)' no longer works to copy and remove properties.
bd1190d7
RS
4426Use `copy-sequence' to copy the string, then use `set-text-properties'
4427to remove the properties of the copy.
01242779
DL
4428
4429** Since the `keymap' text property now has significance, some code
4430which uses both `local-map' and `keymap' properties (for portability)
4431may, for instance, give rise to duplicate menus when the keymaps from
4432these properties are active.
4433
4dd4cc14 4434** The change in the treatment of non-ASCII characters in search
01242779 4435ranges may affect some code.
1c14ba45
DL
4436
4437** A non-nil value for the LOCAL arg of add-hook makes the hook
4438buffer-local even if `make-local-hook' hasn't been called, which might
4439make a difference to some code.
4440
4dd4cc14
DL
4441** The new treatment of the minibuffer prompt might affect code which
4442operates on the minibuffer.
4443
7c94ccf6
EZ
4444** The new character sets `eight-bit-control' and `eight-bit-graphic'
4445cause `no-conversion' and `emacs-mule-unix' coding systems to produce
4446different results when reading files with non-ASCII characters
4447(previously, both coding systems would produce the same results).
4448Specifically, `no-conversion' interprets each 8-bit byte as a separate
4449character. This makes `no-conversion' inappropriate for reading
4450multibyte text, e.g. buffers written to disk in their internal MULE
4451encoding (auto-saving does that, for example). If a Lisp program
4452reads such files with `no-conversion', each byte of the multibyte
4453sequence, including the MULE leading codes such as \201, is treated as
4454a separate character, which prevents them from being interpreted in
4455the buffer as multibyte characters.
4456
4457Therefore, Lisp programs that read files which contain the internal
4458MULE encoding should use `emacs-mule-unix'. `no-conversion' is only
4459appropriate for reading truly binary files.
4460
7a39158f 4461** Code that relies on the obsolete `before-change-function' and
3280fbe8
EZ
4462`after-change-function' to detect buffer changes will now fail. Use
4463`before-change-functions' and `after-change-functions' instead.
7a39158f
DL
4464
4465** Code that uses `concat' with integer args now gets an error, as
539e74f9
EZ
4466long promised. So does any code that uses derivatives of `concat',
4467such as `mapconcat'.
7a39158f 4468
55bb62fd
EZ
4469** The function base64-decode-string now always returns a unibyte
4470string.
4471
f34eb373
DL
4472** Not a Lisp incompatibility as such but, with the introduction of
4473extra private charsets, there is now only one slot free for a new
4474dimension-2 private charset. User code which tries to add more than
4475one extra will fail unless you rebuild Emacs with some standard
4476charset(s) removed; that is probably inadvisable because it changes
4477the emacs-mule encoding. Also, files stored in the emacs-mule
028d739a
DL
4478encoding using Emacs 20 with additional private charsets defined will
4479probably not be read correctly by Emacs 21.
3478eafc 4480
98384b7b
EZ
4481** The variable `directory-sep-char' is slated for removal.
4482Not really a change (yet), but a projected one that you should be
4483aware of: The variable `directory-sep-char' is deprecated, and should
4484not be used. It was always ignored on GNU/Linux and Unix systems and
4485on MS-DOS, but the MS-Windows port tried to support it by adapting the
4486behavior of certain primitives to the value of this variable. It
4487turned out that such support cannot be reliable, so it was decided to
4488remove this variable in the near future. Lisp programs are well
4489advised not to set it to anything but '/', because any different value
4490will not have any effect when support for this variable is removed.
7cd5f1e7 4491
05197f40 4492\f
ce75fd23
GM
4493* Lisp changes made after edition 2.6 of the Emacs Lisp Manual,
4494(Display-related features are described in a page of their own below.)
4495
e3b22517
GM
4496** Function assq-delete-all replaces function assoc-delete-all.
4497
1ff74324 4498** The new function animate-string, from lisp/play/animate.el
9e5a7f2a
GM
4499allows the animated display of strings.
4500
ed31fabf
GM
4501** The new function `interactive-form' can be used to obtain the
4502interactive form of a function.
4503
2018166d
DL
4504** The keyword :set-after in defcustom allows to specify dependencies
4505between custom options. Example:
4506
4507 (defcustom default-input-method nil
4508 "*Default input method for multilingual text (a string).
4509 This is the input method activated automatically by the command
4510 `toggle-input-method' (\\[toggle-input-method])."
4511 :group 'mule
4512 :type '(choice (const nil) string)
4513 :set-after '(current-language-environment))
4514
4515This specifies that default-input-method should be set after
4516current-language-environment even if default-input-method appears
4517first in a custom-set-variables statement.
4518
f3780fe4 4519** The new hook `kbd-macro-termination-hook' is run at the end of
a758f97d
GM
4520function execute-kbd-macro. Functions on this hook are called with no
4521args. The hook is run independent of how the macro was terminated
4522(signal or normal termination).
4523
023045d6
DL
4524** Functions `butlast' and `nbutlast' for removing trailing elements
4525from a list are now available without requiring the CL package.
4526
eb1b0c74
GM
4527** The new user-option `even-window-heights' can be set to nil
4528to prevent `display-buffer' from evening out window heights.
4529
52d89894
GM
4530** The user-option `face-font-registry-alternatives' specifies
4531alternative font registry names to try when looking for a font.
4532
693c4692 4533** Function `md5' calculates the MD5 "message digest"/"checksum".
4301cf66 4534
6bc92b2e
GM
4535** Function `delete-frame' runs `delete-frame-hook' before actually
4536deleting the frame. The hook is called with one arg, the frame
4537being deleted.
4538
39e776cd
SM
4539** `add-hook' now makes the hook local if called with a non-nil LOCAL arg.
4540
1396138a 4541** The treatment of non-ASCII characters in search ranges has changed.
a18a342d
DL
4542If a range in a regular expression or the arg of
4543skip-chars-forward/backward starts with a unibyte character C and ends
4544with a multibyte character C2, the range is divided into two: one is
4545C..?\377, the other is C1..C2, where C1 is the first character of C2's
4546charset.
4547
4fbdfdcf
MB
4548** The new function `display-message-or-buffer' displays a message in
4549the echo area or pops up a buffer, depending on the length of the
4550message.
4551
6a0b0752
MB
4552** The new macro `with-auto-compression-mode' allows evaluating an
4553expression with auto-compression-mode enabled.
4554
47e351a3
GM
4555** In image specifications, `:heuristic-mask' has been replaced
4556with the more general `:mask' property.
4557
f864120f 4558** Image specifications accept more `:conversion's.
ba9eeda1 4559
a2bd77b8
GM
4560** A `?' can be used in a symbol name without escaping it with a
4561backslash.
4562
424d8b44
DL
4563** Reading from the mini-buffer now reads from standard input if Emacs
4564is running in batch mode. For example,
4565
4566 (message "%s" (read t))
4567
4568will read a Lisp expression from standard input and print the result
4569to standard output.
4570
424d8b44
DL
4571** The argument of `down-list', `backward-up-list', `up-list',
4572`kill-sexp', `backward-kill-sexp' and `mark-sexp' is now optional.
4573
ead53494
GM
4574** If `display-buffer-reuse-frames' is set, function `display-buffer'
4575will raise frames displaying a buffer, instead of creating a new
4576frame or window.
4577
27848c01
GM
4578** Two new functions for removing elements from lists/sequences
4579were added
4580
4581- Function: remove ELT SEQ
4582
8a33023e 4583Return a copy of SEQ with all occurrences of ELT removed. SEQ must be
27848c01
GM
4584a list, vector, or string. The comparison is done with `equal'.
4585
4586- Function: remq ELT LIST
4587
8a33023e 4588Return a copy of LIST with all occurrences of ELT removed. The
27848c01
GM
4589comparison is done with `eq'.
4590
4591** The function `delete' now also works with vectors and strings.
3ab82477 4592
b548072f 4593** The meaning of the `:weakness WEAK' argument of make-hash-table
c8682017 4594has been changed: WEAK can now have new values `key-or-value' and
ee39b988 4595`key-and-value', in addition the `nil', `key', `value', and `t'.
b548072f 4596
07b14857
KH
4597** Function `aset' stores any multibyte character in any string
4598without signaling "Attempt to change char length of a string". It may
4599convert a unibyte string to multibyte if necessary.
4600
9662da0b
GM
4601** The value of the `help-echo' text property is called as a function
4602or evaluated, if it is not a string already, to obtain a help string.
d5aa31d8 4603
7fce7efb
DL
4604** Function `make-obsolete' now has an optional arg to say when the
4605function was declared obsolete.
4606
5d94f558 4607** Function `plist-member' is renamed from `widget-plist-member' (which is
7fce7efb
DL
4608retained as an alias).
4609
f98d3086
SM
4610** Easy-menu's :filter now works as in XEmacs.
4611It takes the unconverted (i.e. XEmacs) form of the menu and the result
4612is automatically converted to Emacs' form.
4613
87efd256
GM
4614** The new function `window-list' has been defined
4615
39b39373
GM
4616- Function: window-list &optional FRAME WINDOW MINIBUF
4617
4618Return a list of windows on FRAME, starting with WINDOW. FRAME nil or
4619omitted means use the selected frame. WINDOW nil or omitted means use
4620the selected window. MINIBUF t means include the minibuffer window,
4621even if it isn't active. MINIBUF nil or omitted means include the
4622minibuffer window only if it's active. MINIBUF neither nil nor t
4623means never include the minibuffer window.
87efd256 4624
a56ebb90 4625** There's a new function `get-window-with-predicate' defined as follows
67c9a1d2 4626
a56ebb90 4627- Function: get-window-with-predicate PREDICATE &optional MINIBUF ALL-FRAMES DEFAULT
67c9a1d2
GM
4628
4629Return a window satisfying PREDICATE.
4630
4631This function cycles through all visible windows using `walk-windows',
4632calling PREDICATE on each one. PREDICATE is called with a window as
4633argument. The first window for which PREDICATE returns a non-nil
4634value is returned. If no window satisfies PREDICATE, DEFAULT is
4635returned.
4636
4637Optional second arg MINIBUF t means count the minibuffer window even
4638if not active. MINIBUF nil or omitted means count the minibuffer iff
4639it is active. MINIBUF neither t nor nil means not to count the
4640minibuffer even if it is active.
4641
4642Several frames may share a single minibuffer; if the minibuffer
4643counts, all windows on all frames that share that minibuffer count
4644too. Therefore, if you are using a separate minibuffer frame
4645and the minibuffer is active and MINIBUF says it counts,
4646`walk-windows' includes the windows in the frame from which you
4647entered the minibuffer, as well as the minibuffer window.
4648
4649ALL-FRAMES is the optional third argument.
4650ALL-FRAMES nil or omitted means cycle within the frames as specified above.
4651ALL-FRAMES = `visible' means include windows on all visible frames.
4652ALL-FRAMES = 0 means include windows on all visible and iconified frames.
4653ALL-FRAMES = t means include windows on all frames including invisible frames.
4654If ALL-FRAMES is a frame, it means include windows on that frame.
4655Anything else means restrict to the selected frame.
4656
ead53494
GM
4657** The function `single-key-description' now encloses function key and
4658event names in angle brackets. When called with a second optional
4659argument non-nil, angle brackets won't be printed.
dce6b995 4660
25fa6deb
GM
4661** If the variable `message-truncate-lines' is bound to t around a
4662call to `message', the echo area will not be resized to display that
088831a6
GM
4663message; it will be truncated instead, as it was done in 20.x.
4664Default value is nil.
25fa6deb 4665
5d94f558 4666** The user option `line-number-display-limit' can now be set to nil,
1681ead6
GM
4667meaning no limit.
4668
5b034b7f
EZ
4669** The new user option `line-number-display-limit-width' controls
4670the maximum width of lines in a buffer for which Emacs displays line
4671numbers in the mode line. The default is 200.
4672
5d94f558 4673** `select-safe-coding-system' now also checks the most preferred
c08398de
DL
4674coding-system if buffer-file-coding-system is `undecided' and
4675DEFAULT-CODING-SYSTEM is not specified,
4676
9b2999d0
DL
4677** The function `subr-arity' provides information about the argument
4678list of a primitive.
de370c4c 4679
c286608e
SM
4680** `where-is-internal' now also accepts a list of keymaps.
4681
80c05bd3
DL
4682** The text property `keymap' specifies a key map which overrides the
4683buffer's local map and the map specified by the `local-map' property.
4684This is probably what most current uses of `local-map' want, rather
4685than replacing the local map.
4686
14fd0da3
DL
4687** The obsolete variables `before-change-function' and
4688`after-change-function' are no longer acted upon and have been
4689removed. Use `before-change-functions' and `after-change-functions'
4690instead.
45f485a6
GM
4691
4692** The function `apropos-mode' runs the hook `apropos-mode-hook'.
4693
c286608e
SM
4694** `concat' no longer accepts individual integer arguments,
4695as promised long ago.
f0298744 4696
5d94f558 4697** The new function `float-time' returns the current time as a float.
ac57988b
GM
4698
4699** The new variable auto-coding-regexp-alist specifies coding systems
4700for reading specific files, analogous to auto-coding-alist, but
4701patterns are checked against file contents instead of file names.
4702
05197f40 4703\f
a933dad1
DL
4704* Lisp changes in Emacs 21.1 (see following page for display-related features)
4705
6260538e
GM
4706** The new package rx.el provides an alternative sexp notation for
4707regular expressions.
4708
4709- Function: rx-to-string SEXP
4710
4711Translate SEXP into a regular expression in string notation.
4712
4713- Macro: rx SEXP
4714
4715Translate SEXP into a regular expression in string notation.
4716
4717The following are valid subforms of regular expressions in sexp
4718notation.
4719
4720STRING
4721 matches string STRING literally.
4722
4723CHAR
4724 matches character CHAR literally.
4725
4726`not-newline'
4727 matches any character except a newline.
4728 .
4729`anything'
4730 matches any character
4731
4732`(any SET)'
4733 matches any character in SET. SET may be a character or string.
4734 Ranges of characters can be specified as `A-Z' in strings.
4735
79014980 4736'(in SET)'
6260538e
GM
4737 like `any'.
4738
4739`(not (any SET))'
4740 matches any character not in SET
4741
4742`line-start'
4743 matches the empty string, but only at the beginning of a line
4744 in the text being matched
4745
4746`line-end'
4747 is similar to `line-start' but matches only at the end of a line
4748
4749`string-start'
4750 matches the empty string, but only at the beginning of the
4751 string being matched against.
4752
4753`string-end'
4754 matches the empty string, but only at the end of the
4755 string being matched against.
4756
4757`buffer-start'
4758 matches the empty string, but only at the beginning of the
4759 buffer being matched against.
4760
4761`buffer-end'
4762 matches the empty string, but only at the end of the
4763 buffer being matched against.
4764
4765`point'
4766 matches the empty string, but only at point.
4767
4768`word-start'
4769 matches the empty string, but only at the beginning or end of a
4770 word.
4771
4772`word-end'
4773 matches the empty string, but only at the end of a word.
4774
4775`word-boundary'
4776 matches the empty string, but only at the beginning or end of a
4777 word.
4778
4779`(not word-boundary)'
4780 matches the empty string, but not at the beginning or end of a
4781 word.
4782
4783`digit'
4784 matches 0 through 9.
4785
4786`control'
4787 matches ASCII control characters.
4788
4789`hex-digit'
4790 matches 0 through 9, a through f and A through F.
4791
4792`blank'
4793 matches space and tab only.
4794
4795`graphic'
4796 matches graphic characters--everything except ASCII control chars,
4797 space, and DEL.
4798
4799`printing'
4800 matches printing characters--everything except ASCII control chars
4801 and DEL.
4802
4803`alphanumeric'
4804 matches letters and digits. (But at present, for multibyte characters,
4805 it matches anything that has word syntax.)
4806
4807`letter'
4808 matches letters. (But at present, for multibyte characters,
4809 it matches anything that has word syntax.)
4810
4811`ascii'
4812 matches ASCII (unibyte) characters.
4813
4814`nonascii'
4815 matches non-ASCII (multibyte) characters.
4816
4817`lower'
4818 matches anything lower-case.
4819
4820`upper'
4821 matches anything upper-case.
4822
4823`punctuation'
4824 matches punctuation. (But at present, for multibyte characters,
4825 it matches anything that has non-word syntax.)
4826
4827`space'
4828 matches anything that has whitespace syntax.
4829
4830`word'
4831 matches anything that has word syntax.
4832
4833`(syntax SYNTAX)'
4834 matches a character with syntax SYNTAX. SYNTAX must be one
4835 of the following symbols.
4836
4837 `whitespace' (\\s- in string notation)
4838 `punctuation' (\\s.)
4839 `word' (\\sw)
4840 `symbol' (\\s_)
4841 `open-parenthesis' (\\s()
4842 `close-parenthesis' (\\s))
4843 `expression-prefix' (\\s')
4844 `string-quote' (\\s\")
4845 `paired-delimiter' (\\s$)
4846 `escape' (\\s\\)
4847 `character-quote' (\\s/)
4848 `comment-start' (\\s<)
4849 `comment-end' (\\s>)
4850
4851`(not (syntax SYNTAX))'
4852 matches a character that has not syntax SYNTAX.
4853
4854`(category CATEGORY)'
4855 matches a character with category CATEGORY. CATEGORY must be
4856 either a character to use for C, or one of the following symbols.
4857
4858 `consonant' (\\c0 in string notation)
4859 `base-vowel' (\\c1)
4860 `upper-diacritical-mark' (\\c2)
4861 `lower-diacritical-mark' (\\c3)
4862 `tone-mark' (\\c4)
4863 `symbol' (\\c5)
4864 `digit' (\\c6)
4865 `vowel-modifying-diacritical-mark' (\\c7)
4866 `vowel-sign' (\\c8)
4867 `semivowel-lower' (\\c9)
4868 `not-at-end-of-line' (\\c<)
4869 `not-at-beginning-of-line' (\\c>)
4870 `alpha-numeric-two-byte' (\\cA)
4871 `chinse-two-byte' (\\cC)
4872 `greek-two-byte' (\\cG)
4873 `japanese-hiragana-two-byte' (\\cH)
175573ac 4874 `indian-two-byte' (\\cI)
6260538e
GM
4875 `japanese-katakana-two-byte' (\\cK)
4876 `korean-hangul-two-byte' (\\cN)
4877 `cyrillic-two-byte' (\\cY)
4878 `ascii' (\\ca)
4879 `arabic' (\\cb)
4880 `chinese' (\\cc)
4881 `ethiopic' (\\ce)
4882 `greek' (\\cg)
4883 `korean' (\\ch)
4884 `indian' (\\ci)
4885 `japanese' (\\cj)
4886 `japanese-katakana' (\\ck)
4887 `latin' (\\cl)
4888 `lao' (\\co)
4889 `tibetan' (\\cq)
4890 `japanese-roman' (\\cr)
4891 `thai' (\\ct)
4892 `vietnamese' (\\cv)
4893 `hebrew' (\\cw)
4894 `cyrillic' (\\cy)
4895 `can-break' (\\c|)
4896
4897`(not (category CATEGORY))'
4898 matches a character that has not category CATEGORY.
4899
4900`(and SEXP1 SEXP2 ...)'
4901 matches what SEXP1 matches, followed by what SEXP2 matches, etc.
4902
4903`(submatch SEXP1 SEXP2 ...)'
4904 like `and', but makes the match accessible with `match-end',
4905 `match-beginning', and `match-string'.
4906
4907`(group SEXP1 SEXP2 ...)'
4908 another name for `submatch'.
4909
4910`(or SEXP1 SEXP2 ...)'
4911 matches anything that matches SEXP1 or SEXP2, etc. If all
4912 args are strings, use `regexp-opt' to optimize the resulting
4913 regular expression.
4914
4915`(minimal-match SEXP)'
4916 produce a non-greedy regexp for SEXP. Normally, regexps matching
e0e7f2d5 4917 zero or more occurrences of something are \"greedy\" in that they
6260538e
GM
4918 match as much as they can, as long as the overall regexp can
4919 still match. A non-greedy regexp matches as little as possible.
4920
4921`(maximal-match SEXP)'
c3518b63 4922 produce a greedy regexp for SEXP. This is the default.
6260538e
GM
4923
4924`(zero-or-more SEXP)'
4925 matches zero or more occurrences of what SEXP matches.
4926
4927`(0+ SEXP)'
4928 like `zero-or-more'.
4929
4930`(* SEXP)'
4931 like `zero-or-more', but always produces a greedy regexp.
4932
4933`(*? SEXP)'
4934 like `zero-or-more', but always produces a non-greedy regexp.
4935
4936`(one-or-more SEXP)'
4937 matches one or more occurrences of A.
79014980 4938
6260538e
GM
4939`(1+ SEXP)'
4940 like `one-or-more'.
4941
4942`(+ SEXP)'
4943 like `one-or-more', but always produces a greedy regexp.
4944
4945`(+? SEXP)'
4946 like `one-or-more', but always produces a non-greedy regexp.
4947
4948`(zero-or-one SEXP)'
4949 matches zero or one occurrences of A.
79014980 4950
6260538e
GM
4951`(optional SEXP)'
4952 like `zero-or-one'.
4953
4954`(? SEXP)'
4955 like `zero-or-one', but always produces a greedy regexp.
4956
4957`(?? SEXP)'
4958 like `zero-or-one', but always produces a non-greedy regexp.
4959
4960`(repeat N SEXP)'
4961 matches N occurrences of what SEXP matches.
4962
4963`(repeat N M SEXP)'
4964 matches N to M occurrences of what SEXP matches.
4965
4966`(eval FORM)'
c3518b63 4967 evaluate FORM and insert result. If result is a string,
6260538e
GM
4968 `regexp-quote' it.
4969
4970`(regexp REGEXP)'
4971 include REGEXP in string notation in the result.
4972
697617d9
GM
4973*** The features `md5' and `overlay' are now provided by default.
4974
85c75536
MB
4975*** The special form `save-restriction' now works correctly even if the
4976buffer is widened inside the save-restriction and changes made outside
4977the original restriction. Previously, doing this would cause the saved
4978restriction to be restored incorrectly.
4979
0b8a3a6d
DL
4980*** The functions `find-charset-region' and `find-charset-string' include
4981`eight-bit-control' and/or `eight-bit-graphic' in the returned list
028d739a 4982when they find 8-bit characters. Previously, they included `ascii' in a
0b8a3a6d
DL
4983multibyte buffer and `unknown' in a unibyte buffer.
4984
fb2c6a6b 4985*** The functions `set-buffer-multibyte', `string-as-multibyte' and
58008c36
EZ
4986`string-as-unibyte' change the byte sequence of a buffer or a string
4987if it contains a character from the `eight-bit-control' character set.
0b8a3a6d
DL
4988
4989*** The handling of multibyte sequences in a multibyte buffer is
4990changed. Previously, a byte sequence matching the pattern
4991[\200-\237][\240-\377]+ was interpreted as a single character
4992regardless of the length of the trailing bytes [\240-\377]+. Thus, if
4993the sequence was longer than what the leading byte indicated, the
4994extra trailing bytes were ignored by Lisp functions. Now such extra
4995bytes are independent 8-bit characters belonging to the charset
4996eight-bit-graphic.
4997
4998** Fontsets are now implemented using char-tables.
4999
9b2a085d 5000A fontset can now be specified for each independent character, for
0b8a3a6d
DL
5001a group of characters or for a character set rather than just for a
5002character set as previously.
5003
5004*** The arguments of the function `set-fontset-font' are changed.
5005They are NAME, CHARACTER, FONTNAME, and optional FRAME. The function
5006modifies fontset NAME to use FONTNAME for CHARACTER.
5007
5008CHARACTER may be a cons (FROM . TO), where FROM and TO are non-generic
5009characters. In that case FONTNAME is used for all characters in the
5010range FROM and TO (inclusive). CHARACTER may be a charset. In that
5011case FONTNAME is used for all character in the charset.
5012
5013FONTNAME may be a cons (FAMILY . REGISTRY), where FAMILY is the family
9b2a085d 5014name of a font and REGISTRY is a registry name of a font.
0b8a3a6d
DL
5015
5016*** Variable x-charset-registry has been deleted. The default charset
5017registries of character sets are set in the default fontset
5018"fontset-default".
5019
5020*** The function `create-fontset-from-fontset-spec' ignores the second
5021argument STYLE-VARIANT. It never creates style-variant fontsets.
5022
5023** The method of composing characters is changed. Now character
5024composition is done by a special text property `composition' in
5025buffers and strings.
5026
5027*** Charset composition is deleted. Emacs never creates a `composite
5028character' which is an independent character with a unique character
5029code. Thus the following functions handling `composite characters'
5030have been deleted: composite-char-component,
5031composite-char-component-count, composite-char-composition-rule,
5032composite-char-composition-rule and decompose-composite-char delete.
5033The variables leading-code-composition and min-composite-char have
5034also been deleted.
5035
5036*** Three more glyph reference points are added. They can be used to
5037specify a composition rule. See the documentation of the variable
5038`reference-point-alist' for more detail.
5039
5040*** The function `compose-region' takes new arguments COMPONENTS and
5041MODIFICATION-FUNC. With COMPONENTS, you can specify not only a
5042composition rule but also characters to be composed. Such characters
5043may differ between buffer and string text.
5044
5045*** The function `compose-string' takes new arguments START, END,
5046COMPONENTS, and MODIFICATION-FUNC.
5047
5048*** The function `compose-string' puts text property `composition'
5049directly on the argument STRING instead of returning a new string.
5050Likewise, the function `decompose-string' just removes text property
5051`composition' from STRING.
5052
5053*** The new function `find-composition' returns information about
5054a composition at a specified position in a buffer or a string.
5055
5056*** The function `decompose-composite-char' is now labeled as
5057obsolete.
5058
889be0a1
DL
5059** The new coding system `mac-roman' is primarily intended for use on
5060the Macintosh but may be used generally for Macintosh-encoded text.
5061
965bc065 5062** The new character sets `mule-unicode-0100-24ff',
1e36ff68
DL
5063`mule-unicode-2500-33ff', and `mule-unicode-e000-ffff' have been
5064introduced for Unicode characters in the range U+0100..U+24FF,
5065U+2500..U+33FF, U+E000..U+FFFF respectively.
0b8a3a6d 5066
3d7a4ec8
EZ
5067Note that the character sets are not yet unified in Emacs, so
5068characters which belong to charsets such as Latin-2, Greek, Hebrew,
5069etc. and the same characters in the `mule-unicode-*' charsets are
5070different characters, as far as Emacs is concerned. For example, text
5071which includes Unicode characters from the Latin-2 locale cannot be
5072encoded by Emacs with ISO 8859-2 coding system.
5073
5074** The new coding system `mule-utf-8' has been added.
5075It provides limited support for decoding/encoding UTF-8 text. For
5076details, please see the documentation string of this coding system.
23cfab61 5077
0b8a3a6d 5078** The new character sets `japanese-jisx0213-1' and
1e36ff68
DL
5079`japanese-jisx0213-2' have been introduced for the new Japanese
5080standard JIS X 0213 Plane 1 and Plane 2.
5081
5082** The new character sets `latin-iso8859-14' and `latin-iso8859-15'
5083have been introduced.
0b8a3a6d 5084
0b8a3a6d 5085** The new character sets `eight-bit-control' and `eight-bit-graphic'
1e36ff68 5086have been introduced for 8-bit characters in the ranges 0x80..0x9F and
028d739a
DL
50870xA0..0xFF respectively. Note that the multibyte representation of
5088eight-bit-control is never exposed; this leads to an exception in the
5089emacs-mule coding system, which encodes everything else to the
2018166d
DL
5090buffer/string internal representation. Note that to search for
5091eight-bit-graphic characters in a multibyte buffer, the search string
5092must be multibyte, otherwise such characters will be converted to
5093their multibyte equivalent.
0b8a3a6d 5094
f0124b4a
DL
5095** If the APPEND argument of `write-region' is an integer, it seeks to
5096that offset in the file before writing.
5097
f98d3086
SM
5098** The function `add-minor-mode' has been added for convenience and
5099compatibility with XEmacs (and is used internally by define-minor-mode).
7464346d 5100
612839b6
GM
5101** The function `shell-command' now sets the default directory of the
5102`*Shell Command Output*' buffer to the default directory of the buffer
5103from which the command was issued.
5104
5105** The functions `query-replace', `query-replace-regexp',
5106`query-replace-regexp-eval' `map-query-replace-regexp',
5107`replace-string', `replace-regexp', and `perform-replace' take two
5108additional optional arguments START and END that specify the region to
5109operate on.
5110
271b4185
GM
5111** The new function `count-screen-lines' is a more flexible alternative
5112to `window-buffer-height'.
5113
5114- Function: count-screen-lines &optional BEG END COUNT-FINAL-NEWLINE WINDOW
5115
5116Return the number of screen lines in the region between BEG and END.
5117The number of screen lines may be different from the number of actual
5118lines, due to line breaking, display table, etc.
5119
5120Optional arguments BEG and END default to `point-min' and `point-max'
5121respectively.
5122
8a33023e 5123If region ends with a newline, ignore it unless optional third argument
271b4185
GM
5124COUNT-FINAL-NEWLINE is non-nil.
5125
5126The optional fourth argument WINDOW specifies the window used for
5127obtaining parameters such as width, horizontal scrolling, and so
5128on. The default is to use the selected window's parameters.
5129
5130Like `vertical-motion', `count-screen-lines' always uses the current
5131buffer, regardless of which buffer is displayed in WINDOW. This makes
5132possible to use `count-screen-lines' in any buffer, whether or not it
5133is currently displayed in some window.
5134
3c30cb6e
DL
5135** The new function `mapc' is like `mapcar' but doesn't collect the
5136argument function's results.
5137
62f20204 5138** The functions base64-decode-region and base64-decode-string now
55bb62fd 5139signal an error instead of returning nil if decoding fails. Also,
c8682017
EZ
5140`base64-decode-string' now always returns a unibyte string (in Emacs
514120, it returned a multibyte string when the result was a valid multibyte
55bb62fd 5142sequence).
62f20204 5143
c0510d27 5144** The function sendmail-user-agent-compose now recognizes a `body'
b4da8dfa 5145header in the list of headers passed to it.
c0510d27
GM
5146
5147** The new function member-ignore-case works like `member', but
5148ignores differences in case and text representation.
5149
5150** The buffer-local variable cursor-type can be used to specify the
19d1bc27
GM
5151cursor to use in windows displaying a buffer. Values are interpreted
5152as follows:
5153
5154 t use the cursor specified for the frame (default)
5155 nil don't display a cursor
5156 `bar' display a bar cursor with default width
5157 (bar . WIDTH) display a bar cursor with width WIDTH
5158 others display a box cursor.
5159
9a0dd3dc
GM
5160** The variable open-paren-in-column-0-is-defun-start controls whether
5161an open parenthesis in column 0 is considered to be the start of a
5162defun. If set, the default, it is considered a defun start. If not
5163set, an open parenthesis in column 0 has no special meaning.
5164
d7b511c4 5165** The new function `string-to-syntax' can be used to translate syntax
dc1178bf 5166specifications in string form as accepted by `modify-syntax-entry' to
d7b511c4
GM
5167the cons-cell form that is used for the values of the `syntax-table'
5168text property, and in `font-lock-syntactic-keywords'.
5169
5170Example:
5171
5172 (string-to-syntax "()")
5173 => (4 . 41)
5174
1fa28578
GM
5175** Emacs' reader supports CL read syntax for integers in bases
5176other than 10.
5177
5178*** `#BINTEGER' or `#bINTEGER' reads INTEGER in binary (radix 2).
5179INTEGER optionally contains a sign.
5180
5d94f558 5181 #b1111
1fa28578 5182 => 15
5d94f558 5183 #b-1111
1fa28578
GM
5184 => -15
5185
5186*** `#OINTEGER' or `#oINTEGER' reads INTEGER in octal (radix 8).
5187
5d94f558 5188 #o666
1fa28578
GM
5189 => 438
5190
5191*** `#XINTEGER' or `#xINTEGER' reads INTEGER in hexadecimal (radix 16).
5192
5d94f558 5193 #xbeef
1fa28578
GM
5194 => 48815
5195
5196*** `#RADIXrINTEGER' reads INTEGER in radix RADIX, 2 <= RADIX <= 36.
5197
5d94f558 5198 #2R-111
1fa28578 5199 => -7
5d94f558 5200 #25rah
1fa28578
GM
5201 => 267
5202
3d4ff2dd 5203** The function `documentation-property' now evaluates the value of
f98d3086 5204the given property to obtain a string if it doesn't refer to etc/DOC
e9b4e5ff
GM
5205and isn't a string.
5206
3d4ff2dd
GM
5207** If called for a symbol, the function `documentation' now looks for
5208a `function-documentation' property of that symbol. If it has a non-nil
5209value, the documentation is taken from that value. If the value is
5210not a string, it is evaluated to obtain a string.
5211
16ce590d
DL
5212** The last argument of `define-key-after' defaults to t for convenience.
5213
73825616 5214** The new function `replace-regexp-in-string' replaces all matches
16ce590d
DL
5215for a regexp in a string.
5216
5217** `mouse-position' now runs the abnormal hook
5218`mouse-position-function'.
5219
723e779c
GM
5220** The function string-to-number now returns a float for numbers
5221that don't fit into a Lisp integer.
5222
d1e103b2
GM
5223** The variable keyword-symbols-constants-flag has been removed.
5224Keywords are now always considered constants.
5225
31047e0d
DL
5226** The new function `delete-and-extract-region' deletes text and
5227returns it.
5228
7a85e4df
GM
5229** The function `clear-this-command-keys' now also clears the vector
5230returned by function `recent-keys'.
5231
02b14400
RS
5232** Variables `beginning-of-defun-function' and `end-of-defun-function'
5233can be used to define handlers for the functions that find defuns.
3a426197 5234Major modes can define these locally instead of rebinding C-M-a
02b14400
RS
5235etc. if the normal conventions for defuns are not appropriate for the
5236mode.
404fa7d6 5237
8964fec7
SM
5238** easy-mmode-define-minor-mode now takes an additional BODY argument
5239and is renamed `define-minor-mode'.
5240
02b14400
RS
5241** If an abbrev has a hook function which is a symbol, and that symbol
5242has a non-nil `no-self-insert' property, the return value of the hook
5243function specifies whether an expansion has been done or not. If it
5244returns nil, abbrev-expand also returns nil, meaning "no expansion has
5245been performed."
5246
5247When abbrev expansion is done by typing a self-inserting character,
5248and the abbrev has a hook with the `no-self-insert' property, and the
5249hook function returns non-nil meaning expansion has been done,
5250then the self-inserting character is not inserted.
ef961722 5251
81da8b32
GM
5252** The function `intern-soft' now accepts a symbol as first argument.
5253In this case, that exact symbol is looked up in the specified obarray,
5254and the function's value is nil if it is not found.
5255
9e207b90
GM
5256** The new macro `with-syntax-table' can be used to evaluate forms
5257with the syntax table of the current buffer temporarily set to a
5258specified table.
5259
5260 (with-syntax-table TABLE &rest BODY)
5261
5262Evaluate BODY with syntax table of current buffer set to a copy of
03d9c64c
GM
5263TABLE. The current syntax table is saved, BODY is evaluated, and the
5264saved table is restored, even in case of an abnormal exit. Value is
5265what BODY returns.
9e207b90 5266
d7f89643 5267** Regular expressions now support intervals \{n,m\} as well as
95cd4c40 5268Perl's shy-groups \(?:...\) and non-greedy *? +? and ?? operators.
8a33023e 5269Also back-references like \2 are now considered as an error if the
601e0081
SM
5270corresponding subgroup does not exist (or is not closed yet).
5271Previously it would have been silently turned into `2' (ignoring the `\').
8964fec7 5272
dde9e75a
GM
5273** The optional argument BUFFER of function file-local-copy has been
5274removed since it wasn't used by anything.
5275
9da30515
GM
5276** The file name argument of function `file-locked-p' is now required
5277instead of being optional.
5278
d20679eb
GM
5279** The new built-in error `text-read-only' is signaled when trying to
5280modify read-only text.
5281
fbc164de
PE
5282** New functions and variables for locales.
5283
5284The new variable `locale-coding-system' specifies how to encode and
5285decode strings passed to low-level message functions like strerror and
b718982a
PE
5286time functions like strftime. The new variables
5287`system-messages-locale' and `system-time-locale' give the system
5288locales to be used when invoking these two types of functions.
fbc164de
PE
5289
5290The new function `set-locale-environment' sets the language
5291environment, preferred coding system, and locale coding system from
5292the system locale as specified by the LC_ALL, LC_CTYPE, and LANG
b718982a
PE
5293environment variables. Normally, it is invoked during startup and need
5294not be invoked thereafter. It uses the new variables
5295`locale-language-names', `locale-charset-language-names', and
5296`locale-preferred-coding-systems' to make its decisions.
fbc164de 5297
863476d1
SM
5298** syntax tables now understand nested comments.
5299To declare a comment syntax as allowing nesting, just add an `n'
5300modifier to either of the characters of the comment end and the comment
5301start sequences.
5302
ef6d912c
GM
5303** The function `pixmap-spec-p' has been renamed `bitmap-spec-p'
5304because `bitmap' is more in line with the usual X terminology.
5305
a933dad1
DL
5306** New function `propertize'
5307
5308The new function `propertize' can be used to conveniently construct
5309strings with text properties.
5310
5311- Function: propertize STRING &rest PROPERTIES
5312
5313Value is a copy of STRING with text properties assigned as specified
5314by PROPERTIES. PROPERTIES is a sequence of pairs PROPERTY VALUE, with
5315PROPERTY being the name of a text property and VALUE being the
5316specified value of that property. Example:
5317
5318 (propertize "foo" 'face 'bold 'read-only t)
5319
a933dad1
DL
5320** push and pop macros.
5321
02b14400
RS
5322Simple versions of the push and pop macros of Common Lisp
5323are now defined in Emacs Lisp. These macros allow only symbols
a933dad1
DL
5324as the place that holds the list to be changed.
5325
5326(push NEWELT LISTNAME) add NEWELT to the front of LISTNAME's value.
5327(pop LISTNAME) return first elt of LISTNAME, and remove it
5328 (thus altering the value of LISTNAME).
5329
02b14400
RS
5330** New dolist and dotimes macros.
5331
6c7fd5aa
RS
5332Simple versions of the dolist and dotimes macros of Common Lisp
5333are now defined in Emacs Lisp.
02b14400
RS
5334
5335(dolist (VAR LIST [RESULT]) BODY...)
5336 Execute body once for each element of LIST,
5337 using the variable VAR to hold the current element.
5338 Then return the value of RESULT, or nil if RESULT is omitted.
5339
5340(dotimes (VAR COUNT [RESULT]) BODY...)
5341 Execute BODY with VAR bound to successive integers running from 0,
5342 inclusive, to COUNT, exclusive.
5343 Then return the value of RESULT, or nil if RESULT is omitted.
5344
6c083b4c
GM
5345** Regular expressions now support Posix character classes such as
5346[:alpha:], [:space:] and so on. These must be used within a character
5347class--for instance, [-[:digit:].+] matches digits or a period
5348or a sign.
a933dad1
DL
5349
5350[:digit:] matches 0 through 9
5351[:cntrl:] matches ASCII control characters
5352[:xdigit:] matches 0 through 9, a through f and A through F.
5353[:blank:] matches space and tab only
5354[:graph:] matches graphic characters--everything except ASCII control chars,
5355 space, and DEL.
5356[:print:] matches printing characters--everything except ASCII control chars
5357 and DEL.
5358[:alnum:] matches letters and digits.
5359 (But at present, for multibyte characters,
5360 it matches anything that has word syntax.)
5361[:alpha:] matches letters.
5362 (But at present, for multibyte characters,
5363 it matches anything that has word syntax.)
5364[:ascii:] matches ASCII (unibyte) characters.
5365[:nonascii:] matches non-ASCII (multibyte) characters.
5366[:lower:] matches anything lower-case.
5367[:punct:] matches punctuation.
5368 (But at present, for multibyte characters,
5369 it matches anything that has non-word syntax.)
5370[:space:] matches anything that has whitespace syntax.
5371[:upper:] matches anything upper-case.
5372[:word:] matches anything that has word syntax.
5373
a933dad1
DL
5374** Emacs now has built-in hash tables.
5375
5376The following functions are defined for hash tables:
5377
5378- Function: make-hash-table ARGS
5379
5380The argument list ARGS consists of keyword/argument pairs. All arguments
5381are optional. The following arguments are defined:
5382
5383:test TEST
5384
5385TEST must be a symbol specifying how to compare keys. Default is `eql'.
5386Predefined are `eq', `eql' and `equal'. If TEST is not predefined,
5387it must have been defined with `define-hash-table-test'.
5388
5389:size SIZE
5390
5391SIZE must be an integer > 0 giving a hint to the implementation how
5392many elements will be put in the hash table. Default size is 65.
5393
5394:rehash-size REHASH-SIZE
5395
5396REHASH-SIZE specifies by how much to grow a hash table once it becomes
5397full. If REHASH-SIZE is an integer, add that to the hash table's old
5398size to get the new size. Otherwise, REHASH-SIZE must be a float >
53991.0, and the new size is computed by multiplying REHASH-SIZE with the
5400old size. Default rehash size is 1.5.
5401
5402:rehash-threshold THRESHOLD
5403
5404THRESHOLD must be a float > 0 and <= 1.0 specifying when to resize the
5405hash table. It is resized when the ratio of (number of entries) /
5406(size of hash table) is >= THRESHOLD. Default threshold is 0.8.
5407
5408:weakness WEAK
5409
b548072f
GM
5410WEAK must be either nil, one of the symbols `key, `value',
5411`key-or-value', `key-and-value', or t, meaning the same as
5412`key-and-value'. Entries are removed from weak tables during garbage
5413collection if their key and/or value are not referenced elsewhere
5414outside of the hash table. Default are non-weak hash tables.
a933dad1
DL
5415
5416- Function: makehash &optional TEST
5417
5418Similar to make-hash-table, but only TEST can be specified.
5419
5420- Function: hash-table-p TABLE
5421
5422Returns non-nil if TABLE is a hash table object.
5423
5424- Function: copy-hash-table TABLE
5425
5426Returns a copy of TABLE. Only the table itself is copied, keys and
5427values are shared.
5428
5429- Function: hash-table-count TABLE
5430
5431Returns the number of entries in TABLE.
5432
5433- Function: hash-table-rehash-size TABLE
5434
5435Returns the rehash size of TABLE.
5436
5437- Function: hash-table-rehash-threshold TABLE
5438
5439Returns the rehash threshold of TABLE.
5440
5441- Function: hash-table-rehash-size TABLE
5442
5443Returns the size of TABLE.
5444
d96d6bb0 5445- Function: hash-table-test TABLE
a933dad1
DL
5446
5447Returns the test TABLE uses to compare keys.
5448
5449- Function: hash-table-weakness TABLE
5450
5451Returns the weakness specified for TABLE.
5452
5453- Function: clrhash TABLE
5454
5455Clear TABLE.
5456
5457- Function: gethash KEY TABLE &optional DEFAULT
5458
5459Look up KEY in TABLE and return its associated VALUE or DEFAULT if
5460not found.
5461
79214ddf 5462- Function: puthash KEY VALUE TABLE
a933dad1
DL
5463
5464Associate KEY with VALUE in TABLE. If KEY is already associated with
5465another value, replace the old value with VALUE.
5466
5467- Function: remhash KEY TABLE
5468
5469Remove KEY from TABLE if it is there.
5470
5471- Function: maphash FUNCTION TABLE
5472
5473Call FUNCTION for all elements in TABLE. FUNCTION must take two
5474arguments KEY and VALUE.
5475
5476- Function: sxhash OBJ
5477
5478Return a hash code for Lisp object OBJ.
5479
5480- Function: define-hash-table-test NAME TEST-FN HASH-FN
5481
5482Define a new hash table test named NAME. If NAME is specified as
5483a test in `make-hash-table', the table created will use TEST-FN for
79214ddf 5484comparing keys, and HASH-FN to compute hash codes for keys. Test
a933dad1
DL
5485and hash function are stored as symbol property `hash-table-test'
5486of NAME with a value of (TEST-FN HASH-FN).
5487
5488TEST-FN must take two arguments and return non-nil if they are the same.
5489
5490HASH-FN must take one argument and return an integer that is the hash
5491code of the argument. The function should use the whole range of
5492integer values for hash code computation, including negative integers.
5493
5494Example: The following creates a hash table whose keys are supposed to
5495be strings that are compared case-insensitively.
5496
5497 (defun case-fold-string= (a b)
5498 (compare-strings a nil nil b nil nil t))
5499
5500 (defun case-fold-string-hash (a)
5501 (sxhash (upcase a)))
5502
79214ddf 5503 (define-hash-table-test 'case-fold 'case-fold-string=
a933dad1
DL
5504 'case-fold-string-hash))
5505
5506 (make-hash-table :test 'case-fold)
5507
a933dad1
DL
5508** The Lisp reader handles circular structure.
5509
5510It now works to use the #N= and #N# constructs to represent
5511circular structures. For example, #1=(a . #1#) represents
5512a cons cell which is its own cdr.
5513
a933dad1
DL
5514** The Lisp printer handles circular structure.
5515
5516If you bind print-circle to a non-nil value, the Lisp printer outputs
5517#N= and #N# constructs to represent circular and shared structure.
5518
a933dad1
DL
5519** If the second argument to `move-to-column' is anything but nil or
5520t, that means replace a tab with spaces if necessary to reach the
5521specified column, but do not add spaces at the end of the line if it
5522is too short to reach that column.
5523
a933dad1
DL
5524** perform-replace has a new feature: the REPLACEMENTS argument may
5525now be a cons cell (FUNCTION . DATA). This means to call FUNCTION
5526after each match to get the replacement text. FUNCTION is called with
5527two arguments: DATA, and the number of replacements already made.
5528
5529If the FROM-STRING contains any upper-case letters,
5530perform-replace also turns off `case-fold-search' temporarily
5531and inserts the replacement text without altering case in it.
5532
a933dad1
DL
5533** The function buffer-size now accepts an optional argument
5534to specify which buffer to return the size of.
5535
a933dad1
DL
5536** The calendar motion commands now run the normal hook
5537calendar-move-hook after moving point.
5538
a933dad1
DL
5539** The new variable small-temporary-file-directory specifies a
5540directory to use for creating temporary files that are likely to be
5541small. (Certain Emacs features use this directory.) If
5542small-temporary-file-directory is nil, they use
5543temporary-file-directory instead.
5544
a933dad1
DL
5545** The variable `inhibit-modification-hooks', if non-nil, inhibits all
5546the hooks that track changes in the buffer. This affects
5547`before-change-functions' and `after-change-functions', as well as
5548hooks attached to text properties and overlay properties.
5549
2018166d
DL
5550** assq-delete-all is a new function that deletes all the
5551elements of an alist which have a car `eq' to a particular value.
a933dad1 5552
a933dad1
DL
5553** make-temp-file provides a more reliable way to create a temporary file.
5554
5555make-temp-file is used like make-temp-name, except that it actually
5556creates the file before it returns. This prevents a timing error,
5557ensuring that no other job can use the same name for a temporary file.
5558
a933dad1
DL
5559** New exclusive-open feature in `write-region'
5560
5561The optional seventh arg is now called MUSTBENEW. If non-nil, it insists
5562on a check for an existing file with the same name. If MUSTBENEW
5563is `excl', that means to get an error if the file already exists;
5564never overwrite. If MUSTBENEW is neither nil nor `excl', that means
5565ask for confirmation before overwriting, but do go ahead and
5566overwrite the file if the user gives confirmation.
5567
5568If the MUSTBENEW argument in `write-region' is `excl',
5569that means to use a special feature in the `open' system call
5570to get an error if the file exists at that time.
5571The error reported is `file-already-exists'.
5572
a933dad1
DL
5573** Function `format' now handles text properties.
5574
5575Text properties of the format string are applied to the result string.
5576If the result string is longer than the format string, text properties
5577ending at the end of the format string are extended to the end of the
5578result string.
5579
5580Text properties from string arguments are applied to the result
5581string where arguments appear in the result string.
5582
5583Example:
5584
5585 (let ((s1 "hello, %s")
5586 (s2 "world"))
5587 (put-text-property 0 (length s1) 'face 'bold s1)
5588 (put-text-property 0 (length s2) 'face 'italic s2)
b246b1f6 5589 (format s1 s2))
a933dad1
DL
5590
5591results in a bold-face string with an italic `world' at the end.
5592
a933dad1
DL
5593** Messages can now be displayed with text properties.
5594
5595Text properties are handled as described above for function `format'.
5596The following example displays a bold-face message with an italic
5597argument in it.
5598
5599 (let ((msg "hello, %s!")
5600 (arg "world"))
5601 (put-text-property 0 (length msg) 'face 'bold msg)
5602 (put-text-property 0 (length arg) 'face 'italic arg)
5603 (message msg arg))
5604
a933dad1
DL
5605** Sound support
5606
5607Emacs supports playing sound files on GNU/Linux and the free BSDs
5608(Voxware driver and native BSD driver, aka as Luigi's driver).
5609
5610Currently supported file formats are RIFF-WAVE (*.wav) and Sun Audio
5611(*.au). You must configure Emacs with the option `--with-sound=yes'
5612to enable sound support.
5613
5614Sound files can be played by calling (play-sound SOUND). SOUND is a
5615list of the form `(sound PROPERTY...)'. The function is only defined
5616when sound support is present for the system on which Emacs runs. The
5617functions runs `play-sound-functions' with one argument which is the
5618sound to play, before playing the sound.
5619
5620The following sound properties are supported:
5621
5622- `:file FILE'
5623
5624FILE is a file name. If FILE isn't an absolute name, it will be
5625searched relative to `data-directory'.
5626
6fb40beb
GM
5627- `:data DATA'
5628
5629DATA is a string containing sound data. Either :file or :data
5630may be present, but not both.
5631
a933dad1
DL
5632- `:volume VOLUME'
5633
5634VOLUME must be an integer in the range 0..100 or a float in the range
56350..1. This property is optional.
5636
01242779
DL
5637- `:device DEVICE'
5638
5639DEVICE is a string specifying the system device on which to play the
5640sound. The default device is system-dependent.
5641
a933dad1
DL
5642Other properties are ignored.
5643
01242779
DL
5644An alternative interface is called as
5645(play-sound-file FILE &optional VOLUME DEVICE).
5646
a933dad1 5647** `multimedia' is a new Finder keyword and Custom group.
356673d4
DL
5648
5649** keywordp is a new predicate to test efficiently for an object being
5650a keyword symbol.
fc91dc2d
GM
5651
5652** Changes to garbage collection
5653
5654*** The function garbage-collect now additionally returns the number
5655of live and free strings.
5656
5657*** There is a new variable `strings-consed' holding the number of
5658strings that have been consed so far.
5659
05197f40 5660\f
04545643
GM
5661* Lisp-level Display features added after release 2.6 of the Emacs
5662Lisp Manual
5663
a299a6f0
GM
5664** The user-option `resize-mini-windows' controls how Emacs resizes
5665mini-windows.
5666
26fcde61
MB
5667** The function `pos-visible-in-window-p' now has a third optional
5668argument, PARTIALLY. If a character is only partially visible, nil is
5669returned, unless PARTIALLY is non-nil.
ea4c1b7c 5670
a299a6f0 5671** On window systems, `glyph-table' is no longer used.
82a452c8 5672
9a8d84ca 5673** Help strings in menu items are now used to provide `help-echo' text.
2c69ced2
GM
5674
5675** The function `image-size' can be used to determine the size of an
5676image.
5677
5678- Function: image-size SPEC &optional PIXELS FRAME
5679
5680Return the size of an image as a pair (WIDTH . HEIGHT).
5681
5682SPEC is an image specification. PIXELS non-nil means return sizes
5683measured in pixels, otherwise return sizes measured in canonical
5684character units (fractions of the width/height of the frame's default
5685font). FRAME is the frame on which the image will be displayed.
5686FRAME nil or omitted means use the selected frame.
5687
ebb8f116
GM
5688** The function `image-mask-p' can be used to determine if an image
5689has a mask bitmap.
5690
5691- Function: image-mask-p SPEC &optional FRAME
5692
5693Return t if image SPEC has a mask bitmap.
5694FRAME is the frame on which the image will be displayed. FRAME nil
5695or omitted means use the selected frame.
5696
0b8a3a6d
DL
5697** The function `find-image' can be used to find a usable image
5698satisfying one of a list of specifications.
5699
0b8a3a6d
DL
5700** The STRING argument of `put-image' and `insert-image' is now
5701optional.
5702
f6499c03
DL
5703** Image specifications may contain the property `:ascent center' (see
5704below).
04545643 5705
05197f40 5706\f
a933dad1
DL
5707* New Lisp-level Display features in Emacs 21.1
5708
f6d3257b
GM
5709** The function tty-suppress-bold-inverse-default-colors can be used
5710to make Emacs avoid displaying text with bold black foreground on TTYs.
5711
5712Some terminals, notably PC consoles, emulate bold text by displaying
5713text in brighter colors. On such a console, a bold black foreground
5714is displayed in a gray color. If this turns out to be hard to read on
5715your monitor---the problem occurred with the mode line on
5716laptops---you can instruct Emacs to ignore the text's boldness, and to
5717just display it black instead.
5718
5719This situation can't be detected automatically. You will have to put
5720a line like
5721
5722 (tty-suppress-bold-inverse-default-colors t)
5723
5724in your `.emacs'.
5725
a933dad1
DL
5726** New face implementation.
5727
5728Emacs faces have been reimplemented from scratch. They don't use XLFD
5729font names anymore and face merging now works as expected.
5730
a933dad1
DL
5731*** New faces.
5732
5733Each face can specify the following display attributes:
5734
5735 1. Font family or fontset alias name.
79214ddf 5736
a933dad1
DL
5737 2. Relative proportionate width, aka character set width or set
5738 width (swidth), e.g. `semi-compressed'.
79214ddf 5739
a933dad1 5740 3. Font height in 1/10pt
79214ddf 5741
a933dad1 5742 4. Font weight, e.g. `bold'.
79214ddf 5743
a933dad1 5744 5. Font slant, e.g. `italic'.
79214ddf 5745
a933dad1 5746 6. Foreground color.
79214ddf 5747
a933dad1
DL
5748 7. Background color.
5749
5750 8. Whether or not characters should be underlined, and in what color.
5751
5752 9. Whether or not characters should be displayed in inverse video.
5753
5754 10. A background stipple, a bitmap.
5755
5756 11. Whether or not characters should be overlined, and in what color.
5757
5758 12. Whether or not characters should be strike-through, and in what
5759 color.
5760
5761 13. Whether or not a box should be drawn around characters, its
5762 color, the width of the box lines, and 3D appearance.
5763
5764Faces are frame-local by nature because Emacs allows to define the
5765same named face (face names are symbols) differently for different
5766frames. Each frame has an alist of face definitions for all named
5767faces. The value of a named face in such an alist is a Lisp vector
0969bd6a 5768with the symbol `face' in slot 0, and a slot for each of the face
a933dad1
DL
5769attributes mentioned above.
5770
5771There is also a global face alist `face-new-frame-defaults'. Face
5772definitions from this list are used to initialize faces of newly
5773created frames.
79214ddf 5774
a933dad1
DL
5775A face doesn't have to specify all attributes. Those not specified
5776have a nil value. Faces specifying all attributes are called
5777`fully-specified'.
5778
a933dad1
DL
5779*** Face merging.
5780
5781The display style of a given character in the text is determined by
5782combining several faces. This process is called `face merging'. Any
5783aspect of the display style that isn't specified by overlays or text
5784properties is taken from the `default' face. Since it is made sure
5785that the default face is always fully-specified, face merging always
5786results in a fully-specified face.
5787
a933dad1
DL
5788*** Face realization.
5789
5790After all face attributes for a character have been determined by
5791merging faces of that character, that face is `realized'. The
5792realization process maps face attributes to what is physically
5793available on the system where Emacs runs. The result is a `realized
5794face' in form of an internal structure which is stored in the face
5795cache of the frame on which it was realized.
5796
5797Face realization is done in the context of the charset of the
5798character to display because different fonts and encodings are used
5799for different charsets. In other words, for characters of different
5800charsets, different realized faces are needed to display them.
5801
5802Except for composite characters, faces are always realized for a
5803specific character set and contain a specific font, even if the face
5804being realized specifies a fontset. The reason is that the result of
5805the new font selection stage is better than what can be done with
5806statically defined font name patterns in fontsets.
5807
5808In unibyte text, Emacs' charsets aren't applicable; function
5809`char-charset' reports ASCII for all characters, including those >
58100x7f. The X registry and encoding of fonts to use is determined from
5811the variable `face-default-registry' in this case. The variable is
5812initialized at Emacs startup time from the font the user specified for
5813Emacs.
5814
5815Currently all unibyte text, i.e. all buffers with
5816`enable-multibyte-characters' nil are displayed with fonts of the same
5817registry and encoding `face-default-registry'. This is consistent
5818with the fact that languages can also be set globally, only.
5819
a933dad1
DL
5820**** Clearing face caches.
5821
5822The Lisp function `clear-face-cache' can be called to clear face caches
5823on all frames. If called with a non-nil argument, it will also unload
5824unused fonts.
5825
a933dad1 5826*** Font selection.
79214ddf 5827
a933dad1
DL
5828Font selection tries to find the best available matching font for a
5829given (charset, face) combination. This is done slightly differently
5830for faces specifying a fontset, or a font family name.
5831
5832If the face specifies a fontset name, that fontset determines a
5833pattern for fonts of the given charset. If the face specifies a font
5834family, a font pattern is constructed. Charset symbols have a
5835property `x-charset-registry' for that purpose that maps a charset to
5836an XLFD registry and encoding in the font pattern constructed.
5837
5838Available fonts on the system on which Emacs runs are then matched
5839against the font pattern. The result of font selection is the best
5840match for the given face attributes in this font list.
5841
5842Font selection can be influenced by the user.
5843
5844The user can specify the relative importance he gives the face
5845attributes width, height, weight, and slant by setting
5846face-font-selection-order (faces.el) to a list of face attribute
5847names. The default is (:width :height :weight :slant), and means
5848that font selection first tries to find a good match for the font
5849width specified by a face, then---within fonts with that width---tries
5850to find a best match for the specified font height, etc.
5851
52d89894
GM
5852Setting `face-font-family-alternatives' allows the user to specify
5853alternative font families to try if a family specified by a face
89d57763 5854doesn't exist.
af4bb4c8
KH
5855
5856Setting `face-font-registry-alternatives' allows the user to specify
8a33023e 5857all alternative font registry names to try for a face specifying a
af4bb4c8
KH
5858registry.
5859
8a33023e 5860Please note that the interpretations of the above two variables are
af4bb4c8
KH
5861slightly different.
5862
5863Setting face-ignored-fonts allows the user to ignore specific fonts.
5864
a933dad1 5865
a933dad1
DL
5866**** Scalable fonts
5867
5868Emacs can make use of scalable fonts but doesn't do so by default,
5869since the use of too many or too big scalable fonts may crash XFree86
5870servers.
5871
5872To enable scalable font use, set the variable
b246b1f6 5873`scalable-fonts-allowed'. A value of nil, the default, means never use
a933dad1
DL
5874scalable fonts. A value of t means any scalable font may be used.
5875Otherwise, the value must be a list of regular expressions. A
5876scalable font may then be used if it matches a regular expression from
5877that list. Example:
5878
5879 (setq scalable-fonts-allowed '("muleindian-2$"))
5880
5881allows the use of scalable fonts with registry `muleindian-2'.
5882
a933dad1
DL
5883*** Functions and variables related to font selection.
5884
5885- Function: x-family-fonts &optional FAMILY FRAME
5886
5887Return a list of available fonts of family FAMILY on FRAME. If FAMILY
5888is omitted or nil, list all families. Otherwise, FAMILY must be a
5889string, possibly containing wildcards `?' and `*'.
5890
5891If FRAME is omitted or nil, use the selected frame. Each element of
5892the result is a vector [FAMILY WIDTH POINT-SIZE WEIGHT SLANT FIXED-P
5893FULL REGISTRY-AND-ENCODING]. FAMILY is the font family name.
5894POINT-SIZE is the size of the font in 1/10 pt. WIDTH, WEIGHT, and
5895SLANT are symbols describing the width, weight and slant of the font.
5896These symbols are the same as for face attributes. FIXED-P is non-nil
5897if the font is fixed-pitch. FULL is the full name of the font, and
5898REGISTRY-AND-ENCODING is a string giving the registry and encoding of
5899the font. The result list is sorted according to the current setting
5900of the face font sort order.
5901
79214ddf 5902- Function: x-font-family-list
a933dad1
DL
5903
5904Return a list of available font families on FRAME. If FRAME is
5905omitted or nil, use the selected frame. Value is a list of conses
5906(FAMILY . FIXED-P) where FAMILY is a font family, and FIXED-P is
5907non-nil if fonts of that family are fixed-pitch.
5908
5909- Variable: font-list-limit
5910
5911Limit for font matching. If an integer > 0, font matching functions
5912won't load more than that number of fonts when searching for a
5913matching font. The default is currently 100.
5914
a933dad1
DL
5915*** Setting face attributes.
5916
5917For the most part, the new face implementation is interface-compatible
5918with the old one. Old face attribute related functions are now
5919implemented in terms of the new functions `set-face-attribute' and
5920`face-attribute'.
5921
5922Face attributes are identified by their names which are keyword
5923symbols. All attributes can be set to `unspecified'.
5924
5925The following attributes are recognized:
5926
5927`:family'
5928
5929VALUE must be a string specifying the font family, e.g. ``courier'',
5930or a fontset alias name. If a font family is specified, wild-cards `*'
5931and `?' are allowed.
5932
5933`:width'
5934
5935VALUE specifies the relative proportionate width of the font to use.
5936It must be one of the symbols `ultra-condensed', `extra-condensed',
5937`condensed', `semi-condensed', `normal', `semi-expanded', `expanded',
5938`extra-expanded', or `ultra-expanded'.
5939
5940`:height'
5941
787345ff
MB
5942VALUE must be either an integer specifying the height of the font to use
5943in 1/10 pt, a floating point number specifying the amount by which to
5944scale any underlying face, or a function, which is called with the old
5945height (from the underlying face), and should return the new height.
a933dad1
DL
5946
5947`:weight'
5948
5949VALUE specifies the weight of the font to use. It must be one of the
5950symbols `ultra-bold', `extra-bold', `bold', `semi-bold', `normal',
5951`semi-light', `light', `extra-light', `ultra-light'.
5952
5953`:slant'
5954
5955VALUE specifies the slant of the font to use. It must be one of the
5956symbols `italic', `oblique', `normal', `reverse-italic', or
5957`reverse-oblique'.
5958
5959`:foreground', `:background'
5960
5961VALUE must be a color name, a string.
5962
5963`:underline'
5964
5965VALUE specifies whether characters in FACE should be underlined. If
5966VALUE is t, underline with foreground color of the face. If VALUE is
5967a string, underline with that color. If VALUE is nil, explicitly
5968don't underline.
5969
5970`:overline'
5971
5972VALUE specifies whether characters in FACE should be overlined. If
5973VALUE is t, overline with foreground color of the face. If VALUE is a
5974string, overline with that color. If VALUE is nil, explicitly don't
5975overline.
5976
5977`:strike-through'
5978
5979VALUE specifies whether characters in FACE should be drawn with a line
5980striking through them. If VALUE is t, use the foreground color of the
5981face. If VALUE is a string, strike-through with that color. If VALUE
5982is nil, explicitly don't strike through.
5983
5984`:box'
5985
5986VALUE specifies whether characters in FACE should have a box drawn
5987around them. If VALUE is nil, explicitly don't draw boxes. If
5988VALUE is t, draw a box with lines of width 1 in the foreground color
5989of the face. If VALUE is a string, the string must be a color name,
5990and the box is drawn in that color with a line width of 1. Otherwise,
5991VALUE must be a property list of the form `(:line-width WIDTH
5992:color COLOR :style STYLE)'. If a keyword/value pair is missing from
5993the property list, a default value will be used for the value, as
5994specified below. WIDTH specifies the width of the lines to draw; it
5995defaults to 1. COLOR is the name of the color to draw in, default is
5996the foreground color of the face for simple boxes, and the background
5997color of the face for 3D boxes. STYLE specifies whether a 3D box
5998should be draw. If STYLE is `released-button', draw a box looking
5999like a released 3D button. If STYLE is `pressed-button' draw a box
6000that appears like a pressed button. If STYLE is nil, the default if
6001the property list doesn't contain a style specification, draw a 2D
6002box.
6003
6004`:inverse-video'
6005
6006VALUE specifies whether characters in FACE should be displayed in
6007inverse video. VALUE must be one of t or nil.
6008
6009`:stipple'
6010
6011If VALUE is a string, it must be the name of a file of pixmap data.
6012The directories listed in the `x-bitmap-file-path' variable are
6013searched. Alternatively, VALUE may be a list of the form (WIDTH
6014HEIGHT DATA) where WIDTH and HEIGHT are the size in pixels, and DATA
6015is a string containing the raw bits of the bitmap. VALUE nil means
6016explicitly don't use a stipple pattern.
6017
6018For convenience, attributes `:family', `:width', `:height', `:weight',
6019and `:slant' may also be set in one step from an X font name:
6020
6021`:font'
6022
6023Set font-related face attributes from VALUE. VALUE must be a valid
6024XLFD font name. If it is a font name pattern, the first matching font
6025is used--this is for compatibility with the behavior of previous
6026versions of Emacs.
6027
6028For compatibility with Emacs 20, keywords `:bold' and `:italic' can
6029be used to specify that a bold or italic font should be used. VALUE
6030must be t or nil in that case. A value of `unspecified' is not allowed."
6031
6032Please see also the documentation of `set-face-attribute' and
6033`defface'.
6034
787345ff
MB
6035`:inherit'
6036
6037VALUE is the name of a face from which to inherit attributes, or a list
6038of face names. Attributes from inherited faces are merged into the face
6039like an underlying face would be, with higher priority than underlying faces.
6040
a933dad1
DL
6041*** Face attributes and X resources
6042
6043The following X resource names can be used to set face attributes
6044from X resources:
6045
6046 Face attribute X resource class
6047-----------------------------------------------------------------------
6048 :family attributeFamily . Face.AttributeFamily
6049 :width attributeWidth Face.AttributeWidth
6050 :height attributeHeight Face.AttributeHeight
6051 :weight attributeWeight Face.AttributeWeight
6052 :slant attributeSlant Face.AttributeSlant
6053 foreground attributeForeground Face.AttributeForeground
6054 :background attributeBackground . Face.AttributeBackground
6055 :overline attributeOverline Face.AttributeOverline
6056 :strike-through attributeStrikeThrough Face.AttributeStrikeThrough
6057 :box attributeBox Face.AttributeBox
6058 :underline attributeUnderline Face.AttributeUnderline
6059 :inverse-video attributeInverse Face.AttributeInverse
6060 :stipple attributeStipple Face.AttributeStipple
79214ddf 6061 or attributeBackgroundPixmap
a933dad1
DL
6062 Face.AttributeBackgroundPixmap
6063 :font attributeFont Face.AttributeFont
6064 :bold attributeBold Face.AttributeBold
6065 :italic attributeItalic . Face.AttributeItalic
6066 :font attributeFont Face.AttributeFont
6067
a933dad1
DL
6068*** Text property `face'.
6069
6070The value of the `face' text property can now be a single face
6071specification or a list of such specifications. Each face
6072specification can be
6073
60741. A symbol or string naming a Lisp face.
6075
60762. A property list of the form (KEYWORD VALUE ...) where each
6077 KEYWORD is a face attribute name, and VALUE is an appropriate value
6078 for that attribute. Please see the doc string of `set-face-attribute'
6079 for face attribute names.
6080
60813. Conses of the form (FOREGROUND-COLOR . COLOR) or
6082 (BACKGROUND-COLOR . COLOR) where COLOR is a color name. This is
6083 for compatibility with previous Emacs versions.
6084
a933dad1
DL
6085** Support functions for colors on text-only terminals.
6086
acf3ecb7
EZ
6087The function `tty-color-define' can be used to define colors for use
6088on TTY and MSDOS frames. It maps a color name to a color number on
6089the terminal. Emacs defines a couple of common color mappings by
a933dad1 6090default. You can get defined colors with a call to
acf3ecb7 6091`defined-colors'. The function `tty-color-clear' can be
a933dad1
DL
6092used to clear the mapping table.
6093
acf3ecb7
EZ
6094** Unified support for colors independent of frame type.
6095
6096The new functions `defined-colors', `color-defined-p', `color-values',
6097and `display-color-p' work for any type of frame. On frames whose
6098type is neither x nor w32, these functions transparently map X-style
6099color specifications to the closest colors supported by the frame
6100display. Lisp programs should use these new functions instead of the
6101old `x-defined-colors', `x-color-defined-p', `x-color-values', and
6102`x-display-color-p'. (The old function names are still available for
6103compatibility; they are now aliases of the new names.) Lisp programs
6104should no more look at the value of the variable window-system to
6105modify their color-related behavior.
6106
6107The primitives `color-gray-p' and `color-supported-p' also work for
6108any frame type.
6109
8a5719f0
EZ
6110** Platform-independent functions to describe display capabilities.
6111
6112The new functions `display-mouse-p', `display-popup-menus-p',
6113`display-graphic-p', `display-selections-p', `display-screens',
6114`display-pixel-width', `display-pixel-height', `display-mm-width',
6115`display-mm-height', `display-backing-store', `display-save-under',
6116`display-planes', `display-color-cells', `display-visual-class', and
6117`display-grayscale-p' describe the basic capabilities of a particular
6118display. Lisp programs should call these functions instead of testing
6119the value of the variables `window-system' or `system-type', or calling
6120platform-specific functions such as `x-display-pixel-width'.
6121
27009a49
EZ
6122The new function `display-images-p' returns non-nil if a particular
6123display can display image files.
6124
a933dad1 6125** The minibuffer prompt is now actually inserted in the minibuffer.
a933dad1 6126
463cac2d 6127This makes it possible to scroll through the prompt, if you want to.
3b51cca0
MB
6128To disallow this completely (like previous versions of emacs), customize
6129the variable `minibuffer-prompt-properties', and turn on the
6130`Inviolable' option.
a933dad1 6131
d586cf1e 6132The function `minibuffer-prompt-end' returns the current position of the
a933dad1 6133end of the minibuffer prompt, if the minibuffer is current.
d586cf1e 6134Otherwise, it returns `(point-min)'.
a933dad1 6135
463cac2d
GM
6136** New `field' abstraction in buffers.
6137
6138There is now code to support an abstraction called `fields' in emacs
6139buffers. A field is a contiguous region of text with the same `field'
59927f88 6140property (which can be a text property or an overlay).
463cac2d 6141
9a9dfda8 6142Many emacs functions, such as forward-word, forward-sentence,
463cac2d 6143forward-paragraph, beginning-of-line, etc., stop moving when they come
9a9dfda8 6144to the boundary between fields; beginning-of-line and end-of-line will
463cac2d 6145not let the point move past the field boundary, but other movement
fc7ac24f
GM
6146commands continue into the next field if repeated. Stopping at field
6147boundaries can be suppressed programmatically by binding
6148`inhibit-field-text-motion' to a non-nil value around calls to these
6149functions.
463cac2d
GM
6150
6151Now that the minibuffer prompt is inserted into the minibuffer, it is in
9a9dfda8 6152a separate field from the user-input part of the buffer, so that common
463cac2d 6153editing commands treat the user's text separately from the prompt.
a933dad1 6154
9a9dfda8
GM
6155The following functions are defined for operating on fields:
6156
59927f88 6157- Function: constrain-to-field NEW-POS OLD-POS &optional ESCAPE-FROM-EDGE ONLY-IN-LINE INHIBIT-CAPTURE-PROPERTY
9a9dfda8
GM
6158
6159Return the position closest to NEW-POS that is in the same field as OLD-POS.
59927f88 6160
9a9dfda8
GM
6161A field is a region of text with the same `field' property.
6162If NEW-POS is nil, then the current point is used instead, and set to the
9b2a085d 6163constrained position if that is different.
9a9dfda8
GM
6164
6165If OLD-POS is at the boundary of two fields, then the allowable
6166positions for NEW-POS depends on the value of the optional argument
6167ESCAPE-FROM-EDGE: If ESCAPE-FROM-EDGE is nil, then NEW-POS is
59927f88 6168constrained to the field that has the same `field' char-property
9a9dfda8
GM
6169as any new characters inserted at OLD-POS, whereas if ESCAPE-FROM-EDGE
6170is non-nil, NEW-POS is constrained to the union of the two adjacent
59927f88
MB
6171fields. Additionally, if two fields are separated by another field with
6172the special value `boundary', then any point within this special field is
6173also considered to be `on the boundary'.
9a9dfda8
GM
6174
6175If the optional argument ONLY-IN-LINE is non-nil and constraining
6176NEW-POS would move it to a different line, NEW-POS is returned
6177unconstrained. This useful for commands that move by line, like
6178C-n or C-a, which should generally respect field boundaries
6179only in the case where they can still move to the right line.
6180
59927f88
MB
6181If the optional argument INHIBIT-CAPTURE-PROPERTY is non-nil, and OLD-POS has
6182a non-nil property of that name, then any field boundaries are ignored.
6183
6184Field boundaries are not noticed if `inhibit-field-text-motion' is non-nil.
6185
6186- Function: delete-field &optional POS
9a9dfda8 6187
59927f88 6188Delete the field surrounding POS.
9a9dfda8 6189A field is a region of text with the same `field' property.
59927f88 6190If POS is nil, the value of point is used for POS.
9a9dfda8
GM
6191
6192- Function: field-beginning &optional POS ESCAPE-FROM-EDGE
6193
6194Return the beginning of the field surrounding POS.
6195A field is a region of text with the same `field' property.
59927f88
MB
6196If POS is nil, the value of point is used for POS.
6197If ESCAPE-FROM-EDGE is non-nil and POS is at the beginning of its
9a9dfda8
GM
6198field, then the beginning of the *previous* field is returned.
6199
6200- Function: field-end &optional POS ESCAPE-FROM-EDGE
6201
6202Return the end of the field surrounding POS.
6203A field is a region of text with the same `field' property.
59927f88
MB
6204If POS is nil, the value of point is used for POS.
6205If ESCAPE-FROM-EDGE is non-nil and POS is at the end of its field,
9a9dfda8
GM
6206then the end of the *following* field is returned.
6207
6208- Function: field-string &optional POS
6209
6210Return the contents of the field surrounding POS as a string.
6211A field is a region of text with the same `field' property.
59927f88 6212If POS is nil, the value of point is used for POS.
9a9dfda8
GM
6213
6214- Function: field-string-no-properties &optional POS
6215
6216Return the contents of the field around POS, without text-properties.
6217A field is a region of text with the same `field' property.
59927f88 6218If POS is nil, the value of point is used for POS.
9a9dfda8 6219
a933dad1
DL
6220** Image support.
6221
6222Emacs can now display images. Images are inserted into text by giving
6223strings or buffer text a `display' text property containing one of
6224(AREA IMAGE) or IMAGE. The display of the `display' property value
6225replaces the display of the characters having that property.
6226
6227If the property value has the form (AREA IMAGE), AREA must be one of
6228`(margin left-margin)', `(margin right-margin)' or `(margin nil)'. If
6229AREA is `(margin nil)', IMAGE will be displayed in the text area of a
6230window, otherwise it will be displayed in the left or right marginal
6231area.
6232
6233IMAGE is an image specification.
6234
6235*** Image specifications
6236
6237Image specifications are lists of the form `(image PROPS)' where PROPS
6238is a property list whose keys are keyword symbols. Each
6239specifications must contain a property `:type TYPE' with TYPE being a
35a5514b
GM
6240symbol specifying the image type, e.g. `xbm'. Properties not
6241described below are ignored.
a933dad1
DL
6242
6243The following is a list of properties all image types share.
6244
6245`:ascent ASCENT'
6246
576da55d
GM
6247ASCENT must be a number in the range 0..100, or the symbol `center'.
6248If it is a number, it specifies the percentage of the image's height
5d94f558 6249to use for its ascent.
576da55d
GM
6250
6251If not specified, ASCENT defaults to the value 50 which means that the
6252image will be centered with the base line of the row it appears in.
6253
5d94f558 6254If ASCENT is `center' the image is vertically centered around a
04545643
GM
6255centerline which is the vertical center of text drawn at the position
6256of the image, in the manner specified by the text properties and
6257overlays that apply to the image.
a933dad1
DL
6258
6259`:margin MARGIN'
6260
b30623be
GM
6261MARGIN must be either a number >= 0 specifying how many pixels to put
6262as margin around the image, or a pair (X . Y) with X specifying the
6263horizontal margin and Y specifying the vertical margin. Default is 0.
a933dad1
DL
6264
6265`:relief RELIEF'
6266
6267RELIEF is analogous to the `:relief' attribute of faces. Puts a relief
6268around an image.
6269
f864120f 6270`:conversion ALGO'
a933dad1 6271
47e351a3
GM
6272Apply an image algorithm to the image before displaying it.
6273
6274ALGO `laplace' or `emboss' means apply a Laplace or ``emboss''
6275edge-detection algorithm to the image.
6276
6277ALGO `(edge-detection :matrix MATRIX :color-adjust ADJUST)' means
6278apply a general edge-detection algorithm. MATRIX must be either a
6279nine-element list or a nine-element vector of numbers. A pixel at
6280position x/y in the transformed image is computed from original pixels
6281around that position. MATRIX specifies, for each pixel in the
6282neighborhood of x/y, a factor with which that pixel will influence the
6283transformed pixel; element 0 specifies the factor for the pixel at
6284x-1/y-1, element 1 the factor for the pixel at x/y-1 etc. as shown
6285below.
6286
6287 (x-1/y-1 x/y-1 x+1/y-1
6288 x-1/y x/y x+1/y
6289 x-1/y+1 x/y+1 x+1/y+1)
6290
6291The resulting pixel is computed from the color intensity of the color
6292resulting from summing up the RGB values of surrounding pixels,
6293multiplied by the specified factors, and dividing that sum by the sum
6294of the factors' absolute values.
6295
327652be 6296Laplace edge-detection currently uses a matrix of
a933dad1 6297
47e351a3
GM
6298 (1 0 0
6299 0 0 0
6300 9 9 -1)
6301
6302Emboss edge-detection uses a matrix of
6303
6304 ( 2 -1 0
6305 -1 0 1
6306 0 1 -2)
6307
ba9eeda1
GM
6308ALGO `disabled' means transform the image so that it looks
6309``disabled''.
6310
47e351a3
GM
6311`:mask MASK'
6312
6313If MASK is `heuristic' or `(heuristic BG)', build a clipping mask for
6314the image, so that the background of a frame is visible behind the
6315image. If BG is not specified, or if BG is t, determine the
6316background color of the image by looking at the 4 corners of the
8a33023e 6317image, assuming the most frequently occurring color from the corners is
47e351a3
GM
6318the background color of the image. Otherwise, BG must be a list `(RED
6319GREEN BLUE)' specifying the color to assume for the background of the
6320image.
a933dad1 6321
47e351a3
GM
6322If MASK is nil, remove a mask from the image, if it has one. Images
6323in some formats include a mask which can be removed by specifying
6324`:mask nil'.
a933dad1
DL
6325
6326`:file FILE'
6327
6328Load image from FILE. If FILE is not absolute after expanding it,
6329search for the image in `data-directory'. Some image types support
6330building images from data. When this is done, no `:file' property
6331may be present in the image specification.
6332
518df5c4
GM
6333`:data DATA'
6334
6335Get image data from DATA. (As of this writing, this is not yet
6336supported for image type `postscript'). Either :file or :data may be
6337present in an image specification, but not both. All image types
6338support strings as DATA, some types allow additional types of DATA.
6339
a933dad1
DL
6340*** Supported image types
6341
b246b1f6 6342**** XBM, image type `xbm'.
a933dad1
DL
6343
6344XBM images don't require an external library. Additional image
0e467b97 6345properties supported are:
a933dad1
DL
6346
6347`:foreground FG'
6348
94736c7c 6349FG must be a string specifying the image foreground color, or nil
0e467b97 6350meaning to use the default. Default is the frame's foreground color.
a933dad1 6351
46c5af7f 6352`:background BG'
a933dad1 6353
0e467b97 6354BG must be a string specifying the image background color, or nil
94736c7c 6355meaning to use the default. Default is the frame's background color.
a933dad1
DL
6356
6357XBM images can be constructed from data instead of file. In this
6358case, the image specification must contain the following properties
6359instead of a `:file' property.
6360
6361`:width WIDTH'
6362
6363WIDTH specifies the width of the image in pixels.
6364
6365`:height HEIGHT'
6366
6367HEIGHT specifies the height of the image in pixels.
6368
6369`:data DATA'
6370
6371DATA must be either
6372
6373 1. a string large enough to hold the bitmap data, i.e. it must
6374 have a size >= (WIDTH + 7) / 8 * HEIGHT
6375
6376 2. a bool-vector of size >= WIDTH * HEIGHT
6377
6378 3. a vector of strings or bool-vectors, one for each line of the
6379 bitmap.
6380
c76e04a8
GM
6381 4. a string that's an in-memory XBM file. Neither width nor
6382 height may be specified in this case because these are defined
6383 in the file.
6384
a933dad1
DL
6385**** XPM, image type `xpm'
6386
6387XPM images require the external library `libXpm', package
6388`xpm-3.4k.tar.gz', version 3.4k or later. Make sure the library is
6389found when Emacs is configured by supplying appropriate paths via
6390`--x-includes' and `--x-libraries'.
6391
6392Additional image properties supported are:
6393
6394`:color-symbols SYMBOLS'
6395
6396SYMBOLS must be a list of pairs (NAME . COLOR), with NAME being the
6397name of color as it appears in an XPM file, and COLOR being an X color
6398name.
6399
6400XPM images can be built from memory instead of files. In that case,
6401add a `:data' property instead of a `:file' property.
6402
a933dad1
DL
6403The XPM library uses libz in its implementation so that it is able
6404to display compressed images.
6405
6406**** PBM, image type `pbm'
6407
6408PBM images don't require an external library. Color, gray-scale and
2b8e9c91 6409mono images are supported. Additional image properties supported for
0e467b97 6410mono images are:
2b8e9c91
GM
6411
6412`:foreground FG'
6413
94736c7c 6414FG must be a string specifying the image foreground color, or nil
0e467b97 6415meaning to use the default. Default is the frame's foreground color.
2b8e9c91
GM
6416
6417`:background FG'
6418
0e467b97 6419BG must be a string specifying the image background color, or nil
94736c7c 6420meaning to use the default. Default is the frame's background color.
a933dad1
DL
6421
6422**** JPEG, image type `jpeg'
6423
6424Support for JPEG images requires the external library `libjpeg',
0e467b97
JB
6425package `jpegsrc.v6a.tar.gz', or later. There are no additional image
6426properties defined.
3bd37feb 6427
a933dad1
DL
6428**** TIFF, image type `tiff'
6429
6430Support for TIFF images requires the external library `libtiff',
6431package `tiff-v3.4-tar.gz', or later. There are no additional image
6432properties defined.
6433
6434**** GIF, image type `gif'
6435
6436Support for GIF images requires the external library `libungif', package
6437`libungif-4.1.0', or later.
6438
6439Additional image properties supported are:
6440
6441`:index INDEX'
6442
6443INDEX must be an integer >= 0. Load image number INDEX from a
8a33023e 6444multi-image GIF file. An error is signaled if INDEX is too large.
a933dad1
DL
6445
6446This could be used to implement limited support for animated GIFs.
6447For example, the following function displays a multi-image GIF file
6448at point-min in the current buffer, switching between sub-images
6449every 0.1 seconds.
6450
6451(defun show-anim (file max)
6452 "Display multi-image GIF file FILE which contains MAX subimages."
6453 (display-anim (current-buffer) file 0 max t))
6454
6455(defun display-anim (buffer file idx max first-time)
6456 (when (= idx max)
6457 (setq idx 0))
518df5c4 6458 (let ((img (create-image file nil nil :index idx)))
a933dad1
DL
6459 (save-excursion
6460 (set-buffer buffer)
6461 (goto-char (point-min))
6462 (unless first-time (delete-char 1))
6463 (insert-image img "x"))
6464 (run-with-timer 0.1 nil 'display-anim buffer file (1+ idx) max nil)))
6465
6466**** PNG, image type `png'
6467
6468Support for PNG images requires the external library `libpng',
6469package `libpng-1.0.2.tar.gz', or later. There are no additional image
6470properties defined.
6471
6472**** Ghostscript, image type `postscript'.
6473
6474Additional image properties supported are:
6475
6476`:pt-width WIDTH'
6477
6478WIDTH is width of the image in pt (1/72 inch). WIDTH must be an
b246b1f6 6479integer. This is a required property.
a933dad1
DL
6480
6481`:pt-height HEIGHT'
6482
6483HEIGHT specifies the height of the image in pt (1/72 inch). HEIGHT
b246b1f6 6484must be a integer. This is an required property.
a933dad1
DL
6485
6486`:bounding-box BOX'
6487
6488BOX must be a list or vector of 4 integers giving the bounding box of
6489the PS image, analogous to the `BoundingBox' comment found in PS
6490files. This is an required property.
6491
6492Part of the Ghostscript interface is implemented in Lisp. See
6493lisp/gs.el.
6494
6495*** Lisp interface.
6496
79214ddf
FP
6497The variable `image-types' contains a list of those image types
6498which are supported in the current configuration.
a933dad1
DL
6499
6500Images are stored in an image cache and removed from the cache when
6501they haven't been displayed for `image-cache-eviction-delay seconds.
6502The function `clear-image-cache' can be used to clear the image cache
084cec2f
GM
6503manually. Images in the cache are compared with `equal', i.e. all
6504images with `equal' specifications share the same image.
a933dad1
DL
6505
6506*** Simplified image API, image.el
6507
6508The new Lisp package image.el contains functions that simplify image
6509creation and putting images into text. The function `create-image'
6510can be used to create images. The macro `defimage' can be used to
6511define an image based on available image types. The functions
6512`put-image' and `insert-image' can be used to insert an image into a
6513buffer.
6514
a933dad1
DL
6515** Display margins.
6516
6517Windows can now have margins which are used for special text
6518and images.
6519
6520To give a window margins, either set the buffer-local variables
6521`left-margin-width' and `right-margin-width', or call
6522`set-window-margins'. The function `window-margins' can be used to
6523obtain the current settings. To make `left-margin-width' and
6524`right-margin-width' take effect, you must set them before displaying
6525the buffer in a window, or use `set-window-buffer' to force an update
6526of the display margins.
6527
6528You can put text in margins by giving it a `display' text property
6529containing a pair of the form `(LOCATION . VALUE)', where LOCATION is
6530one of `left-margin' or `right-margin' or nil. VALUE can be either a
6531string, an image specification or a stretch specification (see later
6532in this file).
6533
a933dad1
DL
6534** Help display
6535
6536Emacs displays short help messages in the echo area, when the mouse
6537moves over a tool-bar item or a piece of text that has a text property
6538`help-echo'. This feature also applies to strings in the mode line
6539that have a `help-echo' property.
6540
9662da0b 6541If the value of the `help-echo' property is a function, that function
85a8aca9 6542is called with three arguments WINDOW, OBJECT and POSITION. WINDOW is
c20aeb83
GM
6543the window in which the help was found.
6544
6545If OBJECT is a buffer, POS is the position in the buffer where the
6546`help-echo' text property was found.
6547
6548If OBJECT is an overlay, that overlay has a `help-echo' property, and
6549POS is the position in the overlay's buffer under the mouse.
6550
6551If OBJECT is a string (an overlay string or a string displayed with
5ed8d5af 6552the `display' property), POS is the position in that string under the
c20aeb83 6553mouse.
d5aa31d8 6554
9662da0b
GM
6555If the value of the `help-echo' property is neither a function nor a
6556string, it is evaluated to obtain a help string.
6557
6558For tool-bar and menu-bar items, their key definition is used to
6559determine the help to display. If their definition contains a
6560property `:help FORM', FORM is evaluated to determine the help string.
6561For tool-bar items without a help form, the caption of the item is
6562used as help string.
a933dad1
DL
6563
6564The hook `show-help-function' can be set to a function that displays
f0298744
DL
6565the help string differently. For example, enabling a tooltip window
6566causes the help display to appear there instead of in the echo area.
a933dad1 6567
a933dad1
DL
6568** Vertical fractional scrolling.
6569
6570The display of text in windows can be scrolled smoothly in pixels.
6571This is useful, for example, for making parts of large images visible.
6572
6573The function `window-vscroll' returns the current value of vertical
6574scrolling, a non-negative fraction of the canonical character height.
6575The function `set-window-vscroll' can be used to set the vertical
6576scrolling value. Here is an example of how these function might be
6577used.
6578
79214ddf
FP
6579 (global-set-key [A-down]
6580 #'(lambda ()
a933dad1 6581 (interactive)
79214ddf 6582 (set-window-vscroll (selected-window)
a933dad1 6583 (+ 0.5 (window-vscroll)))))
79214ddf 6584 (global-set-key [A-up]
a933dad1
DL
6585 #'(lambda ()
6586 (interactive)
79214ddf 6587 (set-window-vscroll (selected-window)
a933dad1
DL
6588 (- (window-vscroll) 0.5)))))
6589
a933dad1
DL
6590** New hook `fontification-functions'.
6591
6592Functions from `fontification-functions' are called from redisplay
6593when it encounters a region of text that is not yet fontified. This
6594variable automatically becomes buffer-local when set. Each function
6595is called with one argument, POS.
6596
6597At least one of the hook functions should fontify one or more
6598characters starting at POS in the current buffer. It should mark them
6599as fontified by giving them a non-nil value of the `fontified' text
6600property. It may be reasonable for these functions to check for the
6601`fontified' property and not put it back on, but they do not have to.
6602
a933dad1
DL
6603** Tool bar support.
6604
6605Emacs supports a tool bar at the top of a frame under X. The frame
6606parameter `tool-bar-lines' (X resource "toolBar", class "ToolBar")
6607controls how may lines to reserve for the tool bar. A zero value
6608suppresses the tool bar. If the value is non-zero and
6609`auto-resize-tool-bars' is non-nil the tool bar's size will be changed
6610automatically so that all tool bar items are visible.
6611
6612*** Tool bar item definitions
6613
6614Tool bar items are defined using `define-key' with a prefix-key
6615`tool-bar'. For example `(define-key global-map [tool-bar item1] ITEM)'
6616where ITEM is a list `(menu-item CAPTION BINDING PROPS...)'.
79214ddf 6617
a933dad1
DL
6618CAPTION is the caption of the item, If it's not a string, it is
6619evaluated to get a string. The caption is currently not displayed in
6620the tool bar, but it is displayed if the item doesn't have a `:help'
6621property (see below).
79214ddf 6622
a933dad1
DL
6623BINDING is the tool bar item's binding. Tool bar items with keymaps as
6624binding are currently ignored.
6625
6626The following properties are recognized:
6627
6628`:enable FORM'.
79214ddf 6629
a933dad1
DL
6630FORM is evaluated and specifies whether the tool bar item is enabled
6631or disabled.
79214ddf 6632
a933dad1 6633`:visible FORM'
79214ddf 6634
a933dad1 6635FORM is evaluated and specifies whether the tool bar item is displayed.
79214ddf 6636
a933dad1
DL
6637`:filter FUNCTION'
6638
6639FUNCTION is called with one parameter, the same list BINDING in which
6640FUNCTION is specified as the filter. The value FUNCTION returns is
6641used instead of BINDING to display this item.
79214ddf 6642
a933dad1
DL
6643`:button (TYPE SELECTED)'
6644
6645TYPE must be one of `:radio' or `:toggle'. SELECTED is evaluated
6646and specifies whether the button is selected (pressed) or not.
79214ddf 6647
a933dad1
DL
6648`:image IMAGES'
6649
6650IMAGES is either a single image specification or a vector of four
6651image specifications. If it is a vector, this table lists the
6652meaning of each of the four elements:
6653
6654 Index Use when item is
6655 ----------------------------------------
6656 0 enabled and selected
6657 1 enabled and deselected
6658 2 disabled and selected
6659 3 disabled and deselected
79214ddf 6660
4ba7246d
GM
6661If IMAGE is a single image specification, a Laplace edge-detection
6662algorithm is used on that image to draw the image in disabled state.
6663
a933dad1 6664`:help HELP-STRING'.
79214ddf 6665
a933dad1
DL
6666Gives a help string to display for the tool bar item. This help
6667is displayed when the mouse is moved over the item.
6668
dab96841 6669The function `toolbar-add-item' is a convenience function for adding
d1e68bce
DL
6670toolbar items generally, and `tool-bar-add-item-from-menu' can be used
6671to define a toolbar item with a binding copied from an item on the
6672menu bar.
dab96841 6673
8628686a
DL
6674The default bindings use a menu-item :filter to derive the tool-bar
6675dynamically from variable `tool-bar-map' which may be set
6676buffer-locally to override the global map.
6677
a933dad1
DL
6678*** Tool-bar-related variables.
6679
6680If `auto-resize-tool-bar' is non-nil, the tool bar will automatically
6681resize to show all defined tool bar items. It will never grow larger
6682than 1/4 of the frame's size.
6683
79214ddf 6684If `auto-raise-tool-bar-buttons' is non-nil, tool bar buttons will be
a933dad1
DL
6685raised when the mouse moves over them.
6686
6687You can add extra space between tool bar items by setting
6688`tool-bar-button-margin' to a positive integer specifying a number of
b30623be
GM
6689pixels, or a pair of integers (X . Y) specifying horizontal and
6690vertical margins . Default is 1.
a933dad1
DL
6691
6692You can change the shadow thickness of tool bar buttons by setting
6693`tool-bar-button-relief' to an integer. Default is 3.
6694
6695*** Tool-bar clicks with modifiers.
6696
6697You can bind commands to clicks with control, shift, meta etc. on
79214ddf 6698a tool bar item. If
a933dad1
DL
6699
6700 (define-key global-map [tool-bar shell]
6701 '(menu-item "Shell" shell
6702 :image (image :type xpm :file "shell.xpm")))
6703
6704is the original tool bar item definition, then
6705
6706 (define-key global-map [tool-bar S-shell] 'some-command)
6707
6708makes a binding to run `some-command' for a shifted click on the same
6709item.
6710
6711** Mode line changes.
6712
a933dad1
DL
6713*** Mouse-sensitive mode line.
6714
6715The mode line can be made mouse-sensitive by displaying strings there
6716that have a `local-map' text property. There are three ways to display
6717a string with a `local-map' property in the mode line.
6718
67191. The mode line spec contains a variable whose string value has
6720a `local-map' text property.
6721
67222. The mode line spec contains a format specifier (e.g. `%12b'), and
6723that format specifier has a `local-map' property.
6724
67253. The mode line spec contains a list containing `:eval FORM'. FORM
6726is evaluated. If the result is a string, and that string has a
6727`local-map' property.
6728
6729The same mechanism is used to determine the `face' and `help-echo'
6730properties of strings in the mode line. See `bindings.el' for an
6731example.
6732
54522c9f
GM
6733*** If a mode line element has the form `(:eval FORM)', FORM is
6734evaluated and the result is used as mode line element.
6735
a933dad1
DL
6736*** You can suppress mode-line display by setting the buffer-local
6737variable mode-line-format to nil.
6738
a933dad1
DL
6739*** A headerline can now be displayed at the top of a window.
6740
6741This mode line's contents are controlled by the new variable
6742`header-line-format' and `default-header-line-format' which are
6743completely analogous to `mode-line-format' and
6744`default-mode-line-format'. A value of nil means don't display a top
6745line.
6746
6747The appearance of top mode lines is controlled by the face
6748`header-line'.
6749
6750The function `coordinates-in-window-p' returns `header-line' for a
6751position in the header-line.
6752
a933dad1
DL
6753** Text property `display'
6754
623a0aae
GM
6755The `display' text property is used to insert images into text,
6756replace text with other text, display text in marginal area, and it is
6757also used to control other aspects of how text displays. The value of
6758the `display' property should be a display specification, as described
a933dad1
DL
6759below, or a list or vector containing display specifications.
6760
623a0aae
GM
6761*** Replacing text, displaying text in marginal areas
6762
6763To replace the text having the `display' property with some other
6764text, use a display specification of the form `(LOCATION STRING)'.
6765
6766If LOCATION is `(margin left-margin)', STRING is displayed in the left
6767marginal area, if it is `(margin right-margin)', it is displayed in
6768the right marginal area, and if LOCATION is `(margin nil)' STRING
6769is displayed in the text. In the latter case you can also use the
6770simpler form STRING as property value.
6771
a933dad1
DL
6772*** Variable width and height spaces
6773
6774To display a space of fractional width or height, use a display
6775specification of the form `(LOCATION STRECH)'. If LOCATION is
6776`(margin left-margin)', the space is displayed in the left marginal
6777area, if it is `(margin right-margin)', it is displayed in the right
6778marginal area, and if LOCATION is `(margin nil)' the space is
6779displayed in the text. In the latter case you can also use the
6780simpler form STRETCH as property value.
6781
6782The stretch specification STRETCH itself is a list of the form `(space
6783PROPS)', where PROPS is a property list which can contain the
6784properties described below.
6785
6786The display of the fractional space replaces the display of the
6787characters having the `display' property.
6788
6789- :width WIDTH
6790
6791Specifies that the space width should be WIDTH times the normal
6792character width. WIDTH can be an integer or floating point number.
6793
6794- :relative-width FACTOR
6795
6796Specifies that the width of the stretch should be computed from the
6797first character in a group of consecutive characters that have the
6798same `display' property. The computation is done by multiplying the
6799width of that character by FACTOR.
6800
6801- :align-to HPOS
6802
6803Specifies that the space should be wide enough to reach HPOS. The
6804value HPOS is measured in units of the normal character width.
6805
6806Exactly one of the above properties should be used.
6807
6808- :height HEIGHT
6809
6810Specifies the height of the space, as HEIGHT, measured in terms of the
6811normal line height.
6812
6813- :relative-height FACTOR
6814
6815The height of the space is computed as the product of the height
6816of the text having the `display' property and FACTOR.
6817
6818- :ascent ASCENT
6819
6820Specifies that ASCENT percent of the height of the stretch should be
6821used for the ascent of the stretch, i.e. for the part above the
6822baseline. The value of ASCENT must be a non-negative number less or
6823equal to 100.
6824
6825You should not use both `:height' and `:relative-height' together.
6826
6827*** Images
6828
6829A display specification for an image has the form `(LOCATION
6830. IMAGE)', where IMAGE is an image specification. The image replaces,
6831in the display, the characters having this display specification in
6832their `display' text property. If LOCATION is `(margin left-margin)',
6833the image will be displayed in the left marginal area, if it is
6834`(margin right-margin)' it will be displayed in the right marginal
6835area, and if LOCATION is `(margin nil)' the image will be displayed in
6836the text. In the latter case you can also use the simpler form IMAGE
6837as display specification.
6838
6839*** Other display properties
6840
c9e73000 6841- (space-width FACTOR)
a933dad1
DL
6842
6843Specifies that space characters in the text having that property
6844should be displayed FACTOR times as wide as normal; FACTOR must be an
6845integer or float.
6846
c9e73000 6847- (height HEIGHT)
a933dad1
DL
6848
6849Display text having this property in a font that is smaller or larger.
6850
6851If HEIGHT is a list of the form `(+ N)', where N is an integer, that
6852means to use a font that is N steps larger. If HEIGHT is a list of
6853the form `(- N)', that means to use a font that is N steps smaller. A
6854``step'' is defined by the set of available fonts; each size for which
6855a font is available counts as a step.
6856
6857If HEIGHT is a number, that means to use a font that is HEIGHT times
6858as tall as the frame's default font.
6859
6860If HEIGHT is a symbol, it is called as a function with the current
6861height as argument. The function should return the new height to use.
6862
6863Otherwise, HEIGHT is evaluated to get the new height, with the symbol
6864`height' bound to the current specified font height.
6865
c9e73000 6866- (raise FACTOR)
a933dad1
DL
6867
6868FACTOR must be a number, specifying a multiple of the current
6869font's height. If it is positive, that means to display the characters
6870raised. If it is negative, that means to display them lower down. The
6871amount of raising or lowering is computed without taking account of the
c9e73000 6872`height' subproperty.
a933dad1
DL
6873
6874*** Conditional display properties
6875
6876All display specifications can be conditionalized. If a specification
6c6caea2
GM
6877has the form `(when CONDITION . SPEC)', the specification SPEC applies
6878only when CONDITION yields a non-nil value when evaluated. During the
6879evaluation, `object' is bound to the string or buffer having the
6880conditional display property; `position' and `buffer-position' are
6881bound to the position within `object' and the buffer position where
6882the display property was found, respectively. Both positions can be
6883different when object is a string.
a933dad1
DL
6884
6885The normal specification consisting of SPEC only is equivalent to
6c6caea2 6886`(when t . SPEC)'.
a933dad1 6887
a933dad1
DL
6888** New menu separator types.
6889
6890Emacs now supports more than one menu separator type. Menu items with
6891item names consisting of dashes only (including zero dashes) are
6892treated like before. In addition, the following item names are used
6893to specify other menu separator types.
6894
6895- `--no-line' or `--space', or `--:space', or `--:noLine'
6896
6897No separator lines are drawn, but a small space is inserted where the
6898separator occurs.
6899
6900- `--single-line' or `--:singleLine'
6901
6902A single line in the menu's foreground color.
6903
6904- `--double-line' or `--:doubleLine'
6905
6906A double line in the menu's foreground color.
6907
6908- `--single-dashed-line' or `--:singleDashedLine'
6909
6910A single dashed line in the menu's foreground color.
6911
6912- `--double-dashed-line' or `--:doubleDashedLine'
6913
6914A double dashed line in the menu's foreground color.
6915
6916- `--shadow-etched-in' or `--:shadowEtchedIn'
6917
f3780fe4 6918A single line with 3D sunken appearance. This is the form
a933dad1
DL
6919displayed for item names consisting of dashes only.
6920
6921- `--shadow-etched-out' or `--:shadowEtchedOut'
6922
6923A single line with 3D raised appearance.
6924
6925- `--shadow-etched-in-dash' or `--:shadowEtchedInDash'
6926
6927A single dashed line with 3D sunken appearance.
6928
6929- `--shadow-etched-out-dash' or `--:shadowEtchedOutDash'
6930
6931A single dashed line with 3D raise appearance.
6932
6933- `--shadow-double-etched-in' or `--:shadowDoubleEtchedIn'
6934
6935Two lines with 3D sunken appearance.
6936
6937- `--shadow-double-etched-out' or `--:shadowDoubleEtchedOut'
6938
6939Two lines with 3D raised appearance.
6940
6941- `--shadow-double-etched-in-dash' or `--:shadowDoubleEtchedInDash'
6942
6943Two dashed lines with 3D sunken appearance.
6944
6945- `--shadow-double-etched-out-dash' or `--:shadowDoubleEtchedOutDash'
6946
6947Two dashed lines with 3D raised appearance.
6948
6949Under LessTif/Motif, the last four separator types are displayed like
6950the corresponding single-line separators.
6951
a933dad1
DL
6952** New frame parameters for scroll bar colors.
6953
6954The new frame parameters `scroll-bar-foreground' and
6955`scroll-bar-background' can be used to change scroll bar colors.
6956Their value must be either a color name, a string, or nil to specify
6957that scroll bars should use a default color. For toolkit scroll bars,
6958default colors are toolkit specific. For non-toolkit scroll bars, the
6959default background is the background color of the frame, and the
6960default foreground is black.
6961
6962The X resource name of these parameters are `scrollBarForeground'
6963(class ScrollBarForeground) and `scrollBarBackground' (class
6964`ScrollBarBackground').
6965
6966Setting these parameters overrides toolkit specific X resource
6967settings for scroll bar colors.
6968
a933dad1
DL
6969** You can set `redisplay-dont-pause' to a non-nil value to prevent
6970display updates from being interrupted when input is pending.
6971
a933dad1
DL
6972** Changing a window's width may now change its window start if it
6973starts on a continuation line. The new window start is computed based
6974on the window's new width, starting from the start of the continued
6975line as the start of the screen line with the minimum distance from
6976the original window start.
6977
a933dad1
DL
6978** The variable `hscroll-step' and the functions
6979`hscroll-point-visible' and `hscroll-window-column' have been removed
6980now that proper horizontal scrolling is implemented.
6981
a933dad1
DL
6982** Windows can now be made fixed-width and/or fixed-height.
6983
6984A window is fixed-size if its buffer has a buffer-local variable
6985`window-size-fixed' whose value is not nil. A value of `height' makes
6986windows fixed-height, a value of `width' makes them fixed-width, any
6987other non-nil value makes them both fixed-width and fixed-height.
6988
6989The following code makes all windows displaying the current buffer
6990fixed-width and fixed-height.
6991
6992 (set (make-local-variable 'window-size-fixed) t)
6993
6994A call to enlarge-window on a window gives an error if that window is
6995fixed-width and it is tried to change the window's width, or if the
6996window is fixed-height, and it is tried to change its height. To
6997change the size of a fixed-size window, bind `window-size-fixed'
6998temporarily to nil, for example
6999
7000 (let ((window-size-fixed nil))
7001 (enlarge-window 10))
7002
79214ddf 7003Likewise, an attempt to split a fixed-height window vertically,
a933dad1 7004or a fixed-width window horizontally results in a error.
e411ce4b
EZ
7005
7006** The cursor-type frame parameter is now supported on MS-DOS
7007terminals. When Emacs starts, it by default changes the cursor shape
7008to a solid box, as it does on Unix. The `cursor-type' frame parameter
7009overrides this as it does on Unix, except that the bar cursor is
7010horizontal rather than vertical (since the MS-DOS display doesn't
7011support a vertical-bar cursor).
76299050 7012
3787e12e 7013
05197f40 7014\f
3787e12e
GM
7015* Emacs 20.7 is a bug-fix release with few user-visible changes
7016
7017** It is now possible to use CCL-based coding systems for keyboard
7018input.
7019
7020** ange-ftp now handles FTP security extensions, like Kerberos.
7021
7022** Rmail has been extended to recognize more forms of digest messages.
7023
7024** Now, most coding systems set in keyboard coding system work not
7025only for character input, but also in incremental search. The
7026exceptions are such coding systems that handle 2-byte character sets
7027(e.g euc-kr, euc-jp) and that use ISO's escape sequence
7028(e.g. iso-2022-jp). They are ignored in incremental search.
7029
7030** Support for Macintosh PowerPC-based machines running GNU/Linux has
7031been added.
7032
05197f40 7033\f
3787e12e
GM
7034* Emacs 20.6 is a bug-fix release with one user-visible change
7035
7036** Support for ARM-based non-RISCiX machines has been added.
7037
0cb146bf 7038
05197f40 7039\f
3787e12e
GM
7040* Emacs 20.5 is a bug-fix release with no user-visible changes.
7041
7042** Not new, but not mentioned before:
7043M-w when Transient Mark mode is enabled disables the mark.
05197f40 7044\f
3787e12e
GM
7045* Changes in Emacs 20.4
7046
7047** Init file may be called .emacs.el.
7048
7049You can now call the Emacs init file `.emacs.el'.
7050Formerly the name had to be `.emacs'. If you use the name
7051`.emacs.el', you can byte-compile the file in the usual way.
7052
7053If both `.emacs' and `.emacs.el' exist, the latter file
7054is the one that is used.
7055
7056** shell-command, and shell-command-on-region, now return
7057the exit code of the command (unless it is asynchronous).
7058Also, you can specify a place to put the error output,
7059separate from the command's regular output.
7060Interactively, the variable shell-command-default-error-buffer
7061says where to put error output; set it to a buffer name.
7062In calls from Lisp, an optional argument ERROR-BUFFER specifies
7063the buffer name.
7064
7065When you specify a non-nil error buffer (or buffer name), any error
7066output is inserted before point in that buffer, with \f\n to separate
7067it from the previous batch of error output. The error buffer is not
7068cleared, so error output from successive commands accumulates there.
7069
7070** Setting the default value of enable-multibyte-characters to nil in
7071the .emacs file, either explicitly using setq-default, or via Custom,
7072is now essentially equivalent to using --unibyte: all buffers
7073created during startup will be made unibyte after loading .emacs.
7074
7075** C-x C-f now handles the wildcards * and ? in file names. For
7076example, typing C-x C-f c*.c RET visits all the files whose names
7077match c*.c. To visit a file whose name contains * or ?, add the
7078quoting sequence /: to the beginning of the file name.
7079
7080** The M-x commands keep-lines, flush-lines and count-matches
7081now have the same feature as occur and query-replace:
7082if the pattern contains any upper case letters, then
7083they never ignore case.
7084
7085** The end-of-line format conversion feature previously mentioned
7086under `* Emacs 20.1 changes for MS-DOS and MS-Windows' actually
7087applies to all operating systems. Emacs recognizes from the contents
7088of a file what convention it uses to separate lines--newline, CRLF, or
7089just CR--and automatically converts the contents to the normal Emacs
7090convention (using newline to separate lines) for editing. This is a
7091part of the general feature of coding system conversion.
7092
7093If you subsequently save the buffer, Emacs converts the text back to
7094the same format that was used in the file before.
7095
7096You can turn off end-of-line conversion by setting the variable
7097`inhibit-eol-conversion' to non-nil, e.g. with Custom in the MULE group.
7098
7099** The character set property `prefered-coding-system' has been
7100renamed to `preferred-coding-system', for the sake of correct spelling.
7101This is a fairly internal feature, so few programs should be affected.
7102
7103** Mode-line display of end-of-line format is changed.
7104The indication of the end-of-line format of the file visited by a
7105buffer is now more explicit when that format is not the usual one for
7106your operating system. For example, the DOS-style end-of-line format
7107is displayed as "(DOS)" on Unix and GNU/Linux systems. The usual
7108end-of-line format is still displayed as a single character (colon for
7109Unix, backslash for DOS and Windows, and forward slash for the Mac).
7110
7111The values of the variables eol-mnemonic-unix, eol-mnemonic-dos,
7112eol-mnemonic-mac, and eol-mnemonic-undecided, which are strings,
7113control what is displayed in the mode line for each end-of-line
7114format. You can now customize these variables.
7115
7116** In the previous version of Emacs, tar-mode didn't work well if a
7117filename contained non-ASCII characters. Now this is fixed. Such a
7118filename is decoded by file-name-coding-system if the default value of
7119enable-multibyte-characters is non-nil.
7120
7121** The command temp-buffer-resize-mode toggles a minor mode
7122in which temporary buffers (such as help buffers) are given
7123windows just big enough to hold the whole contents.
7124
7125** If you use completion.el, you must now run the function
7126dynamic-completion-mode to enable it. Just loading the file
7127doesn't have any effect.
7128
7129** In Flyspell mode, the default is now to make just one Ispell process,
7130not one per buffer.
7131
7132** If you use iswitchb but do not call (iswitchb-default-keybindings) to
7133use the default keybindings, you will need to add the following line:
7134 (add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)
7135
7136** Auto-show mode is no longer enabled just by loading auto-show.el.
7137To control it, set `auto-show-mode' via Custom or use the
7138`auto-show-mode' command.
7139
7140** Handling of X fonts' ascent/descent parameters has been changed to
7141avoid redisplay problems. As a consequence, compared with previous
7142versions the line spacing and frame size now differ with some font
7143choices, typically increasing by a pixel per line. This change
7144occurred in version 20.3 but was not documented then.
7145
7146** If you select the bar cursor style, it uses the frame's
7147cursor-color, rather than the cursor foreground pixel.
7148
7149** In multibyte mode, Rmail decodes incoming MIME messages using the
7150character set specified in the message. If you want to disable this
7151feature, set the variable rmail-decode-mime-charset to nil.
7152
7153** Not new, but not mentioned previously in NEWS: when you use #! at
7154the beginning of a file to make it executable and specify an
7155interpreter program, Emacs looks on the second line for the -*- mode
7156and variable specification, as well as on the first line.
7157
7158** Support for IBM codepage encoding of non-ASCII characters.
7159
7160The new command M-x codepage-setup creates a special coding system
7161that can be used to convert text between a specific IBM codepage and
7162one of the character sets built into Emacs which matches that
7163codepage. For example, codepage 850 corresponds to Latin-1 character
7164set, codepage 855 corresponds to Cyrillic-ISO character set, etc.
7165
7166Windows codepages 1250, 1251 and some others, where Windows deviates
7167from the corresponding ISO character set, are also supported.
7168
7169IBM box-drawing characters and other glyphs which don't have
7170equivalents in the corresponding ISO character set, are converted to
7171a character defined by dos-unsupported-char-glyph on MS-DOS, and to
7172`?' on other systems.
7173
7174IBM codepages are widely used on MS-DOS and MS-Windows, so this
7175feature is most useful on those platforms, but it can also be used on
7176Unix.
7177
7178Emacs compiled for MS-DOS automatically loads the support for the
7179current codepage when it starts.
7180
7181** Mail changes
7182
7183*** When mail is sent using compose-mail (C-x m), and if
7184`mail-send-nonascii' is set to the new default value `mime',
7185appropriate MIME headers are added. The headers are added only if
7186non-ASCII characters are present in the body of the mail, and no other
7187MIME headers are already present. For example, the following three
7188headers are added if the coding system used in the *mail* buffer is
7189latin-1:
7190
7191 MIME-version: 1.0
7192 Content-type: text/plain; charset=iso-8859-1
7193 Content-Transfer-Encoding: 8bit
7194
7195*** The new variable default-sendmail-coding-system specifies the
7196default way to encode outgoing mail. This has higher priority than
7197default-buffer-file-coding-system but has lower priority than
7198sendmail-coding-system and the local value of
7199buffer-file-coding-system.
7200
7201You should not set this variable manually. Instead, set
7202sendmail-coding-system to specify a fixed encoding for all outgoing
7203mail.
7204
7205*** When you try to send a message that contains non-ASCII characters,
7206if the coding system specified by those variables doesn't handle them,
7207Emacs will ask you to select a suitable coding system while showing a
7208list of possible coding systems.
7209
7210** CC Mode changes
7211
7212*** c-default-style can now take an association list that maps major
7213modes to style names. When this variable is an alist, Java mode no
7214longer hardcodes a setting to "java" style. See the variable's
7215docstring for details.
7216
7217*** It's now possible to put a list as the offset on a syntactic
7218symbol. The list is evaluated recursively until a non-nil offset is
7219found. This is useful to combine several lineup functions to act in a
7220prioritized order on a single line. However, none of the supplied
7221lineup functions use this feature currently.
7222
7223*** New syntactic symbol catch-clause, which is used on the "catch" and
7224"finally" lines in try-catch constructs in C++ and Java.
7225
7226*** New cleanup brace-catch-brace on c-cleanup-list, which does for
7227"catch" lines what brace-elseif-brace does for "else if" lines.
7228
7229*** The braces of Java anonymous inner classes are treated separately
7230from the braces of other classes in auto-newline mode. Two new
7231symbols inexpr-class-open and inexpr-class-close may be used on
7232c-hanging-braces-alist to control the automatic newlines used for
7233anonymous classes.
7234
7235*** Support for the Pike language added, along with new Pike specific
7236syntactic symbols: inlambda, lambda-intro-cont
7237
7238*** Support for Java anonymous classes via new syntactic symbol
7239inexpr-class. New syntactic symbol inexpr-statement for Pike
7240support and gcc-style statements inside expressions. New lineup
7241function c-lineup-inexpr-block.
7242
7243*** New syntactic symbol brace-entry-open which is used in brace lists
7244(i.e. static initializers) when a list entry starts with an open
7245brace. These used to be recognized as brace-list-entry's.
7246c-electric-brace also recognizes brace-entry-open braces
7247(brace-list-entry's can no longer be electrified).
7248
7249*** New command c-indent-line-or-region, not bound by default.
7250
7251*** `#' is only electric when typed in the indentation of a line.
7252
7253*** Parentheses are now electric (via the new command c-electric-paren)
7254for auto-reindenting lines when parens are typed.
7255
7256*** In "gnu" style, inline-open offset is now set to zero.
7257
7258*** Uniform handling of the inclass syntactic symbol. The indentation
7259associated with it is now always relative to the class opening brace.
7260This means that the indentation behavior has changed in some
7261circumstances, but only if you've put anything besides 0 on the
7262class-open syntactic symbol (none of the default styles do that).
7263
7264** Gnus changes.
7265
7266*** New functionality for using Gnus as an offline newsreader has been
7267added. A plethora of new commands and modes have been added. See the
7268Gnus manual for the full story.
7269
7270*** The nndraft backend has returned, but works differently than
7271before. All Message buffers are now also articles in the nndraft
7272group, which is created automatically.
7273
7274*** `gnus-alter-header-function' can now be used to alter header
7275values.
7276
7277*** `gnus-summary-goto-article' now accept Message-ID's.
7278
7279*** A new Message command for deleting text in the body of a message
7280outside the region: `C-c C-v'.
7281
7282*** You can now post to component group in nnvirtual groups with
7283`C-u C-c C-c'.
7284
7285*** `nntp-rlogin-program' -- new variable to ease customization.
7286
7287*** `C-u C-c C-c' in `gnus-article-edit-mode' will now inhibit
7288re-highlighting of the article buffer.
7289
7290*** New element in `gnus-boring-article-headers' -- `long-to'.
7291
7292*** `M-i' symbolic prefix command. See the section "Symbolic
7293Prefixes" in the Gnus manual for details.
7294
7295*** `L' and `I' in the summary buffer now take the symbolic prefix
7296`a' to add the score rule to the "all.SCORE" file.
7297
7298*** `gnus-simplify-subject-functions' variable to allow greater
7299control over simplification.
7300
7301*** `A T' -- new command for fetching the current thread.
7302
7303*** `/ T' -- new command for including the current thread in the
7304limit.
7305
7306*** `M-RET' is a new Message command for breaking cited text.
7307
7308*** \\1-expressions are now valid in `nnmail-split-methods'.
7309
7310*** The `custom-face-lookup' function has been removed.
7311If you used this function in your initialization files, you must
7312rewrite them to use `face-spec-set' instead.
7313
8a33023e 7314*** Canceling now uses the current select method. Symbolic prefix
3787e12e
GM
7315`a' forces normal posting method.
7316
7317*** New command to translate M******** sm*rtq**t*s into proper text
7318-- `W d'.
7319
7320*** For easier debugging of nntp, you can set `nntp-record-commands'
7321to a non-nil value.
7322
7323*** nntp now uses ~/.authinfo, a .netrc-like file, for controlling
7324where and how to send AUTHINFO to NNTP servers.
7325
7326*** A command for editing group parameters from the summary buffer
7327has been added.
7328
7329*** A history of where mails have been split is available.
7330
7331*** A new article date command has been added -- `article-date-iso8601'.
7332
7333*** Subjects can be simplified when threading by setting
7334`gnus-score-thread-simplify'.
7335
7336*** A new function for citing in Message has been added --
7337`message-cite-original-without-signature'.
7338
7339*** `article-strip-all-blank-lines' -- new article command.
7340
7341*** A new Message command to kill to the end of the article has
7342been added.
7343
7344*** A minimum adaptive score can be specified by using the
7345`gnus-adaptive-word-minimum' variable.
7346
7347*** The "lapsed date" article header can be kept continually
7348updated by the `gnus-start-date-timer' command.
7349
7350*** Web listserv archives can be read with the nnlistserv backend.
7351
7352*** Old dejanews archives can now be read by nnweb.
7353
7354*** `gnus-posting-styles' has been re-activated.
7355
7356** Changes to TeX and LaTeX mode
7357
7358*** The new variable `tex-start-options-string' can be used to give
7359options for the TeX run. The default value causes TeX to run in
7360nonstopmode. For an interactive TeX run set it to nil or "".
7361
7362*** The command `tex-feed-input' sends input to the Tex Shell. In a
7363TeX buffer it is bound to the keys C-RET, C-c RET, and C-c C-m (some
7364of these keys may not work on all systems). For instance, if you run
7365TeX interactively and if the TeX run stops because of an error, you
7366can continue it without leaving the TeX buffer by typing C-RET.
7367
7368*** The Tex Shell Buffer is now in `compilation-shell-minor-mode'.
7369All error-parsing commands of the Compilation major mode are available
7370but bound to keys that don't collide with the shell. Thus you can use
7371the Tex Shell for command line executions like a usual shell.
7372
7373*** The commands `tex-validate-region' and `tex-validate-buffer' check
7374the matching of braces and $'s. The errors are listed in a *Occur*
7375buffer and you can use C-c C-c or mouse-2 to go to a particular
7376mismatch.
7377
7378** Changes to RefTeX mode
7379
7380*** The table of contents buffer can now also display labels and
7381file boundaries in addition to sections. Use `l', `i', and `c' keys.
7382
7383*** Labels derived from context (the section heading) are now
7384lowercase by default. To make the label legal in LaTeX, latin-1
7385characters will lose their accent. All Mule characters will be
7386removed from the label.
7387
7388*** The automatic display of cross reference information can also use
7389a window instead of the echo area. See variable `reftex-auto-view-crossref'.
7390
7391*** kpsewhich can be used by RefTeX to find TeX and BibTeX files. See the
7392customization group `reftex-finding-files'.
7393
7394*** The option `reftex-bibfile-ignore-list' has been renamed to
7395`reftex-bibfile-ignore-regexps' and indeed can be fed with regular
7396expressions.
7397
7398*** Multiple Selection buffers are now hidden buffers.
7399
7400** New/deleted modes and packages
7401
7402*** The package snmp-mode.el provides major modes for editing SNMP and
7403SNMPv2 MIBs. It has entries on `auto-mode-alist'.
7404
7405*** The package sql.el provides a major mode, M-x sql-mode, for
7406editing SQL files, and M-x sql-interactive-mode for interacting with
7407SQL interpreters. It has an entry on `auto-mode-alist'.
7408
7409*** M-x highlight-changes-mode provides a minor mode displaying buffer
7410changes with a special face.
7411
7412*** ispell4.el has been deleted. It got in the way of ispell.el and
7413this was hard to fix reliably. It has long been obsolete -- use
7414Ispell 3.1 and ispell.el.
05197f40 7415\f
3787e12e
GM
7416* MS-DOS changes in Emacs 20.4
7417
7418** Emacs compiled for MS-DOS now supports MULE features better.
7419This includes support for display of all ISO 8859-N character sets,
7420conversion to and from IBM codepage encoding of non-ASCII characters,
7421and automatic setup of the MULE environment at startup. For details,
7422check out the section `MS-DOS and MULE' in the manual.
7423
7424The MS-DOS installation procedure automatically configures and builds
7425Emacs with input method support if it finds an unpacked Leim
7426distribution when the config.bat script is run.
7427
7428** Formerly, the value of lpr-command did not affect printing on
7429MS-DOS unless print-region-function was set to nil, but now it
7430controls whether an external program is invoked or output is written
7431directly to a printer port. Similarly, in the previous version of
7432Emacs, the value of ps-lpr-command did not affect PostScript printing
7433on MS-DOS unless ps-printer-name was set to something other than a
7434string (eg. t or `pipe'), but now it controls whether an external
7435program is used. (These changes were made so that configuration of
7436printing variables would be almost identical across all platforms.)
7437
7438** In the previous version of Emacs, PostScript and non-PostScript
7439output was piped to external programs, but because most print programs
7440available for MS-DOS and MS-Windows cannot read data from their standard
7441input, on those systems the data to be output is now written to a
7442temporary file whose name is passed as the last argument to the external
7443program.
7444
7445An exception is made for `print', a standard program on Windows NT,
7446and `nprint', a standard program on Novell Netware. For both of these
7447programs, the command line is constructed in the appropriate syntax
7448automatically, using only the value of printer-name or ps-printer-name
7449as appropriate--the value of the relevant `-switches' variable is
7450ignored, as both programs have no useful switches.
7451
7452** The value of the variable dos-printer (cf. dos-ps-printer), if it has
7453a value, overrides the value of printer-name (cf. ps-printer-name), on
7454MS-DOS and MS-Windows only. This has been true since version 20.3, but
7455was not documented clearly before.
7456
7457** All the Emacs games now work on MS-DOS terminals.
7458This includes Tetris and Snake.
05197f40 7459\f
3787e12e
GM
7460* Lisp changes in Emacs 20.4
7461
7462** New functions line-beginning-position and line-end-position
7463return the position of the beginning or end of the current line.
7464They both accept an optional argument, which has the same
7465meaning as the argument to beginning-of-line or end-of-line.
7466
7467** find-file and allied functions now have an optional argument
7468WILDCARD. If this is non-nil, they do wildcard processing,
7469and visit all files that match the wildcard pattern.
7470
7471** Changes in the file-attributes function.
7472
7473*** The file size returned by file-attributes may be an integer or a float.
7474It is an integer if the size fits in a Lisp integer, float otherwise.
7475
7476*** The inode number returned by file-attributes may be an integer (if
7477the number fits in a Lisp integer) or a cons cell containing two
7478integers.
7479
7480** The new function directory-files-and-attributes returns a list of
7481files in a directory and their attributes. It accepts the same
7482arguments as directory-files and has similar semantics, except that
7483file names and attributes are returned.
7484
7485** The new function file-attributes-lessp is a helper function for
7486sorting the list generated by directory-files-and-attributes. It
8a33023e 7487accepts two arguments, each a list of a file name and its attributes.
3787e12e
GM
7488It compares the file names of each according to string-lessp and
7489returns the result.
7490
7491** The new function file-expand-wildcards expands a wildcard-pattern
7492to produce a list of existing files that match the pattern.
7493
7494** New functions for base64 conversion:
7495
7496The function base64-encode-region converts a part of the buffer
7497into the base64 code used in MIME. base64-decode-region
7498performs the opposite conversion. Line-breaking is supported
7499optionally.
7500
7501Functions base64-encode-string and base64-decode-string do a similar
7502job on the text in a string. They return the value as a new string.
7503
7504**
7505The new function process-running-child-p
7506will tell you if a subprocess has given control of its
7507terminal to its own child process.
7508
7509** interrupt-process and such functions have a new feature:
7510when the second argument is `lambda', they send a signal
7511to the running child of the subshell, if any, but if the shell
7512itself owns its terminal, no signal is sent.
7513
7514** There are new widget types `plist' and `alist' which can
7515be used for customizing variables whose values are plists or alists.
7516
4a389f53 7517** easymenu.el now understands `:key-sequence' and `:style button'.
3787e12e
GM
7518:included is an alias for :visible.
7519
7520easy-menu-add-item now understands the values returned by
7521easy-menu-remove-item and easy-menu-item-present-p. This can be used
7522to move or copy menu entries.
7523
7524** Multibyte editing changes
7525
7526*** The definitions of sref and char-bytes are changed. Now, sref is
7527an alias of aref and char-bytes always returns 1. This change is to
7528make some Emacs Lisp code which works on 20.2 and earlier also
7529work on the latest Emacs. Such code uses a combination of sref and
7530char-bytes in a loop typically as below:
7531 (setq char (sref str idx)
7532 idx (+ idx (char-bytes idx)))
7533The byte-compiler now warns that this is obsolete.
7534
7535If you want to know how many bytes a specific multibyte character
7536(say, CH) occupies in a multibyte buffer, use this code:
7537 (charset-bytes (char-charset ch))
7538
7539*** In multibyte mode, when you narrow a buffer to some region, and the
7540region is preceded or followed by non-ASCII codes, inserting or
7541deleting at the head or the end of the region may signal this error:
7542
8a33023e 7543 Byte combining across boundary of accessible buffer text inhibited
3787e12e
GM
7544
7545This is to avoid some bytes being combined together into a character
7546across the boundary.
7547
7548*** The functions find-charset-region and find-charset-string include
7549`unknown' in the returned list in the following cases:
7550 o The current buffer or the target string is unibyte and
7551 contains 8-bit characters.
7552 o The current buffer or the target string is multibyte and
7553 contains invalid characters.
7554
7555*** The functions decode-coding-region and encode-coding-region remove
7556text properties of the target region. Ideally, they should correctly
7557preserve text properties, but for the moment, it's hard. Removing
7558text properties is better than preserving them in a less-than-correct
7559way.
7560
7561*** prefer-coding-system sets EOL conversion of default coding systems.
7562If the argument to prefer-coding-system specifies a certain type of
7563end of line conversion, the default coding systems set by
7564prefer-coding-system will specify that conversion type for end of line.
7565
7566*** The new function thai-compose-string can be used to properly
7567compose Thai characters in a string.
7568
7569** The primitive `define-prefix-command' now takes an optional third
7570argument NAME, which should be a string. It supplies the menu name
7571for the created keymap. Keymaps created in order to be displayed as
7572menus should always use the third argument.
7573
7574** The meanings of optional second arguments for read-char,
7575read-event, and read-char-exclusive are flipped. Now the second
7576arguments are INHERIT-INPUT-METHOD. These functions use the current
7577input method (if any) if and only if INHERIT-INPUT-METHOD is non-nil.
7578
7579** The new function clear-this-command-keys empties out the contents
7580of the vector that (this-command-keys) returns. This is useful in
7581programs that read passwords, to prevent the passwords from echoing
7582inadvertently as part of the next command in certain cases.
7583
7584** The new macro `with-temp-message' displays a temporary message in
7585the echo area, while executing some Lisp code. Like `progn', it
7586returns the value of the last form, but it also restores the previous
7587echo area contents.
7588
7589 (with-temp-message MESSAGE &rest BODY)
7590
7591** The function `require' now takes an optional third argument
7592NOERROR. If it is non-nil, then there is no error if the
7593requested feature cannot be loaded.
7594
7595** In the function modify-face, an argument of (nil) for the
7596foreground color, background color or stipple pattern
7597means to clear out that attribute.
7598
7599** The `outer-window-id' frame property of an X frame
7600gives the window number of the outermost X window for the frame.
7601
7602** Temporary buffers made with with-output-to-temp-buffer are now
7603read-only by default, and normally use the major mode Help mode
7604unless you put them in some other non-Fundamental mode before the
7605end of with-output-to-temp-buffer.
7606
7607** The new functions gap-position and gap-size return information on
7608the gap of the current buffer.
7609
7610** The new functions position-bytes and byte-to-position provide a way
7611to convert between character positions and byte positions in the
7612current buffer.
7613
7614** vc.el defines two new macros, `edit-vc-file' and `with-vc-file', to
7615facilitate working with version-controlled files from Lisp programs.
7616These macros check out a given file automatically if needed, and check
7617it back in after any modifications have been made.
05197f40 7618\f
3787e12e
GM
7619* Installation Changes in Emacs 20.3
7620
7621** The default value of load-path now includes most subdirectories of
7622the site-specific directories /usr/local/share/emacs/site-lisp and
7623/usr/local/share/emacs/VERSION/site-lisp, in addition to those
7624directories themselves. Both immediate subdirectories and
7625subdirectories multiple levels down are added to load-path.
7626
7627Not all subdirectories are included, though. Subdirectories whose
7628names do not start with a letter or digit are excluded.
7629Subdirectories named RCS or CVS are excluded. Also, a subdirectory
7630which contains a file named `.nosearch' is excluded. You can use
7631these methods to prevent certain subdirectories from being searched.
7632
7633Emacs finds these subdirectories and adds them to load-path when it
7634starts up. While it would be cleaner to find the subdirectories each
7635time Emacs loads a file, that would be much slower.
7636
7637This feature is an incompatible change. If you have stored some Emacs
7638Lisp files in a subdirectory of the site-lisp directory specifically
7639to prevent them from being used, you will need to rename the
7640subdirectory to start with a non-alphanumeric character, or create a
7641`.nosearch' file in it, in order to continue to achieve the desired
7642results.
7643
7644** Emacs no longer includes an old version of the C preprocessor from
7645GCC. This was formerly used to help compile Emacs with C compilers
7646that had limits on the significant length of an identifier, but in
7647fact we stopped supporting such compilers some time ago.
05197f40 7648\f
3787e12e
GM
7649* Changes in Emacs 20.3
7650
7651** The new command C-x z (repeat) repeats the previous command
7652including its argument. If you repeat the z afterward,
7653it repeats the command additional times; thus, you can
7654perform many repetitions with one keystroke per repetition.
7655
7656** Emacs now supports "selective undo" which undoes only within a
7657specified region. To do this, set point and mark around the desired
7658region and type C-u C-x u (or C-u C-_). You can then continue undoing
7659further, within the same region, by repeating the ordinary undo
7660command C-x u or C-_. This will keep undoing changes that were made
7661within the region you originally specified, until either all of them
7662are undone, or it encounters a change which crosses the edge of that
7663region.
7664
7665In Transient Mark mode, undoing when a region is active requests
7666selective undo.
7667
7668** If you specify --unibyte when starting Emacs, then all buffers are
7669unibyte, except when a Lisp program specifically creates a multibyte
7670buffer. Setting the environment variable EMACS_UNIBYTE has the same
7671effect. The --no-unibyte option overrides EMACS_UNIBYTE and directs
7672Emacs to run normally in multibyte mode.
7673
7674The option --unibyte does not affect the reading of Emacs Lisp files,
7675though. If you want a Lisp file to be read in unibyte mode, use
7676-*-unibyte: t;-*- on its first line. That will force Emacs to
7677load that file in unibyte mode, regardless of how Emacs was started.
7678
7679** toggle-enable-multibyte-characters no longer has a key binding and
7680no longer appears in the menu bar. We've realized that changing the
7681enable-multibyte-characters variable in an existing buffer is
7682something that most users not do.
7683
7684** You can specify a coding system to use for the next cut or paste
7685operations through the window system with the command C-x RET X.
7686The coding system can make a difference for communication with other
7687applications.
7688
7689C-x RET x specifies a coding system for all subsequent cutting and
7690pasting operations.
7691
7692** You can specify the printer to use for commands that do printing by
7693setting the variable `printer-name'. Just what a printer name looks
7694like depends on your operating system. You can specify a different
7695printer for the Postscript printing commands by setting
7696`ps-printer-name'.
7697
7698** Emacs now supports on-the-fly spell checking by the means of a
7699minor mode. It is called M-x flyspell-mode. You don't have to remember
7700any other special commands to use it, and you will hardly notice it
7701except when you make a spelling error. Flyspell works by highlighting
7702incorrect words as soon as they are completed or as soon as the cursor
7703hits a new word.
7704
7705Flyspell mode works with whichever dictionary you have selected for
7706Ispell in Emacs. In TeX mode, it understands TeX syntax so as not
7707to be confused by TeX commands.
7708
7709You can correct a misspelled word by editing it into something
7710correct. You can also correct it, or accept it as correct, by
7711clicking on the word with Mouse-2; that gives you a pop-up menu
7712of various alternative replacements and actions.
7713
7714Flyspell mode also proposes "automatic" corrections. M-TAB replaces
7715the current misspelled word with a possible correction. If several
7716corrections are made possible, M-TAB cycles through them in
7717alphabetical order, or in order of decreasing likelihood if
7718flyspell-sort-corrections is nil.
7719
7720Flyspell mode also flags an error when a word is repeated, if
7721flyspell-mark-duplications-flag is non-nil.
7722
7723** Changes in input method usage.
7724
7725Now you can use arrow keys (right, left, down, up) for selecting among
7726the alternatives just the same way as you do by C-f, C-b, C-n, and C-p
7727respectively.
7728
7729You can use the ENTER key to accept the current conversion.
7730
7731If you type TAB to display a list of alternatives, you can select one
7732of the alternatives with Mouse-2.
7733
7734The meaning of the variable `input-method-verbose-flag' is changed so
7735that you can set it to t, nil, `default', or `complex-only'.
7736
7737 If the value is nil, extra guidance is never given.
7738
7739 If the value is t, extra guidance is always given.
7740
7741 If the value is `complex-only', extra guidance is always given only
7742 when you are using complex input methods such as chinese-py.
7743
7744 If the value is `default' (this is the default), extra guidance is
7745 given in the following case:
7746 o When you are using a complex input method.
7747 o When you are using a simple input method but not in the minibuffer.
7748
7749If you are using Emacs through a very slow line, setting
7750input-method-verbose-flag to nil or to complex-only is a good choice,
7751and if you are using an input method you are not familiar with,
7752setting it to t is helpful.
7753
7754The old command select-input-method is now called set-input-method.
7755
7756In the language environment "Korean", you can use the following
7757keys:
7758 Shift-SPC toggle-korean-input-method
7759 C-F9 quail-hangul-switch-symbol-ksc
7760 F9 quail-hangul-switch-hanja
7761These key bindings are canceled when you switch to another language
7762environment.
7763
7764** The minibuffer history of file names now records the specified file
7765names, not the entire minibuffer input. For example, if the
7766minibuffer starts out with /usr/foo/, you might type in /etc/passwd to
7767get
7768
7769 /usr/foo//etc/passwd
7770
7771which stands for the file /etc/passwd.
7772
7773Formerly, this used to put /usr/foo//etc/passwd in the history list.
7774Now this puts just /etc/passwd in the history list.
7775
7776** If you are root, Emacs sets backup-by-copying-when-mismatch to t
7777at startup, so that saving a file will be sure to preserve
7778its owner and group.
7779
7780** find-func.el can now also find the place of definition of Emacs
7781Lisp variables in user-loaded libraries.
7782
7783** C-x r t (string-rectangle) now deletes the existing rectangle
7784contents before inserting the specified string on each line.
7785
7786** There is a new command delete-whitespace-rectangle
7787which deletes whitespace starting from a particular column
7788in all the lines on a rectangle. The column is specified
7789by the left edge of the rectangle.
7790
7791** You can now store a number into a register with C-u NUMBER C-x r n REG,
7792increment it by INC with C-u INC C-x r + REG (to increment by one, omit
7793C-u INC), and insert it in the buffer with C-x r g REG. This is useful
7794for writing keyboard macros.
7795
7796** The new command M-x speedbar displays a frame in which directories,
7797files, and tags can be displayed, manipulated, and jumped to. The
7798frame defaults to 20 characters in width, and is the same height as
7799the frame that it was started from. Some major modes define
7800additional commands for the speedbar, including Rmail, GUD/GDB, and
7801info.
7802
7803** query-replace-regexp is now bound to C-M-%.
7804
7805** In Transient Mark mode, when the region is active, M-x
7806query-replace and the other replace commands now operate on the region
7807contents only.
7808
7809** M-x write-region, when used interactively, now asks for
7810confirmation before overwriting an existing file. When you call
7811the function from a Lisp program, a new optional argument CONFIRM
7812says whether to ask for confirmation in this case.
7813
7814** If you use find-file-literally and the file is already visited
7815non-literally, the command asks you whether to revisit the file
7816literally. If you say no, it signals an error.
7817
7818** Major modes defined with the "derived mode" feature
7819now use the proper name for the mode hook: WHATEVER-mode-hook.
7820Formerly they used the name WHATEVER-mode-hooks, but that is
7821inconsistent with Emacs conventions.
7822
7823** shell-command-on-region (and shell-command) reports success or
7824failure if the command produces no output.
7825
7826** Set focus-follows-mouse to nil if your window system or window
7827manager does not transfer focus to another window when you just move
7828the mouse.
7829
7830** mouse-menu-buffer-maxlen has been renamed to
7831mouse-buffer-menu-maxlen to be consistent with the other related
7832function and variable names.
7833
7834** The new variable auto-coding-alist specifies coding systems for
7835reading specific files. This has higher priority than
7836file-coding-system-alist.
7837
7838** If you set the variable unibyte-display-via-language-environment to
7839t, then Emacs displays non-ASCII characters are displayed by
7840converting them to the equivalent multibyte characters according to
7841the current language environment. As a result, they are displayed
7842according to the current fontset.
7843
7844** C-q's handling of codes in the range 0200 through 0377 is changed.
7845
7846The codes in the range 0200 through 0237 are inserted as one byte of
7847that code regardless of the values of nonascii-translation-table and
7848nonascii-insert-offset.
7849
7850For the codes in the range 0240 through 0377, if
7851enable-multibyte-characters is non-nil and nonascii-translation-table
7852nor nonascii-insert-offset can't convert them to valid multibyte
7853characters, they are converted to Latin-1 characters.
7854
7855** If you try to find a file that is not read-accessible, you now get
7856an error, rather than an empty buffer and a warning.
7857
7858** In the minibuffer history commands M-r and M-s, an upper case
7859letter in the regular expression forces case-sensitive search.
7860
7861** In the *Help* buffer, cross-references to commands and variables
7862are inferred and hyperlinked. Use C-h m in Help mode for the relevant
7863command keys.
7864
7865** M-x apropos-command, with a prefix argument, no longer looks for
7866user option variables--instead it looks for noninteractive functions.
7867
7868Meanwhile, the command apropos-variable normally searches for
7869user option variables; with a prefix argument, it looks at
7870all variables that have documentation.
7871
7872** When you type a long line in the minibuffer, and the minibuffer
7873shows just one line, automatically scrolling works in a special way
7874that shows you overlap with the previous line of text. The variable
7875minibuffer-scroll-overlap controls how many characters of overlap
7876it should show; the default is 20.
7877
7878Meanwhile, Resize Minibuffer mode is still available; in that mode,
7879the minibuffer grows taller (up to a point) as needed to show the whole
7880of your input.
7881
7882** The new command M-x customize-changed-options lets you customize
7883all the options whose meanings or default values have changed in
7884recent Emacs versions. You specify a previous Emacs version number as
7885argument, and the command creates a customization buffer showing all
7886the customizable options which were changed since that version.
7887Newly added options are included as well.
7888
7889If you don't specify a particular version number argument,
7890then the customization buffer shows all the customizable options
7891for which Emacs versions of changes are recorded.
7892
7893This function is also bound to the Changed Options entry in the
7894Customize menu.
7895
7896** When you run M-x grep with a prefix argument, it figures out
7897the tag around point and puts that into the default grep command.
7898
7899** The new command M-* (pop-tag-mark) pops back through a history of
7900buffer positions from which M-. or other tag-finding commands were
7901invoked.
7902
7903** The new variable comment-padding specifies the number of spaces
7904that `comment-region' will insert before the actual text of the comment.
7905The default is 1.
7906
7907** In Fortran mode the characters `.', `_' and `$' now have symbol
7908syntax, not word syntax. Fortran mode now supports `imenu' and has
7909new commands fortran-join-line (M-^) and fortran-narrow-to-subprogram
7910(C-x n d). M-q can be used to fill a statement or comment block
7911sensibly.
7912
7913** GUD now supports jdb, the Java debugger, and pdb, the Python debugger.
7914
7915** If you set the variable add-log-keep-changes-together to a non-nil
7916value, the command `C-x 4 a' will automatically notice when you make
7917two entries in one day for one file, and combine them.
7918
7919** You can use the command M-x diary-mail-entries to mail yourself a
7920reminder about upcoming diary entries. See the documentation string
7921for a sample shell script for calling this function automatically
7922every night.
7923
7924** Desktop changes
7925
7926*** All you need to do to enable use of the Desktop package, is to set
7927the variable desktop-enable to t with Custom.
7928
7929*** Minor modes are now restored. Which minor modes are restored
7930and how modes are restored is controlled by `desktop-minor-mode-table'.
7931
7932** There is no need to do anything special, now, to enable Gnus to
7933read and post multi-lingual articles.
7934
7935** Outline mode has now support for showing hidden outlines when
7936doing an isearch. In order for this to happen search-invisible should
7937be set to open (the default). If an isearch match is inside a hidden
7938outline the outline is made visible. If you continue pressing C-s and
7939the match moves outside the formerly invisible outline, the outline is
7940made invisible again.
7941
7942** Mail reading and sending changes
7943
7944*** The Rmail e command now switches to displaying the whole header of
7945the message before it lets you edit the message. This is so that any
7946changes you make in the header will not be lost if you subsequently
7947toggle.
7948
7949*** The w command in Rmail, which writes the message body into a file,
7950now works in the summary buffer as well. (The command to delete the
7951summary buffer is now Q.) The default file name for the w command, if
7952the message has no subject, is stored in the variable
7953rmail-default-body-file.
7954
7955*** Most of the commands and modes that operate on mail and netnews no
7956longer depend on the value of mail-header-separator. Instead, they
7957handle whatever separator the buffer happens to use.
7958
7959*** If you set mail-signature to a value which is not t, nil, or a string,
7960it should be an expression. When you send a message, this expression
7961is evaluated to insert the signature.
7962
7963*** The new Lisp library feedmail.el (version 8) enhances processing of
7964outbound email messages. It works in coordination with other email
7965handling packages (e.g., rmail, VM, gnus) and is responsible for
7966putting final touches on messages and actually submitting them for
7967transmission. Users of the emacs program "fakemail" might be
7968especially interested in trying feedmail.
7969
7970feedmail is not enabled by default. See comments at the top of
7971feedmail.el for set-up instructions. Among the bigger features
7972provided by feedmail are:
7973
7974**** you can park outgoing messages into a disk-based queue and
7975stimulate sending some or all of them later (handy for laptop users);
7976there is also a queue for draft messages
7977
7978**** you can get one last look at the prepped outbound message and
7979be prompted for confirmation
7980
7981**** does smart filling of address headers
7982
7983**** can generate a MESSAGE-ID: line and a DATE: line; the date can be
7984the time the message was written or the time it is being sent; this
7985can make FCC copies more closely resemble copies that recipients get
7986
7987**** you can specify an arbitrary function for actually transmitting
7988the message; included in feedmail are interfaces for /bin/[r]mail,
7989/usr/lib/sendmail, and elisp smtpmail; it's easy to write a new
7990function for something else (10-20 lines of elisp)
7991
7992** Dired changes
7993
7994*** The Dired function dired-do-toggle, which toggles marked and unmarked
7995files, is now bound to "t" instead of "T".
7996
7997*** dired-at-point has been added to ffap.el. It allows one to easily
7998run Dired on the directory name at point.
7999
8000*** Dired has a new command: %g. It searches the contents of
8001files in the directory and marks each file that contains a match
8002for a specified regexp.
8003
8004** VC Changes
8005
8006*** New option vc-ignore-vc-files lets you turn off version control
8007conveniently.
8008
8009*** VC Dired has been completely rewritten. It is now much
8010faster, especially for CVS, and works very similar to ordinary
8011Dired.
8012
8013VC Dired is invoked by typing C-x v d and entering the name of the
8014directory to display. By default, VC Dired gives you a recursive
8015listing of all files at or below the given directory which are
8016currently locked (for CVS, all files not up-to-date are shown).
8017
8018You can change the listing format by setting vc-dired-recurse to nil,
8019then it shows only the given directory, and you may also set
8020vc-dired-terse-display to nil, then it shows all files under version
8021control plus the names of any subdirectories, so that you can type `i'
8022on such lines to insert them manually, as in ordinary Dired.
8023
8024All Dired commands operate normally in VC Dired, except for `v', which
8025is redefined as the version control prefix. That means you may type
8026`v l', `v =' etc. to invoke `vc-print-log', `vc-diff' and the like on
8027the file named in the current Dired buffer line. `v v' invokes
8028`vc-next-action' on this file, or on all files currently marked.
8029
8030The new command `v t' (vc-dired-toggle-terse-mode) allows you to
8031toggle between terse display (only locked files) and full display (all
8032VC files plus subdirectories). There is also a special command,
8033`* l', to mark all files currently locked.
8034
8035Giving a prefix argument to C-x v d now does the same thing as in
8036ordinary Dired: it allows you to supply additional options for the ls
8037command in the minibuffer, to fine-tune VC Dired's output.
8038
8039*** Under CVS, if you merge changes from the repository into a working
8040file, and CVS detects conflicts, VC now offers to start an ediff
8041session to resolve them.
8042
8043Alternatively, you can use the new command `vc-resolve-conflicts' to
8044resolve conflicts in a file at any time. It works in any buffer that
8045contains conflict markers as generated by rcsmerge (which is what CVS
8046uses as well).
8047
8048*** You can now transfer changes between branches, using the new
8049command vc-merge (C-x v m). It is implemented for RCS and CVS. When
8050you invoke it in a buffer under version-control, you can specify
8051either an entire branch or a pair of versions, and the changes on that
8052branch or between the two versions are merged into the working file.
8053If this results in any conflicts, they may be resolved interactively,
8054using ediff.
8055
8056** Changes in Font Lock
8057
8058*** The face and variable previously known as font-lock-reference-face
8059are now called font-lock-constant-face to better reflect their typical
8060use for highlighting constants and labels. (Its face properties are
8061unchanged.) The variable font-lock-reference-face remains for now for
8062compatibility reasons, but its value is font-lock-constant-face.
8063
8064** Frame name display changes
8065
8066*** The command set-frame-name lets you set the name of the current
8067frame. You can use the new command select-frame-by-name to select and
8068raise a frame; this is mostly useful on character-only terminals, or
8069when many frames are invisible or iconified.
8070
8071*** On character-only terminal (not a window system), changing the
8072frame name is now reflected on the mode line and in the Buffers/Frames
8073menu.
8074
8075** Comint (subshell) changes
8076
8077*** In Comint modes, the commands to kill, stop or interrupt a
8078subjob now also kill pending input. This is for compatibility
8079with ordinary shells, where the signal characters do this.
8080
8081*** There are new commands in Comint mode.
8082
8083C-c C-x fetches the "next" line from the input history;
8084that is, the line after the last line you got.
8085You can use this command to fetch successive lines, one by one.
8086
8087C-c SPC accumulates lines of input. More precisely, it arranges to
8088send the current line together with the following line, when you send
8089the following line.
8090
8091C-c C-a if repeated twice consecutively now moves to the process mark,
8092which separates the pending input from the subprocess output and the
8093previously sent input.
8094
8095C-c M-r now runs comint-previous-matching-input-from-input;
8096it searches for a previous command, using the current pending input
8097as the search string.
8098
8099*** New option compilation-scroll-output can be set to scroll
8100automatically in compilation-mode windows.
8101
8102** C mode changes
8103
8104*** Multiline macros are now handled, both as they affect indentation,
8105and as recognized syntax. New syntactic symbol cpp-macro-cont is
8106assigned to second and subsequent lines of a multiline macro
8107definition.
8108
8109*** A new style "user" which captures all non-hook-ified
8110(i.e. top-level) .emacs file variable settings and customizations.
8111Style "cc-mode" is an alias for "user" and is deprecated. "gnu"
8112style is still the default however.
8113
8114*** "java" style now conforms to Sun's JDK coding style.
8115
8116*** There are new commands c-beginning-of-defun, c-end-of-defun which
8117are alternatives which you could bind to C-M-a and C-M-e if you prefer
8118them. They do not have key bindings by default.
8119
8120*** New and improved implementations of M-a (c-beginning-of-statement)
8121and M-e (c-end-of-statement).
8122
8123*** C++ namespace blocks are supported, with new syntactic symbols
8124namespace-open, namespace-close, and innamespace.
8125
8126*** File local variable settings of c-file-style and c-file-offsets
8127makes the style variables local to that buffer only.
8128
8129*** New indentation functions c-lineup-close-paren,
8130c-indent-one-line-block, c-lineup-dont-change.
8131
8132*** Improvements (hopefully!) to the way CC Mode is loaded. You
8133should now be able to do a (require 'cc-mode) to get the entire
8134package loaded properly for customization in your .emacs file. A new
8135variable c-initialize-on-load controls this and is t by default.
8136
8137** Changes to hippie-expand.
8138
8139*** New customization variable `hippie-expand-dabbrev-skip-space'. If
8140non-nil, trailing spaces may be included in the abbreviation to search for,
8141which then gives the same behavior as the original `dabbrev-expand'.
8142
8143*** New customization variable `hippie-expand-dabbrev-as-symbol'. If
8144non-nil, characters of syntax '_' is considered part of the word when
8145expanding dynamically.
8146
8147*** New customization variable `hippie-expand-no-restriction'. If
8148non-nil, narrowed buffers are widened before they are searched.
8149
8150*** New customization variable `hippie-expand-only-buffers'. If
8151non-empty, buffers searched are restricted to the types specified in
8152this list. Useful for example when constructing new special-purpose
8153expansion functions with `make-hippie-expand-function'.
8154
8155*** Text properties of the expansion are no longer copied.
8156
8157** Changes in BibTeX mode.
8158
8159*** Any titleword matching a regexp in the new variable
8160bibtex-autokey-titleword-ignore (case sensitive) is ignored during
8161automatic key generation. This replaces variable
8162bibtex-autokey-titleword-first-ignore, which only checked for matches
8163against the first word in the title.
8164
8165*** Autokey generation now uses all words from the title, not just
8166capitalized words. To avoid conflicts with existing customizations,
8167bibtex-autokey-titleword-ignore is set up such that words starting with
8168lowerkey characters will still be ignored. Thus, if you want to use
8169lowercase words from the title, you will have to overwrite the
8170bibtex-autokey-titleword-ignore standard setting.
8171
8172*** Case conversion of names and title words for automatic key
8173generation is more flexible. Variable bibtex-autokey-preserve-case is
8174replaced by bibtex-autokey-titleword-case-convert and
8175bibtex-autokey-name-case-convert.
8176
8177** Changes in vcursor.el.
8178
8179*** Support for character terminals is available: there is a new keymap
8180and the vcursor will appear as an arrow between buffer text. A
8181variable `vcursor-interpret-input' allows input from the vcursor to be
8182entered exactly as if typed. Numerous functions, including
8183`vcursor-compare-windows', have been rewritten to improve consistency
8184in the selection of windows and corresponding keymaps.
8185
8186*** vcursor options can now be altered with M-x customize under the
8187Editing group once the package is loaded.
8188
8189*** Loading vcursor now does not define keys by default, as this is
8190generally a bad side effect. Use M-x customize to set
8a33023e 8191vcursor-key-bindings to t to restore the old behavior.
3787e12e
GM
8192
8193*** vcursor-auto-disable can be `copy', which turns off copying from the
8194vcursor, but doesn't disable it, after any non-vcursor command.
8195
8196** Ispell changes.
8197
8198*** You can now spell check comments and strings in the current
8199buffer with M-x ispell-comments-and-strings. Comments and strings
8200are identified by syntax tables in effect.
8201
8202*** Generic region skipping implemented.
8203A single buffer can be broken into a number of regions where text will
8204and will not be checked. The definitions of the regions can be user
8205defined. New applications and improvements made available by this
8206include:
8207
8208 o URLs are automatically skipped
8209 o EMail message checking is vastly improved.
8210
8211*** Ispell can highlight the erroneous word even on non-window terminals.
8212
8213** Changes to RefTeX mode
8214
8215RefTeX has been updated in order to make it more usable with very
8216large projects (like a several volume math book). The parser has been
8217re-written from scratch. To get maximum speed from RefTeX, check the
8218section `Optimizations' in the manual.
8219
8220*** New recursive parser.
8221
8222The old version of RefTeX created a single large buffer containing the
8223entire multifile document in order to parse the document. The new
8224recursive parser scans the individual files.
8225
8226*** Parsing only part of a document.
8227
8228Reparsing of changed document parts can now be made faster by enabling
8229partial scans. To use this feature, read the documentation string of
8230the variable `reftex-enable-partial-scans' and set the variable to t.
8231
8232 (setq reftex-enable-partial-scans t)
8233
8234*** Storing parsing information in a file.
8235
8236This can improve startup times considerably. To turn it on, use
8237
8238 (setq reftex-save-parse-info t)
8239
8240*** Using multiple selection buffers
8241
8242If the creation of label selection buffers is too slow (this happens
8243for large documents), you can reuse these buffers by setting
8244
8245 (setq reftex-use-multiple-selection-buffers t)
8246
8247*** References to external documents.
8248
8249The LaTeX package `xr' allows to cross-reference labels in external
8250documents. RefTeX can provide information about the external
8251documents as well. To use this feature, set up the \externaldocument
8252macros required by the `xr' package and rescan the document with
8253RefTeX. The external labels can then be accessed with the `x' key in
8254the selection buffer provided by `reftex-reference' (bound to `C-c )').
8255The `x' key also works in the table of contents buffer.
8256
8257*** Many more labeled LaTeX environments are recognized by default.
8258
8a33023e 8259The built-in command list now covers all the standard LaTeX commands,
3787e12e
GM
8260and all of the major packages included in the LaTeX distribution.
8261
8262Also, RefTeX now understands the \appendix macro and changes
8263the enumeration of sections in the *toc* buffer accordingly.
8264
8265*** Mouse support for selection and *toc* buffers
8266
8267The mouse can now be used to select items in the selection and *toc*
8268buffers. See also the new option `reftex-highlight-selection'.
8269
8270*** New keymaps for selection and table of contents modes.
8271
8272The selection processes for labels and citation keys, and the table of
8273contents buffer now have their own keymaps: `reftex-select-label-map',
8274`reftex-select-bib-map', `reftex-toc-map'. The selection processes
8275have a number of new keys predefined. In particular, TAB lets you
8276enter a label with completion. Check the on-the-fly help (press `?'
8277at the selection prompt) or read the Info documentation to find out
8278more.
8279
8280*** Support for the varioref package
8281
8282The `v' key in the label selection buffer toggles \ref versus \vref.
8283
8284*** New hooks
8285
8286Three new hooks can be used to redefine the way labels, references,
8287and citations are created. These hooks are
8288`reftex-format-label-function', `reftex-format-ref-function',
8289`reftex-format-cite-function'.
8290
8291*** Citations outside LaTeX
8292
8293The command `reftex-citation' may also be used outside LaTeX (e.g. in
8294a mail buffer). See the Info documentation for details.
8295
8296*** Short context is no longer fontified.
8297
8298The short context in the label menu no longer copies the
8299fontification from the text in the buffer. If you prefer it to be
8300fontified, use
8301
8302 (setq reftex-refontify-context t)
8303
8304** file-cache-minibuffer-complete now accepts a prefix argument.
8305With a prefix argument, it does not try to do completion of
8306the file name within its directory; it only checks for other
8307directories that contain the same file name.
8308
8309Thus, given the file name Makefile, and assuming that a file
8310Makefile.in exists in the same directory, ordinary
8311file-cache-minibuffer-complete will try to complete Makefile to
8312Makefile.in and will therefore never look for other directories that
8313have Makefile. A prefix argument tells it not to look for longer
8314names such as Makefile.in, so that instead it will look for other
8315directories--just as if the name were already complete in its present
8316directory.
8317
8318** New modes and packages
8319
8320*** There is a new alternative major mode for Perl, Cperl mode.
8321It has many more features than Perl mode, and some people prefer
8322it, but some do not.
8323
8324*** There is a new major mode, M-x vhdl-mode, for editing files of VHDL
8325code.
8326
8327*** M-x which-function-mode enables a minor mode that displays the
8328current function name continuously in the mode line, as you move
8329around in a buffer.
8330
8331Which Function mode is effective in major modes which support Imenu.
8332
8333*** Gametree is a major mode for editing game analysis trees. The author
8334uses it for keeping notes about his postal Chess games, but it should
8335be helpful for other two-player games as well, as long as they have an
8336established system of notation similar to Chess.
8337
8338*** The new minor mode checkdoc-minor-mode provides Emacs Lisp
8339documentation string checking for style and spelling. The style
8340guidelines are found in the Emacs Lisp programming manual.
8341
8342*** The net-utils package makes some common networking features
8343available in Emacs. Some of these functions are wrappers around
8344system utilities (ping, nslookup, etc); others are implementations of
8345simple protocols (finger, whois) in Emacs Lisp. There are also
8346functions to make simple connections to TCP/IP ports for debugging and
8347the like.
8348
8349*** highlight-changes-mode is a minor mode that uses colors to
8350identify recently changed parts of the buffer text.
8351
8352*** The new package `midnight' lets you specify things to be done
8353within Emacs at midnight--by default, kill buffers that you have not
8354used in a considerable time. To use this feature, customize
8355the user option `midnight-mode' to t.
8356
8357*** The file generic-x.el defines a number of simple major modes.
8358
8359 apache-generic-mode: For Apache and NCSA httpd configuration files
8360 samba-generic-mode: Samba configuration files
8361 fvwm-generic-mode: For fvwm initialization files
8362 x-resource-generic-mode: For X resource files
8363 hosts-generic-mode: For hosts files (.rhosts, /etc/hosts, etc)
8364 mailagent-rules-generic-mode: For mailagent .rules files
8365 javascript-generic-mode: For JavaScript files
8366 vrml-generic-mode: For VRML files
8367 java-manifest-generic-mode: For Java MANIFEST files
8368 java-properties-generic-mode: For Java property files
8369 mailrc-generic-mode: For .mailrc files
8370
8371 Platform-specific modes:
8372
8373 prototype-generic-mode: For Solaris/Sys V prototype files
8374 pkginfo-generic-mode: For Solaris/Sys V pkginfo files
8375 alias-generic-mode: For C shell alias files
8376 inf-generic-mode: For MS-Windows INF files
8377 ini-generic-mode: For MS-Windows INI files
8378 reg-generic-mode: For MS-Windows Registry files
8379 bat-generic-mode: For MS-Windows BAT scripts
8380 rc-generic-mode: For MS-Windows Resource files
8381 rul-generic-mode: For InstallShield scripts
05197f40 8382\f
3787e12e
GM
8383* Lisp changes in Emacs 20.3 since the Emacs Lisp Manual was published
8384
8385** If you want a Lisp file to be read in unibyte mode,
8386use -*-unibyte: t;-*- on its first line.
8387That will force Emacs to read that file in unibyte mode.
8388Otherwise, the file will be loaded and byte-compiled in multibyte mode.
8389
8390Thus, each lisp file is read in a consistent way regardless of whether
8391you started Emacs with --unibyte, so that a Lisp program gives
8392consistent results regardless of how Emacs was started.
8393
8394** The new function assoc-default is useful for searching an alist,
8395and using a default value if the key is not found there. You can
8396specify a comparison predicate, so this function is useful for
8397searching comparing a string against an alist of regular expressions.
8398
8399** The functions unibyte-char-to-multibyte and
8400multibyte-char-to-unibyte convert between unibyte and multibyte
8401character codes, in a way that is appropriate for the current language
8402environment.
8403
8404** The functions read-event, read-char and read-char-exclusive now
8405take two optional arguments. PROMPT, if non-nil, specifies a prompt
8406string. SUPPRESS-INPUT-METHOD, if non-nil, says to disable the
8407current input method for reading this one event.
8408
8409** Two new variables print-escape-nonascii and print-escape-multibyte
8410now control whether to output certain characters as
8411backslash-sequences. print-escape-nonascii applies to single-byte
8412non-ASCII characters; print-escape-multibyte applies to multibyte
8413characters. Both of these variables are used only when printing
8414in readable fashion (prin1 uses them, princ does not).
05197f40 8415\f
3787e12e
GM
8416* Lisp changes in Emacs 20.3 before the Emacs Lisp Manual was published
8417
8418** Compiled Emacs Lisp files made with the modified "MBSK" version
8419of Emacs 20.2 do not work in Emacs 20.3.
8420
8421** Buffer positions are now measured in characters, as they were
8422in Emacs 19 and before. This means that (forward-char 1)
8423always increases point by 1.
8424
8425The function chars-in-region now just subtracts its arguments. It is
8426considered obsolete. The function char-boundary-p has been deleted.
8427
8428See below for additional changes relating to multibyte characters.
8429
8430** defcustom, defface and defgroup now accept the keyword `:version'.
8431Use this to specify in which version of Emacs a certain variable's
8432default value changed. For example,
8433
8434 (defcustom foo-max 34 "*Maximum number of foo's allowed."
8435 :type 'integer
8436 :group 'foo
8437 :version "20.3")
8438
8439 (defgroup foo-group nil "The foo group."
8440 :version "20.3")
8441
8442If an entire new group is added or the variables in it have the
8443default values changed, then just add a `:version' to that group. It
8444is recommended that new packages added to the distribution contain a
8445`:version' in the top level group.
8446
8447This information is used to control the customize-changed-options command.
8448
8449** It is now an error to change the value of a symbol whose name
8450starts with a colon--if it is interned in the standard obarray.
8451
8452However, setting such a symbol to its proper value, which is that
8453symbol itself, is not an error. This is for the sake of programs that
8454support previous Emacs versions by explicitly setting these variables
8455to themselves.
8456
8457If you set the variable keyword-symbols-constant-flag to nil,
8458this error is suppressed, and you can set these symbols to any
8459values whatever.
8460
8461** There is a new debugger command, R.
8462It evaluates an expression like e, but saves the result
8463in the buffer *Debugger-record*.
8464
8465** Frame-local variables.
8466
8467You can now make a variable local to various frames. To do this, call
8468the function make-variable-frame-local; this enables frames to have
8469local bindings for that variable.
8470
8471These frame-local bindings are actually frame parameters: you create a
8472frame-local binding in a specific frame by calling
8473modify-frame-parameters and specifying the variable name as the
8474parameter name.
8475
8476Buffer-local bindings take precedence over frame-local bindings.
8477Thus, if the current buffer has a buffer-local binding, that binding is
8478active; otherwise, if the selected frame has a frame-local binding,
8479that binding is active; otherwise, the default binding is active.
8480
8481It would not be hard to implement window-local bindings, but it is not
8482clear that this would be very useful; windows tend to come and go in a
8483very transitory fashion, so that trying to produce any specific effect
8484through a window-local binding would not be very robust.
8485
8486** `sregexq' and `sregex' are two new functions for constructing
8487"symbolic regular expressions." These are Lisp expressions that, when
8488evaluated, yield conventional string-based regexps. The symbolic form
8489makes it easier to construct, read, and maintain complex patterns.
8490See the documentation in sregex.el.
8491
8492** parse-partial-sexp's return value has an additional element which
8493is used to pass information along if you pass it to another call to
8494parse-partial-sexp, starting its scan where the first call ended.
8495The contents of this field are not yet finalized.
8496
8497** eval-region now accepts a fourth optional argument READ-FUNCTION.
8498If it is non-nil, that function is used instead of `read'.
8499
8500** unload-feature by default removes the feature's functions from
8501known hooks to avoid trouble, but a package providing FEATURE can
8502define a hook FEATURE-unload-hook to be run by unload-feature instead.
8503
8504** read-from-minibuffer no longer returns the argument DEFAULT-VALUE
8505when the user enters empty input. It now returns the null string, as
8506it did in Emacs 19. The default value is made available in the
8507history via M-n, but it is not applied here as a default.
8508
8509The other, more specialized minibuffer-reading functions continue to
8510return the default value (not the null string) when the user enters
8511empty input.
8512
8513** The new variable read-buffer-function controls which routine to use
8514for selecting buffers. For example, if you set this variable to
8515`iswitchb-read-buffer', iswitchb will be used to read buffer names.
8516Other functions can also be used if they accept the same arguments as
8517`read-buffer' and return the selected buffer name as a string.
8518
8519** The new function read-passwd reads a password from the terminal,
8520echoing a period for each character typed. It takes three arguments:
8521a prompt string, a flag which says "read it twice to make sure", and a
8522default password to use if the user enters nothing.
8523
8524** The variable fill-nobreak-predicate gives major modes a way to
8525specify not to break a line at certain places. Its value is a
8526function which is called with no arguments, with point located at the
8527place where a break is being considered. If the function returns
8528non-nil, then the line won't be broken there.
8529
8530** window-end now takes an optional second argument, UPDATE.
8531If this is non-nil, then the function always returns an accurate
8532up-to-date value for the buffer position corresponding to the
8533end of the window, even if this requires computation.
8534
8535** other-buffer now takes an optional argument FRAME
8536which specifies which frame's buffer list to use.
8537If it is nil, that means use the selected frame's buffer list.
8538
8539** The new variable buffer-display-time, always local in every buffer,
8540holds the value of (current-time) as of the last time that a window
8541was directed to display this buffer.
8542
8543** It is now meaningful to compare two window-configuration objects
8544with `equal'. Two window-configuration objects are equal if they
8545describe equivalent arrangements of windows, in the same frame--in
8546other words, if they would give the same results if passed to
8547set-window-configuration.
8548
8549** compare-window-configurations is a new function that compares two
8550window configurations loosely. It ignores differences in saved buffer
8551positions and scrolling, and considers only the structure and sizes of
8552windows and the choice of buffers to display.
8553
8554** The variable minor-mode-overriding-map-alist allows major modes to
8555override the key bindings of a minor mode. The elements of this alist
8556look like the elements of minor-mode-map-alist: (VARIABLE . KEYMAP).
8557
8558If the VARIABLE in an element of minor-mode-overriding-map-alist has a
8559non-nil value, the paired KEYMAP is active, and totally overrides the
8560map (if any) specified for the same variable in minor-mode-map-alist.
8561
8562minor-mode-overriding-map-alist is automatically local in all buffers,
8563and it is meant to be set by major modes.
8564
8565** The function match-string-no-properties is like match-string
8566except that it discards all text properties from the result.
8567
8568** The function load-average now accepts an optional argument
8569USE-FLOATS. If it is non-nil, the load average values are returned as
8570floating point numbers, rather than as integers to be divided by 100.
8571
8572** The new variable temporary-file-directory specifies the directory
8573to use for creating temporary files. The default value is determined
8574in a reasonable way for your operating system; on GNU and Unix systems
8575it is based on the TMP and TMPDIR environment variables.
8576
8577** Menu changes
8578
8579*** easymenu.el now uses the new menu item format and supports the
8580keywords :visible and :filter. The existing keyword :keys is now
8581better supported.
8582
8583The variable `easy-menu-precalculate-equivalent-keybindings' controls
8584a new feature which calculates keyboard equivalents for the menu when
8585you define the menu. The default is t. If you rarely use menus, you
8586can set the variable to nil to disable this precalculation feature;
8587then the calculation is done only if you use the menu bar.
8588
8589*** A new format for menu items is supported.
8590
8591In a keymap, a key binding that has the format
8592 (STRING . REAL-BINDING) or (STRING HELP-STRING . REAL-BINDING)
8593defines a menu item. Now a menu item definition may also be a list that
8594starts with the symbol `menu-item'.
8595
8596The format is:
8597 (menu-item ITEM-NAME) or
8598 (menu-item ITEM-NAME REAL-BINDING . ITEM-PROPERTY-LIST)
8599where ITEM-NAME is an expression which evaluates to the menu item
8600string, and ITEM-PROPERTY-LIST has the form of a property list.
8601The supported properties include
8602
8603:enable FORM Evaluate FORM to determine whether the
8604 item is enabled.
8605:visible FORM Evaluate FORM to determine whether the
8606 item should appear in the menu.
8607:filter FILTER-FN
8608 FILTER-FN is a function of one argument,
8609 which will be REAL-BINDING.
8610 It should return a binding to use instead.
8611:keys DESCRIPTION
8612 DESCRIPTION is a string that describes an equivalent keyboard
f3780fe4 8613 binding for REAL-BINDING. DESCRIPTION is expanded with
3787e12e
GM
8614 `substitute-command-keys' before it is used.
8615:key-sequence KEY-SEQUENCE
8616 KEY-SEQUENCE is a key-sequence for an equivalent
8617 keyboard binding.
8618:key-sequence nil
8619 This means that the command normally has no
8620 keyboard equivalent.
8621:help HELP HELP is the extra help string (not currently used).
8622:button (TYPE . SELECTED)
8623 TYPE is :toggle or :radio.
8624 SELECTED is a form, to be evaluated, and its
8625 value says whether this button is currently selected.
8626
8627Buttons are at the moment only simulated by prefixes in the menu.
8628Eventually ordinary X-buttons may be supported.
8629
8630(menu-item ITEM-NAME) defines unselectable item.
8631
8632** New event types
8633
8634*** The new event type `mouse-wheel' is generated by a wheel on a
8635mouse (such as the MS Intellimouse). The event contains a delta that
8636corresponds to the amount and direction that the wheel is rotated,
8637which is typically used to implement a scroll or zoom. The format is:
8638
8639 (mouse-wheel POSITION DELTA)
8640
8641where POSITION is a list describing the position of the event in the
8642same format as a mouse-click event, and DELTA is a signed number
8643indicating the number of increments by which the wheel was rotated. A
8644negative DELTA indicates that the wheel was rotated backwards, towards
8645the user, and a positive DELTA indicates that the wheel was rotated
8646forward, away from the user.
8647
8648As of now, this event type is generated only on MS Windows.
8649
8650*** The new event type `drag-n-drop' is generated when a group of
8651files is selected in an application outside of Emacs, and then dragged
8652and dropped onto an Emacs frame. The event contains a list of
8653filenames that were dragged and dropped, which are then typically
8654loaded into Emacs. The format is:
8655
8656 (drag-n-drop POSITION FILES)
8657
8658where POSITION is a list describing the position of the event in the
8659same format as a mouse-click event, and FILES is the list of filenames
8660that were dragged and dropped.
8661
8662As of now, this event type is generated only on MS Windows.
8663
8664** Changes relating to multibyte characters.
8665
8666*** The variable enable-multibyte-characters is now read-only;
8667any attempt to set it directly signals an error. The only way
8668to change this value in an existing buffer is with set-buffer-multibyte.
8669
8670*** In a string constant, `\ ' now stands for "nothing at all". You
8671can use it to terminate a hex escape which is followed by a character
8672that could otherwise be read as part of the hex escape.
8673
8674*** String indices are now measured in characters, as they were
8675in Emacs 19 and before.
8676
8677The function chars-in-string has been deleted.
8678The function concat-chars has been renamed to `string'.
8679
8680*** The function set-buffer-multibyte sets the flag in the current
8681buffer that says whether the buffer uses multibyte representation or
8682unibyte representation. If the argument is nil, it selects unibyte
8683representation. Otherwise it selects multibyte representation.
8684
8685This function does not change the contents of the buffer, viewed
8686as a sequence of bytes. However, it does change the contents
8687viewed as characters; a sequence of two bytes which is treated as
8688one character when the buffer uses multibyte representation
8689will count as two characters using unibyte representation.
8690
8691This function sets enable-multibyte-characters to record which
8692representation is in use. It also adjusts various data in the buffer
8693(including its markers, overlays and text properties) so that they are
8694consistent with the new representation.
8695
8696*** string-make-multibyte takes a string and converts it to multibyte
8697representation. Most of the time, you don't need to care
8698about the representation, because Emacs converts when necessary;
8699however, it makes a difference when you compare strings.
8700
8701The conversion of non-ASCII characters works by adding the value of
8702nonascii-insert-offset to each character, or by translating them
8703using the table nonascii-translation-table.
8704
8705*** string-make-unibyte takes a string and converts it to unibyte
8706representation. Most of the time, you don't need to care about the
8707representation, but it makes a difference when you compare strings.
8708
8709The conversion from multibyte to unibyte representation
8710loses information; the only time Emacs performs it automatically
8711is when inserting a multibyte string into a unibyte buffer.
8712
8713*** string-as-multibyte takes a string, and returns another string
8714which contains the same bytes, but treats them as multibyte.
8715
8716*** string-as-unibyte takes a string, and returns another string
8717which contains the same bytes, but treats them as unibyte.
8718
8719*** The new function compare-strings lets you compare
8720portions of two strings. Unibyte strings are converted to multibyte,
8721so that a unibyte string can match a multibyte string.
8722You can specify whether to ignore case or not.
8723
8724*** assoc-ignore-case now uses compare-strings so that
8725it can treat unibyte and multibyte strings as equal.
8726
8727*** Regular expression operations and buffer string searches now
8728convert the search pattern to multibyte or unibyte to accord with the
8729buffer or string being searched.
8730
8731One consequence is that you cannot always use \200-\377 inside of
8732[...] to match all non-ASCII characters. This does still work when
8733searching or matching a unibyte buffer or string, but not when
8734searching or matching a multibyte string. Unfortunately, there is no
8735obvious choice of syntax to use within [...] for that job. But, what
8736you want is just to match all non-ASCII characters, the regular
8737expression [^\0-\177] works for it.
8738
8739*** Structure of coding system changed.
8740
8741All coding systems (including aliases and subsidiaries) are named
8742by symbols; the symbol's `coding-system' property is a vector
8743which defines the coding system. Aliases share the same vector
8744as the principal name, so that altering the contents of this
8745vector affects the principal name and its aliases. You can define
8746your own alias name of a coding system by the function
8747define-coding-system-alias.
8748
8749The coding system definition includes a property list of its own. Use
8750the new functions `coding-system-get' and `coding-system-put' to
8751access such coding system properties as post-read-conversion,
8752pre-write-conversion, character-translation-table-for-decode,
8753character-translation-table-for-encode, mime-charset, and
8754safe-charsets. For instance, (coding-system-get 'iso-latin-1
8755'mime-charset) gives the corresponding MIME-charset parameter
8756`iso-8859-1'.
8757
8758Among the coding system properties listed above, safe-charsets is new.
8759The value of this property is a list of character sets which this
8760coding system can correctly encode and decode. For instance:
8761(coding-system-get 'iso-latin-1 'safe-charsets) => (ascii latin-iso8859-1)
8762
8763Here, "correctly encode" means that the encoded character sets can
8764also be handled safely by systems other than Emacs as far as they
8765are capable of that coding system. Though, Emacs itself can encode
8766the other character sets and read it back correctly.
8767
8768*** The new function select-safe-coding-system can be used to find a
8769proper coding system for encoding the specified region or string.
8770This function requires a user interaction.
8771
8772*** The new functions find-coding-systems-region and
8773find-coding-systems-string are helper functions used by
8774select-safe-coding-system. They return a list of all proper coding
8775systems to encode a text in some region or string. If you don't want
8776a user interaction, use one of these functions instead of
8777select-safe-coding-system.
8778
8779*** The explicit encoding and decoding functions, such as
8780decode-coding-region and encode-coding-string, now set
8781last-coding-system-used to reflect the actual way encoding or decoding
8782was done.
8783
8784*** The new function detect-coding-with-language-environment can be
8785used to detect a coding system of text according to priorities of
8786coding systems used by some specific language environment.
8787
8788*** The functions detect-coding-region and detect-coding-string always
8789return a list if the arg HIGHEST is nil. Thus, if only ASCII
8790characters are found, they now return a list of single element
8791`undecided' or its subsidiaries.
8792
8793*** The new functions coding-system-change-eol-conversion and
8794coding-system-change-text-conversion can be used to get a different
8795coding system than what specified only in how end-of-line or text is
8796converted.
8797
8798*** The new function set-selection-coding-system can be used to set a
8799coding system for communicating with other X clients.
8800
8801*** The function `map-char-table' now passes as argument only valid
8802character codes, plus generic characters that stand for entire
8803character sets or entire subrows of a character set. In other words,
8804each time `map-char-table' calls its FUNCTION argument, the key value
8805either will be a valid individual character code, or will stand for a
8806range of characters.
8807
8808*** The new function `char-valid-p' can be used for checking whether a
8809Lisp object is a valid character code or not.
8810
8811*** The new function `charset-after' returns a charset of a character
8812in the current buffer at position POS.
8813
8814*** Input methods are now implemented using the variable
8815input-method-function. If this is non-nil, its value should be a
8816function; then, whenever Emacs reads an input event that is a printing
8817character with no modifier bits, it calls that function, passing the
8818event as an argument. Often this function will read more input, first
8819binding input-method-function to nil.
8820
8821The return value should be a list of the events resulting from input
8822method processing. These events will be processed sequentially as
8823input, before resorting to unread-command-events. Events returned by
8824the input method function are not passed to the input method function,
8825not even if they are printing characters with no modifier bits.
8826
8827The input method function is not called when reading the second and
8828subsequent events of a key sequence.
8829
8830*** You can customize any language environment by using
8831set-language-environment-hook and exit-language-environment-hook.
8832
8833The hook `exit-language-environment-hook' should be used to undo
8834customizations that you made with set-language-environment-hook. For
8835instance, if you set up a special key binding for a specific language
8836environment by set-language-environment-hook, you should set up
8837exit-language-environment-hook to restore the normal key binding.
05197f40 8838\f
3787e12e
GM
8839* Changes in Emacs 20.1
8840
8841** Emacs has a new facility for customization of its many user
8842options. It is called M-x customize. With this facility you can look
8843at the many user options in an organized way; they are grouped into a
8844tree structure.
8845
8846M-x customize also knows what sorts of values are legitimate for each
8847user option and ensures that you don't use invalid values.
8848
8849With M-x customize, you can set options either for the present Emacs
8850session or permanently. (Permanent settings are stored automatically
8851in your .emacs file.)
8852
8853** Scroll bars are now on the left side of the window.
8854You can change this with M-x customize-option scroll-bar-mode.
8855
8856** The mode line no longer includes the string `Emacs'.
8857This makes more space in the mode line for other information.
8858
8859** When you select a region with the mouse, it is highlighted
8860immediately afterward. At that time, if you type the DELETE key, it
8861kills the region.
8862
8863The BACKSPACE key, and the ASCII character DEL, do not do this; they
8864delete the character before point, as usual.
8865
8866** In an incremental search the whole current match is highlighted
8867on terminals which support this. (You can disable this feature
8868by setting search-highlight to nil.)
8869
8870** In the minibuffer, in some cases, you can now use M-n to
8871insert the default value into the minibuffer as text. In effect,
8872the default value (if the minibuffer routines know it) is tacked
8873onto the history "in the future". (The more normal use of the
8874history list is to use M-p to insert minibuffer input used in the
8875past.)
8876
8877** In Text mode, now only blank lines separate paragraphs.
8878This makes it possible to get the full benefit of Adaptive Fill mode
8879in Text mode, and other modes derived from it (such as Mail mode).
8880TAB in Text mode now runs the command indent-relative; this
8881makes a practical difference only when you use indented paragraphs.
8882
8883As a result, the old Indented Text mode is now identical to Text mode,
8884and is an alias for it.
8885
8886If you want spaces at the beginning of a line to start a paragraph,
8887use the new mode, Paragraph Indent Text mode.
8888
8889** Scrolling changes
8890
8891*** Scroll commands to scroll a whole screen now preserve the screen
8892position of the cursor, if scroll-preserve-screen-position is non-nil.
8893
8894In this mode, if you scroll several screens back and forth, finishing
8895on the same screen where you started, the cursor goes back to the line
8896where it started.
8897
8898*** If you set scroll-conservatively to a small number, then when you
8899move point a short distance off the screen, Emacs will scroll the
8900screen just far enough to bring point back on screen, provided that
8901does not exceed `scroll-conservatively' lines.
8902
8903*** The new variable scroll-margin says how close point can come to the
8904top or bottom of a window. It is a number of screen lines; if point
8905comes within that many lines of the top or bottom of the window, Emacs
8906recenters the window.
8907
8908** International character set support (MULE)
8909
8910Emacs now supports a wide variety of international character sets,
8911including European variants of the Latin alphabet, as well as Chinese,
8912Devanagari (Hindi and Marathi), Ethiopian, Greek, IPA, Japanese,
8913Korean, Lao, Russian, Thai, Tibetan, and Vietnamese scripts. These
8914features have been merged from the modified version of Emacs known as
8915MULE (for "MULti-lingual Enhancement to GNU Emacs")
8916
8917Users of these scripts have established many more-or-less standard
8918coding systems for storing files. Emacs uses a single multibyte
8919character encoding within Emacs buffers; it can translate from a wide
8920variety of coding systems when reading a file and can translate back
8921into any of these coding systems when saving a file.
8922
8923Keyboards, even in the countries where these character sets are used,
8924generally don't have keys for all the characters in them. So Emacs
8925supports various "input methods", typically one for each script or
8926language, to make it possible to type them.
8927
8928The Emacs internal multibyte encoding represents a non-ASCII
8929character as a sequence of bytes in the range 0200 through 0377.
8930
8931The new prefix key C-x RET is used for commands that pertain
8932to multibyte characters, coding systems, and input methods.
8933
8934You can disable multibyte character support as follows:
8935
8936 (setq-default enable-multibyte-characters nil)
8937
8938Calling the function standard-display-european turns off multibyte
8939characters, unless you specify a non-nil value for the second
8940argument, AUTO. This provides compatibility for people who are
8941already using standard-display-european to continue using unibyte
8942characters for their work until they want to change.
8943
8944*** Input methods
8945
8946An input method is a kind of character conversion which is designed
8947specifically for interactive input. In Emacs, typically each language
8948has its own input method (though sometimes several languages which use
8949the same characters can share one input method). Some languages
8950support several input methods.
8951
8952The simplest kind of input method works by mapping ASCII letters into
8953another alphabet. This is how the Greek and Russian input methods
8954work.
8955
8956A more powerful technique is composition: converting sequences of
8957characters into one letter. Many European input methods use
8958composition to produce a single non-ASCII letter from a sequence which
8959consists of a letter followed by diacritics. For example, a' is one
8960sequence of two characters that might be converted into a single
8961letter.
8962
8963The input methods for syllabic scripts typically use mapping followed
8964by conversion. The input methods for Thai and Korean work this way.
8965First, letters are mapped into symbols for particular sounds or tone
8966marks; then, sequences of these which make up a whole syllable are
8967mapped into one syllable sign--most often a "composite character".
8968
8969None of these methods works very well for Chinese and Japanese, so
8970they are handled specially. First you input a whole word using
8971phonetic spelling; then, after the word is in the buffer, Emacs
8972converts it into one or more characters using a large dictionary.
8973
8974Since there is more than one way to represent a phonetically spelled
8975word using Chinese characters, Emacs can only guess which one to use;
8976typically these input methods give you a way to say "guess again" if
8977the first guess is wrong.
8978
8979*** The command C-x RET m (toggle-enable-multibyte-characters)
8980turns multibyte character support on or off for the current buffer.
8981
8982If multibyte character support is turned off in a buffer, then each
8983byte is a single character, even codes 0200 through 0377--exactly as
8984they did in Emacs 19.34. This includes the features for support for
8985the European characters, ISO Latin-1 and ISO Latin-2.
8986
8987However, there is no need to turn off multibyte character support to
8988use ISO Latin-1 or ISO Latin-2; the Emacs multibyte character set
8989includes all the characters in these character sets, and Emacs can
8990translate automatically to and from either one.
8991
8992*** Visiting a file in unibyte mode.
8993
8994Turning off multibyte character support in the buffer after visiting a
8995file with multibyte code conversion will display the multibyte
8996sequences already in the buffer, byte by byte. This is probably not
8997what you want.
8998
8999If you want to edit a file of unibyte characters (Latin-1, for
9000example), you can do it by specifying `no-conversion' as the coding
9001system when reading the file. This coding system also turns off
9002multibyte characters in that buffer.
9003
9004If you turn off multibyte character support entirely, this turns off
9005character conversion as well.
9006
9007*** Displaying international characters on X Windows.
9008
9009A font for X typically displays just one alphabet or script.
9010Therefore, displaying the entire range of characters Emacs supports
9011requires using many fonts.
9012
9013Therefore, Emacs now supports "fontsets". Each fontset is a
9014collection of fonts, each assigned to a range of character codes.
9015
9016A fontset has a name, like a font. Individual fonts are defined by
9017the X server; fontsets are defined within Emacs itself. But once you
9018have defined a fontset, you can use it in a face or a frame just as
9019you would use a font.
9020
9021If a fontset specifies no font for a certain character, or if it
9022specifies a font that does not exist on your system, then it cannot
9023display that character. It will display an empty box instead.
9024
9025The fontset height and width are determined by the ASCII characters
9026(that is, by the font in the fontset which is used for ASCII
f327c2f9 9027characters).
3787e12e
GM
9028
9029*** Defining fontsets.
9030
9031Emacs does not use any fontset by default. Its default font is still
9032chosen as in previous versions. You can tell Emacs to use a fontset
9033with the `-fn' option or the `Font' X resource.
9034
9035Emacs creates a standard fontset automatically according to the value
9036of standard-fontset-spec. This fontset's short name is
9037`fontset-standard'. Bold, italic, and bold-italic variants of the
9038standard fontset are created automatically.
9039
9040If you specify a default ASCII font with the `Font' resource or `-fn'
9041argument, a fontset is generated from it. This works by replacing the
9042FOUNDARY, FAMILY, ADD_STYLE, and AVERAGE_WIDTH fields of the font name
9043with `*' then using this to specify a fontset. This fontset's short
9044name is `fontset-startup'.
9045
9046Emacs checks resources of the form Fontset-N where N is 0, 1, 2...
9047The resource value should have this form:
9048 FONTSET-NAME, [CHARSET-NAME:FONT-NAME]...
9049FONTSET-NAME should have the form of a standard X font name, except:
9050 * most fields should be just the wild card "*".
9051 * the CHARSET_REGISTRY field should be "fontset"
9052 * the CHARSET_ENCODING field can be any nickname of the fontset.
9053The construct CHARSET-NAME:FONT-NAME can be repeated any number
9054of times; each time specifies the font for one character set.
0969bd6a
EZ
9055CHARSET-NAME should be the name of a character set, and FONT-NAME
9056should specify an actual font to use for that character set.
3787e12e
GM
9057
9058Each of these fontsets has an alias which is made from the
9059last two font name fields, CHARSET_REGISTRY and CHARSET_ENCODING.
9060You can refer to the fontset by that alias or by its full name.
9061
9062For any character sets that you don't mention, Emacs tries to choose a
9063font by substituting into FONTSET-NAME. For instance, with the
9064following resource,
9065 Emacs*Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24
9066the font for ASCII is generated as below:
9067 -*-fixed-medium-r-normal-*-24-*-ISO8859-1
9068Here is the substitution rule:
9069 Change CHARSET_REGISTRY and CHARSET_ENCODING to that of the charset
9070 defined in the variable x-charset-registries. For instance, ASCII has
9071 the entry (ascii . "ISO8859-1") in this variable. Then, reduce
9072 sequences of wild cards -*-...-*- with a single wildcard -*-.
9073 (This is to prevent use of auto-scaled fonts.)
9074
9075The function which processes the fontset resource value to create the
9076fontset is called create-fontset-from-fontset-spec. You can also call
9077that function explicitly to create a fontset.
9078
9079With the X resource Emacs.Font, you can specify a fontset name just
9080like an actual font name. But be careful not to specify a fontset
9081name in a wildcard resource like Emacs*Font--that tries to specify the
9082fontset for other purposes including menus, and they cannot handle
9083fontsets.
9084
9085*** The command M-x set-language-environment sets certain global Emacs
9086defaults for a particular choice of language.
9087
9088Selecting a language environment typically specifies a default input
9089method and which coding systems to recognize automatically when
9090visiting files. However, it does not try to reread files you have
9091already visited; the text in those buffers is not affected. The
9092language environment may also specify a default choice of coding
9093system for new files that you create.
9094
9095It makes no difference which buffer is current when you use
9096set-language-environment, because these defaults apply globally to the
9097whole Emacs session.
9098
9099For example, M-x set-language-environment RET Latin-1 RET
9100chooses the Latin-1 character set. In the .emacs file, you can do this
9101with (set-language-environment "Latin-1").
9102
9103*** The command C-x RET f (set-buffer-file-coding-system)
9104specifies the file coding system for the current buffer. This
9105specifies what sort of character code translation to do when saving
9106the file. As an argument, you must specify the name of one of the
9107coding systems that Emacs supports.
9108
9109*** The command C-x RET c (universal-coding-system-argument)
9110lets you specify a coding system when you read or write a file.
9111This command uses the minibuffer to read a coding system name.
9112After you exit the minibuffer, the specified coding system
9113is used for *the immediately following command*.
9114
9115So if the immediately following command is a command to read or
9116write a file, it uses the specified coding system for that file.
9117
9118If the immediately following command does not use the coding system,
9119then C-x RET c ultimately has no effect.
9120
c3518b63 9121For example, C-x RET c iso-8859-1 RET C-x C-f temp RET
3787e12e
GM
9122visits the file `temp' treating it as ISO Latin-1.
9123
9124*** You can specify the coding system for a file using the -*-
9125construct. Include `coding: CODINGSYSTEM;' inside the -*-...-*-
9126to specify use of coding system CODINGSYSTEM. You can also
9127specify the coding system in a local variable list at the end
9128of the file.
9129
9130*** The command C-x RET t (set-terminal-coding-system) specifies
9131the coding system for terminal output. If you specify a character
9132code for terminal output, all characters output to the terminal are
9133translated into that character code.
9134
9135This feature is useful for certain character-only terminals built in
9136various countries to support the languages of those countries.
9137
9138By default, output to the terminal is not translated at all.
9139
9140*** The command C-x RET k (set-keyboard-coding-system) specifies
9141the coding system for keyboard input.
9142
9143Character code translation of keyboard input is useful for terminals
9144with keys that send non-ASCII graphic characters--for example,
9145some terminals designed for ISO Latin-1 or subsets of it.
9146
9147By default, keyboard input is not translated at all.
9148
9149Character code translation of keyboard input is similar to using an
9150input method, in that both define sequences of keyboard input that
9151translate into single characters. However, input methods are designed
9152to be convenient for interactive use, while the code translations are
9153designed to work with terminals.
9154
9155*** The command C-x RET p (set-buffer-process-coding-system)
9156specifies the coding system for input and output to a subprocess.
9157This command applies to the current buffer; normally, each subprocess
9158has its own buffer, and thus you can use this command to specify
9159translation to and from a particular subprocess by giving the command
9160in the corresponding buffer.
9161
9162By default, process input and output are not translated at all.
9163
9164*** The variable file-name-coding-system specifies the coding system
9165to use for encoding file names before operating on them.
9166It is also used for decoding file names obtained from the system.
9167
9168*** The command C-\ (toggle-input-method) activates or deactivates
9169an input method. If no input method has been selected before, the
9170command prompts for you to specify the language and input method you
9171want to use.
9172
9173C-u C-\ (select-input-method) lets you switch to a different input
9174method. C-h C-\ (or C-h I) describes the current input method.
9175
9176*** Some input methods remap the keyboard to emulate various keyboard
9177layouts commonly used for particular scripts. How to do this
9178remapping properly depends on your actual keyboard layout. To specify
9179which layout your keyboard has, use M-x quail-set-keyboard-layout.
9180
9181*** The command C-h C (describe-coding-system) displays
9182the coding systems currently selected for various purposes, plus
9183related information.
9184
9185*** The command C-h h (view-hello-file) displays a file called
9186HELLO, which has examples of text in many languages, using various
9187scripts.
9188
9189*** The command C-h L (describe-language-support) displays
9190information about the support for a particular language.
9191You specify the language as an argument.
9192
9193*** The mode line now contains a letter or character that identifies
9194the coding system used in the visited file. It normally follows the
9195first dash.
9196
9197A dash indicates the default state of affairs: no code conversion
9198(except CRLF => newline if appropriate). `=' means no conversion
9199whatsoever. The ISO 8859 coding systems are represented by digits
92001 through 9. Other coding systems are represented by letters:
9201
9202 A alternativnyj (Russian)
9203 B big5 (Chinese)
9204 C cn-gb-2312 (Chinese)
9205 C iso-2022-cn (Chinese)
9206 D in-is13194-devanagari (Indian languages)
9207 E euc-japan (Japanese)
9208 I iso-2022-cjk or iso-2022-ss2 (Chinese, Japanese, Korean)
9209 J junet (iso-2022-7) or old-jis (iso-2022-jp-1978-irv) (Japanese)
9210 K euc-korea (Korean)
9211 R koi8 (Russian)
9212 Q tibetan
9213 S shift_jis (Japanese)
9214 T lao
9215 T tis620 (Thai)
9216 V viscii or vscii (Vietnamese)
9217 i iso-2022-lock (Chinese, Japanese, Korean)
9218 k iso-2022-kr (Korean)
9219 v viqr (Vietnamese)
9220 z hz (Chinese)
9221
9222When you are using a character-only terminal (not a window system),
9223two additional characters appear in between the dash and the file
9224coding system. These two characters describe the coding system for
9225keyboard input, and the coding system for terminal output.
9226
9227*** The new variable rmail-file-coding-system specifies the code
9228conversion to use for RMAIL files. The default value is nil.
9229
9230When you read mail with Rmail, each message is decoded automatically
9231into Emacs' internal format. This has nothing to do with
9232rmail-file-coding-system. That variable controls reading and writing
9233Rmail files themselves.
9234
9235*** The new variable sendmail-coding-system specifies the code
9236conversion for outgoing mail. The default value is nil.
9237
9238Actually, there are three different ways of specifying the coding system
9239for sending mail:
9240
9241- If you use C-x RET f in the mail buffer, that takes priority.
9242- Otherwise, if you set sendmail-coding-system non-nil, that specifies it.
9243- Otherwise, the default coding system for new files is used,
9244 if that is non-nil. That comes from your language environment.
9245- Otherwise, Latin-1 is used.
9246
9247*** The command C-h t (help-with-tutorial) accepts a prefix argument
9248to specify the language for the tutorial file. Currently, English,
9249Japanese, Korean and Thai are supported. We welcome additional
9250translations.
9251
9252** An easy new way to visit a file with no code or format conversion
9253of any kind: Use M-x find-file-literally. There is also a command
9254insert-file-literally which inserts a file into the current buffer
9255without any conversion.
9256
9257** C-q's handling of octal character codes is changed.
9258You can now specify any number of octal digits.
9259RET terminates the digits and is discarded;
9260any other non-digit terminates the digits and is then used as input.
9261
9262** There are new commands for looking up Info documentation for
9263functions, variables and file names used in your programs.
9264
9265Type M-x info-lookup-symbol to look up a symbol in the buffer at point.
9266Type M-x info-lookup-file to look up a file in the buffer at point.
9267
9268Precisely which Info files are used to look it up depends on the major
9269mode. For example, in C mode, the GNU libc manual is used.
9270
9271** M-TAB in most programming language modes now runs the command
9272complete-symbol. This command performs completion on the symbol name
9273in the buffer before point.
9274
9275With a numeric argument, it performs completion based on the set of
9276symbols documented in the Info files for the programming language that
9277you are using.
9278
9279With no argument, it does completion based on the current tags tables,
9280just like the old binding of M-TAB (complete-tag).
9281
9282** File locking works with NFS now.
9283
9284The lock file for FILENAME is now a symbolic link named .#FILENAME,
9285in the same directory as FILENAME.
9286
9287This means that collision detection between two different machines now
9288works reasonably well; it also means that no file server or directory
9289can become a bottleneck.
9290
9291The new method does have drawbacks. It means that collision detection
9292does not operate when you edit a file in a directory where you cannot
9293create new files. Collision detection also doesn't operate when the
9294file server does not support symbolic links. But these conditions are
9295rare, and the ability to have collision detection while using NFS is
9296so useful that the change is worth while.
9297
9298When Emacs or a system crashes, this may leave behind lock files which
9299are stale. So you may occasionally get warnings about spurious
9300collisions. When you determine that the collision is spurious, just
9301tell Emacs to go ahead anyway.
9302
9303** If you wish to use Show Paren mode to display matching parentheses,
9304it is no longer sufficient to load paren.el. Instead you must call
9305show-paren-mode.
9306
9307** If you wish to use Delete Selection mode to replace a highlighted
9308selection when you insert new text, it is no longer sufficient to load
9309delsel.el. Instead you must call the function delete-selection-mode.
9310
9311** If you wish to use Partial Completion mode to complete partial words
9312within symbols or filenames, it is no longer sufficient to load
9313complete.el. Instead you must call the function partial-completion-mode.
9314
9315** If you wish to use uniquify to rename buffers for you,
9316it is no longer sufficient to load uniquify.el. You must also
9317set uniquify-buffer-name-style to one of the non-nil legitimate values.
9318
9319** Changes in View mode.
9320
9321*** Several new commands are available in View mode.
9322Do H in view mode for a list of commands.
9323
9324*** There are two new commands for entering View mode:
9325view-file-other-frame and view-buffer-other-frame.
9326
9327*** Exiting View mode does a better job of restoring windows to their
9328previous state.
9329
9330*** New customization variable view-scroll-auto-exit. If non-nil,
9331scrolling past end of buffer makes view mode exit.
9332
9333*** New customization variable view-exits-all-viewing-windows. If
9334non-nil, view-mode will at exit restore all windows viewing buffer,
9335not just the selected window.
9336
9337*** New customization variable view-read-only. If non-nil, visiting a
9338read-only file automatically enters View mode, and toggle-read-only
9339turns View mode on or off.
9340
9341*** New customization variable view-remove-frame-by-deleting controls
9342how to remove a not needed frame at view mode exit. If non-nil,
9343delete the frame, if nil make an icon of it.
9344
9345** C-x v l, the command to print a file's version control log,
9346now positions point at the entry for the file's current branch version.
9347
9348** C-x v =, the command to compare a file with the last checked-in version,
9349has a new feature. If the file is currently not locked, so that it is
9350presumably identical to the last checked-in version, the command now asks
9351which version to compare with.
9352
9353** When using hideshow.el, incremental search can temporarily show hidden
9354blocks if a match is inside the block.
9355
9356The block is hidden again if the search is continued and the next match
9357is outside the block. By customizing the variable
9358isearch-hide-immediately you can choose to hide all the temporarily
9359shown blocks only when exiting from incremental search.
9360
9361By customizing the variable hs-isearch-open you can choose what kind
9362of blocks to temporarily show during isearch: comment blocks, code
9363blocks, all of them or none.
9364
9365** The new command C-x 4 0 (kill-buffer-and-window) kills the
9366current buffer and deletes the selected window. It asks for
9367confirmation first.
9368
9369** C-x C-w, which saves the buffer into a specified file name,
9370now changes the major mode according to that file name.
9371However, the mode will not be changed if
9372(1) a local variables list or the `-*-' line specifies a major mode, or
9373(2) the current major mode is a "special" mode,
9374 not suitable for ordinary files, or
9375(3) the new file name does not particularly specify any mode.
9376
9377This applies to M-x set-visited-file-name as well.
9378
9379However, if you set change-major-mode-with-file-name to nil, then
9380these commands do not change the major mode.
9381
9382** M-x occur changes.
9383
9384*** If the argument to M-x occur contains upper case letters,
9385it performs a case-sensitive search.
9386
9387*** In the *Occur* buffer made by M-x occur,
9388if you type g or M-x revert-buffer, this repeats the search
9389using the same regular expression and the same buffer as before.
9390
9391** In Transient Mark mode, the region in any one buffer is highlighted
9392in just one window at a time. At first, it is highlighted in the
9393window where you set the mark. The buffer's highlighting remains in
9394that window unless you select to another window which shows the same
9395buffer--then the highlighting moves to that window.
9396
9397** The feature to suggest key bindings when you use M-x now operates
9398after the command finishes. The message suggesting key bindings
9399appears temporarily in the echo area. The previous echo area contents
9400come back after a few seconds, in case they contain useful information.
9401
9402** Each frame now independently records the order for recently
9403selected buffers, so that the default for C-x b is now based on the
9404buffers recently selected in the selected frame.
9405
9406** Outline mode changes.
9407
9408*** Outline mode now uses overlays (this is the former noutline.el).
9409
9410*** Incremental searches skip over invisible text in Outline mode.
9411
9412** When a minibuffer window is active but not the selected window, if
9413you try to use the minibuffer, you used to get a nested minibuffer.
9414Now, this not only gives an error, it also cancels the minibuffer that
9415was already active.
9416
9417The motive for this change is so that beginning users do not
9418unknowingly move away from minibuffers, leaving them active, and then
9419get confused by it.
9420
9421If you want to be able to have recursive minibuffers, you must
9422set enable-recursive-minibuffers to non-nil.
9423
9424** Changes in dynamic abbrevs.
9425
9426*** Expanding dynamic abbrevs with M-/ is now smarter about case
9427conversion. If the expansion has mixed case not counting the first
9428character, and the abbreviation matches the beginning of the expansion
9429including case, then the expansion is copied verbatim.
9430
9431The expansion is also copied verbatim if the abbreviation itself has
9432mixed case. And using SPC M-/ to copy an additional word always
9433copies it verbatim except when the previous copied word is all caps.
9434
9435*** The values of `dabbrev-case-replace' and `dabbrev-case-fold-search'
9436are no longer Lisp expressions. They have simply three possible
9437values.
9438
9439`dabbrev-case-replace' has these three values: nil (don't preserve
9440case), t (do), or `case-replace' (do like M-x query-replace).
9441`dabbrev-case-fold-search' has these three values: nil (don't ignore
9442case), t (do), or `case-fold-search' (do like search).
9443
9444** Minibuffer history lists are truncated automatically now to a
9445certain length. The variable history-length specifies how long they
9446can be. The default value is 30.
9447
9448** Changes in Mail mode.
9449
9450*** The key C-x m no longer runs the `mail' command directly.
9451Instead, it runs the command `compose-mail', which invokes the mail
9452composition mechanism you have selected with the variable
9453`mail-user-agent'. The default choice of user agent is
9454`sendmail-user-agent', which gives behavior compatible with the old
9455behavior.
9456
9457C-x 4 m now runs compose-mail-other-window, and C-x 5 m runs
9458compose-mail-other-frame.
9459
9460*** While composing a reply to a mail message, from Rmail, you can use
9461the command C-c C-r to cite just the region from the message you are
9462replying to. This copies the text which is the selected region in the
9463buffer that shows the original message.
9464
9465*** The command C-c C-i inserts a file at the end of the message,
9466with separator lines around the contents.
9467
9468*** The command M-x expand-mail-aliases expands all mail aliases
9469in suitable mail headers. Emacs automatically extracts mail alias
9470definitions from your mail alias file (e.g., ~/.mailrc). You do not
9471need to expand mail aliases yourself before sending mail.
9472
9473*** New features in the mail-complete command.
9474
9475**** The mail-complete command now inserts the user's full name,
9476for local users or if that is known. The variable mail-complete-style
9477controls the style to use, and whether to do this at all.
9478Its values are like those of mail-from-style.
9479
9480**** The variable mail-passwd-command lets you specify a shell command
9481to run to fetch a set of password-entries that add to the ones in
9482/etc/passwd.
9483
9484**** The variable mail-passwd-file now specifies a list of files to read
9485to get the list of user ids. By default, one file is used:
9486/etc/passwd.
9487
9488** You can "quote" a file name to inhibit special significance of
9489special syntax, by adding `/:' to the beginning. Thus, if you have a
9490directory named `/foo:', you can prevent it from being treated as a
9491reference to a remote host named `foo' by writing it as `/:/foo:'.
9492
9493Emacs uses this new construct automatically when necessary, such as
9494when you start it with a working directory whose name might otherwise
9495be taken to be magic.
9496
9497** There is a new command M-x grep-find which uses find to select
9498files to search through, and grep to scan them. The output is
9499available in a Compile mode buffer, as with M-x grep.
9500
9501M-x grep now uses the -e option if the grep program supports that.
9502(-e prevents problems if the search pattern starts with a dash.)
9503
9504** In Dired, the & command now flags for deletion the files whose names
9505suggest they are probably not needed in the long run.
9506
9507In Dired, * is now a prefix key for mark-related commands.
9508
9509new key dired.el binding old key
9510------- ---------------- -------
9511 * c dired-change-marks c
9512 * m dired-mark m
9513 * * dired-mark-executables * (binding deleted)
9514 * / dired-mark-directories / (binding deleted)
9515 * @ dired-mark-symlinks @ (binding deleted)
9516 * u dired-unmark u
9517 * DEL dired-unmark-backward DEL
3a426197 9518 * ? dired-unmark-all-files C-M-?
3787e12e
GM
9519 * ! dired-unmark-all-marks
9520 * % dired-mark-files-regexp % m
9521 * C-n dired-next-marked-file M-}
9522 * C-p dired-prev-marked-file M-{
9523
9524** Rmail changes.
9525
9526*** When Rmail cannot convert your incoming mail into Babyl format, it
9527saves the new mail in the file RMAILOSE.n, where n is an integer
9528chosen to make a unique name. This way, Rmail will not keep crashing
9529each time you run it.
9530
9531*** In Rmail, the variable rmail-summary-line-count-flag now controls
9532whether to include the line count in the summary. Non-nil means yes.
9533
9534*** In Rmail summary buffers, d and C-d (the commands to delete
9535messages) now take repeat counts as arguments. A negative argument
9536means to move in the opposite direction.
9537
9538*** In Rmail, the t command now takes an optional argument which lets
9539you specify whether to show the message headers in full or pruned.
9540
9541*** In Rmail, the new command w (rmail-output-body-to-file) writes
9542just the body of the current message into a file, without the headers.
9543It takes the file name from the message subject, by default, but you
9544can edit that file name in the minibuffer before it is actually used
9545for output.
9546
9547** Gnus changes.
9548
9549*** nntp.el has been totally rewritten in an asynchronous fashion.
9550
9551*** Article prefetching functionality has been moved up into
9552Gnus.
9553
9554*** Scoring can now be performed with logical operators like
9555`and', `or', `not', and parent redirection.
9556
9557*** Article washing status can be displayed in the
9558article mode line.
9559
9560*** gnus.el has been split into many smaller files.
9561
9562*** Suppression of duplicate articles based on Message-ID.
9563
9564(setq gnus-suppress-duplicates t)
9565
9566*** New variables for specifying what score and adapt files
9567are to be considered home score and adapt files. See
9568`gnus-home-score-file' and `gnus-home-adapt-files'.
9569
9570*** Groups can inherit group parameters from parent topics.
9571
9572*** Article editing has been revamped and is now usable.
9573
9574*** Signatures can be recognized in more intelligent fashions.
9575See `gnus-signature-separator' and `gnus-signature-limit'.
9576
9577*** Summary pick mode has been made to look more nn-like.
9578Line numbers are displayed and the `.' command can be
9579used to pick articles.
9580
9581*** Commands for moving the .newsrc.eld from one server to
9582another have been added.
9583
9584 `M-x gnus-change-server'
9585
9586*** A way to specify that "uninteresting" fields be suppressed when
9587generating lines in buffers.
9588
9589*** Several commands in the group buffer can be undone with
3a426197 9590`C-M-_'.
3787e12e
GM
9591
9592*** Scoring can be done on words using the new score type `w'.
9593
9594*** Adaptive scoring can be done on a Subject word-by-word basis:
9595
9596 (setq gnus-use-adaptive-scoring '(word))
9597
9598*** Scores can be decayed.
9599
9600 (setq gnus-decay-scores t)
9601
9602*** Scoring can be performed using a regexp on the Date header. The
9603Date is normalized to compact ISO 8601 format first.
9604
9605*** A new command has been added to remove all data on articles from
9606the native server.
9607
9608 `M-x gnus-group-clear-data-on-native-groups'
9609
9610*** A new command for reading collections of documents
3a426197 9611(nndoc with nnvirtual on top) has been added -- `C-M-d'.
3787e12e
GM
9612
9613*** Process mark sets can be pushed and popped.
9614
9615*** A new mail-to-news backend makes it possible to post
9616even when the NNTP server doesn't allow posting.
9617
9618*** A new backend for reading searches from Web search engines
9619(DejaNews, Alta Vista, InReference) has been added.
9620
9621 Use the `G w' command in the group buffer to create such
9622 a group.
9623
9624*** Groups inside topics can now be sorted using the standard
9625sorting functions, and each topic can be sorted independently.
9626
9627 See the commands under the `T S' submap.
9628
9629*** Subsets of the groups can be sorted independently.
9630
9631 See the commands under the `G P' submap.
9632
9633*** Cached articles can be pulled into the groups.
9634
9635 Use the `Y c' command.
9636
9637*** Score files are now applied in a more reliable order.
9638
9639*** Reports on where mail messages end up can be generated.
9640
9641 `M-x nnmail-split-history'
9642
9643*** More hooks and functions have been added to remove junk
9644from incoming mail before saving the mail.
9645
9646 See `nnmail-prepare-incoming-header-hook'.
9647
9648*** The nnml mail backend now understands compressed article files.
9649
9650*** To enable Gnus to read/post multi-lingual articles, you must execute
9651the following code, for instance, in your .emacs.
9652
9653 (add-hook 'gnus-startup-hook 'gnus-mule-initialize)
9654
9655Then, when you start Gnus, it will decode non-ASCII text automatically
9656and show appropriate characters. (Note: if you are using gnus-mime
9657from the SEMI package, formerly known as TM, you should NOT add this
9658hook to gnus-startup-hook; gnus-mime has its own method of handling
9659this issue.)
9660
9661Since it is impossible to distinguish all coding systems
9662automatically, you may need to specify a choice of coding system for a
9663particular news group. This can be done by:
9664
9665 (gnus-mule-add-group NEWSGROUP 'CODING-SYSTEM)
9666
9667Here NEWSGROUP should be a string which names a newsgroup or a tree
9668of newsgroups. If NEWSGROUP is "XXX.YYY", all news groups under
9669"XXX.YYY" (including "XXX.YYY.ZZZ") will use the specified coding
9670system. CODING-SYSTEM specifies which coding system to use (for both
9671for reading and posting).
9672
9673CODING-SYSTEM can also be a cons cell of the form
9674 (READ-CODING-SYSTEM . POST-CODING-SYSTEM)
9675Then READ-CODING-SYSTEM is used when you read messages from the
9676newsgroups, while POST-CODING-SYSTEM is used when you post messages
9677there.
9678
9679Emacs knows the right coding systems for certain newsgroups by
9680default. Here are some of these default settings:
9681
9682 (gnus-mule-add-group "fj" 'iso-2022-7)
9683 (gnus-mule-add-group "alt.chinese.text" 'hz-gb-2312)
9684 (gnus-mule-add-group "alt.hk" 'hz-gb-2312)
9685 (gnus-mule-add-group "alt.chinese.text.big5" 'cn-big5)
9686 (gnus-mule-add-group "soc.culture.vietnamese" '(nil . viqr))
9687
9688When you reply by mail to an article, these settings are ignored;
9689the mail is encoded according to sendmail-coding-system, as usual.
9690
9691** CC mode changes.
9692
9693*** If you edit primarily one style of C (or C++, Objective-C, Java)
9694code, you may want to make the CC Mode style variables have global
9695values so that you can set them directly in your .emacs file. To do
9696this, set c-style-variables-are-local-p to nil in your .emacs file.
9697Note that this only takes effect if you do it *before* cc-mode.el is
9698loaded.
9699
9700If you typically edit more than one style of C (or C++, Objective-C,
9701Java) code in a single Emacs session, you may want to make the CC Mode
9702style variables have buffer local values. By default, all buffers
9703share the same style variable settings; to make them buffer local, set
9704c-style-variables-are-local-p to t in your .emacs file. Note that you
9705must do this *before* CC Mode is loaded.
9706
9707*** The new variable c-indentation-style holds the C style name
9708of the current buffer.
9709
9710*** The variable c-block-comments-indent-p has been deleted, because
9711it is no longer necessary. C mode now handles all the supported styles
9712of block comments, with no need to say which one you will use.
9713
9714*** There is a new indentation style "python", which specifies the C
9715style that the Python developers like.
9716
9717*** There is a new c-cleanup-list option: brace-elseif-brace.
9718This says to put ...} else if (...) {... on one line,
9719just as brace-else-brace says to put ...} else {... on one line.
9720
9721** VC Changes [new]
9722
9614842d 9723*** In vc-retrieve-snapshot (C-x v r), if you don't specify a snapshot
3787e12e
GM
9724name, it retrieves the *latest* versions of all files in the current
9725directory and its subdirectories (aside from files already locked).
9726
9727This feature is useful if your RCS directory is a link to a common
9728master directory, and you want to pick up changes made by other
9729developers.
9730
9731You can do the same thing for an individual file by typing C-u C-x C-q
9732RET in a buffer visiting that file.
9733
9734*** VC can now handle files under CVS that are being "watched" by
9735other developers. Such files are made read-only by CVS. To get a
9736writable copy, type C-x C-q in a buffer visiting such a file. VC then
9737calls "cvs edit", which notifies the other developers of it.
9738
9739*** vc-version-diff (C-u C-x v =) now suggests reasonable defaults for
9740version numbers, based on the current state of the file.
9741
9742** Calendar changes.
9743
9614842d
JW
9744*** A new function, list-holidays, allows you list holidays or
9745subclasses of holidays for ranges of years. Related menu items allow
9746you do this for the year of the selected date, or the
9747following/previous years.
9748
9749*** There is now support for the Baha'i calendar system. Use `pb' in
9750the *Calendar* buffer to display the current Baha'i date. The Baha'i
9751calendar, or "Badi calendar" is a system of 19 months with 19 days
9752each, and 4 intercalary days (5 during a Gregorian leap year). The
9753calendar begins May 23, 1844, with each of the months named after a
9754supposed attribute of God.
3787e12e
GM
9755
9756** ps-print changes
9757
2261f14e
GM
9758There are some new user variables and subgroups for customizing the page
9759layout.
3787e12e 9760
2261f14e 9761*** Headers & Footers (subgroup)
3787e12e 9762
2261f14e
GM
9763Some printer systems print a header page and force the first page to
9764be printed on the back of the header page when using duplex. If your
9765printer system has this behavior, set variable
9766`ps-banner-page-when-duplexing' to t.
3787e12e 9767
2261f14e
GM
9768If variable `ps-banner-page-when-duplexing' is non-nil, it prints a
9769blank page as the very first printed page. So, it behaves as if the
a5d03456 9770very first character of buffer (or region) were a form feed ^L (\014).
3787e12e 9771
2261f14e
GM
9772The variable `ps-spool-config' specifies who is responsible for
9773setting duplex mode and page size. Valid values are:
3787e12e 9774
2261f14e
GM
9775 lpr-switches duplex and page size are configured by `ps-lpr-switches'.
9776 Don't forget to set `ps-lpr-switches' to select duplex
9777 printing for your printer.
3787e12e 9778
2261f14e
GM
9779 setpagedevice duplex and page size are configured by ps-print using the
9780 setpagedevice PostScript operator.
3787e12e 9781
2261f14e
GM
9782 nil duplex and page size are configured by ps-print *not* using
9783 the setpagedevice PostScript operator.
3787e12e 9784
2261f14e
GM
9785The variable `ps-spool-tumble' specifies how the page images on
9786opposite sides of a sheet are oriented with respect to each other. If
9787`ps-spool-tumble' is nil, ps-print produces output suitable for
9788bindings on the left or right. If `ps-spool-tumble' is non-nil,
9789ps-print produces output suitable for bindings at the top or bottom.
9790This variable takes effect only if `ps-spool-duplex' is non-nil.
9791The default value is nil.
3787e12e 9792
2261f14e
GM
9793The variable `ps-header-frame-alist' specifies a header frame
9794properties alist. Valid frame properties are:
3787e12e 9795
2261f14e
GM
9796 fore-color Specify the foreground frame color.
9797 Value should be a float number between 0.0 (black
9798 color) and 1.0 (white color), or a string which is a
9799 color name, or a list of 3 float numbers which
9800 correspond to the Red Green Blue color scale, each
9801 float number between 0.0 (dark color) and 1.0 (bright
9802 color). The default is 0 ("black").
3787e12e 9803
2261f14e
GM
9804 back-color Specify the background frame color (similar to fore-color).
9805 The default is 0.9 ("gray90").
9806
9807 shadow-color Specify the shadow color (similar to fore-color).
9808 The default is 0 ("black").
9809
9810 border-color Specify the border color (similar to fore-color).
9811 The default is 0 ("black").
9812
9813 border-width Specify the border width.
9814 The default is 0.4.
9815
9816Any other property is ignored.
9817
9818Don't change this alist directly; instead use Custom, or the
9819`ps-value', `ps-get', `ps-put' and `ps-del' functions (see there for
9820documentation).
9821
9822Ps-print can also print footers. The footer variables are:
9823`ps-print-footer', `ps-footer-offset', `ps-print-footer-frame',
9824`ps-footer-font-family', `ps-footer-font-size', `ps-footer-line-pad',
9825`ps-footer-lines', `ps-left-footer', `ps-right-footer' and
9826`ps-footer-frame-alist'. These variables are similar to those
9827controlling headers.
3787e12e 9828
2261f14e
GM
9829*** Color management (subgroup)
9830
9831If `ps-print-color-p' is non-nil, the buffer's text will be printed in
9832color.
9833
9834*** Face Management (subgroup)
3787e12e 9835
2261f14e
GM
9836If you need to print without worrying about face background colors,
9837set the variable `ps-use-face-background' which specifies if face
9838background should be used. Valid values are:
9839
9840 t always use face background color.
9841 nil never use face background color.
9842 (face...) list of faces whose background color will be used.
9843
9844*** N-up printing (subgroup)
9845
9846The variable `ps-n-up-printing' specifies the number of pages per
9847sheet of paper.
9848
9849The variable `ps-n-up-margin' specifies the margin in points (pt)
9850between the sheet border and the n-up printing.
9851
9852If variable `ps-n-up-border-p' is non-nil, a border is drawn around
9853each page.
9854
9855The variable `ps-n-up-filling' specifies how the page matrix is filled
9856on each sheet of paper. Following are the valid values for
9857`ps-n-up-filling' with a filling example using a 3x4 page matrix:
9858
9859 `left-top' 1 2 3 4 `left-bottom' 9 10 11 12
9860 5 6 7 8 5 6 7 8
9861 9 10 11 12 1 2 3 4
3787e12e 9862
2261f14e
GM
9863 `right-top' 4 3 2 1 `right-bottom' 12 11 10 9
9864 8 7 6 5 8 7 6 5
9865 12 11 10 9 4 3 2 1
9866
9867 `top-left' 1 4 7 10 `bottom-left' 3 6 9 12
9868 2 5 8 11 2 5 8 11
9869 3 6 9 12 1 4 7 10
9870
9871 `top-right' 10 7 4 1 `bottom-right' 12 9 6 3
9872 11 8 5 2 11 8 5 2
9873 12 9 6 3 10 7 4 1
3787e12e 9874
2261f14e
GM
9875Any other value is treated as `left-top'.
9876
9877*** Zebra stripes (subgroup)
3787e12e 9878
2261f14e
GM
9879The variable `ps-zebra-color' controls the zebra stripes grayscale or
9880RGB color.
9881
9882The variable `ps-zebra-stripe-follow' specifies how zebra stripes
9883continue on next page. Visually, valid values are (the character `+'
9884to the right of each column indicates that a line is printed):
9885
9886 `nil' `follow' `full' `full-follow'
9887 Current Page -------- ----------- --------- ----------------
9888 1 XXXXX + 1 XXXXXXXX + 1 XXXXXX + 1 XXXXXXXXXXXXX +
9889 2 XXXXX + 2 XXXXXXXX + 2 XXXXXX + 2 XXXXXXXXXXXXX +
9890 3 XXXXX + 3 XXXXXXXX + 3 XXXXXX + 3 XXXXXXXXXXXXX +
9891 4 + 4 + 4 + 4 +
9892 5 + 5 + 5 + 5 +
9893 6 + 6 + 6 + 6 +
9894 7 XXXXX + 7 XXXXXXXX + 7 XXXXXX + 7 XXXXXXXXXXXXX +
9895 8 XXXXX + 8 XXXXXXXX + 8 XXXXXX + 8 XXXXXXXXXXXXX +
9896 9 XXXXX + 9 XXXXXXXX + 9 XXXXXX + 9 XXXXXXXXXXXXX +
9897 10 + 10 +
9898 11 + 11 +
9899 -------- ----------- --------- ----------------
9900 Next Page -------- ----------- --------- ----------------
9901 12 XXXXX + 12 + 10 XXXXXX + 10 +
9902 13 XXXXX + 13 XXXXXXXX + 11 XXXXXX + 11 +
9903 14 XXXXX + 14 XXXXXXXX + 12 XXXXXX + 12 +
9904 15 + 15 XXXXXXXX + 13 + 13 XXXXXXXXXXXXX +
9905 16 + 16 + 14 + 14 XXXXXXXXXXXXX +
9906 17 + 17 + 15 + 15 XXXXXXXXXXXXX +
9907 18 XXXXX + 18 + 16 XXXXXX + 16 +
9908 19 XXXXX + 19 XXXXXXXX + 17 XXXXXX + 17 +
9909 20 XXXXX + 20 XXXXXXXX + 18 XXXXXX + 18 +
9910 21 + 21 XXXXXXXX +
9911 22 + 22 +
9912 -------- ----------- --------- ----------------
9913
9914Any other value is treated as `nil'.
9915
9916
9917*** Printer management (subgroup)
9918
9919The variable `ps-printer-name-option' determines the option used by
9920some utilities to indicate the printer name; it's used only when
9921`ps-printer-name' is a non-empty string. If you're using the lpr
9922utility to print, for example, `ps-printer-name-option' should be set
9923to "-P".
9924
9925The variable `ps-manual-feed' indicates if the printer requires manual
9926paper feeding. If it's nil, automatic feeding takes place. If it's
9927non-nil, manual feeding takes place.
9928
9929The variable `ps-end-with-control-d' specifies whether C-d (\x04)
9930should be inserted at end of the generated PostScript. Non-nil means
9931do so.
9932
9933*** Page settings (subgroup)
9934
9935If variable `ps-warn-paper-type' is nil, it's *not* treated as an
9936error if the PostScript printer doesn't have a paper with the size
9937indicated by `ps-paper-type'; the default paper size will be used
9938instead. If `ps-warn-paper-type' is non-nil, an error is signaled if
9939the PostScript printer doesn't support a paper with the size indicated
9940by `ps-paper-type'. This is used when `ps-spool-config' is set to
9941`setpagedevice'.
9942
9943The variable `ps-print-upside-down' determines the orientation for
9944printing pages: nil means `normal' printing, non-nil means
9945`upside-down' printing (that is, the page is rotated by 180 degrees).
9946
9947The variable `ps-selected-pages' specifies which pages to print. If
9948it's nil, all pages are printed. If it's a list, list elements may be
9949integers specifying a single page to print, or cons cells (FROM . TO)
9950specifying to print from page FROM to TO. Invalid list elements, that
9951is integers smaller than one, or elements whose FROM is greater than
9952its TO, are ignored.
9953
9954The variable `ps-even-or-odd-pages' specifies how to print even/odd
9955pages. Valid values are:
9956
9957 nil print all pages.
9958
9959 `even-page' print only even pages.
9960
9961 `odd-page' print only odd pages.
9962
9963 `even-sheet' print only even sheets.
9964 That is, if `ps-n-up-printing' is 1, it behaves like
9965 `even-page', but for values greater than 1, it'll
9966 print only the even sheet of paper.
9967
9968 `odd-sheet' print only odd sheets.
9969 That is, if `ps-n-up-printing' is 1, it behaves like
9970 `odd-page'; but for values greater than 1, it'll print
9971 only the odd sheet of paper.
9972
9973Any other value is treated as nil.
9974
9975If you set `ps-selected-pages' (see there for documentation), pages
9976are filtered by `ps-selected-pages', and then by
9977`ps-even-or-odd-pages'. For example, if we have:
9978
9979 (setq ps-selected-pages '(1 4 (6 . 10) (12 . 16) 20))
9980
9981and we combine this with `ps-even-or-odd-pages' and
9982`ps-n-up-printing', we get:
9983
9984`ps-n-up-printing' = 1:
9985 `ps-even-or-odd-pages' PAGES PRINTED
9986 nil 1, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 20
9987 even-page 4, 6, 8, 10, 12, 14, 16, 20
9988 odd-page 1, 7, 9, 13, 15
9989 even-sheet 4, 6, 8, 10, 12, 14, 16, 20
9990 odd-sheet 1, 7, 9, 13, 15
9991
9992`ps-n-up-printing' = 2:
9993 `ps-even-or-odd-pages' PAGES PRINTED
9994 nil 1/4, 6/7, 8/9, 10/12, 13/14, 15/16, 20
9995 even-page 4/6, 8/10, 12/14, 16/20
9996 odd-page 1/7, 9/13, 15
9997 even-sheet 6/7, 10/12, 15/16
9998 odd-sheet 1/4, 8/9, 13/14, 20
9999
10000*** Miscellany (subgroup)
10001
10002The variable `ps-error-handler-message' specifies where error handler
10003messages should be sent.
10004
10005It is also possible to add a user-defined PostScript prologue code in
10006front of all generated prologue code by setting the variable
10007`ps-user-defined-prologue'.
10008
10009The variable `ps-line-number-font' specifies the font for line numbers.
10010
10011The variable `ps-line-number-font-size' specifies the font size in
10012points for line numbers.
10013
10014The variable `ps-line-number-color' specifies the color for line
10015numbers. See `ps-zebra-color' for documentation.
10016
10017The variable `ps-line-number-step' specifies the interval in which
10018line numbers are printed. For example, if `ps-line-number-step' is set
10019to 2, the printing will look like:
10020
10021 1 one line
10022 one line
10023 3 one line
10024 one line
10025 5 one line
10026 one line
10027 ...
10028
10029Valid values are:
10030
10031integer an integer specifying the interval in which line numbers are
10032 printed. If it's smaller than or equal to zero, 1
10033 is used.
10034
10035`zebra' specifies that only the line number of the first line in a
10036 zebra stripe is to be printed.
10037
10038Any other value is treated as `zebra'.
10039
10040The variable `ps-line-number-start' specifies the starting point in
10041the interval given by `ps-line-number-step'. For example, if
10042`ps-line-number-step' is set to 3, and `ps-line-number-start' is set to
100433, the output will look like:
10044
10045 one line
10046 one line
10047 3 one line
10048 one line
10049 one line
10050 6 one line
10051 one line
10052 one line
10053 9 one line
10054 one line
10055 ...
10056
10057The variable `ps-postscript-code-directory' specifies the directory
10058where the PostScript prologue file used by ps-print is found.
10059
10060The variable `ps-line-spacing' determines the line spacing in points,
10061for ordinary text, when generating PostScript (similar to
10062`ps-font-size').
10063
10064The variable `ps-paragraph-spacing' determines the paragraph spacing,
10065in points, for ordinary text, when generating PostScript (similar to
10066`ps-font-size').
10067
10068The variable `ps-paragraph-regexp' specifies the paragraph delimiter.
10069
10070The variable `ps-begin-cut-regexp' and `ps-end-cut-regexp' specify the
10071start and end of a region to cut out when printing.
3787e12e
GM
10072
10073** hideshow changes.
10074
10075*** now supports hiding of blocks of single line comments (like // for
10076C++, ; for lisp).
10077
10078*** Support for java-mode added.
10079
10080*** When doing `hs-hide-all' it is now possible to also hide the comments
10081in the file if `hs-hide-comments-when-hiding-all' is set.
10082
f3780fe4 10083*** The new function `hs-hide-initial-comment' hides the comments at
3787e12e
GM
10084the beginning of the files. Finally those huge RCS logs don't stay in your
10085way! This is run by default when entering the `hs-minor-mode'.
10086
10087*** Now uses overlays instead of `selective-display', so is more
10088robust and a lot faster.
10089
10090*** A block beginning can span multiple lines.
10091
10092*** The new variable `hs-show-hidden-short-form' if t, directs hideshow
10093to show only the beginning of a block when it is hidden. See the
10094documentation for more details.
10095
10096** Changes in Enriched mode.
10097
10098*** When you visit a file in enriched-mode, Emacs will make sure it is
10099filled to the current fill-column. This behavior is now independent
10100of the size of the window. When you save the file, the fill-column in
10101use is stored as well, so that the whole buffer need not be refilled
10102the next time unless the fill-column is different.
10103
10104*** use-hard-newlines is now a minor mode. When it is enabled, Emacs
10105distinguishes between hard and soft newlines, and treats hard newlines
10106as paragraph boundaries. Otherwise all newlines inserted are marked
10107as soft, and paragraph boundaries are determined solely from the text.
10108
10109** Font Lock mode
10110
10111*** Custom support
10112
10113The variables font-lock-face-attributes, font-lock-display-type and
10114font-lock-background-mode are now obsolete; the recommended way to specify the
10115faces to use for Font Lock mode is with M-x customize-group on the new custom
10116group font-lock-highlighting-faces. If you set font-lock-face-attributes in
10117your ~/.emacs file, Font Lock mode will respect its value. However, you should
10118consider converting from setting that variable to using M-x customize.
10119
10120You can still use X resources to specify Font Lock face appearances.
10121
10122*** Maximum decoration
10123
10124Fontification now uses the maximum level of decoration supported by
10125default. Previously, fontification used a mode-specific default level
10126of decoration, which is typically the minimum level of decoration
10127supported. You can set font-lock-maximum-decoration to nil
10128to get the old behavior.
10129
10130*** New support
10131
10132Support is now provided for Java, Objective-C, AWK and SIMULA modes.
10133
10134Note that Font Lock mode can be turned on without knowing exactly what modes
10135support Font Lock mode, via the command global-font-lock-mode.
10136
10137*** Configurable support
10138
10139Support for C, C++, Objective-C and Java can be more easily configured for
10140additional types and classes via the new variables c-font-lock-extra-types,
10141c++-font-lock-extra-types, objc-font-lock-extra-types and, you guessed it,
10142java-font-lock-extra-types. These value of each of these variables should be a
10143list of regexps matching the extra type names. For example, the default value
10144of c-font-lock-extra-types is ("\\sw+_t") which means fontification follows the
10145convention that C type names end in _t. This results in slower fontification.
10146
10147Of course, you can change the variables that specify fontification in whatever
10148way you wish, typically by adding regexps. However, these new variables make
10149it easier to make specific and common changes for the fontification of types.
10150
10151*** Adding highlighting patterns to existing support
10152
10153You can use the new function font-lock-add-keywords to add your own
10154highlighting patterns, such as for project-local or user-specific constructs,
10155for any mode.
10156
10157For example, to highlight `FIXME:' words in C comments, put:
10158
10159 (font-lock-add-keywords 'c-mode '(("\\<FIXME:" 0 font-lock-warning-face t)))
10160
10161in your ~/.emacs.
10162
10163*** New faces
10164
10165Font Lock now defines two new faces, font-lock-builtin-face and
10166font-lock-warning-face. These are intended to highlight builtin keywords,
10167distinct from a language's normal keywords, and objects that should be brought
10168to user attention, respectively. Various modes now use these new faces.
10169
10170*** Changes to fast-lock support mode
10171
10172The fast-lock package, one of the two Font Lock support modes, can now process
10173cache files silently. You can use the new variable fast-lock-verbose, in the
10174same way as font-lock-verbose, to control this feature.
10175
10176*** Changes to lazy-lock support mode
10177
10178The lazy-lock package, one of the two Font Lock support modes, can now fontify
10179according to the true syntactic context relative to other lines. You can use
10180the new variable lazy-lock-defer-contextually to control this feature. If
10181non-nil, changes to the buffer will cause subsequent lines in the buffer to be
10182refontified after lazy-lock-defer-time seconds of idle time. If nil, then only
10183the modified lines will be refontified; this is the same as the previous Lazy
dfd67a62 10184Lock mode behavior and the behavior of Font Lock mode.
3787e12e
GM
10185
10186This feature is useful in modes where strings or comments can span lines.
10187For example, if a string or comment terminating character is deleted, then if
10188this feature is enabled subsequent lines in the buffer will be correctly
10189refontified to reflect their new syntactic context. Previously, only the line
10190containing the deleted character would be refontified and you would have to use
10191the command M-g M-g (font-lock-fontify-block) to refontify some lines.
10192
10193As a consequence of this new feature, two other variables have changed:
10194
10195Variable `lazy-lock-defer-driven' is renamed `lazy-lock-defer-on-scrolling'.
10196Variable `lazy-lock-defer-time' can now only be a time, i.e., a number.
10197Buffer modes for which on-the-fly deferral applies can be specified via the
10198new variable `lazy-lock-defer-on-the-fly'.
10199
10200If you set these variables in your ~/.emacs, then you may have to change those
10201settings.
10202
10203** Ada mode changes.
10204
10205*** There is now better support for using find-file.el with Ada mode.
10206If you switch between spec and body, the cursor stays in the same
10207procedure (modulo overloading). If a spec has no body file yet, but
10208you try to switch to its body file, Ada mode now generates procedure
10209stubs.
10210
10211*** There are two new commands:
10212 - `ada-make-local' : invokes gnatmake on the current buffer
10213 - `ada-check-syntax' : check syntax of current buffer.
10214
10215The user options `ada-compiler-make', `ada-make-options',
10216`ada-language-version', `ada-compiler-syntax-check', and
10217`ada-compile-options' are used within these commands.
10218
10219*** Ada mode can now work with Outline minor mode. The outline level
10220is calculated from the indenting, not from syntactic constructs.
10221Outlining does not work if your code is not correctly indented.
10222
10223*** The new function `ada-gnat-style' converts the buffer to the style of
10224formatting used in GNAT. It places two blanks after a comment start,
10225places one blank between a word end and an opening '(', and puts one
10226space between a comma and the beginning of a word.
10227
10228** Scheme mode changes.
10229
10230*** Scheme mode indentation now uses many of the facilities of Lisp
10231mode; therefore, the variables to customize it are the variables used
10232for Lisp mode which have names starting with `lisp-'. The variables
10233with names starting with `scheme-' which used to do this no longer
10234have any effect.
10235
10236If you want to use different indentation for Scheme and Lisp, this is
10237still possible, but now you must do it by adding a hook to
10238scheme-mode-hook, which could work by setting the `lisp-' indentation
10239variables as buffer-local variables.
10240
10241*** DSSSL mode is a variant of Scheme mode, for editing DSSSL scripts.
10242Use M-x dsssl-mode.
10243
10244** Changes to the emacsclient program
10245
10246*** If a socket can't be found, and environment variables LOGNAME or
10247USER are set, emacsclient now looks for a socket based on the UID
10248associated with the name. That is an emacsclient running as root
10249can connect to an Emacs server started by a non-root user.
10250
10251*** The emacsclient program now accepts an option --no-wait which tells
10252it to return immediately without waiting for you to "finish" the
10253buffer in Emacs.
10254
10255*** The new option --alternate-editor allows to specify an editor to
10256use if Emacs is not running. The environment variable
10257ALTERNATE_EDITOR can be used for the same effect; the command line
10258option takes precedence.
10259
10260** M-x eldoc-mode enables a minor mode in which the echo area
10261constantly shows the parameter list for function being called at point
10262(in Emacs Lisp and Lisp Interaction modes only).
10263
10264** C-x n d now runs the new command narrow-to-defun,
10265which narrows the accessible parts of the buffer to just
10266the current defun.
10267
10268** Emacs now handles the `--' argument in the standard way; all
10269following arguments are treated as ordinary file names.
10270
10271** On MSDOS and Windows, the bookmark file is now called _emacs.bmk,
10272and the saved desktop file is now called _emacs.desktop (truncated if
10273necessary).
10274
10275** When you kill a buffer that visits a file,
10276if there are any registers that save positions in the file,
10277these register values no longer become completely useless.
10278If you try to go to such a register with C-x j, then you are
10279asked whether to visit the file again. If you say yes,
10280it visits the file and then goes to the same position.
10281
10282** When you visit a file that changes frequently outside Emacs--for
10283example, a log of output from a process that continues to run--it may
10284be useful for Emacs to revert the file without querying you whenever
10285you visit the file afresh with C-x C-f.
10286
10287You can request this behavior for certain files by setting the
10288variable revert-without-query to a list of regular expressions. If a
10289file's name matches any of these regular expressions, find-file and
10290revert-buffer revert the buffer without asking for permission--but
10291only if you have not edited the buffer text yourself.
10292
10293** set-default-font has been renamed to set-frame-font
10294since it applies only to the current frame.
10295
10296** In TeX mode, you can use the variable tex-main-file to specify the
10297file for tex-file to run TeX on. (By default, tex-main-file is nil,
10298and tex-file runs TeX on the current visited file.)
10299
10300This is useful when you are editing a document that consists of
10301multiple files. In each of the included files, you can set up a local
10302variable list which specifies the top-level file of your document for
10303tex-main-file. Then tex-file will run TeX on the whole document
10304instead of just the file you are editing.
10305
10306** RefTeX mode
10307
10308RefTeX mode is a new minor mode with special support for \label, \ref
10309and \cite macros in LaTeX documents. RefTeX distinguishes labels of
10310different environments (equation, figure, ...) and has full support for
10311multifile documents. To use it, select a buffer with a LaTeX document and
10312turn the mode on with M-x reftex-mode. Here are the main user commands:
10313
10314C-c ( reftex-label
10315 Creates a label semi-automatically. RefTeX is context sensitive and
10316 knows which kind of label is needed.
10317
10318C-c ) reftex-reference
10319 Offers in a menu all labels in the document, along with context of the
10320 label definition. The selected label is referenced as \ref{LABEL}.
10321
10322C-c [ reftex-citation
10323 Prompts for a regular expression and displays a list of matching BibTeX
10324 database entries. The selected entry is cited with a \cite{KEY} macro.
10325
10326C-c & reftex-view-crossref
10327 Views the cross reference of a \ref or \cite command near point.
10328
10329C-c = reftex-toc
10330 Shows a table of contents of the (multifile) document. From there you
10331 can quickly jump to every section.
10332
10333Under X, RefTeX installs a "Ref" menu in the menu bar, with additional
10334commands. Press `?' to get help when a prompt mentions this feature.
10335Full documentation and customization examples are in the file
10336reftex.el. You can use the finder to view the file documentation:
10337C-h p --> tex --> reftex.el
10338
10339** Changes in BibTeX mode.
10340
10341*** Info documentation is now available.
10342
10343*** Don't allow parentheses in string constants anymore. This confused
10344both the BibTeX program and Emacs BibTeX mode.
10345
10346*** Renamed variable bibtex-mode-user-optional-fields to
10347bibtex-user-optional-fields.
10348
10349*** Removed variable bibtex-include-OPTannote
10350(use bibtex-user-optional-fields instead).
10351
10352*** New interactive functions to copy and kill fields and complete
10353entries to the BibTeX kill ring, from where they can be yanked back by
10354appropriate functions.
10355
10356*** New interactive functions for repositioning and marking of
3a426197 10357entries. They are bound by default to C-M-l and C-M-h.
3787e12e
GM
10358
10359*** New hook bibtex-clean-entry-hook. It is called after entry has
10360been cleaned.
10361
10362*** New variable bibtex-field-delimiters, which replaces variables
10363bibtex-field-{left|right}-delimiter.
10364
10365*** New variable bibtex-entry-delimiters to determine how entries
10366shall be delimited.
10367
10368*** Allow preinitialization of fields. See documentation of
10369bibtex-user-optional-fields, bibtex-entry-field-alist, and
10370bibtex-include-OPTkey for details.
10371
10372*** Book and InBook entries require either an author or an editor
10373field. This is now supported by bibtex.el. Alternative fields are
10374prefixed with `ALT'.
10375
10376*** New variable bibtex-entry-format, which replaces variable
10377bibtex-clean-entry-zap-empty-opts and allows specification of many
10378formatting options performed on cleaning an entry (see variable
10379documentation).
10380
10381*** Even more control on how automatic keys are generated. See
10382documentation of bibtex-generate-autokey for details. Transcriptions
10383for foreign languages other than German are now handled, too.
10384
10385*** New boolean user option bibtex-comma-after-last-field to decide if
10386comma should be inserted at end of last field.
10387
10388*** New boolean user option bibtex-align-at-equal-sign to determine if
10389alignment should be made at left side of field contents or at equal
10390signs. New user options to control entry layout (e.g. indentation).
10391
10392*** New function bibtex-fill-entry to realign entries.
10393
10394*** New function bibtex-reformat to reformat region or buffer.
10395
10396*** New function bibtex-convert-alien to convert a BibTeX database
10397from alien sources.
10398
10399*** New function bibtex-complete-key (similar to bibtex-complete-string)
10400to complete prefix to a key defined in buffer. Mainly useful in
10401crossref entries.
10402
10403*** New function bibtex-count-entries to count entries in buffer or
10404region.
10405
10406*** Added support for imenu.
10407
10408*** The function `bibtex-validate' now checks current region instead
10409of buffer if mark is active. Now it shows all errors of buffer in a
10410`compilation mode' buffer. You can use the normal commands (e.g.
10411`next-error') for compilation modes to jump to errors.
10412
10413*** New variable `bibtex-string-file-path' to determine where the files
10414from `bibtex-string-files' are searched.
10415
10416** Iso Accents mode now supports Latin-3 as an alternative.
10417
10418** The command next-error now opens blocks hidden by hideshow.
10419
10420** The function using-unix-filesystems has been replaced by the
10421functions add-untranslated-filesystem and remove-untranslated-filesystem.
10422Each of these functions takes the name of a drive letter or directory
10423as an argument.
10424
10425When a filesystem is added as untranslated, all files on it are read
10426and written in binary mode (no cr/lf translation is performed).
10427
10428** browse-url changes
10429
10430*** New methods for: Grail (browse-url-generic), MMM (browse-url-mmm),
10431Lynx in a separate xterm (browse-url-lynx-xterm) or in an Emacs window
10432(browse-url-lynx-emacs), remote W3 (browse-url-w3-gnudoit), generic
10433non-remote-controlled browsers (browse-url-generic) and associated
10434customization variables.
10435
10436*** New commands `browse-url-of-region' and `browse-url'.
10437
10438*** URLs marked up with <URL:...> (RFC1738) work if broken across
10439lines. Browsing methods can be associated with URL regexps
10440(e.g. mailto: URLs) via `browse-url-browser-function'.
10441
10442** Changes in Ediff
10443
10444*** Clicking Mouse-2 on a brief command description in Ediff control panel
10445pops up the Info file for this command.
10446
10447*** There is now a variable, ediff-autostore-merges, which controls whether
10448the result of a merge is saved in a file. By default, this is done only when
10449merge is done from a session group (eg, when merging files in two different
10450directories).
10451
10452*** Since Emacs 19.31 (this hasn't been announced before), Ediff can compare
10453and merge groups of files residing in different directories, or revisions of
10454files in the same directory.
10455
10456*** Since Emacs 19.31, Ediff can apply multi-file patches interactively.
10457The patches must be in the context format or GNU unified format. (The bug
10458related to the GNU format has now been fixed.)
10459
10460** Changes in Viper
10461
10462*** The startup file is now .viper instead of .vip
10463*** All variable/function names have been changed to start with viper-
10464 instead of vip-.
10465*** C-\ now simulates the meta-key in all Viper states.
10466*** C-z in Insert state now escapes to Vi for the duration of the next
10467Viper command. In Vi and Insert states, C-z behaves as before.
10468*** C-c \ escapes to Vi for one command if Viper is in Insert or Emacs states.
10469*** _ is no longer the meta-key in Vi state.
10470*** The variable viper-insert-state-cursor-color can be used to change cursor
10471color when Viper is in insert state.
10472*** If search lands the cursor near the top or the bottom of the window,
10473Viper pulls the window up or down to expose more context. The variable
10474viper-adjust-window-after-search controls this behavior.
10475
10476** Etags changes.
10477
10478*** In C, C++, Objective C and Java, Etags tags global variables by
10479default. The resulting tags files are inflated by 30% on average.
10480Use --no-globals to turn this feature off. Etags can also tag
10481variables which are members of structure-like constructs, but it does
10482not by default. Use --members to turn this feature on.
10483
10484*** C++ member functions are now recognized as tags.
10485
10486*** Java is tagged like C++. In addition, "extends" and "implements"
10487constructs are tagged. Files are recognised by the extension .java.
10488
10489*** Etags can now handle programs written in Postscript. Files are
10490recognised by the extensions .ps and .pdb (Postscript with C syntax).
10491In Postscript, tags are lines that start with a slash.
10492
10493*** Etags now handles Objective C and Objective C++ code. The usual C and
10494C++ tags are recognized in these languages; in addition, etags
10495recognizes special Objective C syntax for classes, class categories,
10496methods and protocols.
10497
10498*** Etags also handles Cobol. Files are recognised by the extension
10499.cobol. The tagged lines are those containing a word that begins in
10500column 8 and ends in a full stop, i.e. anything that could be a
10501paragraph name.
10502
10503*** Regexps in Etags now support intervals, as in ed or grep. The syntax of
10504an interval is \{M,N\}, and it means to match the preceding expression
10505at least M times and as many as N times.
10506
10507** The format for specifying a custom format for time-stamp to insert
10508in files has changed slightly.
10509
10510With the new enhancements to the functionality of format-time-string,
10511time-stamp-format will change to be eventually compatible with it.
10512This conversion is being done in two steps to maintain compatibility
10513with old time-stamp-format values.
10514
10515In the new scheme, alternate case is signified by the number-sign
10516(`#') modifier, rather than changing the case of the format character.
10517This feature is as yet incompletely implemented for compatibility
10518reasons.
10519
10520In the old time-stamp-format, all numeric fields defaulted to their
10521natural width. (With format-time-string, each format has a
10522fixed-width default.) In this version, you can specify the colon
10523(`:') modifier to a numeric conversion to mean "give me the historical
10524time-stamp-format width default." Do not use colon if you are
10525specifying an explicit width, as in "%02d".
10526
10527Numbers are no longer truncated to the requested width, except in the
10528case of "%02y", which continues to give a two-digit year. Digit
10529truncation probably wasn't being used for anything else anyway.
10530
10531The new formats will work with old versions of Emacs. New formats are
10532being recommended now to allow time-stamp-format to change in the
10533future to be compatible with format-time-string. The new forms being
10534recommended now will continue to work then.
10535
10536See the documentation string for the variable time-stamp-format for
10537details.
10538
10539** There are some additional major modes:
10540
10541dcl-mode, for editing VMS DCL files.
10542m4-mode, for editing files of m4 input.
10543meta-mode, for editing MetaFont and MetaPost source files.
10544
10545** In Shell mode, the command shell-copy-environment-variable lets you
10546copy the value of a specified environment variable from the subshell
10547into Emacs.
10548
10549** New Lisp packages include:
10550
10551*** battery.el displays battery status for laptops.
10552
10553*** M-x bruce (named after Lenny Bruce) is a program that might
10554be used for adding some indecent words to your email.
10555
10556*** M-x crisp-mode enables an emulation for the CRiSP editor.
10557
10558*** M-x dirtrack arranges for better tracking of directory changes
10559in shell buffers.
10560
10561*** The new library elint.el provides for linting of Emacs Lisp code.
10562See the documentation for `elint-initialize', `elint-current-buffer'
10563and `elint-defun'.
10564
10565*** M-x expand-add-abbrevs defines a special kind of abbrev which is
10566meant for programming constructs. These abbrevs expand like ordinary
10567ones, when you type SPC, but only at the end of a line and not within
10568strings or comments.
10569
10570These abbrevs can act as templates: you can define places within an
10571abbrev for insertion of additional text. Once you expand the abbrev,
10572you can then use C-x a p and C-x a n to move back and forth to these
10573insertion points. Thus you can conveniently insert additional text
10574at these points.
10575
10576*** filecache.el remembers the location of files so that you
10577can visit them by short forms of their names.
10578
10579*** find-func.el lets you find the definition of the user-loaded
10580Emacs Lisp function at point.
10581
10582*** M-x handwrite converts text to a "handwritten" picture.
10583
10584*** M-x iswitchb-buffer is a command for switching to a buffer, much like
10585switch-buffer, but it reads the argument in a more helpful way.
10586
10587*** M-x landmark implements a neural network for landmark learning.
10588
10589*** M-x locate provides a convenient interface to the `locate' program.
10590
10591*** M4 mode is a new mode for editing files of m4 input.
10592
10593*** mantemp.el creates C++ manual template instantiations
10594from the GCC error messages which indicate which instantiations are needed.
10595
10596*** mouse-copy.el provides a one-click copy and move feature.
10597You can drag a region with M-mouse-1, and it is automatically
10598inserted at point. M-Shift-mouse-1 deletes the text from its
10599original place after inserting the copy.
10600
10601*** mouse-drag.el lets you do scrolling by dragging Mouse-2
10602on the buffer.
10603
10604You click the mouse and move; that distance either translates into the
10605velocity to scroll (with mouse-drag-throw) or the distance to scroll
10606(with mouse-drag-drag). Horizontal scrolling is enabled when needed.
10607
10608Enable mouse-drag with:
10609 (global-set-key [down-mouse-2] 'mouse-drag-throw)
10610-or-
10611 (global-set-key [down-mouse-2] 'mouse-drag-drag)
10612
10613*** mspools.el is useful for determining which mail folders have
10614mail waiting to be read in them. It works with procmail.
10615
10616*** Octave mode is a major mode for editing files of input for Octave.
10617It comes with a facility for communicating with an Octave subprocess.
10618
10619*** ogonek
10620
10621The ogonek package provides functions for changing the coding of
10622Polish diacritic characters in buffers. Codings known from various
10623platforms are supported such as ISO8859-2, Mazovia, IBM Latin2, and
10624TeX. For example, you can change the coding from Mazovia to
10625ISO8859-2. Another example is a change of coding from ISO8859-2 to
10626prefix notation (in which `/a' stands for the aogonek character, for
10627instance) and vice versa.
10628
10629To use this package load it using
10630 M-x load-library [enter] ogonek
10631Then, you may get an explanation by calling one of
10632 M-x ogonek-jak -- in Polish
10633 M-x ogonek-how -- in English
10634The info specifies the commands and variables provided as well as the
10635ways of customization in `.emacs'.
10636
10637*** Interface to ph.
10638
10639Emacs provides a client interface to CCSO Nameservers (ph/qi)
10640
10641The CCSO nameserver is used in many universities to provide directory
10642services about people. ph.el provides a convenient Emacs interface to
10643these servers.
10644
10645*** uce.el is useful for replying to unsolicited commercial email.
10646
10647*** vcursor.el implements a "virtual cursor" feature.
10648You can move the virtual cursor with special commands
10649while the real cursor does not move.
10650
10651*** webjump.el is a "hot list" package which you can set up
10652for visiting your favorite web sites.
10653
10654*** M-x winner-mode is a minor mode which saves window configurations,
10655so you can move back to other configurations that you have recently used.
10656
10657** movemail change
10658
10659Movemail no longer needs to be installed setuid root in order for POP
10660mail retrieval to function properly. This is because it no longer
10661supports the RPOP (reserved-port POP) protocol; instead, it uses the
10662user's POP password to authenticate to the mail server.
10663
10664This change was made earlier, but not reported in NEWS before.
05197f40 10665\f
3787e12e
GM
10666* Emacs 20.1 changes for MS-DOS and MS-Windows.
10667
10668** Changes in handling MS-DOS/MS-Windows text files.
10669
10670Emacs handles three different conventions for representing
10671end-of-line: CRLF for MSDOS, LF for Unix and GNU, and CR (used on the
10672Macintosh). Emacs determines which convention is used in a specific
10673file based on the contents of that file (except for certain special
10674file names), and when it saves the file, it uses the same convention.
10675
10676To save the file and change the end-of-line convention, you can use
10677C-x RET f (set-buffer-file-coding-system) to specify a different
10678coding system for the buffer. Then, when you save the file, the newly
10679specified coding system will take effect. For example, to save with
10680LF, specify undecided-unix (or some other ...-unix coding system); to
10681save with CRLF, specify undecided-dos.
05197f40 10682\f
3787e12e
GM
10683* Lisp Changes in Emacs 20.1
10684
10685** Byte-compiled files made with Emacs 20 will, in general, work in
10686Emacs 19 as well, as long as the source code runs in Emacs 19. And
10687vice versa: byte-compiled files made with Emacs 19 should also run in
10688Emacs 20, as long as the program itself works in Emacs 20.
10689
10690** Windows-specific functions and variables have been renamed
10691to start with w32- instead of win32-.
10692
10693In hacker language, calling something a "win" is a form of praise. We
10694don't want to praise a non-free Microsoft system, so we don't call it
10695"win".
10696
10697** Basic Lisp changes
10698
10699*** A symbol whose name starts with a colon now automatically
10700evaluates to itself. Therefore such a symbol can be used as a constant.
10701
10702*** The defined purpose of `defconst' has been changed. It should now
10703be used only for values that should not be changed whether by a program
10704or by the user.
10705
10706The actual behavior of defconst has not been changed.
10707
10708*** There are new macros `when' and `unless'
10709
10710(when CONDITION BODY...) is short for (if CONDITION (progn BODY...))
10711(unless CONDITION BODY...) is short for (if CONDITION nil BODY...)
10712
10713*** Emacs now defines functions caar, cadr, cdar and cddr with their
10714usual Lisp meanings. For example, caar returns the car of the car of
10715its argument.
10716
10717*** equal, when comparing strings, now ignores their text properties.
10718
10719*** The new function `functionp' tests whether an object is a function.
10720
10721*** arrayp now returns t for char-tables and bool-vectors.
10722
10723*** Certain primitives which use characters (as integers) now get an
10724error if the integer is not a valid character code. These primitives
10725include insert-char, char-to-string, and the %c construct in the
10726`format' function.
10727
10728*** The `require' function now insists on adding a suffix, either .el
10729or .elc, to the file name. Thus, (require 'foo) will not use a file
10730whose name is just foo. It insists on foo.el or foo.elc.
10731
10732*** The `autoload' function, when the file name does not contain
10733either a directory name or the suffix .el or .elc, insists on
10734adding one of these suffixes.
10735
10736*** string-to-number now takes an optional second argument BASE
10737which specifies the base to use when converting an integer.
10738If BASE is omitted, base 10 is used.
10739
10740We have not implemented other radices for floating point numbers,
10741because that would be much more work and does not seem useful.
10742
10743*** substring now handles vectors as well as strings.
10744
10745*** The Common Lisp function eql is no longer defined normally.
10746You must load the `cl' library to define it.
10747
10748*** The new macro `with-current-buffer' lets you evaluate an expression
10749conveniently with a different current buffer. It looks like this:
10750
10751 (with-current-buffer BUFFER BODY-FORMS...)
10752
10753BUFFER is the expression that says which buffer to use.
10754BODY-FORMS say what to do in that buffer.
10755
10756*** The new primitive `save-current-buffer' saves and restores the
10757choice of current buffer, like `save-excursion', but without saving or
10758restoring the value of point or the mark. `with-current-buffer'
10759works using `save-current-buffer'.
10760
10761*** The new macro `with-temp-file' lets you do some work in a new buffer and
10762write the output to a specified file. Like `progn', it returns the value
10763of the last form.
10764
10765*** The new macro `with-temp-buffer' lets you do some work in a new buffer,
10766which is discarded after use. Like `progn', it returns the value of the
10767last form. If you wish to return the buffer contents, use (buffer-string)
10768as the last form.
10769
10770*** The new function split-string takes a string, splits it at certain
10771characters, and returns a list of the substrings in between the
10772matches.
10773
10774For example, (split-string "foo bar lose" " +") returns ("foo" "bar" "lose").
10775
10776*** The new macro with-output-to-string executes some Lisp expressions
10777with standard-output set up so that all output feeds into a string.
10778Then it returns that string.
10779
10780For example, if the current buffer name is `foo',
10781
10782(with-output-to-string
10783 (princ "The buffer is ")
10784 (princ (buffer-name)))
10785
10786returns "The buffer is foo".
10787
10788** Non-ASCII characters are now supported, if enable-multibyte-characters
10789is non-nil.
10790
10791These characters have character codes above 256. When inserted in the
10792buffer or stored in a string, they are represented as multibyte
10793characters that occupy several buffer positions each.
10794
10795*** When enable-multibyte-characters is non-nil, a single character in
10796a buffer or string can be two or more bytes (as many as four).
10797
10798Buffers and strings are still made up of unibyte elements;
10799character positions and string indices are always measured in bytes.
10800Therefore, moving forward one character can increase the buffer
10801position by 2, 3 or 4. The function forward-char moves by whole
10802characters, and therefore is no longer equivalent to
10803 (lambda (n) (goto-char (+ (point) n))).
10804
10805ASCII characters (codes 0 through 127) are still single bytes, always.
10806Sequences of byte values 128 through 255 are used to represent
10807non-ASCII characters. These sequences are called "multibyte
10808characters".
10809
10810The first byte of a multibyte character is always in the range 128
10811through 159 (octal 0200 through 0237). These values are called
10812"leading codes". The second and subsequent bytes are always in the
10813range 160 through 255 (octal 0240 through 0377). The first byte, the
10814leading code, determines how many bytes long the sequence is.
10815
10816*** The function forward-char moves over characters, and therefore
10817(forward-char 1) may increase point by more than 1 if it moves over a
10818multibyte character. Likewise, delete-char always deletes a
10819character, which may be more than one buffer position.
10820
10821This means that some Lisp programs, which assume that a character is
10822always one buffer position, need to be changed.
10823
10824However, all ASCII characters are always one buffer position.
10825
10826*** The regexp [\200-\377] no longer matches all non-ASCII characters,
10827because when enable-multibyte-characters is non-nil, these characters
10828have codes that are not in the range octal 200 to octal 377. However,
10829the regexp [^\000-\177] does match all non-ASCII characters,
10830guaranteed.
10831
10832*** The function char-boundary-p returns non-nil if position POS is
10833between two characters in the buffer (not in the middle of a
10834character).
10835
10836When the value is non-nil, it says what kind of character follows POS:
10837
10838 0 if POS is at an ASCII character or at the end of range,
10839 1 if POS is before a 2-byte length multi-byte form,
10840 2 if POS is at a head of 3-byte length multi-byte form,
10841 3 if POS is at a head of 4-byte length multi-byte form,
10842 4 if POS is at a head of multi-byte form of a composite character.
10843
10844*** The function char-bytes returns how many bytes the character CHAR uses.
10845
10846*** Strings can contain multibyte characters. The function
10847`length' returns the string length counting bytes, which may be
10848more than the number of characters.
10849
10850You can include a multibyte character in a string constant by writing
10851it literally. You can also represent it with a hex escape,
10852\xNNNNNNN..., using as many digits as necessary. Any character which
10853is not a valid hex digit terminates this construct. If you want to
10854follow it with a character that is a hex digit, write backslash and
10855newline in between; that will terminate the hex escape.
10856
10857*** The function concat-chars takes arguments which are characters
10858and returns a string containing those characters.
10859
10860*** The function sref access a multibyte character in a string.
10861(sref STRING INDX) returns the character in STRING at INDEX. INDEX
10862counts from zero. If INDEX is at a position in the middle of a
10863character, sref signals an error.
10864
10865*** The function chars-in-string returns the number of characters
10866in a string. This is less than the length of the string, if the
10867string contains multibyte characters (the length counts bytes).
10868
10869*** The function chars-in-region returns the number of characters
10870in a region from BEG to END. This is less than (- END BEG) if the
10871region contains multibyte characters (the length counts bytes).
10872
10873*** The function string-to-list converts a string to a list of
10874the characters in it. string-to-vector converts a string
10875to a vector of the characters in it.
10876
10877*** The function store-substring alters part of the contents
10878of a string. You call it as follows:
10879
10880 (store-substring STRING IDX OBJ)
10881
10882This says to alter STRING, by storing OBJ starting at index IDX in
10883STRING. OBJ may be either a character or a (smaller) string.
10884This function really does alter the contents of STRING.
10885Since it is impossible to change the length of an existing string,
10886it is an error if OBJ doesn't fit within STRING's actual length.
10887
10888*** char-width returns the width (in columns) of the character CHAR,
10889if it were displayed in the current buffer and the selected window.
10890
10891*** string-width returns the width (in columns) of the text in STRING,
10892if it were displayed in the current buffer and the selected window.
10893
10894*** truncate-string-to-width shortens a string, if necessary,
10895to fit within a certain number of columns. (Of course, it does
10896not alter the string that you give it; it returns a new string
10897which contains all or just part of the existing string.)
10898
10899(truncate-string-to-width STR END-COLUMN &optional START-COLUMN PADDING)
10900
10901This returns the part of STR up to column END-COLUMN.
10902
10903The optional argument START-COLUMN specifies the starting column.
10904If this is non-nil, then the first START-COLUMN columns of the string
10905are not included in the resulting value.
10906
10907The optional argument PADDING, if non-nil, is a padding character to be added
10908at the beginning and end the resulting string, to extend it to exactly
10909WIDTH columns. If PADDING is nil, that means do not pad; then, if STRING
10910is narrower than WIDTH, the value is equal to STRING.
10911
10912If PADDING and START-COLUMN are both non-nil, and if there is no clean
10913place in STRING that corresponds to START-COLUMN (because one
10914character extends across that column), then the padding character
10915PADDING is added one or more times at the beginning of the result
10916string, so that its columns line up as if it really did start at
10917column START-COLUMN.
10918
10919*** When the functions in the list after-change-functions are called,
10920the third argument is the number of bytes in the pre-change text, not
10921necessarily the number of characters. It is, in effect, the
10922difference in buffer position between the beginning and the end of the
10923changed text, before the change.
10924
10925*** The characters Emacs uses are classified in various character
10926sets, each of which has a name which is a symbol. In general there is
10927one character set for each script, not for each language.
10928
10929**** The function charsetp tests whether an object is a character set name.
10930
10931**** The variable charset-list holds a list of character set names.
10932
10933**** char-charset, given a character code, returns the name of the character
10934set that the character belongs to. (The value is a symbol.)
10935
10936**** split-char, given a character code, returns a list containing the
10937name of the character set, followed by one or two byte-values
10938which identify the character within that character set.
10939
10940**** make-char, given a character set name and one or two subsequent
10941byte-values, constructs a character code. This is roughly the
10942opposite of split-char.
10943
10944**** find-charset-region returns a list of the character sets
10945of all the characters between BEG and END.
10946
10947**** find-charset-string returns a list of the character sets
10948of all the characters in a string.
10949
10950*** Here are the Lisp facilities for working with coding systems
10951and specifying coding systems.
10952
10953**** The function coding-system-list returns a list of all coding
10954system names (symbols). With optional argument t, it returns a list
10955of all distinct base coding systems, not including variants.
10956(Variant coding systems are those like latin-1-dos, latin-1-unix
10957and latin-1-mac which specify the end-of-line conversion as well
10958as what to do about code conversion.)
10959
10960**** coding-system-p tests a symbol to see if it is a coding system
10961name. It returns t if so, nil if not.
10962
10963**** file-coding-system-alist specifies which coding systems to use
10964for certain file names. It works like network-coding-system-alist,
10965except that the PATTERN is matched against the file name.
10966
10967Each element has the format (PATTERN . VAL), where PATTERN determines
10968which file names the element applies to. PATTERN should be a regexp
10969to match against a file name.
10970
10971VAL is a coding system, a cons cell containing two coding systems, or
10972a function symbol. If VAL is a coding system, it is used for both
10973decoding what received from the network stream and encoding what sent
10974to the network stream. If VAL is a cons cell containing two coding
10975systems, the car specifies the coding system for decoding, and the cdr
10976specifies the coding system for encoding.
10977
10978If VAL is a function symbol, the function must return a coding system
10979or a cons cell containing two coding systems, which is used as above.
10980
10981**** The variable network-coding-system-alist specifies
10982the coding system to use for network sockets.
10983
10984Each element has the format (PATTERN . VAL), where PATTERN determines
10985which network sockets the element applies to. PATTERN should be
10986either a port number or a regular expression matching some network
10987service names.
10988
10989VAL is a coding system, a cons cell containing two coding systems, or
10990a function symbol. If VAL is a coding system, it is used for both
10991decoding what received from the network stream and encoding what sent
10992to the network stream. If VAL is a cons cell containing two coding
10993systems, the car specifies the coding system for decoding, and the cdr
10994specifies the coding system for encoding.
10995
10996If VAL is a function symbol, the function must return a coding system
10997or a cons cell containing two coding systems, which is used as above.
10998
10999**** process-coding-system-alist specifies which coding systems to use
11000for certain subprocess. It works like network-coding-system-alist,
11001except that the PATTERN is matched against the program name used to
11002start the subprocess.
11003
11004**** The variable default-process-coding-system specifies the coding
11005systems to use for subprocess (and net connection) input and output,
11006when nothing else specifies what to do. The value is a cons cell
11007(OUTPUT-CODING . INPUT-CODING). OUTPUT-CODING applies to output
11008to the subprocess, and INPUT-CODING applies to input from it.
11009
11010**** The variable coding-system-for-write, if non-nil, specifies the
11011coding system to use for writing a file, or for output to a synchronous
11012subprocess.
11013
11014It also applies to any asynchronous subprocess or network connection,
11015but in a different way: the value of coding-system-for-write when you
11016start the subprocess or connection affects that subprocess or
11017connection permanently or until overridden.
11018
11019The variable coding-system-for-write takes precedence over
11020file-coding-system-alist, process-coding-system-alist and
11021network-coding-system-alist, and all other methods of specifying a
11022coding system for output. But most of the time this variable is nil.
11023It exists so that Lisp programs can bind it to a specific coding
11024system for one operation at a time.
11025
11026**** coding-system-for-read applies similarly to input from
11027files, subprocesses or network connections.
11028
11029**** The function process-coding-system tells you what
11030coding systems(s) an existing subprocess is using.
11031The value is a cons cell,
11032 (DECODING-CODING-SYSTEM . ENCODING-CODING-SYSTEM)
11033where DECODING-CODING-SYSTEM is used for decoding output from
11034the subprocess, and ENCODING-CODING-SYSTEM is used for encoding
11035input to the subprocess.
11036
11037**** The function set-process-coding-system can be used to
11038change the coding systems in use for an existing subprocess.
11039
11040** Emacs has a new facility to help users manage the many
11041customization options. To make a Lisp program work with this facility,
11042you need to use the new macros defgroup and defcustom.
11043
11044You use defcustom instead of defvar, for defining a user option
11045variable. The difference is that you specify two additional pieces of
11046information (usually): the "type" which says what values are
11047legitimate, and the "group" which specifies the hierarchy for
11048customization.
11049
11050Thus, instead of writing
11051
11052 (defvar foo-blurgoze nil
11053 "*Non-nil means that foo will act very blurgozely.")
11054
11055you would now write this:
11056
11057 (defcustom foo-blurgoze nil
11058 "*Non-nil means that foo will act very blurgozely."
11059 :type 'boolean
11060 :group foo)
11061
11062The type `boolean' means that this variable has only
11063two meaningful states: nil and non-nil. Other type values
11064describe other possibilities; see the manual for Custom
11065for a description of them.
11066
11067The "group" argument is used to specify a group which the option
11068should belong to. You define a new group like this:
11069
11070 (defgroup ispell nil
11071 "Spell checking using Ispell."
11072 :group 'processes)
11073
11074The "group" argument in defgroup specifies the parent group. The root
11075group is called `emacs'; it should not contain any variables itself,
11076but only other groups. The immediate subgroups of `emacs' correspond
11077to the keywords used by C-h p. Under these subgroups come
11078second-level subgroups that belong to individual packages.
11079
11080Each Emacs package should have its own set of groups. A simple
11081package should have just one group; a more complex package should
11082have a hierarchy of its own groups. The sole or root group of a
11083package should be a subgroup of one or more of the "keyword"
11084first-level subgroups.
11085
11086** New `widget' library for inserting UI components in buffers.
11087
11088This library, used by the new custom library, is documented in a
11089separate manual that accompanies Emacs.
11090
11091** easy-mmode
11092
11093The easy-mmode package provides macros and functions that make
11094developing minor modes easier. Roughly, the programmer has to code
11095only the functionality of the minor mode. All the rest--toggles,
11096predicate, and documentation--can be done in one call to the macro
11097`easy-mmode-define-minor-mode' (see the documentation). See also
11098`easy-mmode-define-keymap'.
11099
11100** Text property changes
11101
11102*** The `intangible' property now works on overlays as well as on a
11103text property.
11104
11105*** The new functions next-char-property-change and
11106previous-char-property-change scan through the buffer looking for a
11107place where either a text property or an overlay might change. The
11108functions take two arguments, POSITION and LIMIT. POSITION is the
11109starting position for the scan. LIMIT says where to stop the scan.
11110
11111If no property change is found before LIMIT, the value is LIMIT. If
11112LIMIT is nil, scan goes to the beginning or end of the accessible part
11113of the buffer. If no property change is found, the value is the
11114position of the beginning or end of the buffer.
11115
11116*** In the `local-map' text property or overlay property, the property
11117value can now be a symbol whose function definition is a keymap. This
11118is an alternative to using the keymap itself.
11119
11120** Changes in invisibility features
11121
11122*** Isearch can now temporarily show parts of the buffer which are
11123hidden by an overlay with a invisible property, when the search match
11124is inside that portion of the buffer. To enable this the overlay
11125should have a isearch-open-invisible property which is a function that
11126would be called having the overlay as an argument, the function should
11127make the overlay visible.
11128
11129During incremental search the overlays are shown by modifying the
11130invisible and intangible properties, if beside this more actions are
11131needed the overlay should have a isearch-open-invisible-temporary
11132which is a function. The function is called with 2 arguments: one is
11133the overlay and the second is nil when it should show the overlay and
11134t when it should hide it.
11135
11136*** add-to-invisibility-spec, remove-from-invisibility-spec
11137
11138Modes that use overlays to hide portions of a buffer should set the
11139invisible property of the overlay to the mode's name (or another symbol)
11140and modify the `buffer-invisibility-spec' to include that symbol.
11141Use `add-to-invisibility-spec' and `remove-from-invisibility-spec' to
11142manipulate the `buffer-invisibility-spec'.
11143Here is an example of how to do this:
11144
11145 ;; If we want to display an ellipsis:
11146 (add-to-invisibility-spec '(my-symbol . t))
11147 ;; If you don't want ellipsis:
11148 (add-to-invisibility-spec 'my-symbol)
11149
11150 ...
11151 (overlay-put (make-overlay beginning end) 'invisible 'my-symbol)
11152
11153 ...
11154 ;; When done with the overlays:
11155 (remove-from-invisibility-spec '(my-symbol . t))
11156 ;; Or respectively:
11157 (remove-from-invisibility-spec 'my-symbol)
11158
11159** Changes in syntax parsing.
11160
11161*** The syntax-directed buffer-scan functions (such as
11162`parse-partial-sexp', `forward-word' and similar functions) can now
11163obey syntax information specified by text properties, if the variable
11164`parse-sexp-lookup-properties' is non-nil.
11165
11166If the value of `parse-sexp-lookup-properties' is nil, the behavior
11167is as before: the syntax-table of the current buffer is always
11168used to determine the syntax of the character at the position.
11169
11170When `parse-sexp-lookup-properties' is non-nil, the syntax of a
11171character in the buffer is calculated thus:
11172
11173 a) if the `syntax-table' text-property of that character
11174 is a cons, this cons becomes the syntax-type;
11175
11176 Valid values of `syntax-table' text-property are: nil, a valid
11177 syntax-table, and a valid syntax-table element, i.e.,
11178 a cons cell of the form (SYNTAX-CODE . MATCHING-CHAR).
11179
11180 b) if the character's `syntax-table' text-property
11181 is a syntax table, this syntax table is used
11182 (instead of the syntax-table of the current buffer) to
11183 determine the syntax type of the character.
11184
11185 c) otherwise the syntax-type is determined by the syntax-table
11186 of the current buffer.
11187
11188*** The meaning of \s in regular expressions is also affected by the
11189value of `parse-sexp-lookup-properties'. The details are the same as
11190for the syntax-directed buffer-scan functions.
11191
11192*** There are two new syntax-codes, `!' and `|' (numeric values 14
11193and 15). A character with a code `!' starts a comment which is ended
11194only by another character with the same code (unless quoted). A
11195character with a code `|' starts a string which is ended only by
11196another character with the same code (unless quoted).
11197
11198These codes are mainly meant for use as values of the `syntax-table'
11199text property.
11200
11201*** The function `parse-partial-sexp' has new semantics for the sixth
11202arg COMMENTSTOP. If it is `syntax-table', parse stops after the start
11203of a comment or a string, or after end of a comment or a string.
11204
11205*** The state-list which the return value from `parse-partial-sexp'
11206(and can also be used as an argument) now has an optional ninth
11207element: the character address of the start of last comment or string;
11208nil if none. The fourth and eighth elements have special values if the
11209string/comment is started by a "!" or "|" syntax-code.
11210
11211*** Since new features of `parse-partial-sexp' allow a complete
11212syntactic parsing, `font-lock' no longer supports
11213`font-lock-comment-start-regexp'.
11214
11215** Changes in face features
11216
11217*** The face functions are now unconditionally defined in Emacs, even
11218if it does not support displaying on a device that supports faces.
11219
11220*** The function face-documentation returns the documentation string
11221of a face (or nil if it doesn't have one).
11222
11223*** The function face-bold-p returns t if a face should be bold.
11224set-face-bold-p sets that flag.
11225
11226*** The function face-italic-p returns t if a face should be italic.
11227set-face-italic-p sets that flag.
11228
11229*** You can now specify foreground and background colors for text
11230by adding elements of the form (foreground-color . COLOR-NAME)
11231and (background-color . COLOR-NAME) to the list of faces in
11232the `face' property (either the character's text property or an
11233overlay property).
11234
11235This means that you no longer need to create named faces to use
11236arbitrary colors in a Lisp package.
11237
11238** Changes in file-handling functions
11239
11240*** File-access primitive functions no longer discard an extra redundant
11241directory name from the beginning of the file name. In other words,
11242they no longer do anything special with // or /~. That conversion
11243is now done only in substitute-in-file-name.
11244
11245This makes it possible for a Lisp program to open a file whose name
11246begins with ~.
11247
11248*** If copy-file is unable to set the date of the output file,
11249it now signals an error with the condition file-date-error.
11250
11251*** The inode number returned by file-attributes may be an integer (if
11252the number fits in a Lisp integer) or a list of integers.
11253
11254*** insert-file-contents can now read from a special file,
11255as long as the arguments VISIT and REPLACE are nil.
11256
11257*** The RAWFILE arg to find-file-noselect, if non-nil, now suppresses
11258character code conversion as well as other things.
11259
11260Meanwhile, this feature does work with remote file names
11261(formerly it did not).
11262
11263*** Lisp packages which create temporary files should use the TMPDIR
11264environment variable to decide which directory to put them in.
11265
11266*** interpreter-mode-alist elements now specify regexps
11267instead of constant strings.
11268
11269*** expand-file-name no longer treats `//' or `/~' specially. It used
11270to delete all the text of a file name up through the first slash of
11271any `//' or `/~' sequence. Now it passes them straight through.
11272
11273substitute-in-file-name continues to treat those sequences specially,
11274in the same way as before.
11275
11276*** The variable `format-alist' is more general now.
11277The FROM-FN and TO-FN in a format definition can now be strings
11278which specify shell commands to use as filters to perform conversion.
11279
11280*** The new function access-file tries to open a file, and signals an
11281error if that fails. If the open succeeds, access-file does nothing
11282else, and returns nil.
11283
11284*** The function insert-directory now signals an error if the specified
11285directory cannot be listed.
11286
11287** Changes in minibuffer input
11288
11289*** The functions read-buffer, read-variable, read-command, read-string
11290read-file-name, read-from-minibuffer and completing-read now take an
11291additional argument which specifies the default value. If this
11292argument is non-nil, it should be a string; that string is used in two
11293ways:
11294
11295 It is returned if the user enters empty input.
11296 It is available through the history command M-n.
11297
11298*** The functions read-string, read-from-minibuffer,
11299read-no-blanks-input and completing-read now take an additional
11300argument INHERIT-INPUT-METHOD. If this is non-nil, then the
11301minibuffer inherits the current input method and the setting of
11302enable-multibyte-characters from the previously current buffer.
11303
11304In an interactive spec, you can use M instead of s to read an
11305argument in this way.
11306
11307*** All minibuffer input functions discard text properties
11308from the text you enter in the minibuffer, unless the variable
11309minibuffer-allow-text-properties is non-nil.
11310
11311** Echo area features
11312
11313*** Clearing the echo area now runs the normal hook
11314echo-area-clear-hook. Note that the echo area can be used while the
11315minibuffer is active; in that case, the minibuffer is still active
11316after the echo area is cleared.
11317
11318*** The function current-message returns the message currently displayed
11319in the echo area, or nil if there is none.
11320
11321** Keyboard input features
11322
11323*** tty-erase-char is a new variable that reports which character was
11324set up as the terminal's erase character when time Emacs was started.
11325
11326*** num-nonmacro-input-events is the total number of input events
11327received so far from the terminal. It does not count those generated
11328by keyboard macros.
11329
11330** Frame-related changes
11331
11332*** make-frame runs the normal hook before-make-frame-hook just before
11333creating a frame, and just after creating a frame it runs the abnormal
11334hook after-make-frame-functions with the new frame as arg.
11335
11336*** The new hook window-configuration-change-hook is now run every time
11337the window configuration has changed. The frame whose configuration
11338has changed is the selected frame when the hook is run.
11339
11340*** Each frame now independently records the order for recently
11341selected buffers, in its buffer-list frame parameter, so that the
11342value of other-buffer is now based on the buffers recently displayed
11343in the selected frame.
11344
11345*** The value of the frame parameter vertical-scroll-bars
11346is now `left', `right' or nil. A non-nil value specifies
11347which side of the window to put the scroll bars on.
11348
11349** X Windows features
11350
11351*** You can examine X resources for other applications by binding
11352x-resource-class around a call to x-get-resource. The usual value of
11353x-resource-class is "Emacs", which is the correct value for Emacs.
11354
11355*** In menus, checkboxes and radio buttons now actually work.
11356The menu displays the current status of the box or button.
11357
11358*** The function x-list-fonts now takes an optional fourth argument
11359MAXIMUM which sets a limit on how many matching fonts to return.
11360A smaller value of MAXIMUM makes the function faster.
11361
11362If the only question is whether *any* font matches the pattern,
11363it is good to supply 1 for this argument.
11364
11365** Subprocess features
11366
11367*** A reminder: it is no longer necessary for subprocess filter
11368functions and sentinels to do save-match-data, because Emacs does this
11369automatically.
11370
11371*** The new function shell-command-to-string executes a shell command
11372and returns the output from the command as a string.
11373
11374*** The new function process-contact returns t for a child process,
11375and (HOSTNAME SERVICE) for a net connection.
11376
11377** An error in running pre-command-hook or post-command-hook
11378does clear the variable to nil. The documentation was wrong before.
11379
11380** In define-key-after, if AFTER is t, the new binding now always goes
11381at the end of the keymap. If the keymap is a menu, this means it
11382goes after the other menu items.
11383
11384** If you have a program that makes several changes in the same area
11385of the buffer, you can use the macro combine-after-change-calls
11386around that Lisp code to make it faster when after-change hooks
11387are in use.
11388
11389The macro arranges to call the after-change functions just once for a
11390series of several changes--if that seems safe.
11391
11392Don't alter the variables after-change-functions and
11393after-change-function within the body of a combine-after-change-calls
11394form.
11395
11396** If you define an abbrev (with define-abbrev) whose EXPANSION
11397is not a string, then the abbrev does not expand in the usual sense,
11398but its hook is still run.
11399
11400** Normally, the Lisp debugger is not used (even if you have enabled it)
11401for errors that are handled by condition-case.
11402
11403If you set debug-on-signal to a non-nil value, then the debugger is called
11404regardless of whether there is a handler for the condition. This is
11405useful for debugging problems that happen inside of a condition-case.
11406
11407This mode of operation seems to be unreliable in other ways. Errors that
11408are normal and ought to be handled, perhaps in timers or process
11409filters, will instead invoke the debugger. So don't say you weren't
11410warned.
11411
11412** The new variable ring-bell-function lets you specify your own
11413way for Emacs to "ring the bell".
11414
11415** If run-at-time's TIME argument is t, the action is repeated at
11416integral multiples of REPEAT from the epoch; this is useful for
11417functions like display-time.
11418
11419** You can use the function locate-library to find the precise file
11420name of a Lisp library. This isn't new, but wasn't documented before.
11421
11422** Commands for entering view mode have new optional arguments that
11423can be used from Lisp. Low-level entrance to and exit from view mode
11424is done by functions view-mode-enter and view-mode-exit.
11425
11426** batch-byte-compile-file now makes Emacs return a nonzero status code
11427if there is an error in compilation.
11428
11429** pop-to-buffer, switch-to-buffer-other-window and
11430switch-to-buffer-other-frame now accept an additional optional
11431argument NORECORD, much like switch-to-buffer. If it is non-nil,
11432they don't put the buffer at the front of the buffer list.
11433
11434** If your .emacs file leaves the *scratch* buffer non-empty,
11435Emacs does not display the startup message, so as to avoid changing
11436the *scratch* buffer.
11437
11438** The new function regexp-opt returns an efficient regexp to match a string.
11439The arguments are STRINGS and (optionally) PAREN. This function can be used
11440where regexp matching or searching is intensively used and speed is important,
11441e.g., in Font Lock mode.
11442
11443** The variable buffer-display-count is local to each buffer,
11444and is incremented each time the buffer is displayed in a window.
11445It starts at 0 when the buffer is created.
11446
11447** The new function compose-mail starts composing a mail message
11448using the user's chosen mail composition agent (specified with the
11449variable mail-user-agent). It has variants compose-mail-other-window
11450and compose-mail-other-frame.
11451
11452** The `user-full-name' function now takes an optional parameter which
11453can either be a number (the UID) or a string (the login name). The
11454full name of the specified user will be returned.
11455
11456** Lisp packages that load files of customizations, or any other sort
11457of user profile, should obey the variable init-file-user in deciding
11458where to find it. They should load the profile of the user name found
11459in that variable. If init-file-user is nil, meaning that the -q
11460option was used, then Lisp packages should not load the customization
11461files at all.
11462
11463** format-time-string now allows you to specify the field width
11464and type of padding. This works as in printf: you write the field
11465width as digits in the middle of a %-construct. If you start
11466the field width with 0, it means to pad with zeros.
11467
11468For example, %S normally specifies the number of seconds since the
11469minute; %03S means to pad this with zeros to 3 positions, %_3S to pad
11470with spaces to 3 positions. Plain %3S pads with zeros, because that
11471is how %S normally pads to two positions.
11472
11473** thing-at-point now supports a new kind of "thing": url.
11474
11475** imenu.el changes.
11476
11477You can now specify a function to be run when selecting an
11478item from menu created by imenu.
11479
11480An example of using this feature: if we define imenu items for the
11481#include directives in a C file, we can open the included file when we
11482select one of those items.
05197f40 11483\f
3787e12e 11484* For older news, see the file ONEWS
a933dad1
DL
11485
11486----------------------------------------------------------------------
11487Copyright information:
11488
175573ac 11489Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
a933dad1
DL
11490
11491 Permission is granted to anyone to make or distribute verbatim copies
11492 of this document as received, in any medium, provided that the
11493 copyright notice and this permission notice are preserved,
11494 thus giving the recipient permission to redistribute in turn.
11495
11496 Permission is granted to distribute modified versions
11497 of this document, or of portions of it,
11498 under the above conditions, provided also that they
11499 carry prominent notices stating who last changed them.
05197f40 11500\f
a933dad1
DL
11501Local variables:
11502mode: outline
11503paragraph-separate: "[ \f]*$"
11504end: