(select-safe-coding-system): If
[bpt/emacs.git] / etc / NEWS
CommitLineData
404fa7d6
DL
1GNU Emacs NEWS -- history of user-visible changes. 5 Jan 2000
2Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
a933dad1
DL
3See the end for copying conditions.
4
5Please send Emacs bug reports to bug-gnu-emacs@gnu.org.
6For older news, see the file ONEWS.
7
8\f
251584f3
DL
9* Installation Changes in Emacs 21.1
10
1fa28578
GM
11** `movemail' defaults to supporting POP. You can turn this off using
12the --without-pop configure option, should that be necessary.
13
14** There are new configure options associated with the support for
15images and toolkit scrollbars. Use the --help option to list them.
16\f
17* Changes in Emacs 21.1
18
0b8a3a6d
DL
19** Variable `default-korean-keyboard' is initialized properly from the
20environment variable `HANGUL_KEYBOARD_TYPE'.
21
22** C-u C-x = provides detailed information about the character at
23point in a pop-up window.
24
25** New command M-x list-charset-chars reads a character set name and
26displays all characters in that character set.
27
28** M-x set-terminal-coding-system (C-x RET t) now allows CCL-based
29coding systems such as cpXXX and cyrillic-koi8.
30
5cb6a58e
SM
31** M-; now calls comment-dwim which tries to do something clever based
32on the context.
33
a1b8d58b
GM
34** The function `getenv' is now callable interactively.
35
6e417ca5
DL
36** The many obsolete language `setup-...-environment' commands have
37been removed -- use `set-language-environment'.
38
5898e075
DL
39** New user options `display-time-mail-face' and
40`display-time-use-mail-icon' control the appearance of mode-line mail
41indicator used by the display-time package. On a suitable display the
42indicator can be an icon and is mouse-sensitive.
43
abfcc168
GM
44** Emacs' auto-save list files are now by default stored in a
45sub-directory `.emacs.d/auto-save-list/' of the user's home directory.
874d1079 46(On MS-DOS, this subdirectory's name is `_emacs.d/auto-save.list/'.)
abfcc168
GM
47You can customize `auto-save-list-prefix' to change this location.
48
cc181e95
GM
49** On window-systems, additional space can be put between text lines
50on the display using several methods
51
52- By setting frame parameter `line-spacing' to PIXELS. PIXELS must be
53a positive integer, and specifies that PIXELS number of pixels should
54be put below text lines on the affected frame or frames.
55
56- By setting X resource `lineSpacing', class `LineSpacing'. This is
57equivalent ot specifying the frame parameter.
58
da4496b6 59- By specifying `--line-spacing=N' or `-lsp N' on the command line.
cc181e95
GM
60
61- By setting buffer-local variable `line-spacing'. The meaning is
62the same, but applies to the a particular buffer only.
63
0daee095 64** The new command `clone-buffer-indirectly' can be used to create
1c459486
GM
65an indirect buffer that is a twin copy of the current buffer. The
66command `clone-buffer-indirectly-other-window', bound to C-x 4 c,
67does the same but displays the indirect buffer in another window.
0daee095 68
176256a1 69** New user options `backup-directory-alist' and
3bbc50af
DL
70`make-backup-file-name-function' control the placement of backups,
71typically in a single directory or in an invisible sub-directory.
176256a1 72
dd0add8e
DL
73** New commands iso-iso2sgml and iso-sgml2iso convert between Latin-1
74characters and the corresponding SGML (HTML) entities.
75
699238d9
GM
76** Emacs now refuses to load compiled Lisp files which weren't
77compiled with Emacs. Set `load-dangerous-libraries' to t to change
78this behavior.
79
80The reason for this change is an incompatible change in XEmacs' byte
81compiler. Files compiled with XEmacs can contain byte codes that let
82Emacs dump core.
83
84** New X resources recognized
100b3cbb 85
7233c5bd
GM
86*** The X resource `synchronous', class `Synchronous', specifies
87whether Emacs should run in synchronous mode. Synchronous mode
88is useful for debugging X problems.
89
90Example:
91
699238d9 92 emacs.synchronous: true
7233c5bd 93
100b3cbb
GM
94*** The X resource `visualClass, class `VisualClass', specifies the
95visual Emacs should use. The resource's value should be a string of
96the form `CLASS-DEPTH', where CLASS is the name of the visual class,
97and DEPTH is the requested color depth as a decimal number. Valid
98visual class names are
99
100 TrueColor
101 PseudoColor
102 DirectColor
103 StaticColor
104 GrayScale
105 StaticGray
106
107Visual class names specified as X resource are case-insensitive, i.e.
108`pseudocolor', `Pseudocolor' and `PseudoColor' all have the same
109meaning.
110
111The program `xdpyinfo' can be used to list the visual classes
112supported on your display, and which depths they have. If
113`visualClass' is not specified, Emacs uses the display's default
114visual.
115
116Example:
117
699238d9 118 emacs.visualClass: TrueColor-8
100b3cbb
GM
119
120*** The X resource `privateColormap', class `PrivateColormap',
121specifies that Emacs should use a private colormap if it is using the
122default visual, and that visual is of class PseudoColor. Recognized
123resource values are `true' or `on'.
124
125Example:
126
699238d9 127 emacs.privateColormap: true
100b3cbb 128
0d0c76b8
EZ
129** The menu bar configuration has changed. The new configuration is
130more CUA-compliant. The most significant change is that Options is
131now a separate menu-bar item, with Mule and Customize as its submenus.
132
42088c12 133** User-option `show-cursor-in-non-selected-windows' controls how to
c60ea02e 134display the cursor in non-selected windows. If nil, no cursor is
42088c12
GM
135shown, if non-nil a hollow box cursor is shown. This option can
136be customized.
c60ea02e 137
31047e0d
DL
138** The variable `echo-keystrokes' may now have a floating point value.
139
b02786f9
GM
140** C-x 5 1 runs the new command delete-other-frames which deletes
141all frames except the selected one.
142
3261c1d8
DL
143** If your init file is compiled (.emacs.elc), `user-init-file' is set
144to the source name (.emacs.el), if that exists, after loading it.
145
ffe36136
GM
146** The help string specified for a menu-item whose definition contains
147the property `:help HELP' is now displayed under X either in the echo
148area or with tooltips.
149
559cee90
DL
150** New user option `read-mail-command' specifies a command to use to
151read mail from the menu etc.
152
271b4185
GM
153** Hexl contains a new command `hexl-insert-hex-string' which inserts
154a string of hexadecimal numbers read from the mini-buffer.
155
0daee095
GM
156** Changes in Texinfo mode.
157
158** A couple of new key bindings have been added for inserting Texinfo
159macros
160
161 Key binding Macro
162 -------------------------
163 C-c C-c C-s @strong
164 C-c C-c C-e @emph
165 C-c C-c u @url
166 C-c C-c q @quotation
167 C-c C-c m @email
168
559cee90
DL
169** Changes in Outline mode.
170
171There is now support for Imenu to index headings. A new command
172`outline-headers-as-kill' copies the visible headings in the region to
173the kill ring, e.g. to produce a table of contents.
174
404fa7d6
DL
175** New command M-x check-parens can be used to find unbalanced paren
176groups and strings in buffers in Lisp mode (or other modes).
177
8964fec7
SM
178** You can now easily create new *Info* buffers using either M-x clone-buffer
179or C-u m <entry> RET. M-x clone-buffer can also be used on *Help* and
180several other special buffers.
181
39783d73
WP
182** Emacs can now support 'wheeled' mice (such as the MS IntelliMouse)
183under XFree86. To enable this, simply put (mwheel-install) in your
184.emacs file.
185
186The variables `mwheel-follow-mouse' and `mwheel-scroll-amount'
187determine where and by how much buffers are scrolled.
188
d35fce81
GM
189** Listing buffers with M-x list-buffers (C-x C-b) now shows
190abbreviated file names. Abbreviations can be customized by changing
191`directory-abbrev-alist'.
192
df5a1902
GM
193** Reading from the mini-buffer now reads from standard input if Emacs
194is running in batch mode. For example,
195
196 (message "%s" (read t))
197
198will read a Lisp expression from standard input and print the result
199to standard output.
200
a933dad1
DL
201** Faces and frame parameters.
202
203There are four new faces `scroll-bar', `border', `cursor' and `mouse'.
204Setting the frame parameters `scroll-bar-foreground' and
205`scroll-bar-background' sets foreground and background color of face
206`scroll-bar' and vice versa. Setting frame parameter `border-color'
207sets the background color of face `border' and vice versa. Likewise
208for frame parameters `cursor-color' and face `cursor', and frame
209parameter `mouse-color' and face `mouse'.
210
211Changing frame parameter `font' sets font-related attributes of the
212`default' face and vice versa. Setting frame parameters
79214ddf 213`foreground-color' or `background-color' sets the colors of the
a933dad1
DL
214`default' face and vice versa.
215
f77a4a8a
GM
216** New face `menu'.
217
218The face `menu' can be used to change colors and font of Emacs' menus.
219Setting the font of LessTif/Motif menus is currently not supported;
220attempts to set the font are ignored in this case.
221
a933dad1
DL
222** New frame parameter `screen-gamma' for gamma correction.
223
224The new frame parameter `screen-gamma' specifies gamma-correction for
225colors. Its value may be nil, the default, in which case no gamma
226correction occurs, or a number > 0, usually a float, that specifies
227the screen gamma of a frame's display.
228
229PC monitors usually have a screen gamma of 2.2. smaller values result
230in darker colors. You might want to try a screen gamma of 1.5 for LCD
231color displays. The viewing gamma Emacs uses is 0.4545. (1/2.2).
232
233The X resource name of this parameter is `screenGamma', class
234`ScreenGamma'.
235
236** Emacs has a new redisplay engine.
237
238The new redisplay handles characters of variable width and height.
239Italic text can be used without redisplay problems. Fonts containing
240oversized characters, i.e. characters larger than the logical height
241of a font can be used. Images of various formats can be displayed in
242the text.
243
244** Emacs has a new face implementation.
245
246The new faces no longer fundamentally use X font names to specify the
247font. Instead, each face has several independent attributes--family,
248height, width, weight and slant--that it may or may not specify.
249These attributes can be merged from various faces, and then together
250specify a font.
251
252Faces are supported on terminals that can display color or fonts.
253These terminal capabilities are auto-detected. Details can be found
254under Lisp changes, below.
255
256** New default font is Courier 12pt.
257
258** When using a windowing terminal, Emacs window now has a cursor of
259its own. When the window is selected, the cursor is solid; otherwise,
260it is hollow.
261
262** Bitmap areas to the left and right of windows are used to display
263truncation marks, continuation marks, overlay arrows and alike. The
264foreground, background, and stipple of these areas can be changed by
265customizing face `fringe'.
266
267** The mode line under X is now drawn with shadows by default. You
268can change its appearance by modifying the face `modeline'.
269
270** LessTif support.
271
272Emacs now runs with LessTif (see <http://www.lesstif.org>). You will
273need a version 0.88.1 or later.
274
275** Toolkit scroll bars.
276
277Emacs now uses toolkit scrollbars if available. When configured for
278LessTif/Motif, it will use that toolkit's scrollbar. Otherwise, when
279configured for Lucid and Athena widgets, it will use the Xaw3d scroll
280bar if Xaw3d is available. You can turn off the use of toolkit scroll
281bars by specifying `--with-toolkit-scroll-bars=no' when configuring
282Emacs.
283
284When you encounter problems with the Xaw3d scroll bar, watch out how
285Xaw3d is compiled on your system. If the Makefile generated from
286Xaw3d's Imakefile contains a `-DNARROWPROTO' compiler option, and your
287Emacs system configuration file `s/your-system.h' does not contain a
288define for NARROWPROTO, you might consider adding it. Take
289`s/freebsd.h' as an example.
290
291Alternatively, if you don't have access to the Xaw3d source code, take
292a look at your system's imake configuration file, for example in the
293directory `/usr/X11R6/lib/X11/config' (paths are different on
294different systems). You will find files `*.cf' there. If your
295system's cf-file contains a line like `#define NeedWidePrototypes NO',
296add a `#define NARROWPROTO' to your Emacs system configuration file.
297
298The reason for this is that one Xaw3d function uses `double' or
299`float' function parameters depending on the setting of NARROWPROTO.
300This is not a problem when Imakefiles are used because each system's
301image configuration file contains the necessary information. Since
302Emacs doesn't use imake, this has do be done manually.
303
304** Toggle buttons and radio buttons in menus.
305
306When compiled with LessTif (or Motif) support, Emacs uses toolkit
307widgets for radio and toggle buttons in menus. When configured for
308Lucid, Emacs draws radio buttons and toggle buttons similar to Motif.
309
310** Highlighting of trailing whitespace.
311
312When `show-trailing-whitespace' is non-nil, Emacs displays trailing
313whitespace in the face `trailing-whitespace'. Trailing whitespace is
314defined as spaces or tabs at the end of a line. To avoid busy
315highlighting when entering new text, trailing whitespace is not
316displayed if point is at the end of the line containing the
317whitespace.
318
319** Busy-cursor.
320
321Emacs can optionally display a busy-cursor under X. You can turn the
322display on or off by customizing group `cursor'.
323
324** Blinking cursor
325
326M-x blink-cursor-mode toggles a blinking cursor under X and on
327terminals having terminal capabilities `vi', `vs', and `ve'. Blinking
328and related parameters like frequency and delay can be customized in
329the group `cursor'.
330
331** New font-lock support mode `jit-lock-mode'.
332
333This support mode is roughly equivalent to `lazy-lock' but is
334generally faster. It supports stealth and deferred fontification.
335See the documentation of the function `jit-lock-mode' for more
336details.
337
338Font-lock uses jit-lock-mode as default support mode, so you don't
339have to do anything to activate it.
340
341** Tabs and variable-width text.
342
343Tabs are now displayed with stretch properties; the width of a tab is
344defined as a multiple of the normal character width of a frame, and is
345independent of the fonts used in the text where the tab appears.
346Thus, tabs can be used to line up text in different fonts.
347
348** Enhancements of the Lucid menu bar
349
350*** The Lucid menu bar now supports the resource "margin".
351
352 emacs.pane.menubar.margin: 5
353
79dd1637
RS
354The default margin is 4 which makes the menu bar appear like the
355LessTif/Motif one.
a933dad1 356
79dd1637
RS
357*** Arrows that indicate sub-menus are now drawn with shadows, as in
358LessTif and Motif.
a933dad1
DL
359
360** Hscrolling in C code.
361
cc181e95
GM
362Horizontal scrolling now happens automatically if
363`automatic-hscrolling' is set (the default). This setting can be
364customized.
a933dad1
DL
365
366** Tool bar support.
367
368Emacs supports a tool bar at the top of a frame under X. For details
369how to define a tool bar, see the page describing Lisp-level changes.
370
371** Mouse-sensitive mode line.
372
373Different parts of the mode line under X have been made
374mouse-sensitive. Moving the mouse to a mouse-sensitive part in the mode
375line changes the appearance of the mouse pointer to an arrow, and help
376about available mouse actions is displayed either in the echo area, or
377in the tooltip window if you have enabled one.
378
379Currently, the following actions have been defined:
380
381- Mouse-1 on the buffer name in the mode line switches between two
382buffers.
383
384- Mouse-2 on the buffer-name switches to the next buffer, and
385M-mouse-2 switches to the previous buffer in the buffer list.
386
387- Mouse-3 on the buffer-name displays a buffer menu.
388
559cee90 389- Mouse-2 on the read-only status in the mode line (`%' or `*')
a933dad1
DL
390toggles the read-only status.
391
392- Mouse-3 on the mode name display a minor-mode menu.
393
394** LessTif/Motif file selection dialog.
395
396When Emacs is configured to use LessTif or Motif, reading a file name
e33b0397 397from a menu will pop up a file selection dialog if `use-dialog-box' is
a933dad1
DL
398non-nil.
399
400** Emacs can display faces on TTY frames.
401
402Emacs automatically detects terminals that are able to display colors.
403Faces with a weight greater than normal are displayed extra-bright, if
404the terminal supports it. Faces with a weight less than normal and
405italic faces are displayed dimmed, if the terminal supports it.
406Underlined faces are displayed underlined if possible. Other face
407attributes like overlines, strike-throught, box are ignored.
408
409** Sound support
410
411Emacs supports playing sound files on GNU/Linux and the free BSDs
412(Voxware driver and native BSD driver, aka as Luigi's driver).
413Currently supported file formats are RIFF-WAVE (*.wav) and Sun Audio
414(*.au). You must configure Emacs with the option `--with-sound=yes'
415to enable sound support.
416
417** A new variable, backup-by-copying-when-privileged-mismatch, gives
418the highest file uid for which backup-by-copying-when-mismatch will be
419forced on. The assumption is that uids less than or equal to this
420value are special uids (root, bin, daemon, etc.--not real system
421users) and that files owned by these users should not change ownership,
422even if your system policy allows users other than root to edit them.
423
424The default is 200; set the variable to nil to disable the feature.
425
426** A block cursor can be drawn as wide as the glyph under it under X.
427
428As an example: if a block cursor is over a tab character, it will be
429drawn as wide as that tab on the display. To do this, set
430`x-stretch-cursor' to a non-nil value.
431
432** Empty display lines at the end of a buffer may be marked with a
433bitmap (this is similar to the tilde displayed by vi).
434
435This behavior is activated by setting the buffer-local variable
436`indicate-empty-lines' to a non-nil value. The default value of this
437variable is found in `default-indicate-empty-lines'.
438
439** There is a new "aggressive" scrolling method.
440
441When scrolling up because point is above the window start, if the
442value of the buffer-local variable `scroll-up-aggessively' is a
443number, Emacs chooses a new window start so that point ends up that
444fraction of the window's height from the bottom of the window.
445
446When scrolling down because point is below the window end, if the
447value of the buffer-local variable `scroll-down-aggessively' is a
448number, Emacs chooses a new window start so that point ends up that
449fraction of the window's height from the top of the window.
450
451** The rectangle commands now avoid inserting undesirable spaces,
452notably at the end of lines.
453
454All these functions have been rewritten to avoid inserting unwanted
455spaces, and an optional prefix now allows them to behave the old way.
456
eee54b0e
DL
457There is a new command M-x replace-rectangle.
458
a933dad1
DL
459** The new command M-x query-replace-regexp-eval acts like
460query-replace-regexp, but takes a Lisp expression which is evaluated
461after each match to get the replacement text.
462
f0124b4a 463** M-x query-replace recognizes a new command `E' that lets you
4ff40dd0
GM
464edit the replacement string.
465
466** The new command mail-abbrev-complete-alias, bound to `M-TAB', let's
467you complete mail aliases in the text, analogous to
468lisp-complete-symbol.
469
a933dad1
DL
470** Emacs now resizes mini-windows if appropriate.
471
472If a message is longer than one line, or mini-buffer contents are
473longer than one line, Emacs now resizes the mini-window unless it is
474on a frame of its own. You can control the maximum mini-window size
475by setting the following variable:
476
477- User option: max-mini-window-height
478
479Maximum height for resizing mini-windows. If a float, it specifies a
480fraction of the mini-window frame's height. If an integer, it
481specifies a number of lines. If nil, don't resize.
482
483Default is 0.25.
484
0d43b60d
GM
485** Changes to hideshow.el
486
487Hideshow is now at version 5.x. It uses a new algorithms for block
488selection and traversal and includes more isearch support.
489
490*** Generalized block selection and traversal
491
492A block is now recognized by three things: its start and end regexps
493(both strings), and a match-data selector (an integer) specifying
494which sub-expression in the start regexp serves as the place where a
495`forward-sexp'-like function can operate. Hideshow always adjusts
496point to this sub-expression before calling `hs-forward-sexp-func'
497(which for most modes evaluates to `forward-sexp').
498
499If the match-data selector is not specified, it defaults to zero,
500i.e., the entire start regexp is valid, w/ no prefix. This is
501backwards compatible with previous versions of hideshow. Please see
502the docstring for variable `hs-special-modes-alist' for details.
503
504*** Isearch support for updating mode line
505
506During incremental search, if Hideshow minor mode is active, hidden
507blocks are temporarily shown. The variable `hs-headline' records the
508line at the beginning of the opened block (preceding the hidden
509portion of the buffer), and the mode line is refreshed. When a block
510is re-hidden, the variable is set to nil.
511
512To show `hs-headline' in the mode line, you may wish to include
513something like this in your .emacs.
514
515 (add-hook 'hs-minor-mode-hook
516 (lambda ()
517 (add-to-list 'mode-line-format 'hs-headline)))
518
559cee90
DL
519** Changes to Change Log mode and Add-Log functions
520
521If you invoke `add-change-log-entry' from a backup file, it makes an
522entry appropriate for the file's parent. This is useful for making
523log entries by comparing a version with deleted functions.
524
525New command M-x change-log-merge merges another log into the current
526buffer, fixing old-style date formats if necessary.
eb2aac9d
GM
527
528Change Log mode now adds a file's version number to change log entries
529if user-option `change-log-version-info-enabled' is non-nil.
530
531The search for a file's version number is performed based on regular
532expressions from `change-log-version-number-regexp-list' which can be
533cutomized. Version numbers are only found in the first 10 percent of
534a file.
535
3476b54a
GM
536** Changes in Font Lock
537
538*** The new function `font-lock-remove-keywords' can be used to remove
539font-lock keywords from the current buffer or from a specific major
540mode.
541
b3b98592
GM
542** Comint (subshell) changes
543
544Comint now includes new features to send commands to running processes
545and redirect the output to a designated buffer or buffers.
546
547The command M-x comint-redirect-send-command reads a command and
548buffer name from the mini-buffer. The command is sent to the current
549buffer's process, and its output is inserted into the specified buffer.
550
551The command M-x comint-redirect-send-command-to-process acts like
552M-x comint-redirect-send-command but additionally reads the name of
553the buffer whose process should be used from the mini-buffer.
554
e26cec67
GM
555** Changes to Rmail mode
556
c0510d27
GM
557*** The new user-option rmail-rmail-user-mail-address-regexp can be
558set to fine tune the identification of of the correspondent when
559receiving new mail. If it matches the address of the sender, the
560recipient is taken as correspondent of a mail. If nil, the default,
561`user-login-name' and `user-mail-address' are used to exclude yourself
562as correspondent.
563
564Usually you don't have to set this variable, except if you collect
565mails sent by you under different user names. Then it should be a
993d8b7d 566regexp matching your mail addresses.
c0510d27 567
3b55acc9
GM
568*** The new user-option rmail-confirm-expunge controls whether and how
569to ask for confirmation before expunging deleted messages from an
570Rmail file. You can choose between no confirmation, confirmation
571with y-or-n-p, or confirmation with yes-or-no-p. Default is to ask
572for confirmation with yes-or-no-p.
573
6a1950ec
GM
574*** RET is now bound in the Rmail summary to rmail-summary-goto-msg,
575like `j'.
576
5bb6f079
RS
577*** There is a new user option `rmail-digest-end-regexps' that
578specifies the regular expressions to detect the line that ends a
2d5e9b54 579digest message.
e26cec67 580
993d8b7d
DL
581*** The new user option `rmail-automatic-folder-directives' specifies
582in which folder to put messages automatically.
583
400a1ed0
GM
584** Changes to TeX mode
585
586The default mode has been changed from `plain-tex-mode' to
587`latex-mode'.
588
a933dad1
DL
589** Changes to RefTeX mode
590
591*** RefTeX has new support for index generation. Index entries can be
592 created with `C-c <', with completion available on index keys.
593 Pressing `C-c /' indexes the word at the cursor with a default
594 macro. `C-c >' compiles all index entries into an alphabetically
595 sorted *Index* buffer which looks like the final index. Entries
596 can be edited from that buffer.
597
598*** Label and citation key selection now allow to select several
599 items and reference them together (use `m' to mark items, `a' or
600 `A' to use all marked entries).
601
602*** reftex.el has been split into a number of smaller files to reduce
603 memory use when only a part of RefTeX is being used.
604
605*** a new command `reftex-view-crossref-from-bibtex' (bound to `C-c &'
606 in BibTeX-mode) can be called in a BibTeX database buffer in order
607 to show locations in LaTeX documents where a particular entry has
608 been cited.
609
38de9631
GM
610** Emacs Lisp mode now allows multiple levels of outline headings.
611The level of a heading is determined from the number of leading
612semicolons in a heading line. Toplevel forms starting with a `('
613in column 1 are always made leaves.
614
a933dad1
DL
615** The M-x time-stamp command (most commonly used on write-file-hooks)
616has the following new features:
617
618*** The patterns for finding the time stamp and for updating a pattern
619may match text spanning multiple lines. For example, some people like
620to have the filename and date on separate lines. The new variable
621time-stamp-inserts-lines controls the matching for multi-line patterns.
622
623*** More than one time stamp can be updated in the same file. This
624feature is useful if you need separate time stamps in a program source
625file to both include in formatted documentation and insert in the
626compiled binary. The same time-stamp will be written at each matching
627pattern. The variable time-stamp-count enables this new feature; it
628defaults to 1.
629
630** Tooltips.
631
632Tooltips are small X windows displaying a help string at the current
633mouse position. To use them, use the Lisp package `tooltip' which you
634can access via the user option `tooltip-mode'.
635
636Tooltips also provides support for GUD debugging. If activated,
637variable values can be displayed in tooltips by pointing at them with
638the mouse in source buffers. You can customize various aspects of the
639tooltip display in the group `tooltip'.
640
641** Customize changes
642
643*** Customize now supports comments about customized items. Use the
34f94cf9
DL
644`State' menu to add comments. Note that customization comments will
645cause the customizations to fail in earlier versions of Emacs.
a933dad1
DL
646
647*** The new option `custom-buffer-done-function' says whether to kill
648Custom buffers when you've done with them or just bury them (the
649default).
650
0ae51efb
GM
651*** The keyword :set-after in defcustom allows to specify dependencies
652between custom options. Example:
653
654 (defcustom default-input-method nil
655 "*Default input method for multilingual text (a string).
656 This is the input method activated automatically by the command
657 `toggle-input-method' (\\[toggle-input-method])."
658 :group 'mule
659 :type '(choice (const nil) string)
660 :set-after '(current-language-environment))
661
662This specifies that default-input-method should be set after
663current-language-environment even if default-input-method appears
664first in a custom-set-variables statement.
665
a933dad1
DL
666** New features in evaluation commands
667
668The commands to evaluate Lisp expressions, such as C-M-x in Lisp
669modes, C-j in Lisp Interaction mode, and M-:, now bind the variables
670print-level, print-length, and debug-on-error based on the
671customizable variables eval-expression-print-level,
672eval-expression-print-length, and eval-expression-debug-on-error.
673
a933dad1
DL
674** Dired changes
675
676*** New variable `dired-recursive-deletes' determines if the delete
677command will delete non-empty directories recursively. The default
678is, delete only empty directories.
679
680*** New variable `dired-recursive-copies' determines if the copy
681command will copy directories recursively. The default is, do not
682copy directories recursively.
683
f6737cde
GM
684*** In command `dired-do-shell-command' (usually bound to `!') a `?'
685in the shell command has a special meaning similar to `*', but with
686the difference that the command will be run on each file individually.
687
a933dad1
DL
688** The variable mail-specify-envelope-from controls whether to
689use the -f option when sending mail.
690
b1c609b1
GM
691** CC mode changes.
692
693Note: This release contains changes that might not be compatible with
694current user setups (although it's believed that these
695incompatibilities will only show in very uncommon circumstances).
696However, since the impact is uncertain, these changes may be rolled
697back depending on user feedback. Therefore there's no forward
698compatibility guarantee wrt the new features introduced in this
699release.
700
701*** New initialization procedure for the style system.
702When the initial style for a buffer is determined by CC Mode (from the
703variable c-default-style), the global values of style variables now
704take precedence over the values specified by the chosen style. This
705is different than the old behavior: previously, the style-specific
706settings would override the global settings. This change makes it
707possible to do simple configuration in the intuitive way with
708Customize or with setq lines in one's .emacs file.
709
710By default, the global value of every style variable is the new
711special symbol set-from-style, which causes the value to be taken from
712the style system. This means that in effect, only an explicit setting
713of a style variable will cause the "overriding" behavior described
714above.
715
716Also note that global settings override style-specific settings *only*
717when the initial style of a buffer is chosen by a CC Mode major mode
718function. When a style is chosen in other ways --- for example, by a
719call like (c-set-style "gnu") in a hook, or via M-x c-set-style ---
720then the style-specific values take precedence over any global style
721values. In Lisp terms, global values override style-specific values
722only when the new second argument to c-set-style is non-nil; see the
723function documentation for more info.
724
725The purpose of these changes is to make it easier for users,
726especially novice users, to do simple customizations with Customize or
727with setq in their .emacs files. On the other hand, the new system is
728intended to be compatible with advanced users' customizations as well,
729such as those that choose styles in hooks or whatnot. This new system
730is believed to be almost entirely compatible with current
731configurations, in spite of the changed precedence between style and
732global variable settings when a buffer's default style is set.
733
734(Thanks to Eric Eide for clarifying this explanation a bit.)
735
736**** c-offsets-alist is now a customizable variable.
737This became possible as a result of the new initialization behavior.
738
739This variable is treated slightly differently from the other style
740variables; instead of using the symbol set-from-style, it will be
741completed with the syntactic symbols it doesn't already contain when
742the style is first initialized. This means it now defaults to the
743empty list to make all syntactic elements get their values from the
744style system.
745
746**** Compatibility variable to restore the old behavior.
747In case your configuration doesn't work with this change, you can set
748c-old-style-variable-behavior to non-nil to get the old behavior back
749as far as possible.
750
751*** Improvements to line breaking and text filling.
752CC Mode now handles this more intelligently and seamlessly wrt the
753surrounding code, especially inside comments. For details see the new
754chapter about this in the manual.
755
756**** New variable to recognize comment line prefix decorations.
757The variable c-comment-prefix-regexp has been added to properly
758recognize the line prefix in both block and line comments. It's
759primarily used to initialize the various paragraph recognition and
760adaptive filling variables that the text handling functions uses.
761
762**** New variable c-block-comment-prefix.
763This is a generalization of the now obsolete variable
764c-comment-continuation-stars to handle arbitrary strings.
765
766**** CC Mode now uses adaptive fill mode.
767This to make it adapt better to the paragraph style inside comments.
768
769It's also possible to use other adaptive filling packages inside CC
770Mode, notably Kyle E. Jones' Filladapt mode (http://wonderworks.com/).
771A new convenience function c-setup-filladapt sets up Filladapt for use
772inside CC Mode.
773
774Note though that the 2.12 version of Filladapt lacks a feature that
775causes it to work suboptimally when c-comment-prefix-regexp can match
776the empty string (which it commonly does). A patch for that is
777available from the CC Mode web site (http://www.python.org/emacs/
778cc-mode/).
779
780**** It's now possible to selectively turn off auto filling.
781The variable c-ignore-auto-fill is used to ignore auto fill mode in
782specific contexts, e.g. in preprocessor directives and in string
783literals.
784
785**** New context sensitive line break function c-context-line-break.
786It works like newline-and-indent in normal code, and adapts the line
787prefix according to the comment style when used inside comments. If
788you're normally using newline-and-indent, you might want to switch to
789this function.
790
791*** Fixes to IDL mode.
792It now does a better job in recognizing only the constructs relevant
793to IDL. E.g. it no longer matches "class" as the beginning of a
794struct block, but it does match the CORBA 2.3 "valuetype" keyword.
795Thanks to Eric Eide.
796
797*** Improvements to the Whitesmith style.
798It now keeps the style consistently on all levels and both when
799opening braces hangs and when they don't.
800
801**** New lineup function c-lineup-whitesmith-in-block.
802
803*** New lineup functions c-lineup-template-args and c-indent-multi-line-block.
804See their docstrings for details. c-lineup-template-args does a
805better job of tracking the brackets used as parens in C++ templates,
806and is used by default to line up continued template arguments.
807
808*** c-lineup-comment now preserves alignment with a comment on the
809previous line. It used to instead preserve comments that started in
810the column specified by comment-column.
811
812*** c-lineup-C-comments handles "free form" text comments.
813In comments with a long delimiter line at the start, the indentation
814is kept unchanged for lines that start with an empty comment line
815prefix. This is intended for the type of large block comments that
816contain documentation with its own formatting. In these you normally
817don't want CC Mode to change the indentation.
818
819*** The `c' syntactic symbol is now relative to the comment start
820instead of the previous line, to make integers usable as lineup
821arguments.
822
823*** All lineup functions have gotten docstrings.
824
825*** More preprocessor directive movement functions.
826c-down-conditional does the reverse of c-up-conditional.
827c-up-conditional-with-else and c-down-conditional-with-else are
828variants of these that also stops at "#else" lines (suggested by Don
829Provan).
830
831*** Minor improvements to many movement functions in tricky situations.
832
c407c570
GM
833** Makefile mode changes
834
835*** The mode now uses the abbrev table `makefile-mode-abbrev-table'.
836
837*** Conditionals and include statements are now highlighted when
838Fontlock mode is active.
839
87be76f6
GM
840** Isearch changes
841
c407c570
GM
842** In Isearch mode, M-C-s and M-C-r are now bound like C-s and C-r,
843respectively, i.e. you can repeat a regexp isearch with the same keys
844that started the search.
845
87be76f6 846*** In Isearch mode, mouse-2 in the echo area now yanks the current
a933dad1
DL
847selection into the search string rather than giving an error.
848
87be76f6
GM
849*** There is a new lazy highlighting feature in incremental search.
850
d35fce81 851Lazy highlighting is switched on/off by customizing variable
87be76f6
GM
852`isearch-lazy-highlight'. When active, all matches for the current
853search string are highlighted. The current match is highlighted as
854before using face `isearch' or `region'. All other matches are
855highlighted using face `isearch-lazy-highlight-face' which defaults to
856`secondary-selection'.
857
858The extra highlighting makes it easier to anticipate where the cursor
859will end up each time you press C-s or C-r to repeat a pending search.
860Highlighting of these additional matches happens in a deferred fashion
861using "idle timers," so the cycles needed do not rob isearch of its
862usual snappy response.
863
864If `isearch-lazy-highlight-cleanup' is set to t, highlights for
865matches are automatically cleared when you end the search. If it is
866set to nil, you can remove the highlights manually with `M-x
867isearch-lazy-highlight-cleanup'.
868
35384f06
GM
869** Changes in sort.el
870
871The function sort-numeric-fields interprets numbers starting with `0'
12c25bdc 872as octal and numbers starting with `0x' or `0X' as hexadecimal. The
35384f06
GM
873new user-option sort-numberic-base can be used to specify a default
874numeric base.
87be76f6 875
d7b511c4
GM
876** Changes to Ange-ftp
877
878*** Ange-ftp allows you to specify of a port number in remote file
d67f47e4
DL
879names cleanly. It is appended to the host name, separated by a hash
880sign, e.g. `/foo@bar.org#666:mumble'. (This syntax comes from EFS.)
881
d7b511c4
GM
882*** If the new user-option `ange-ftp-try-passive-mode' is set, passive
883ftp mode will be used if the ftp client supports that.
884
4b9347b3
GM
885** Shell script mode changes.
886
887Shell script mode (sh-script) can now indent scripts for shells
888derived from sh and rc. The indentation style is customizeable, and
889sh-script can attempt to "learn" the current buffer's style.
890
79214ddf
FP
891** Etags changes.
892
893*** In DOS, etags looks for file.cgz if it cannot find file.c.
894
aca0be23 895*** New option --ignore-case-regex is an alternative to --regex. It is now
8dc78b52
FP
896possible to bind a regexp to a language, by prepending the regexp with
897{lang}, where lang is one of the languages that `etags --help' prints out.
898This feature is useful especially for regex files, where each line contains
899a regular expression. The manual contains details.
aca0be23 900
79214ddf
FP
901*** In C and derived languages, etags creates tags for function
902declarations when given the --declarations option.
903
904*** In C++, tags are created for "operator". The tags have the form
aca0be23 905"operator+", without spaces between the keyword and the operator.
79214ddf
FP
906
907*** New language Ada: tags are functions, procedures, packages, tasks, and
908types.
909
de370c4c 910*** In Fortran, `procedure' is not tagged.
79214ddf
FP
911
912*** In Java, tags are created for "interface".
913
914*** In Lisp, "(defstruct (foo", "(defun (operator" and similar constructs
915are now tagged.
916
917*** In Perl, the --globals option tags global variables. my and local
918variables are tagged.
919
920*** New language Python: def and class at the beginning of a line are tags.
921
8dc78b52
FP
922*** .ss files are Scheme files, .pdb is Postscript with C syntax, .psw is
923for PSWrap.
79214ddf 924
f6737cde
GM
925** Changes in etags.el
926
3f6e4b8b
GM
927*** The new user-option tags-case-fold-search can be used to make
928tags operations case-sensitive or case-insensitive. The default
929is to use the same setting as case-fold-search.
930
f6737cde
GM
931*** You can display additional output with M-x tags-apropos by setting
932the new variable tags-apropos-additional-actions.
933
934If non-nil, the variable's value should be a list of triples (TITLE
935FUNCTION TO-SEARCH). For each triple, M-x tags-apropos processes
936TO-SEARCH and lists tags from it. TO-SEARCH should be an alist,
937obarray, or symbol. If it is a symbol, the symbol's value is used.
938
939TITLE is a string to use to label the list of tags from TO-SEARCH.
940
941FUNCTION is a function to call when an entry is selected in the Tags
942List buffer. It is called with one argument, the selected symbol.
943
944A useful example value for this variable might be something like:
945
946 '(("Emacs Lisp" Info-goto-emacs-command-node obarray)
947 ("Common Lisp" common-lisp-hyperspec common-lisp-hyperspec-obarray)
948 ("SCWM" scwm-documentation scwm-obarray))
949
950*** The face tags-tag-face can be used to customize the appearance
951of tags in the output of M-x tags-apropos.
952
953*** Setting tags-apropos-verbose to a non-nil value displays the
954names of tags files in the *Tags List* buffer.
955
fbc164de
PE
956** Emacs now attempts to determine the initial language environment
957and preferred and locale coding systems systematically from the
958LC_ALL, LC_CTYPE, and LANG environment variables during startup.
959
0b8a3a6d
DL
960** New language environments `Polish', `Latin-8' and `Latin-9'.
961Latin-8 and Latin-9 correspond respectively to the ISO character sets
9628859-14 (Celtic) and 8859-15 (updated Latin-1, with the Euro sign).
963There is currently no specific input method support for them.
59c1bf85 964
e33b0397
DL
965** Fortran mode has a new command `fortran-strip-sqeuence-nos' to
966remove text past column 72. The syntax class of `\' in Fortran is now
967appropriate for C-style escape sequences in strings.
968
969** SGML mode's default `sgml-validate-command' is now `nsgmls'.
970
6f8ea2ae
DL
971** A new command `view-emacs-problems' (C-h P) displays the PROBLEMS file.
972
c0510d27
GM
973** The Dabbrev package has a new user-option `dabbrev-ignore-regexps'
974containing a list of regular expressions. Buffers matching a regular
975expression from that list, are not checked.
976
a933dad1
DL
977** New modes and packages
978
5cb6a58e
SM
979*** The comment operations are now provided by the newcomment.el
980package which allows different styles of comment-region and should
981be more robust while offering the same functionality.
982
578979ee
GM
983*** The Ebrowse package implements a C++ class browser and tags
984facilities tailored for use with C++. It is documented in a
985separate Texinfo file.
986
dc1178bf
SM
987*** The PCL-CVS package available by either running M-x cvs-examine
988or by visiting a CVS administrative directory (with a prefix argument)
989provides an alternative interface to VC-dired for CVS.
990It comes with log-view-mode to view RCS and SCCS logs and log-edit-mode
991used to enter checkin log messages.
992
6abca616
EZ
993*** The new package called `woman' allows to browse Unix man pages
994without invoking external programs.
995
996The command `M-x woman' formats manual pages entirely in Emacs Lisp
997and then displays them, like `M-x manual-entry' does. Unlike
998`manual-entry', `woman' does not invoke any external programs, so it
999is useful on systems such as MS-DOS/MS-Windows where the `man' and
490f2e7b 1000Groff or `troff' commands are not readily available.
6abca616
EZ
1001
1002The command `M-x woman-find-file' asks for the file name of a man
1003page, then formats and displays it like `M-x woman' does.
1004
5e5dff44
GM
1005*** The new command M-x re-builder offers a convenient interface for
1006authoring regular expressions with immediate visual feedback.
1007
1008The buffer from which the command was called becomes the target for
1009the regexp editor popping up in a separate window. Matching text in
1010the target buffer is immediately color marked during the editing.
1011Each sub-expression of the regexp will show up in a different face so
1012even complex regexps can be edited and verified on target data in a
1013single step.
1014
1015On displays not supporting faces the matches instead blink like
1016matching parens to make them stand out. On such a setup you will
1017probably also want to use the sub-expression mode when the regexp
1018contains such to get feedback about their respective limits.
1019
f7136ee8
GM
1020*** glasses-mode is a minor mode that makes
1021unreadableIdentifiersLikeThis readable. It works as glasses, without
1022actually modifying content of a buffer.
1023
bbd9b566
GM
1024*** The package ebnf2ps translates an EBNF to a syntactic chart in
1025PostScript.
1026
1027Currently accepts ad-hoc EBNF, ISO EBNF and Bison/Yacc.
1028
1029The ad-hoc default EBNF syntax has the following elements:
1030
1031 ; comment (until end of line)
1032 A non-terminal
1033 "C" terminal
1034 ?C? special
1035 $A default non-terminal
1036 $"C" default terminal
1037 $?C? default special
1038 A = B. production (A is the header and B the body)
1039 C D sequence (C occurs before D)
1040 C | D alternative (C or D occurs)
1041 A - B exception (A excluding B, B without any non-terminal)
1042 n * A repetition (A repeats n (integer) times)
1043 (C) group (expression C is grouped together)
1044 [C] optional (C may or not occurs)
1045 C+ one or more occurrences of C
1046 {C}+ one or more occurrences of C
1047 {C}* zero or more occurrences of C
1048 {C} zero or more occurrences of C
1049 C / D equivalent to: C {D C}*
1050 {C || D}+ equivalent to: C {D C}*
1051 {C || D}* equivalent to: [C {D C}*]
1052 {C || D} equivalent to: [C {D C}*]
1053
1054Please, see ebnf2ps documentation for EBNF syntax and how to use it.
1055
99453a38
GM
1056*** The package align.el will align columns within a region, using M-x
1057align. Its mode-specific rules, based on regular expressions,
1058determine where the columns should be split. In C and C++, for
1059example, it will align variable names in declaration lists, or the
1060equal signs of assignments.
1061
559cee90
DL
1062*** `paragraph-indent-minor-mode' is a new minor mode supporting
1063paragraphs in the same style as `paragraph-indent-text-mode'.
1064
6448a6b3
GM
1065*** bs.el is a new package for buffer selection similar to
1066list-buffers or electric-buffer-list. Use M-x bs-show to display a
1067buffer menu with this package. You can use M-x bs-customize to
1068customize the package.
1069
249652b1
GM
1070*** calculator.el is a small calculator package that is intended to
1071replace desktop calculators such as xcalc and calc.exe. Actually, it
1072is not too small - it has more features than most desktop calculators,
1073and can be customized easily to get many more functions. It should
1074not be confused with "calc" which is a much bigger mathematical tool
1075which answers different needs.
1076
3476b54a
GM
1077*** The minor modes cwarn-mode and global-cwarn-mode highlights
1078suspicious C and C++ constructions. Currently, assignments inside
1079expressions, semicolon following `if', `for' and `while' (except, of
1080course, after a `do .. while' statement), and C++ functions with
1081reference parameters are recognized. The modes require font-lock mode
1082to be enabled.
1083
8964fec7
SM
1084*** smerge-mode.el provides `smerge-mode', a simple minor-mode for files
1085containing diff3-style conflict markers, such as generated by RCS.
1086
a933dad1
DL
1087*** 5x5.el is a simple puzzle game.
1088
1089*** hl-line.el provides a minor mode to highlight the current line.
1090
1091*** ansi-color.el translates ANSI terminal escapes into text-properties.
1092
1093*** delphi.el provides a major mode for editing the Delphi (Object
1094Pascal) language.
1095
1096*** quickurl.el provides a simple method of inserting a URL based on
1097the text at point.
1098
1099*** sql.el provides an interface to SQL data bases.
1100
8d54eb69
DL
1101*** fortune.el uses the fortune program to create mail/news signatures.
1102
a933dad1
DL
1103*** whitespace.el ???
1104
ebcfda83
GM
1105*** PostScript mode (ps-mode) is a new major mode for editing PostScript
1106files. It offers: interaction with a PostScript interpreter, including
1107(very basic) error handling; fontification, easily customizable for
1108interpreter messages; auto-indentation; insertion of EPSF templates and
1109often used code snippets; viewing of BoundingBox; commenting out /
1110uncommenting regions; conversion of 8bit characters to PostScript octal
1111codes. All functionality is accessible through a menu.
1112
1113*** delim-col helps to prettify columns in a text region or rectangle.
1114
1115Here is an example of columns:
1116
1117horse apple bus
1118dog pineapple car EXTRA
1119porcupine strawberry airplane
1120
1121Doing the following settings:
1122
1123 (setq delimit-columns-str-before "[ ")
1124 (setq delimit-columns-str-after " ]")
1125 (setq delimit-columns-str-separator ", ")
1126 (setq delimit-columns-separator "\t")
1127
1128
1129Selecting the lines above and typing:
1130
1131 M-x delimit-columns-region
1132
1133It results:
1134
1135[ horse , apple , bus , ]
1136[ dog , pineapple , car , EXTRA ]
1137[ porcupine, strawberry, airplane, ]
1138
1139delim-col has the following options:
1140
1141 delimit-columns-str-before Specify a string to be inserted
1142 before all columns.
1143
1144 delimit-columns-str-separator Specify a string to be inserted
1145 between each column.
1146
1147 delimit-columns-str-after Specify a string to be inserted
1148 after all columns.
1149
1150 delimit-columns-separator Specify a regexp which separates
1151 each column.
1152
1153delim-col has the following commands:
1154
1155 delimit-columns-region Prettify all columns in a text region.
1156 delimit-columns-rectangle Prettify all columns in a text rectangle.
1157
f507826c
GM
1158*** The package recentf.el maintains a menu for visiting files that
1159were operated on recently. When enabled, a new "Open Recent" submenu
1160is displayed in the "Files" menu.
1161
1162The recent files list is automatically saved across Emacs sessions.
1163
1164To enable/disable recentf use M-x recentf-mode.
1165
1166To enable recentf at Emacs startup use
1167M-x customize-variable RET recentf-mode RET.
1168
1169To change the number of recent files displayed and others options use
1170M-x customize-group RET recentf RET.
1171
8062f458
DL
1172*** elide-head.el provides a mechanism for eliding boilerplate header
1173text.
1174
36e24b82 1175*** footnote.el provides `footnote-mode', a minor mode supporting use
91735437
DL
1176of footnotes. It is intended for use with Message mode, but isn't
1177specific to Message mode.
1178
36e24b82
DL
1179*** diff-mode.el provides `diff-mode', a major mode for
1180viewing/editing context diffs (patches). It is selected for files
1181with extension `.diff', `.diffs', `.patch' and `.rej'.
1182
aaa659ef
DL
1183*** EUDC, the Emacs Unified Directory Client, provides a common user
1184interface to access directory servers using different directory
1185protocols. It has a separate manual.
1186
eee54b0e
DL
1187*** autoconf.el provides a major mode for editing configure.in files
1188for Autoconf, selected automatically.
1189
612839b6
GM
1190*** windmove.el provides moving between windows.
1191
1192*** crm.el provides a facility to read multiple strings from the
1193minibuffer with completion.
aaa659ef 1194
399da7e3
DL
1195*** todo-mode.el provides management of TODO lists and integration
1196with the diary features.
1197
6e417ca5
DL
1198*** autoarg.el provides a feature reported from Twenex Emacs whereby
1199numeric keys supply prefix args rather than self inserting.
1200
a933dad1
DL
1201** Withdrawn packages
1202
1203*** mldrag.el has been removed. mouse.el provides the same
1204functionality with aliases for the mldrag functions.
25a81338 1205
3261c1d8
DL
1206*** eval-reg.el has been obsoleted by changes to edebug.el and removed.
1207
1208*** ph.el has been obsoleted by EUDC and removed.
ce75fd23
GM
1209
1210\f
1211* Lisp changes made after edition 2.6 of the Emacs Lisp Manual,
1212(Display-related features are described in a page of their own below.)
1213
80c05bd3 1214** The function `subr-arity' provides information on the argument list
de370c4c
DL
1215of a primitive.
1216
80c05bd3
DL
1217** The text property `keymap' specifies a key map which overrides the
1218buffer's local map and the map specified by the `local-map' property.
1219This is probably what most current uses of `local-map' want, rather
1220than replacing the local map.
1221
4bc7a543
DL
1222** The obsolete variables before-change-function and
1223after-change-function are no longer acted upon and have been removed.
45f485a6
GM
1224
1225** The function `apropos-mode' runs the hook `apropos-mode-hook'.
1226
a933dad1
DL
1227\f
1228* Lisp changes in Emacs 21.1 (see following page for display-related features)
1229
1230Note that +++ before an item means the Lisp manual has been updated.
1231--- means that I have decided it does not need to be in the Lisp manual.
1232When you add a new item, please add it without either +++ or ---
1233so I will know I still need to look at it -- rms.
1234
0b8a3a6d
DL
1235*** The functions `find-charset-region' and `find-charset-string' include
1236`eight-bit-control' and/or `eight-bit-graphic' in the returned list
1237when it finds 8-bit characters. Previously, it included `ascii' in a
1238multibyte buffer and `unknown' in a unibyte buffer.
1239
1240*** The functions `set-buffer-modified', `string-as-multibyte' and
1241`string-as-unibyte' change the byte sequence of a buffer if it
1242contains a character from the `eight-bit-control' character set.
1243
1244*** The handling of multibyte sequences in a multibyte buffer is
1245changed. Previously, a byte sequence matching the pattern
1246[\200-\237][\240-\377]+ was interpreted as a single character
1247regardless of the length of the trailing bytes [\240-\377]+. Thus, if
1248the sequence was longer than what the leading byte indicated, the
1249extra trailing bytes were ignored by Lisp functions. Now such extra
1250bytes are independent 8-bit characters belonging to the charset
1251eight-bit-graphic.
1252
1253** Fontsets are now implemented using char-tables.
1254
1255A fontset can now be specified for for each independent character, for
1256a group of characters or for a character set rather than just for a
1257character set as previously.
1258
1259*** The arguments of the function `set-fontset-font' are changed.
1260They are NAME, CHARACTER, FONTNAME, and optional FRAME. The function
1261modifies fontset NAME to use FONTNAME for CHARACTER.
1262
1263CHARACTER may be a cons (FROM . TO), where FROM and TO are non-generic
1264characters. In that case FONTNAME is used for all characters in the
1265range FROM and TO (inclusive). CHARACTER may be a charset. In that
1266case FONTNAME is used for all character in the charset.
1267
1268FONTNAME may be a cons (FAMILY . REGISTRY), where FAMILY is the family
1269name of a font and REGSITRY is a registry name of a font.
1270
1271*** Variable x-charset-registry has been deleted. The default charset
1272registries of character sets are set in the default fontset
1273"fontset-default".
1274
1275*** The function `create-fontset-from-fontset-spec' ignores the second
1276argument STYLE-VARIANT. It never creates style-variant fontsets.
1277
1278** The method of composing characters is changed. Now character
1279composition is done by a special text property `composition' in
1280buffers and strings.
1281
1282*** Charset composition is deleted. Emacs never creates a `composite
1283character' which is an independent character with a unique character
1284code. Thus the following functions handling `composite characters'
1285have been deleted: composite-char-component,
1286composite-char-component-count, composite-char-composition-rule,
1287composite-char-composition-rule and decompose-composite-char delete.
1288The variables leading-code-composition and min-composite-char have
1289also been deleted.
1290
1291*** Three more glyph reference points are added. They can be used to
1292specify a composition rule. See the documentation of the variable
1293`reference-point-alist' for more detail.
1294
1295*** The function `compose-region' takes new arguments COMPONENTS and
1296MODIFICATION-FUNC. With COMPONENTS, you can specify not only a
1297composition rule but also characters to be composed. Such characters
1298may differ between buffer and string text.
1299
1300*** The function `compose-string' takes new arguments START, END,
1301COMPONENTS, and MODIFICATION-FUNC.
1302
1303*** The function `compose-string' puts text property `composition'
1304directly on the argument STRING instead of returning a new string.
1305Likewise, the function `decompose-string' just removes text property
1306`composition' from STRING.
1307
1308*** The new function `find-composition' returns information about
1309a composition at a specified position in a buffer or a string.
1310
1311*** The function `decompose-composite-char' is now labeled as
1312obsolete.
1313
1314** The new character set `mule-unicode-0100-24ff' is introduced for
1315Unicode characters of the range U+0100..U+24FF. Currently, this
1316character set is not used.
1317
1318** The new character sets `japanese-jisx0213-1' and
1319`japanese-jisx0213-2' are introduced for the new Japanese standard JIS
1320X 0213 Plane 1 and Plane 2.
1321
1322+++
1323** The new character sets `eight-bit-control' and `eight-bit-graphic'
1324are introduced for 8-bit characters in the ranges 0x80..0x9F and
13250xA0..0xFF repectively.
1326
399da7e3 1327+++
f0124b4a
DL
1328** If the APPEND argument of `write-region' is an integer, it seeks to
1329that offset in the file before writing.
1330
3bbc50af
DL
1331** `concat' no longer accepts individual integer arguments, as
1332promised long ago.
1333
7464346d
GM
1334** The function `add-minor-mode' simplifies the definition of minor
1335modes.
1336
c94f4677 1337- Function: add-minor-mode TOGGLE NAME &optional KEYMAP AFTER TOGGLE-FUN
7464346d 1338
c94f4677
GM
1339Register a new minor mode.
1340
1341TOGGLE is a symbol which is the name of a buffer-local variable that
1342is toggled on or off to say whether the minor mode is active or not.
1343
1344NAME specifies what will appear in the mode line when the minor mode
1345is active. NAME should be either a string starting with a space, or a
1346symbol whose value is such a string.
1347
1348Optional KEYMAP is the keymap for the minor mode that will be added
1349to `minor-mode-map-alist'.
1350
1351Optional AFTER specifies that TOGGLE should be added after AFTER
1352in `minor-mode-alist'.
1353
1354Optional TOGGLE-FUN is there for compatiblity with other Emacssen.
1355It is currently not used.
7464346d 1356
612839b6
GM
1357** The function `shell-command' now sets the default directory of the
1358`*Shell Command Output*' buffer to the default directory of the buffer
1359from which the command was issued.
1360
1361** The functions `query-replace', `query-replace-regexp',
1362`query-replace-regexp-eval' `map-query-replace-regexp',
1363`replace-string', `replace-regexp', and `perform-replace' take two
1364additional optional arguments START and END that specify the region to
1365operate on.
1366
271b4185
GM
1367** The new function `count-screen-lines' is a more flexible alternative
1368to `window-buffer-height'.
1369
1370- Function: count-screen-lines &optional BEG END COUNT-FINAL-NEWLINE WINDOW
1371
1372Return the number of screen lines in the region between BEG and END.
1373The number of screen lines may be different from the number of actual
1374lines, due to line breaking, display table, etc.
1375
1376Optional arguments BEG and END default to `point-min' and `point-max'
1377respectively.
1378
1379If region ends with a newline, ignore it unless optinal third argument
1380COUNT-FINAL-NEWLINE is non-nil.
1381
1382The optional fourth argument WINDOW specifies the window used for
1383obtaining parameters such as width, horizontal scrolling, and so
1384on. The default is to use the selected window's parameters.
1385
1386Like `vertical-motion', `count-screen-lines' always uses the current
1387buffer, regardless of which buffer is displayed in WINDOW. This makes
1388possible to use `count-screen-lines' in any buffer, whether or not it
1389is currently displayed in some window.
1390
3c30cb6e
DL
1391** The new function `mapc' is like `mapcar' but doesn't collect the
1392argument function's results.
1393
62f20204
GM
1394** The functions base64-decode-region and base64-decode-string now
1395signal an error instead of returning nil if decoding fails.
1396
c0510d27
GM
1397** The function sendmail-user-agent-compose now recognizes a `body'
1398header is the list of headers passed to it.
1399
1400** The new function member-ignore-case works like `member', but
1401ignores differences in case and text representation.
1402
1403** The buffer-local variable cursor-type can be used to specify the
19d1bc27
GM
1404cursor to use in windows displaying a buffer. Values are interpreted
1405as follows:
1406
1407 t use the cursor specified for the frame (default)
1408 nil don't display a cursor
1409 `bar' display a bar cursor with default width
1410 (bar . WIDTH) display a bar cursor with width WIDTH
1411 others display a box cursor.
1412
9a0dd3dc
GM
1413** The variable open-paren-in-column-0-is-defun-start controls whether
1414an open parenthesis in column 0 is considered to be the start of a
1415defun. If set, the default, it is considered a defun start. If not
1416set, an open parenthesis in column 0 has no special meaning.
1417
d7b511c4 1418** The new function `string-to-syntax' can be used to translate syntax
dc1178bf 1419specifications in string form as accepted by `modify-syntax-entry' to
d7b511c4
GM
1420the cons-cell form that is used for the values of the `syntax-table'
1421text property, and in `font-lock-syntactic-keywords'.
1422
1423Example:
1424
1425 (string-to-syntax "()")
1426 => (4 . 41)
1427
1fa28578
GM
1428** Emacs' reader supports CL read syntax for integers in bases
1429other than 10.
1430
1431*** `#BINTEGER' or `#bINTEGER' reads INTEGER in binary (radix 2).
1432INTEGER optionally contains a sign.
1433
1434 #b1111
1435 => 15
1436 #b-1111
1437 => -15
1438
1439*** `#OINTEGER' or `#oINTEGER' reads INTEGER in octal (radix 8).
1440
1441 #o666
1442 => 438
1443
1444*** `#XINTEGER' or `#xINTEGER' reads INTEGER in hexadecimal (radix 16).
1445
1446 #xbeef
1447 => 48815
1448
1449*** `#RADIXrINTEGER' reads INTEGER in radix RADIX, 2 <= RADIX <= 36.
1450
1451 #2R-111
1452 => -7
1453 #25rah
1454 => 267
1455
3d4ff2dd 1456** The function `documentation-property' now evaluates the value of
e9b4e5ff
GM
1457the given property to obtain a a string if it doesn't refer to etc/DOC
1458and isn't a string.
1459
3d4ff2dd
GM
1460** If called for a symbol, the function `documentation' now looks for
1461a `function-documentation' property of that symbol. If it has a non-nil
1462value, the documentation is taken from that value. If the value is
1463not a string, it is evaluated to obtain a string.
1464
16ce590d
DL
1465+++
1466** The last argument of `define-key-after' defaults to t for convenience.
1467
73825616 1468** The new function `replace-regexp-in-string' replaces all matches
16ce590d
DL
1469for a regexp in a string.
1470
1471** `mouse-position' now runs the abnormal hook
1472`mouse-position-function'.
1473
723e779c
GM
1474** The function string-to-number now returns a float for numbers
1475that don't fit into a Lisp integer.
1476
d1e103b2
GM
1477** The variable keyword-symbols-constants-flag has been removed.
1478Keywords are now always considered constants.
1479
31047e0d
DL
1480+++
1481** The new function `delete-and-extract-region' deletes text and
1482returns it.
1483
7a85e4df
GM
1484** The function `clear-this-command-keys' now also clears the vector
1485returned by function `recent-keys'.
1486
02b14400
RS
1487+++
1488** Variables `beginning-of-defun-function' and `end-of-defun-function'
1489can be used to define handlers for the functions that find defuns.
1490Major modes can define these locally instead of rebinding M-C-a
1491etc. if the normal conventions for defuns are not appropriate for the
1492mode.
404fa7d6 1493
02b14400 1494+++
8964fec7
SM
1495** easy-mmode-define-minor-mode now takes an additional BODY argument
1496and is renamed `define-minor-mode'.
1497
02b14400
RS
1498+++
1499** If an abbrev has a hook function which is a symbol, and that symbol
1500has a non-nil `no-self-insert' property, the return value of the hook
1501function specifies whether an expansion has been done or not. If it
1502returns nil, abbrev-expand also returns nil, meaning "no expansion has
1503been performed."
1504
1505When abbrev expansion is done by typing a self-inserting character,
1506and the abbrev has a hook with the `no-self-insert' property, and the
1507hook function returns non-nil meaning expansion has been done,
1508then the self-inserting character is not inserted.
ef961722 1509
02b14400 1510+++
81da8b32
GM
1511** The function `intern-soft' now accepts a symbol as first argument.
1512In this case, that exact symbol is looked up in the specified obarray,
1513and the function's value is nil if it is not found.
1514
02b14400 1515+++
9e207b90
GM
1516** The new macro `with-syntax-table' can be used to evaluate forms
1517with the syntax table of the current buffer temporarily set to a
1518specified table.
1519
1520 (with-syntax-table TABLE &rest BODY)
1521
1522Evaluate BODY with syntax table of current buffer set to a copy of
03d9c64c
GM
1523TABLE. The current syntax table is saved, BODY is evaluated, and the
1524saved table is restored, even in case of an abnormal exit. Value is
1525what BODY returns.
9e207b90 1526
02b14400 1527+++
d7f89643 1528** Regular expressions now support intervals \{n,m\} as well as
95cd4c40 1529Perl's shy-groups \(?:...\) and non-greedy *? +? and ?? operators.
8964fec7 1530
02b14400 1531+++
dde9e75a
GM
1532** The optional argument BUFFER of function file-local-copy has been
1533removed since it wasn't used by anything.
1534
02b14400 1535+++
9da30515
GM
1536** The file name argument of function `file-locked-p' is now required
1537instead of being optional.
1538
02b14400 1539+++
d20679eb
GM
1540** The new built-in error `text-read-only' is signaled when trying to
1541modify read-only text.
1542
02b14400 1543+++
fbc164de
PE
1544** New functions and variables for locales.
1545
1546The new variable `locale-coding-system' specifies how to encode and
1547decode strings passed to low-level message functions like strerror and
b718982a
PE
1548time functions like strftime. The new variables
1549`system-messages-locale' and `system-time-locale' give the system
1550locales to be used when invoking these two types of functions.
fbc164de
PE
1551
1552The new function `set-locale-environment' sets the language
1553environment, preferred coding system, and locale coding system from
1554the system locale as specified by the LC_ALL, LC_CTYPE, and LANG
b718982a
PE
1555environment variables. Normally, it is invoked during startup and need
1556not be invoked thereafter. It uses the new variables
1557`locale-language-names', `locale-charset-language-names', and
1558`locale-preferred-coding-systems' to make its decisions.
fbc164de 1559
02b14400 1560+++
863476d1
SM
1561** syntax tables now understand nested comments.
1562To declare a comment syntax as allowing nesting, just add an `n'
1563modifier to either of the characters of the comment end and the comment
1564start sequences.
1565
02b14400 1566+++
ef6d912c
GM
1567** The function `pixmap-spec-p' has been renamed `bitmap-spec-p'
1568because `bitmap' is more in line with the usual X terminology.
1569
02b14400 1570+++
a933dad1
DL
1571** New function `propertize'
1572
1573The new function `propertize' can be used to conveniently construct
1574strings with text properties.
1575
1576- Function: propertize STRING &rest PROPERTIES
1577
1578Value is a copy of STRING with text properties assigned as specified
1579by PROPERTIES. PROPERTIES is a sequence of pairs PROPERTY VALUE, with
1580PROPERTY being the name of a text property and VALUE being the
1581specified value of that property. Example:
1582
1583 (propertize "foo" 'face 'bold 'read-only t)
1584
1585+++
1586** push and pop macros.
1587
02b14400
RS
1588Simple versions of the push and pop macros of Common Lisp
1589are now defined in Emacs Lisp. These macros allow only symbols
a933dad1
DL
1590as the place that holds the list to be changed.
1591
1592(push NEWELT LISTNAME) add NEWELT to the front of LISTNAME's value.
1593(pop LISTNAME) return first elt of LISTNAME, and remove it
1594 (thus altering the value of LISTNAME).
1595
02b14400
RS
1596** New dolist and dotimes macros.
1597
6c7fd5aa
RS
1598Simple versions of the dolist and dotimes macros of Common Lisp
1599are now defined in Emacs Lisp.
02b14400
RS
1600
1601(dolist (VAR LIST [RESULT]) BODY...)
1602 Execute body once for each element of LIST,
1603 using the variable VAR to hold the current element.
1604 Then return the value of RESULT, or nil if RESULT is omitted.
1605
1606(dotimes (VAR COUNT [RESULT]) BODY...)
1607 Execute BODY with VAR bound to successive integers running from 0,
1608 inclusive, to COUNT, exclusive.
1609 Then return the value of RESULT, or nil if RESULT is omitted.
1610
a933dad1
DL
1611+++
1612** Regular expressions now support Posix character classes such
1613as [:alpha:], [:space:] and so on.
1614
1615[:digit:] matches 0 through 9
1616[:cntrl:] matches ASCII control characters
1617[:xdigit:] matches 0 through 9, a through f and A through F.
1618[:blank:] matches space and tab only
1619[:graph:] matches graphic characters--everything except ASCII control chars,
1620 space, and DEL.
1621[:print:] matches printing characters--everything except ASCII control chars
1622 and DEL.
1623[:alnum:] matches letters and digits.
1624 (But at present, for multibyte characters,
1625 it matches anything that has word syntax.)
1626[:alpha:] matches letters.
1627 (But at present, for multibyte characters,
1628 it matches anything that has word syntax.)
1629[:ascii:] matches ASCII (unibyte) characters.
1630[:nonascii:] matches non-ASCII (multibyte) characters.
1631[:lower:] matches anything lower-case.
1632[:punct:] matches punctuation.
1633 (But at present, for multibyte characters,
1634 it matches anything that has non-word syntax.)
1635[:space:] matches anything that has whitespace syntax.
1636[:upper:] matches anything upper-case.
1637[:word:] matches anything that has word syntax.
1638
1639+++
1640** Emacs now has built-in hash tables.
1641
1642The following functions are defined for hash tables:
1643
1644- Function: make-hash-table ARGS
1645
1646The argument list ARGS consists of keyword/argument pairs. All arguments
1647are optional. The following arguments are defined:
1648
1649:test TEST
1650
1651TEST must be a symbol specifying how to compare keys. Default is `eql'.
1652Predefined are `eq', `eql' and `equal'. If TEST is not predefined,
1653it must have been defined with `define-hash-table-test'.
1654
1655:size SIZE
1656
1657SIZE must be an integer > 0 giving a hint to the implementation how
1658many elements will be put in the hash table. Default size is 65.
1659
1660:rehash-size REHASH-SIZE
1661
1662REHASH-SIZE specifies by how much to grow a hash table once it becomes
1663full. If REHASH-SIZE is an integer, add that to the hash table's old
1664size to get the new size. Otherwise, REHASH-SIZE must be a float >
16651.0, and the new size is computed by multiplying REHASH-SIZE with the
1666old size. Default rehash size is 1.5.
1667
1668:rehash-threshold THRESHOLD
1669
1670THRESHOLD must be a float > 0 and <= 1.0 specifying when to resize the
1671hash table. It is resized when the ratio of (number of entries) /
1672(size of hash table) is >= THRESHOLD. Default threshold is 0.8.
1673
1674:weakness WEAK
1675
1676WEAK must be either nil, one of the symbols `key, `value', or t.
1677Entries are removed from weak tables during garbage collection if
1678their key and/or value are not referenced elsewhere outside of the
1679hash table. Default are non-weak hash tables.
1680
1681- Function: makehash &optional TEST
1682
1683Similar to make-hash-table, but only TEST can be specified.
1684
1685- Function: hash-table-p TABLE
1686
1687Returns non-nil if TABLE is a hash table object.
1688
1689- Function: copy-hash-table TABLE
1690
1691Returns a copy of TABLE. Only the table itself is copied, keys and
1692values are shared.
1693
1694- Function: hash-table-count TABLE
1695
1696Returns the number of entries in TABLE.
1697
1698- Function: hash-table-rehash-size TABLE
1699
1700Returns the rehash size of TABLE.
1701
1702- Function: hash-table-rehash-threshold TABLE
1703
1704Returns the rehash threshold of TABLE.
1705
1706- Function: hash-table-rehash-size TABLE
1707
1708Returns the size of TABLE.
1709
1710- Function: hash-table-rehash-test TABLE
1711
1712Returns the test TABLE uses to compare keys.
1713
1714- Function: hash-table-weakness TABLE
1715
1716Returns the weakness specified for TABLE.
1717
1718- Function: clrhash TABLE
1719
1720Clear TABLE.
1721
1722- Function: gethash KEY TABLE &optional DEFAULT
1723
1724Look up KEY in TABLE and return its associated VALUE or DEFAULT if
1725not found.
1726
79214ddf 1727- Function: puthash KEY VALUE TABLE
a933dad1
DL
1728
1729Associate KEY with VALUE in TABLE. If KEY is already associated with
1730another value, replace the old value with VALUE.
1731
1732- Function: remhash KEY TABLE
1733
1734Remove KEY from TABLE if it is there.
1735
1736- Function: maphash FUNCTION TABLE
1737
1738Call FUNCTION for all elements in TABLE. FUNCTION must take two
1739arguments KEY and VALUE.
1740
1741- Function: sxhash OBJ
1742
1743Return a hash code for Lisp object OBJ.
1744
1745- Function: define-hash-table-test NAME TEST-FN HASH-FN
1746
1747Define a new hash table test named NAME. If NAME is specified as
1748a test in `make-hash-table', the table created will use TEST-FN for
79214ddf 1749comparing keys, and HASH-FN to compute hash codes for keys. Test
a933dad1
DL
1750and hash function are stored as symbol property `hash-table-test'
1751of NAME with a value of (TEST-FN HASH-FN).
1752
1753TEST-FN must take two arguments and return non-nil if they are the same.
1754
1755HASH-FN must take one argument and return an integer that is the hash
1756code of the argument. The function should use the whole range of
1757integer values for hash code computation, including negative integers.
1758
1759Example: The following creates a hash table whose keys are supposed to
1760be strings that are compared case-insensitively.
1761
1762 (defun case-fold-string= (a b)
1763 (compare-strings a nil nil b nil nil t))
1764
1765 (defun case-fold-string-hash (a)
1766 (sxhash (upcase a)))
1767
79214ddf 1768 (define-hash-table-test 'case-fold 'case-fold-string=
a933dad1
DL
1769 'case-fold-string-hash))
1770
1771 (make-hash-table :test 'case-fold)
1772
1773+++
1774** The Lisp reader handles circular structure.
1775
1776It now works to use the #N= and #N# constructs to represent
1777circular structures. For example, #1=(a . #1#) represents
1778a cons cell which is its own cdr.
1779
1780+++
1781** The Lisp printer handles circular structure.
1782
1783If you bind print-circle to a non-nil value, the Lisp printer outputs
1784#N= and #N# constructs to represent circular and shared structure.
1785
a933dad1
DL
1786+++
1787** If the second argument to `move-to-column' is anything but nil or
1788t, that means replace a tab with spaces if necessary to reach the
1789specified column, but do not add spaces at the end of the line if it
1790is too short to reach that column.
1791
1792+++
1793** perform-replace has a new feature: the REPLACEMENTS argument may
1794now be a cons cell (FUNCTION . DATA). This means to call FUNCTION
1795after each match to get the replacement text. FUNCTION is called with
1796two arguments: DATA, and the number of replacements already made.
1797
1798If the FROM-STRING contains any upper-case letters,
1799perform-replace also turns off `case-fold-search' temporarily
1800and inserts the replacement text without altering case in it.
1801
1802+++
1803** The function buffer-size now accepts an optional argument
1804to specify which buffer to return the size of.
1805
1806+++
1807** The calendar motion commands now run the normal hook
1808calendar-move-hook after moving point.
1809
1810+++
1811** The new variable small-temporary-file-directory specifies a
1812directory to use for creating temporary files that are likely to be
1813small. (Certain Emacs features use this directory.) If
1814small-temporary-file-directory is nil, they use
1815temporary-file-directory instead.
1816
1817+++
1818** The variable `inhibit-modification-hooks', if non-nil, inhibits all
1819the hooks that track changes in the buffer. This affects
1820`before-change-functions' and `after-change-functions', as well as
1821hooks attached to text properties and overlay properties.
1822
1823+++
1824** assoc-delete-all is a new function that deletes all the
1825elements of an alist which have a particular value as the car.
1826
1827+++
1828** make-temp-file provides a more reliable way to create a temporary file.
1829
1830make-temp-file is used like make-temp-name, except that it actually
1831creates the file before it returns. This prevents a timing error,
1832ensuring that no other job can use the same name for a temporary file.
1833
1834+++
1835** New exclusive-open feature in `write-region'
1836
1837The optional seventh arg is now called MUSTBENEW. If non-nil, it insists
1838on a check for an existing file with the same name. If MUSTBENEW
1839is `excl', that means to get an error if the file already exists;
1840never overwrite. If MUSTBENEW is neither nil nor `excl', that means
1841ask for confirmation before overwriting, but do go ahead and
1842overwrite the file if the user gives confirmation.
1843
1844If the MUSTBENEW argument in `write-region' is `excl',
1845that means to use a special feature in the `open' system call
1846to get an error if the file exists at that time.
1847The error reported is `file-already-exists'.
1848
1849+++
1850** Function `format' now handles text properties.
1851
1852Text properties of the format string are applied to the result string.
1853If the result string is longer than the format string, text properties
1854ending at the end of the format string are extended to the end of the
1855result string.
1856
1857Text properties from string arguments are applied to the result
1858string where arguments appear in the result string.
1859
1860Example:
1861
1862 (let ((s1 "hello, %s")
1863 (s2 "world"))
1864 (put-text-property 0 (length s1) 'face 'bold s1)
1865 (put-text-property 0 (length s2) 'face 'italic s2)
b246b1f6 1866 (format s1 s2))
a933dad1
DL
1867
1868results in a bold-face string with an italic `world' at the end.
1869
1870+++
1871** Messages can now be displayed with text properties.
1872
1873Text properties are handled as described above for function `format'.
1874The following example displays a bold-face message with an italic
1875argument in it.
1876
1877 (let ((msg "hello, %s!")
1878 (arg "world"))
1879 (put-text-property 0 (length msg) 'face 'bold msg)
1880 (put-text-property 0 (length arg) 'face 'italic arg)
1881 (message msg arg))
1882
1883+++
1884** Sound support
1885
1886Emacs supports playing sound files on GNU/Linux and the free BSDs
1887(Voxware driver and native BSD driver, aka as Luigi's driver).
1888
1889Currently supported file formats are RIFF-WAVE (*.wav) and Sun Audio
1890(*.au). You must configure Emacs with the option `--with-sound=yes'
1891to enable sound support.
1892
1893Sound files can be played by calling (play-sound SOUND). SOUND is a
1894list of the form `(sound PROPERTY...)'. The function is only defined
1895when sound support is present for the system on which Emacs runs. The
1896functions runs `play-sound-functions' with one argument which is the
1897sound to play, before playing the sound.
1898
1899The following sound properties are supported:
1900
1901- `:file FILE'
1902
1903FILE is a file name. If FILE isn't an absolute name, it will be
1904searched relative to `data-directory'.
1905
6fb40beb
GM
1906- `:data DATA'
1907
1908DATA is a string containing sound data. Either :file or :data
1909may be present, but not both.
1910
a933dad1
DL
1911- `:volume VOLUME'
1912
1913VOLUME must be an integer in the range 0..100 or a float in the range
19140..1. This property is optional.
1915
1916Other properties are ignored.
1917
1918** `multimedia' is a new Finder keyword and Custom group.
356673d4
DL
1919
1920** keywordp is a new predicate to test efficiently for an object being
1921a keyword symbol.
fc91dc2d
GM
1922
1923** Changes to garbage collection
1924
1925*** The function garbage-collect now additionally returns the number
1926of live and free strings.
1927
1928*** There is a new variable `strings-consed' holding the number of
1929strings that have been consed so far.
1930
a933dad1 1931\f
04545643
GM
1932* Lisp-level Display features added after release 2.6 of the Emacs
1933Lisp Manual
1934
0b8a3a6d
DL
1935** The function `find-image' can be used to find a usable image
1936satisfying one of a list of specifications.
1937
1938+++
1939** The STRING argument of `put-image' and `insert-image' is now
1940optional.
1941
04545643
GM
1942** Image specifications may contain the property `:ascent center'.
1943
1944When this property is specified, the image is vertically centered
1945around a centerline which would be the vertical center of text drawn
1946at the position of the image, in the manner specified by the text
1947properties and overlays that apply to the image.
1948
1949\f
a933dad1
DL
1950* New Lisp-level Display features in Emacs 21.1
1951
1952Note that +++ before an item means the Lisp manual has been updated.
1953--- means that I have decided it does not need to be in the Lisp manual.
1954When you add a new item, please add it without either +++ or ---
1955so I will know I still need to look at it -- rms.
1956
f6d3257b
GM
1957** The function tty-suppress-bold-inverse-default-colors can be used
1958to make Emacs avoid displaying text with bold black foreground on TTYs.
1959
1960Some terminals, notably PC consoles, emulate bold text by displaying
1961text in brighter colors. On such a console, a bold black foreground
1962is displayed in a gray color. If this turns out to be hard to read on
1963your monitor---the problem occurred with the mode line on
1964laptops---you can instruct Emacs to ignore the text's boldness, and to
1965just display it black instead.
1966
1967This situation can't be detected automatically. You will have to put
1968a line like
1969
1970 (tty-suppress-bold-inverse-default-colors t)
1971
1972in your `.emacs'.
1973
a933dad1
DL
1974** New face implementation.
1975
1976Emacs faces have been reimplemented from scratch. They don't use XLFD
1977font names anymore and face merging now works as expected.
1978
1979+++
1980*** New faces.
1981
1982Each face can specify the following display attributes:
1983
1984 1. Font family or fontset alias name.
79214ddf 1985
a933dad1
DL
1986 2. Relative proportionate width, aka character set width or set
1987 width (swidth), e.g. `semi-compressed'.
79214ddf 1988
a933dad1 1989 3. Font height in 1/10pt
79214ddf 1990
a933dad1 1991 4. Font weight, e.g. `bold'.
79214ddf 1992
a933dad1 1993 5. Font slant, e.g. `italic'.
79214ddf 1994
a933dad1 1995 6. Foreground color.
79214ddf 1996
a933dad1
DL
1997 7. Background color.
1998
1999 8. Whether or not characters should be underlined, and in what color.
2000
2001 9. Whether or not characters should be displayed in inverse video.
2002
2003 10. A background stipple, a bitmap.
2004
2005 11. Whether or not characters should be overlined, and in what color.
2006
2007 12. Whether or not characters should be strike-through, and in what
2008 color.
2009
2010 13. Whether or not a box should be drawn around characters, its
2011 color, the width of the box lines, and 3D appearance.
2012
2013Faces are frame-local by nature because Emacs allows to define the
2014same named face (face names are symbols) differently for different
2015frames. Each frame has an alist of face definitions for all named
2016faces. The value of a named face in such an alist is a Lisp vector
2017with the symbol `face' in slot 0, and a slot for each each of the face
2018attributes mentioned above.
2019
2020There is also a global face alist `face-new-frame-defaults'. Face
2021definitions from this list are used to initialize faces of newly
2022created frames.
79214ddf 2023
a933dad1
DL
2024A face doesn't have to specify all attributes. Those not specified
2025have a nil value. Faces specifying all attributes are called
2026`fully-specified'.
2027
2028+++
2029*** Face merging.
2030
2031The display style of a given character in the text is determined by
2032combining several faces. This process is called `face merging'. Any
2033aspect of the display style that isn't specified by overlays or text
2034properties is taken from the `default' face. Since it is made sure
2035that the default face is always fully-specified, face merging always
2036results in a fully-specified face.
2037
2038+++
2039*** Face realization.
2040
2041After all face attributes for a character have been determined by
2042merging faces of that character, that face is `realized'. The
2043realization process maps face attributes to what is physically
2044available on the system where Emacs runs. The result is a `realized
2045face' in form of an internal structure which is stored in the face
2046cache of the frame on which it was realized.
2047
2048Face realization is done in the context of the charset of the
2049character to display because different fonts and encodings are used
2050for different charsets. In other words, for characters of different
2051charsets, different realized faces are needed to display them.
2052
2053Except for composite characters, faces are always realized for a
2054specific character set and contain a specific font, even if the face
2055being realized specifies a fontset. The reason is that the result of
2056the new font selection stage is better than what can be done with
2057statically defined font name patterns in fontsets.
2058
2059In unibyte text, Emacs' charsets aren't applicable; function
2060`char-charset' reports ASCII for all characters, including those >
20610x7f. The X registry and encoding of fonts to use is determined from
2062the variable `face-default-registry' in this case. The variable is
2063initialized at Emacs startup time from the font the user specified for
2064Emacs.
2065
2066Currently all unibyte text, i.e. all buffers with
2067`enable-multibyte-characters' nil are displayed with fonts of the same
2068registry and encoding `face-default-registry'. This is consistent
2069with the fact that languages can also be set globally, only.
2070
2071++++
2072**** Clearing face caches.
2073
2074The Lisp function `clear-face-cache' can be called to clear face caches
2075on all frames. If called with a non-nil argument, it will also unload
2076unused fonts.
2077
2078+++
2079*** Font selection.
79214ddf 2080
a933dad1
DL
2081Font selection tries to find the best available matching font for a
2082given (charset, face) combination. This is done slightly differently
2083for faces specifying a fontset, or a font family name.
2084
2085If the face specifies a fontset name, that fontset determines a
2086pattern for fonts of the given charset. If the face specifies a font
2087family, a font pattern is constructed. Charset symbols have a
2088property `x-charset-registry' for that purpose that maps a charset to
2089an XLFD registry and encoding in the font pattern constructed.
2090
2091Available fonts on the system on which Emacs runs are then matched
2092against the font pattern. The result of font selection is the best
2093match for the given face attributes in this font list.
2094
2095Font selection can be influenced by the user.
2096
2097The user can specify the relative importance he gives the face
2098attributes width, height, weight, and slant by setting
2099face-font-selection-order (faces.el) to a list of face attribute
2100names. The default is (:width :height :weight :slant), and means
2101that font selection first tries to find a good match for the font
2102width specified by a face, then---within fonts with that width---tries
2103to find a best match for the specified font height, etc.
2104
2105Setting `face-alternative-font-family-alist' allows the user to
2106specify alternative font families to try if a family specified by a
2107face doesn't exist.
2108
2109+++
2110**** Scalable fonts
2111
2112Emacs can make use of scalable fonts but doesn't do so by default,
2113since the use of too many or too big scalable fonts may crash XFree86
2114servers.
2115
2116To enable scalable font use, set the variable
b246b1f6 2117`scalable-fonts-allowed'. A value of nil, the default, means never use
a933dad1
DL
2118scalable fonts. A value of t means any scalable font may be used.
2119Otherwise, the value must be a list of regular expressions. A
2120scalable font may then be used if it matches a regular expression from
2121that list. Example:
2122
2123 (setq scalable-fonts-allowed '("muleindian-2$"))
2124
2125allows the use of scalable fonts with registry `muleindian-2'.
2126
2127+++
2128*** Functions and variables related to font selection.
2129
2130- Function: x-family-fonts &optional FAMILY FRAME
2131
2132Return a list of available fonts of family FAMILY on FRAME. If FAMILY
2133is omitted or nil, list all families. Otherwise, FAMILY must be a
2134string, possibly containing wildcards `?' and `*'.
2135
2136If FRAME is omitted or nil, use the selected frame. Each element of
2137the result is a vector [FAMILY WIDTH POINT-SIZE WEIGHT SLANT FIXED-P
2138FULL REGISTRY-AND-ENCODING]. FAMILY is the font family name.
2139POINT-SIZE is the size of the font in 1/10 pt. WIDTH, WEIGHT, and
2140SLANT are symbols describing the width, weight and slant of the font.
2141These symbols are the same as for face attributes. FIXED-P is non-nil
2142if the font is fixed-pitch. FULL is the full name of the font, and
2143REGISTRY-AND-ENCODING is a string giving the registry and encoding of
2144the font. The result list is sorted according to the current setting
2145of the face font sort order.
2146
79214ddf 2147- Function: x-font-family-list
a933dad1
DL
2148
2149Return a list of available font families on FRAME. If FRAME is
2150omitted or nil, use the selected frame. Value is a list of conses
2151(FAMILY . FIXED-P) where FAMILY is a font family, and FIXED-P is
2152non-nil if fonts of that family are fixed-pitch.
2153
2154- Variable: font-list-limit
2155
2156Limit for font matching. If an integer > 0, font matching functions
2157won't load more than that number of fonts when searching for a
2158matching font. The default is currently 100.
2159
2160+++
2161*** Setting face attributes.
2162
2163For the most part, the new face implementation is interface-compatible
2164with the old one. Old face attribute related functions are now
2165implemented in terms of the new functions `set-face-attribute' and
2166`face-attribute'.
2167
2168Face attributes are identified by their names which are keyword
2169symbols. All attributes can be set to `unspecified'.
2170
2171The following attributes are recognized:
2172
2173`:family'
2174
2175VALUE must be a string specifying the font family, e.g. ``courier'',
2176or a fontset alias name. If a font family is specified, wild-cards `*'
2177and `?' are allowed.
2178
2179`:width'
2180
2181VALUE specifies the relative proportionate width of the font to use.
2182It must be one of the symbols `ultra-condensed', `extra-condensed',
2183`condensed', `semi-condensed', `normal', `semi-expanded', `expanded',
2184`extra-expanded', or `ultra-expanded'.
2185
2186`:height'
2187
2188VALUE must be an integer specifying the height of the font to use in
21891/10 pt.
2190
2191`:weight'
2192
2193VALUE specifies the weight of the font to use. It must be one of the
2194symbols `ultra-bold', `extra-bold', `bold', `semi-bold', `normal',
2195`semi-light', `light', `extra-light', `ultra-light'.
2196
2197`:slant'
2198
2199VALUE specifies the slant of the font to use. It must be one of the
2200symbols `italic', `oblique', `normal', `reverse-italic', or
2201`reverse-oblique'.
2202
2203`:foreground', `:background'
2204
2205VALUE must be a color name, a string.
2206
2207`:underline'
2208
2209VALUE specifies whether characters in FACE should be underlined. If
2210VALUE is t, underline with foreground color of the face. If VALUE is
2211a string, underline with that color. If VALUE is nil, explicitly
2212don't underline.
2213
2214`:overline'
2215
2216VALUE specifies whether characters in FACE should be overlined. If
2217VALUE is t, overline with foreground color of the face. If VALUE is a
2218string, overline with that color. If VALUE is nil, explicitly don't
2219overline.
2220
2221`:strike-through'
2222
2223VALUE specifies whether characters in FACE should be drawn with a line
2224striking through them. If VALUE is t, use the foreground color of the
2225face. If VALUE is a string, strike-through with that color. If VALUE
2226is nil, explicitly don't strike through.
2227
2228`:box'
2229
2230VALUE specifies whether characters in FACE should have a box drawn
2231around them. If VALUE is nil, explicitly don't draw boxes. If
2232VALUE is t, draw a box with lines of width 1 in the foreground color
2233of the face. If VALUE is a string, the string must be a color name,
2234and the box is drawn in that color with a line width of 1. Otherwise,
2235VALUE must be a property list of the form `(:line-width WIDTH
2236:color COLOR :style STYLE)'. If a keyword/value pair is missing from
2237the property list, a default value will be used for the value, as
2238specified below. WIDTH specifies the width of the lines to draw; it
2239defaults to 1. COLOR is the name of the color to draw in, default is
2240the foreground color of the face for simple boxes, and the background
2241color of the face for 3D boxes. STYLE specifies whether a 3D box
2242should be draw. If STYLE is `released-button', draw a box looking
2243like a released 3D button. If STYLE is `pressed-button' draw a box
2244that appears like a pressed button. If STYLE is nil, the default if
2245the property list doesn't contain a style specification, draw a 2D
2246box.
2247
2248`:inverse-video'
2249
2250VALUE specifies whether characters in FACE should be displayed in
2251inverse video. VALUE must be one of t or nil.
2252
2253`:stipple'
2254
2255If VALUE is a string, it must be the name of a file of pixmap data.
2256The directories listed in the `x-bitmap-file-path' variable are
2257searched. Alternatively, VALUE may be a list of the form (WIDTH
2258HEIGHT DATA) where WIDTH and HEIGHT are the size in pixels, and DATA
2259is a string containing the raw bits of the bitmap. VALUE nil means
2260explicitly don't use a stipple pattern.
2261
2262For convenience, attributes `:family', `:width', `:height', `:weight',
2263and `:slant' may also be set in one step from an X font name:
2264
2265`:font'
2266
2267Set font-related face attributes from VALUE. VALUE must be a valid
2268XLFD font name. If it is a font name pattern, the first matching font
2269is used--this is for compatibility with the behavior of previous
2270versions of Emacs.
2271
2272For compatibility with Emacs 20, keywords `:bold' and `:italic' can
2273be used to specify that a bold or italic font should be used. VALUE
2274must be t or nil in that case. A value of `unspecified' is not allowed."
2275
2276Please see also the documentation of `set-face-attribute' and
2277`defface'.
2278
2279*** Face attributes and X resources
2280
2281The following X resource names can be used to set face attributes
2282from X resources:
2283
2284 Face attribute X resource class
2285-----------------------------------------------------------------------
2286 :family attributeFamily . Face.AttributeFamily
2287 :width attributeWidth Face.AttributeWidth
2288 :height attributeHeight Face.AttributeHeight
2289 :weight attributeWeight Face.AttributeWeight
2290 :slant attributeSlant Face.AttributeSlant
2291 foreground attributeForeground Face.AttributeForeground
2292 :background attributeBackground . Face.AttributeBackground
2293 :overline attributeOverline Face.AttributeOverline
2294 :strike-through attributeStrikeThrough Face.AttributeStrikeThrough
2295 :box attributeBox Face.AttributeBox
2296 :underline attributeUnderline Face.AttributeUnderline
2297 :inverse-video attributeInverse Face.AttributeInverse
2298 :stipple attributeStipple Face.AttributeStipple
79214ddf 2299 or attributeBackgroundPixmap
a933dad1
DL
2300 Face.AttributeBackgroundPixmap
2301 :font attributeFont Face.AttributeFont
2302 :bold attributeBold Face.AttributeBold
2303 :italic attributeItalic . Face.AttributeItalic
2304 :font attributeFont Face.AttributeFont
2305
2306+++
2307*** Text property `face'.
2308
2309The value of the `face' text property can now be a single face
2310specification or a list of such specifications. Each face
2311specification can be
2312
23131. A symbol or string naming a Lisp face.
2314
23152. A property list of the form (KEYWORD VALUE ...) where each
2316 KEYWORD is a face attribute name, and VALUE is an appropriate value
2317 for that attribute. Please see the doc string of `set-face-attribute'
2318 for face attribute names.
2319
23203. Conses of the form (FOREGROUND-COLOR . COLOR) or
2321 (BACKGROUND-COLOR . COLOR) where COLOR is a color name. This is
2322 for compatibility with previous Emacs versions.
2323
2324+++
2325** Support functions for colors on text-only terminals.
2326
acf3ecb7
EZ
2327The function `tty-color-define' can be used to define colors for use
2328on TTY and MSDOS frames. It maps a color name to a color number on
2329the terminal. Emacs defines a couple of common color mappings by
a933dad1 2330default. You can get defined colors with a call to
acf3ecb7 2331`defined-colors'. The function `tty-color-clear' can be
a933dad1
DL
2332used to clear the mapping table.
2333
acf3ecb7
EZ
2334** Unified support for colors independent of frame type.
2335
2336The new functions `defined-colors', `color-defined-p', `color-values',
2337and `display-color-p' work for any type of frame. On frames whose
2338type is neither x nor w32, these functions transparently map X-style
2339color specifications to the closest colors supported by the frame
2340display. Lisp programs should use these new functions instead of the
2341old `x-defined-colors', `x-color-defined-p', `x-color-values', and
2342`x-display-color-p'. (The old function names are still available for
2343compatibility; they are now aliases of the new names.) Lisp programs
2344should no more look at the value of the variable window-system to
2345modify their color-related behavior.
2346
2347The primitives `color-gray-p' and `color-supported-p' also work for
2348any frame type.
2349
8a5719f0
EZ
2350** Platform-independent functions to describe display capabilities.
2351
2352The new functions `display-mouse-p', `display-popup-menus-p',
2353`display-graphic-p', `display-selections-p', `display-screens',
2354`display-pixel-width', `display-pixel-height', `display-mm-width',
2355`display-mm-height', `display-backing-store', `display-save-under',
2356`display-planes', `display-color-cells', `display-visual-class', and
2357`display-grayscale-p' describe the basic capabilities of a particular
2358display. Lisp programs should call these functions instead of testing
2359the value of the variables `window-system' or `system-type', or calling
2360platform-specific functions such as `x-display-pixel-width'.
2361
a933dad1
DL
2362+++
2363** The minibuffer prompt is now actually inserted in the minibuffer.
a933dad1 2364
463cac2d 2365This makes it possible to scroll through the prompt, if you want to.
a933dad1
DL
2366
2367The function minubuffer-prompt-end returns the current position of the
2368end of the minibuffer prompt, if the minibuffer is current.
2369Otherwise, it returns zero.
2370
463cac2d
GM
2371** New `field' abstraction in buffers.
2372
2373There is now code to support an abstraction called `fields' in emacs
2374buffers. A field is a contiguous region of text with the same `field'
2375text-property.
2376
9a9dfda8 2377Many emacs functions, such as forward-word, forward-sentence,
463cac2d 2378forward-paragraph, beginning-of-line, etc., stop moving when they come
9a9dfda8 2379to the boundary between fields; beginning-of-line and end-of-line will
463cac2d 2380not let the point move past the field boundary, but other movement
fc7ac24f
GM
2381commands continue into the next field if repeated. Stopping at field
2382boundaries can be suppressed programmatically by binding
2383`inhibit-field-text-motion' to a non-nil value around calls to these
2384functions.
463cac2d
GM
2385
2386Now that the minibuffer prompt is inserted into the minibuffer, it is in
9a9dfda8 2387a separate field from the user-input part of the buffer, so that common
463cac2d 2388editing commands treat the user's text separately from the prompt.
a933dad1 2389
9a9dfda8
GM
2390The following functions are defined for operating on fields:
2391
2392- Function: constrain-to-field NEW-POS OLD-POS &optional ESCAPE-FROM-EDGE ONLY-IN-LINE
2393
2394Return the position closest to NEW-POS that is in the same field as OLD-POS.
2395A field is a region of text with the same `field' property.
2396If NEW-POS is nil, then the current point is used instead, and set to the
2397constrained position if that is is different.
2398
2399If OLD-POS is at the boundary of two fields, then the allowable
2400positions for NEW-POS depends on the value of the optional argument
2401ESCAPE-FROM-EDGE: If ESCAPE-FROM-EDGE is nil, then NEW-POS is
2402constrained to the field that has the same `field' text-property
2403as any new characters inserted at OLD-POS, whereas if ESCAPE-FROM-EDGE
2404is non-nil, NEW-POS is constrained to the union of the two adjacent
2405fields.
2406
2407If the optional argument ONLY-IN-LINE is non-nil and constraining
2408NEW-POS would move it to a different line, NEW-POS is returned
2409unconstrained. This useful for commands that move by line, like
2410C-n or C-a, which should generally respect field boundaries
2411only in the case where they can still move to the right line.
2412
2413- Function: erase-field &optional POS
2414
2415Erases the field surrounding POS.
2416A field is a region of text with the same `field' property.
2417If POS is nil, the position of the current buffer's point is used.
2418
2419- Function: field-beginning &optional POS ESCAPE-FROM-EDGE
2420
2421Return the beginning of the field surrounding POS.
2422A field is a region of text with the same `field' property.
2423If POS is nil, the position of the current buffer's point is used.
2424If ESCAPE-FROM-EDGE is non-nil and POS is already at beginning of an
2425field, then the beginning of the *previous* field is returned.
2426
2427- Function: field-end &optional POS ESCAPE-FROM-EDGE
2428
2429Return the end of the field surrounding POS.
2430A field is a region of text with the same `field' property.
2431If POS is nil, the position of the current buffer's point is used.
2432If ESCAPE-FROM-EDGE is non-nil and POS is already at end of a field,
2433then the end of the *following* field is returned.
2434
2435- Function: field-string &optional POS
2436
2437Return the contents of the field surrounding POS as a string.
2438A field is a region of text with the same `field' property.
2439If POS is nil, the position of the current buffer's point is used.
2440
2441- Function: field-string-no-properties &optional POS
2442
2443Return the contents of the field around POS, without text-properties.
2444A field is a region of text with the same `field' property.
2445If POS is nil, the position of the current buffer's point is used.
2446
a933dad1
DL
2447+++
2448** Image support.
2449
2450Emacs can now display images. Images are inserted into text by giving
2451strings or buffer text a `display' text property containing one of
2452(AREA IMAGE) or IMAGE. The display of the `display' property value
2453replaces the display of the characters having that property.
2454
2455If the property value has the form (AREA IMAGE), AREA must be one of
2456`(margin left-margin)', `(margin right-margin)' or `(margin nil)'. If
2457AREA is `(margin nil)', IMAGE will be displayed in the text area of a
2458window, otherwise it will be displayed in the left or right marginal
2459area.
2460
2461IMAGE is an image specification.
2462
2463*** Image specifications
2464
2465Image specifications are lists of the form `(image PROPS)' where PROPS
2466is a property list whose keys are keyword symbols. Each
2467specifications must contain a property `:type TYPE' with TYPE being a
35a5514b
GM
2468symbol specifying the image type, e.g. `xbm'. Properties not
2469described below are ignored.
a933dad1
DL
2470
2471The following is a list of properties all image types share.
2472
2473`:ascent ASCENT'
2474
576da55d
GM
2475ASCENT must be a number in the range 0..100, or the symbol `center'.
2476If it is a number, it specifies the percentage of the image's height
2477to use for its ascent.
2478
2479If not specified, ASCENT defaults to the value 50 which means that the
2480image will be centered with the base line of the row it appears in.
2481
04545643
GM
2482If ASCENT is `center' the image is vertically centered around a
2483centerline which is the vertical center of text drawn at the position
2484of the image, in the manner specified by the text properties and
2485overlays that apply to the image.
a933dad1
DL
2486
2487`:margin MARGIN'
2488
79214ddf 2489MARGIN must be a number >= 0 specifying how many pixels to put as
a933dad1
DL
2490margin around the image. Default is 0.
2491
2492`:relief RELIEF'
2493
2494RELIEF is analogous to the `:relief' attribute of faces. Puts a relief
2495around an image.
2496
2497`:algorithm ALGO'
2498
2499Apply an image algorithm to the image before displaying it. ALGO must
2500be a symbol specifying the algorithm. Currently only `laplace' is
2501supported which applies a Laplace edge detection algorithm to an image
2502which is intended to display images "disabled."
2503
2504`:heuristic-mask BG'
2505
2506If BG is not nil, build a clipping mask for the image, so that the
2507background of a frame is visible behind the image. If BG is t,
2508determine the background color of the image by looking at the 4
2509corners of the image, assuming the most frequently occuring color from
2510the corners is the background color of the image. Otherwise, BG must
2511be a list `(RED GREEN BLUE)' specifying the color to assume for the
2512background of the image.
2513
2514`:file FILE'
2515
2516Load image from FILE. If FILE is not absolute after expanding it,
2517search for the image in `data-directory'. Some image types support
2518building images from data. When this is done, no `:file' property
2519may be present in the image specification.
2520
518df5c4
GM
2521`:data DATA'
2522
2523Get image data from DATA. (As of this writing, this is not yet
2524supported for image type `postscript'). Either :file or :data may be
2525present in an image specification, but not both. All image types
2526support strings as DATA, some types allow additional types of DATA.
2527
a933dad1
DL
2528*** Supported image types
2529
b246b1f6 2530**** XBM, image type `xbm'.
a933dad1
DL
2531
2532XBM images don't require an external library. Additional image
2533properties supported are
2534
2535`:foreground FG'
2536
2537FG must be a string specifying the image foreground color. Default
2538is the frame's foreground.
2539
2540`:background FG'
2541
2542BG must be a string specifying the image foreground color. Default is
2543the frame's background color.
2544
2545XBM images can be constructed from data instead of file. In this
2546case, the image specification must contain the following properties
2547instead of a `:file' property.
2548
2549`:width WIDTH'
2550
2551WIDTH specifies the width of the image in pixels.
2552
2553`:height HEIGHT'
2554
2555HEIGHT specifies the height of the image in pixels.
2556
2557`:data DATA'
2558
2559DATA must be either
2560
2561 1. a string large enough to hold the bitmap data, i.e. it must
2562 have a size >= (WIDTH + 7) / 8 * HEIGHT
2563
2564 2. a bool-vector of size >= WIDTH * HEIGHT
2565
2566 3. a vector of strings or bool-vectors, one for each line of the
2567 bitmap.
2568
c76e04a8
GM
2569 4. a string that's an in-memory XBM file. Neither width nor
2570 height may be specified in this case because these are defined
2571 in the file.
2572
a933dad1
DL
2573**** XPM, image type `xpm'
2574
2575XPM images require the external library `libXpm', package
2576`xpm-3.4k.tar.gz', version 3.4k or later. Make sure the library is
2577found when Emacs is configured by supplying appropriate paths via
2578`--x-includes' and `--x-libraries'.
2579
2580Additional image properties supported are:
2581
2582`:color-symbols SYMBOLS'
2583
2584SYMBOLS must be a list of pairs (NAME . COLOR), with NAME being the
2585name of color as it appears in an XPM file, and COLOR being an X color
2586name.
2587
2588XPM images can be built from memory instead of files. In that case,
2589add a `:data' property instead of a `:file' property.
2590
a933dad1
DL
2591The XPM library uses libz in its implementation so that it is able
2592to display compressed images.
2593
2594**** PBM, image type `pbm'
2595
2596PBM images don't require an external library. Color, gray-scale and
2597mono images are supported. There are no additional image properties
2598defined.
2599
2600**** JPEG, image type `jpeg'
2601
2602Support for JPEG images requires the external library `libjpeg',
3bd37feb
GM
2603package `jpegsrc.v6a.tar.gz', or later. Additional image properties
2604are:
2605
a933dad1
DL
2606**** TIFF, image type `tiff'
2607
2608Support for TIFF images requires the external library `libtiff',
2609package `tiff-v3.4-tar.gz', or later. There are no additional image
2610properties defined.
2611
2612**** GIF, image type `gif'
2613
2614Support for GIF images requires the external library `libungif', package
2615`libungif-4.1.0', or later.
2616
2617Additional image properties supported are:
2618
2619`:index INDEX'
2620
2621INDEX must be an integer >= 0. Load image number INDEX from a
2622multi-image GIF file. An error is signalled if INDEX is too large.
2623
2624This could be used to implement limited support for animated GIFs.
2625For example, the following function displays a multi-image GIF file
2626at point-min in the current buffer, switching between sub-images
2627every 0.1 seconds.
2628
2629(defun show-anim (file max)
2630 "Display multi-image GIF file FILE which contains MAX subimages."
2631 (display-anim (current-buffer) file 0 max t))
2632
2633(defun display-anim (buffer file idx max first-time)
2634 (when (= idx max)
2635 (setq idx 0))
518df5c4 2636 (let ((img (create-image file nil nil :index idx)))
a933dad1
DL
2637 (save-excursion
2638 (set-buffer buffer)
2639 (goto-char (point-min))
2640 (unless first-time (delete-char 1))
2641 (insert-image img "x"))
2642 (run-with-timer 0.1 nil 'display-anim buffer file (1+ idx) max nil)))
2643
2644**** PNG, image type `png'
2645
2646Support for PNG images requires the external library `libpng',
2647package `libpng-1.0.2.tar.gz', or later. There are no additional image
2648properties defined.
2649
2650**** Ghostscript, image type `postscript'.
2651
2652Additional image properties supported are:
2653
2654`:pt-width WIDTH'
2655
2656WIDTH is width of the image in pt (1/72 inch). WIDTH must be an
b246b1f6 2657integer. This is a required property.
a933dad1
DL
2658
2659`:pt-height HEIGHT'
2660
2661HEIGHT specifies the height of the image in pt (1/72 inch). HEIGHT
b246b1f6 2662must be a integer. This is an required property.
a933dad1
DL
2663
2664`:bounding-box BOX'
2665
2666BOX must be a list or vector of 4 integers giving the bounding box of
2667the PS image, analogous to the `BoundingBox' comment found in PS
2668files. This is an required property.
2669
2670Part of the Ghostscript interface is implemented in Lisp. See
2671lisp/gs.el.
2672
2673*** Lisp interface.
2674
79214ddf
FP
2675The variable `image-types' contains a list of those image types
2676which are supported in the current configuration.
a933dad1
DL
2677
2678Images are stored in an image cache and removed from the cache when
2679they haven't been displayed for `image-cache-eviction-delay seconds.
2680The function `clear-image-cache' can be used to clear the image cache
084cec2f
GM
2681manually. Images in the cache are compared with `equal', i.e. all
2682images with `equal' specifications share the same image.
a933dad1
DL
2683
2684*** Simplified image API, image.el
2685
2686The new Lisp package image.el contains functions that simplify image
2687creation and putting images into text. The function `create-image'
2688can be used to create images. The macro `defimage' can be used to
2689define an image based on available image types. The functions
2690`put-image' and `insert-image' can be used to insert an image into a
2691buffer.
2692
2693+++
2694** Display margins.
2695
2696Windows can now have margins which are used for special text
2697and images.
2698
2699To give a window margins, either set the buffer-local variables
2700`left-margin-width' and `right-margin-width', or call
2701`set-window-margins'. The function `window-margins' can be used to
2702obtain the current settings. To make `left-margin-width' and
2703`right-margin-width' take effect, you must set them before displaying
2704the buffer in a window, or use `set-window-buffer' to force an update
2705of the display margins.
2706
2707You can put text in margins by giving it a `display' text property
2708containing a pair of the form `(LOCATION . VALUE)', where LOCATION is
2709one of `left-margin' or `right-margin' or nil. VALUE can be either a
2710string, an image specification or a stretch specification (see later
2711in this file).
2712
2713+++
2714** Help display
2715
2716Emacs displays short help messages in the echo area, when the mouse
2717moves over a tool-bar item or a piece of text that has a text property
2718`help-echo'. This feature also applies to strings in the mode line
2719that have a `help-echo' property.
2720
2721The value of the `help-echo' property must be a string. For tool-bar
2722items, their key definition is used to determine the help to display.
2723If their definition contains a property `:help FORM', FORM is
2724evaluated to determine the help string. Otherwise, the caption of the
2725tool-bar item is used.
2726
2727The hook `show-help-function' can be set to a function that displays
2728help differently. For example, enabling a tooltip window causes the
2729help display to appear there instead of in the echo area.
2730
2731+++
2732** Vertical fractional scrolling.
2733
2734The display of text in windows can be scrolled smoothly in pixels.
2735This is useful, for example, for making parts of large images visible.
2736
2737The function `window-vscroll' returns the current value of vertical
2738scrolling, a non-negative fraction of the canonical character height.
2739The function `set-window-vscroll' can be used to set the vertical
2740scrolling value. Here is an example of how these function might be
2741used.
2742
79214ddf
FP
2743 (global-set-key [A-down]
2744 #'(lambda ()
a933dad1 2745 (interactive)
79214ddf 2746 (set-window-vscroll (selected-window)
a933dad1 2747 (+ 0.5 (window-vscroll)))))
79214ddf 2748 (global-set-key [A-up]
a933dad1
DL
2749 #'(lambda ()
2750 (interactive)
79214ddf 2751 (set-window-vscroll (selected-window)
a933dad1
DL
2752 (- (window-vscroll) 0.5)))))
2753
2754+++
2755** New hook `fontification-functions'.
2756
2757Functions from `fontification-functions' are called from redisplay
2758when it encounters a region of text that is not yet fontified. This
2759variable automatically becomes buffer-local when set. Each function
2760is called with one argument, POS.
2761
2762At least one of the hook functions should fontify one or more
2763characters starting at POS in the current buffer. It should mark them
2764as fontified by giving them a non-nil value of the `fontified' text
2765property. It may be reasonable for these functions to check for the
2766`fontified' property and not put it back on, but they do not have to.
2767
2768+++
2769** Tool bar support.
2770
2771Emacs supports a tool bar at the top of a frame under X. The frame
2772parameter `tool-bar-lines' (X resource "toolBar", class "ToolBar")
2773controls how may lines to reserve for the tool bar. A zero value
2774suppresses the tool bar. If the value is non-zero and
2775`auto-resize-tool-bars' is non-nil the tool bar's size will be changed
2776automatically so that all tool bar items are visible.
2777
2778*** Tool bar item definitions
2779
2780Tool bar items are defined using `define-key' with a prefix-key
2781`tool-bar'. For example `(define-key global-map [tool-bar item1] ITEM)'
2782where ITEM is a list `(menu-item CAPTION BINDING PROPS...)'.
79214ddf 2783
a933dad1
DL
2784CAPTION is the caption of the item, If it's not a string, it is
2785evaluated to get a string. The caption is currently not displayed in
2786the tool bar, but it is displayed if the item doesn't have a `:help'
2787property (see below).
79214ddf 2788
a933dad1
DL
2789BINDING is the tool bar item's binding. Tool bar items with keymaps as
2790binding are currently ignored.
2791
2792The following properties are recognized:
2793
2794`:enable FORM'.
79214ddf 2795
a933dad1
DL
2796FORM is evaluated and specifies whether the tool bar item is enabled
2797or disabled.
79214ddf 2798
a933dad1 2799`:visible FORM'
79214ddf 2800
a933dad1 2801FORM is evaluated and specifies whether the tool bar item is displayed.
79214ddf 2802
a933dad1
DL
2803`:filter FUNCTION'
2804
2805FUNCTION is called with one parameter, the same list BINDING in which
2806FUNCTION is specified as the filter. The value FUNCTION returns is
2807used instead of BINDING to display this item.
79214ddf 2808
a933dad1
DL
2809`:button (TYPE SELECTED)'
2810
2811TYPE must be one of `:radio' or `:toggle'. SELECTED is evaluated
2812and specifies whether the button is selected (pressed) or not.
79214ddf 2813
a933dad1
DL
2814`:image IMAGES'
2815
2816IMAGES is either a single image specification or a vector of four
2817image specifications. If it is a vector, this table lists the
2818meaning of each of the four elements:
2819
2820 Index Use when item is
2821 ----------------------------------------
2822 0 enabled and selected
2823 1 enabled and deselected
2824 2 disabled and selected
2825 3 disabled and deselected
79214ddf 2826
4ba7246d
GM
2827If IMAGE is a single image specification, a Laplace edge-detection
2828algorithm is used on that image to draw the image in disabled state.
2829
a933dad1 2830`:help HELP-STRING'.
79214ddf 2831
a933dad1
DL
2832Gives a help string to display for the tool bar item. This help
2833is displayed when the mouse is moved over the item.
2834
2835*** Tool-bar-related variables.
2836
2837If `auto-resize-tool-bar' is non-nil, the tool bar will automatically
2838resize to show all defined tool bar items. It will never grow larger
2839than 1/4 of the frame's size.
2840
79214ddf 2841If `auto-raise-tool-bar-buttons' is non-nil, tool bar buttons will be
a933dad1
DL
2842raised when the mouse moves over them.
2843
2844You can add extra space between tool bar items by setting
2845`tool-bar-button-margin' to a positive integer specifying a number of
2846pixels. Default is 1.
2847
2848You can change the shadow thickness of tool bar buttons by setting
2849`tool-bar-button-relief' to an integer. Default is 3.
2850
2851*** Tool-bar clicks with modifiers.
2852
2853You can bind commands to clicks with control, shift, meta etc. on
79214ddf 2854a tool bar item. If
a933dad1
DL
2855
2856 (define-key global-map [tool-bar shell]
2857 '(menu-item "Shell" shell
2858 :image (image :type xpm :file "shell.xpm")))
2859
2860is the original tool bar item definition, then
2861
2862 (define-key global-map [tool-bar S-shell] 'some-command)
2863
2864makes a binding to run `some-command' for a shifted click on the same
2865item.
2866
2867** Mode line changes.
2868
2869+++
2870*** Mouse-sensitive mode line.
2871
2872The mode line can be made mouse-sensitive by displaying strings there
2873that have a `local-map' text property. There are three ways to display
2874a string with a `local-map' property in the mode line.
2875
28761. The mode line spec contains a variable whose string value has
2877a `local-map' text property.
2878
28792. The mode line spec contains a format specifier (e.g. `%12b'), and
2880that format specifier has a `local-map' property.
2881
28823. The mode line spec contains a list containing `:eval FORM'. FORM
2883is evaluated. If the result is a string, and that string has a
2884`local-map' property.
2885
2886The same mechanism is used to determine the `face' and `help-echo'
2887properties of strings in the mode line. See `bindings.el' for an
2888example.
2889
54522c9f
GM
2890*** If a mode line element has the form `(:eval FORM)', FORM is
2891evaluated and the result is used as mode line element.
2892
a933dad1
DL
2893+++
2894*** You can suppress mode-line display by setting the buffer-local
2895variable mode-line-format to nil.
2896
2897+++
2898*** A headerline can now be displayed at the top of a window.
2899
2900This mode line's contents are controlled by the new variable
2901`header-line-format' and `default-header-line-format' which are
2902completely analogous to `mode-line-format' and
2903`default-mode-line-format'. A value of nil means don't display a top
2904line.
2905
2906The appearance of top mode lines is controlled by the face
2907`header-line'.
2908
2909The function `coordinates-in-window-p' returns `header-line' for a
2910position in the header-line.
2911
2912+++
2913** Text property `display'
2914
2915The `display' text property is used to insert images into text, and
2916also control other aspects of how text displays. The value of the
2917`display' property should be a display specification, as described
2918below, or a list or vector containing display specifications.
2919
2920*** Variable width and height spaces
2921
2922To display a space of fractional width or height, use a display
2923specification of the form `(LOCATION STRECH)'. If LOCATION is
2924`(margin left-margin)', the space is displayed in the left marginal
2925area, if it is `(margin right-margin)', it is displayed in the right
2926marginal area, and if LOCATION is `(margin nil)' the space is
2927displayed in the text. In the latter case you can also use the
2928simpler form STRETCH as property value.
2929
2930The stretch specification STRETCH itself is a list of the form `(space
2931PROPS)', where PROPS is a property list which can contain the
2932properties described below.
2933
2934The display of the fractional space replaces the display of the
2935characters having the `display' property.
2936
2937- :width WIDTH
2938
2939Specifies that the space width should be WIDTH times the normal
2940character width. WIDTH can be an integer or floating point number.
2941
2942- :relative-width FACTOR
2943
2944Specifies that the width of the stretch should be computed from the
2945first character in a group of consecutive characters that have the
2946same `display' property. The computation is done by multiplying the
2947width of that character by FACTOR.
2948
2949- :align-to HPOS
2950
2951Specifies that the space should be wide enough to reach HPOS. The
2952value HPOS is measured in units of the normal character width.
2953
2954Exactly one of the above properties should be used.
2955
2956- :height HEIGHT
2957
2958Specifies the height of the space, as HEIGHT, measured in terms of the
2959normal line height.
2960
2961- :relative-height FACTOR
2962
2963The height of the space is computed as the product of the height
2964of the text having the `display' property and FACTOR.
2965
2966- :ascent ASCENT
2967
2968Specifies that ASCENT percent of the height of the stretch should be
2969used for the ascent of the stretch, i.e. for the part above the
2970baseline. The value of ASCENT must be a non-negative number less or
2971equal to 100.
2972
2973You should not use both `:height' and `:relative-height' together.
2974
2975*** Images
2976
2977A display specification for an image has the form `(LOCATION
2978. IMAGE)', where IMAGE is an image specification. The image replaces,
2979in the display, the characters having this display specification in
2980their `display' text property. If LOCATION is `(margin left-margin)',
2981the image will be displayed in the left marginal area, if it is
2982`(margin right-margin)' it will be displayed in the right marginal
2983area, and if LOCATION is `(margin nil)' the image will be displayed in
2984the text. In the latter case you can also use the simpler form IMAGE
2985as display specification.
2986
2987*** Other display properties
2988
2989- :space-width FACTOR
2990
2991Specifies that space characters in the text having that property
2992should be displayed FACTOR times as wide as normal; FACTOR must be an
2993integer or float.
2994
2995- :height HEIGHT
2996
2997Display text having this property in a font that is smaller or larger.
2998
2999If HEIGHT is a list of the form `(+ N)', where N is an integer, that
3000means to use a font that is N steps larger. If HEIGHT is a list of
3001the form `(- N)', that means to use a font that is N steps smaller. A
3002``step'' is defined by the set of available fonts; each size for which
3003a font is available counts as a step.
3004
3005If HEIGHT is a number, that means to use a font that is HEIGHT times
3006as tall as the frame's default font.
3007
3008If HEIGHT is a symbol, it is called as a function with the current
3009height as argument. The function should return the new height to use.
3010
3011Otherwise, HEIGHT is evaluated to get the new height, with the symbol
3012`height' bound to the current specified font height.
3013
3014- :raise FACTOR
3015
3016FACTOR must be a number, specifying a multiple of the current
3017font's height. If it is positive, that means to display the characters
3018raised. If it is negative, that means to display them lower down. The
3019amount of raising or lowering is computed without taking account of the
3020`:height' subproperty.
3021
3022*** Conditional display properties
3023
3024All display specifications can be conditionalized. If a specification
3025has the form `(:when CONDITION . SPEC)', the specification SPEC
3026applies only when CONDITION yields a non-nil value when evaluated.
3027During evaluattion, point is temporarily set to the end position of
3028the text having the `display' property.
3029
3030The normal specification consisting of SPEC only is equivalent to
3031`(:when t SPEC)'.
3032
3033+++
3034** New menu separator types.
3035
3036Emacs now supports more than one menu separator type. Menu items with
3037item names consisting of dashes only (including zero dashes) are
3038treated like before. In addition, the following item names are used
3039to specify other menu separator types.
3040
3041- `--no-line' or `--space', or `--:space', or `--:noLine'
3042
3043No separator lines are drawn, but a small space is inserted where the
3044separator occurs.
3045
3046- `--single-line' or `--:singleLine'
3047
3048A single line in the menu's foreground color.
3049
3050- `--double-line' or `--:doubleLine'
3051
3052A double line in the menu's foreground color.
3053
3054- `--single-dashed-line' or `--:singleDashedLine'
3055
3056A single dashed line in the menu's foreground color.
3057
3058- `--double-dashed-line' or `--:doubleDashedLine'
3059
3060A double dashed line in the menu's foreground color.
3061
3062- `--shadow-etched-in' or `--:shadowEtchedIn'
3063
3064A single line with 3D sunken appearance. This is the the form
3065displayed for item names consisting of dashes only.
3066
3067- `--shadow-etched-out' or `--:shadowEtchedOut'
3068
3069A single line with 3D raised appearance.
3070
3071- `--shadow-etched-in-dash' or `--:shadowEtchedInDash'
3072
3073A single dashed line with 3D sunken appearance.
3074
3075- `--shadow-etched-out-dash' or `--:shadowEtchedOutDash'
3076
3077A single dashed line with 3D raise appearance.
3078
3079- `--shadow-double-etched-in' or `--:shadowDoubleEtchedIn'
3080
3081Two lines with 3D sunken appearance.
3082
3083- `--shadow-double-etched-out' or `--:shadowDoubleEtchedOut'
3084
3085Two lines with 3D raised appearance.
3086
3087- `--shadow-double-etched-in-dash' or `--:shadowDoubleEtchedInDash'
3088
3089Two dashed lines with 3D sunken appearance.
3090
3091- `--shadow-double-etched-out-dash' or `--:shadowDoubleEtchedOutDash'
3092
3093Two dashed lines with 3D raised appearance.
3094
3095Under LessTif/Motif, the last four separator types are displayed like
3096the corresponding single-line separators.
3097
3098+++
3099** New frame parameters for scroll bar colors.
3100
3101The new frame parameters `scroll-bar-foreground' and
3102`scroll-bar-background' can be used to change scroll bar colors.
3103Their value must be either a color name, a string, or nil to specify
3104that scroll bars should use a default color. For toolkit scroll bars,
3105default colors are toolkit specific. For non-toolkit scroll bars, the
3106default background is the background color of the frame, and the
3107default foreground is black.
3108
3109The X resource name of these parameters are `scrollBarForeground'
3110(class ScrollBarForeground) and `scrollBarBackground' (class
3111`ScrollBarBackground').
3112
3113Setting these parameters overrides toolkit specific X resource
3114settings for scroll bar colors.
3115
3116+++
3117** You can set `redisplay-dont-pause' to a non-nil value to prevent
3118display updates from being interrupted when input is pending.
3119
3120---
3121** Changing a window's width may now change its window start if it
3122starts on a continuation line. The new window start is computed based
3123on the window's new width, starting from the start of the continued
3124line as the start of the screen line with the minimum distance from
3125the original window start.
3126
3127---
3128** The variable `hscroll-step' and the functions
3129`hscroll-point-visible' and `hscroll-window-column' have been removed
3130now that proper horizontal scrolling is implemented.
3131
3132+++
3133** Windows can now be made fixed-width and/or fixed-height.
3134
3135A window is fixed-size if its buffer has a buffer-local variable
3136`window-size-fixed' whose value is not nil. A value of `height' makes
3137windows fixed-height, a value of `width' makes them fixed-width, any
3138other non-nil value makes them both fixed-width and fixed-height.
3139
3140The following code makes all windows displaying the current buffer
3141fixed-width and fixed-height.
3142
3143 (set (make-local-variable 'window-size-fixed) t)
3144
3145A call to enlarge-window on a window gives an error if that window is
3146fixed-width and it is tried to change the window's width, or if the
3147window is fixed-height, and it is tried to change its height. To
3148change the size of a fixed-size window, bind `window-size-fixed'
3149temporarily to nil, for example
3150
3151 (let ((window-size-fixed nil))
3152 (enlarge-window 10))
3153
79214ddf 3154Likewise, an attempt to split a fixed-height window vertically,
a933dad1 3155or a fixed-width window horizontally results in a error.
e411ce4b
EZ
3156
3157** The cursor-type frame parameter is now supported on MS-DOS
3158terminals. When Emacs starts, it by default changes the cursor shape
3159to a solid box, as it does on Unix. The `cursor-type' frame parameter
3160overrides this as it does on Unix, except that the bar cursor is
3161horizontal rather than vertical (since the MS-DOS display doesn't
3162support a vertical-bar cursor).
e33b0397
DL
3163^L
3164* Emacs 20.5 is a bug-fix release with no user-visible changes.
3165
3166** Not new, but not mentioned before:
3167M-w when Transient Mark mode is enabled disables the mark.
a933dad1
DL
3168\f
3169* Changes in Emacs 20.4
3170
3171** Init file may be called .emacs.el.
3172
3173You can now call the Emacs init file `.emacs.el'.
3174Formerly the name had to be `.emacs'. If you use the name
3175`.emacs.el', you can byte-compile the file in the usual way.
3176
3177If both `.emacs' and `.emacs.el' exist, the latter file
3178is the one that is used.
3179
3180** shell-command, and shell-command-on-region, now return
3181the exit code of the command (unless it is asynchronous).
3182Also, you can specify a place to put the error output,
3183separate from the command's regular output.
3184Interactively, the variable shell-command-default-error-buffer
3185says where to put error output; set it to a buffer name.
3186In calls from Lisp, an optional argument ERROR-BUFFER specifies
3187the buffer name.
3188
3189When you specify a non-nil error buffer (or buffer name), any error
3190output is inserted before point in that buffer, with \f\n to separate
3191it from the previous batch of error output. The error buffer is not
3192cleared, so error output from successive commands accumulates there.
3193
3194** Setting the default value of enable-multibyte-characters to nil in
3195the .emacs file, either explicitly using setq-default, or via Custom,
3196is now essentially equivalent to using --unibyte: all buffers
3197created during startup will be made unibyte after loading .emacs.
3198
3199** C-x C-f now handles the wildcards * and ? in file names. For
3200example, typing C-x C-f c*.c RET visits all the files whose names
3201match c*.c. To visit a file whose name contains * or ?, add the
3202quoting sequence /: to the beginning of the file name.
3203
3204** The M-x commands keep-lines, flush-lines and count-matches
3205now have the same feature as occur and query-replace:
3206if the pattern contains any upper case letters, then
3207they never ignore case.
3208
3209** The end-of-line format conversion feature previously mentioned
3210under `* Emacs 20.1 changes for MS-DOS and MS-Windows' actually
3211applies to all operating systems. Emacs recognizes from the contents
3212of a file what convention it uses to separate lines--newline, CRLF, or
3213just CR--and automatically converts the contents to the normal Emacs
3214convention (using newline to separate lines) for editing. This is a
3215part of the general feature of coding system conversion.
3216
3217If you subsequently save the buffer, Emacs converts the text back to
3218the same format that was used in the file before.
3219
3220You can turn off end-of-line conversion by setting the variable
3221`inhibit-eol-conversion' to non-nil, e.g. with Custom in the MULE group.
3222
3223** The character set property `prefered-coding-system' has been
3224renamed to `preferred-coding-system', for the sake of correct spelling.
3225This is a fairly internal feature, so few programs should be affected.
3226
3227** Mode-line display of end-of-line format is changed.
3228The indication of the end-of-line format of the file visited by a
3229buffer is now more explicit when that format is not the usual one for
3230your operating system. For example, the DOS-style end-of-line format
3231is displayed as "(DOS)" on Unix and GNU/Linux systems. The usual
3232end-of-line format is still displayed as a single character (colon for
3233Unix, backslash for DOS and Windows, and forward slash for the Mac).
3234
3235The values of the variables eol-mnemonic-unix, eol-mnemonic-dos,
3236eol-mnemonic-mac, and eol-mnemonic-undecided, which are strings,
3237control what is displayed in the mode line for each end-of-line
3238format. You can now customize these variables.
3239
3240** In the previous version of Emacs, tar-mode didn't work well if a
3241filename contained non-ASCII characters. Now this is fixed. Such a
3242filename is decoded by file-name-coding-system if the default value of
3243enable-multibyte-characters is non-nil.
3244
3245** The command temp-buffer-resize-mode toggles a minor mode
3246in which temporary buffers (such as help buffers) are given
3247windows just big enough to hold the whole contents.
3248
3249** If you use completion.el, you must now run the function
3250dynamic-completion-mode to enable it. Just loading the file
3251doesn't have any effect.
3252
3253** In Flyspell mode, the default is now to make just one Ispell process,
3254not one per buffer.
3255
3256** If you use iswitchb but do not call (iswitchb-default-keybindings) to
3257use the default keybindings, you will need to add the following line:
3258 (add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)
3259
3260** Auto-show mode is no longer enabled just by loading auto-show.el.
3261To control it, set `auto-show-mode' via Custom or use the
3262`auto-show-mode' command.
3263
3264** Handling of X fonts' ascent/descent parameters has been changed to
3265avoid redisplay problems. As a consequence, compared with previous
3266versions the line spacing and frame size now differ with some font
3267choices, typically increasing by a pixel per line. This change
3268occurred in version 20.3 but was not documented then.
3269
3270** If you select the bar cursor style, it uses the frame's
3271cursor-color, rather than the cursor foreground pixel.
3272
3273** In multibyte mode, Rmail decodes incoming MIME messages using the
3274character set specified in the message. If you want to disable this
3275feature, set the variable rmail-decode-mime-charset to nil.
3276
3277** Not new, but not mentioned previously in NEWS: when you use #! at
3278the beginning of a file to make it executable and specify an
3279interpreter program, Emacs looks on the second line for the -*- mode
3280and variable specification, as well as on the first line.
3281
3282** Support for IBM codepage encoding of non-ASCII characters.
3283
3284The new command M-x codepage-setup creates a special coding system
3285that can be used to convert text between a specific IBM codepage and
3286one of the character sets built into Emacs which matches that
3287codepage. For example, codepage 850 corresponds to Latin-1 character
3288set, codepage 855 corresponds to Cyrillic-ISO character set, etc.
3289
3290Windows codepages 1250, 1251 and some others, where Windows deviates
3291from the corresponding ISO character set, are also supported.
3292
3293IBM box-drawing characters and other glyphs which don't have
3294equivalents in the corresponding ISO character set, are converted to
3295a character defined by dos-unsupported-char-glyph on MS-DOS, and to
3296`?' on other systems.
3297
3298IBM codepages are widely used on MS-DOS and MS-Windows, so this
3299feature is most useful on those platforms, but it can also be used on
3300Unix.
3301
3302Emacs compiled for MS-DOS automatically loads the support for the
3303current codepage when it starts.
3304
3305** Mail changes
3306
feab4fba
GM
3307*** When mail is sent using compose-mail (C-x m), and if
3308`mail-send-nonascii' is set to the new default value `mime',
3309appropriate MIME headers are added. The headers are added only if
3310non-ASCII characters are present in the body of the mail, and no other
3311MIME headers are already present. For example, the following three
3312headers are added if the coding system used in the *mail* buffer is
3313latin-1:
3314
3315 MIME-version: 1.0
3316 Content-type: text/plain; charset=iso-8859-1
3317 Content-Transfer-Encoding: 8bit
3318
a933dad1
DL
3319*** The new variable default-sendmail-coding-system specifies the
3320default way to encode outgoing mail. This has higher priority than
3321default-buffer-file-coding-system but has lower priority than
3322sendmail-coding-system and the local value of
3323buffer-file-coding-system.
3324
3325You should not set this variable manually. Instead, set
3326sendmail-coding-system to specify a fixed encoding for all outgoing
3327mail.
3328
3329*** When you try to send a message that contains non-ASCII characters,
3330if the coding system specified by those variables doesn't handle them,
3331Emacs will ask you to select a suitable coding system while showing a
3332list of possible coding systems.
3333
3334** CC Mode changes
3335
3336*** c-default-style can now take an association list that maps major
3337modes to style names. When this variable is an alist, Java mode no
3338longer hardcodes a setting to "java" style. See the variable's
3339docstring for details.
3340
3341*** It's now possible to put a list as the offset on a syntactic
3342symbol. The list is evaluated recursively until a non-nil offset is
3343found. This is useful to combine several lineup functions to act in a
3344prioritized order on a single line. However, none of the supplied
3345lineup functions use this feature currently.
3346
3347*** New syntactic symbol catch-clause, which is used on the "catch" and
3348"finally" lines in try-catch constructs in C++ and Java.
3349
3350*** New cleanup brace-catch-brace on c-cleanup-list, which does for
3351"catch" lines what brace-elseif-brace does for "else if" lines.
3352
3353*** The braces of Java anonymous inner classes are treated separately
3354from the braces of other classes in auto-newline mode. Two new
3355symbols inexpr-class-open and inexpr-class-close may be used on
3356c-hanging-braces-alist to control the automatic newlines used for
3357anonymous classes.
3358
3359*** Support for the Pike language added, along with new Pike specific
3360syntactic symbols: inlambda, lambda-intro-cont
3361
3362*** Support for Java anonymous classes via new syntactic symbol
3363inexpr-class. New syntactic symbol inexpr-statement for Pike
3364support and gcc-style statements inside expressions. New lineup
3365function c-lineup-inexpr-block.
3366
3367*** New syntactic symbol brace-entry-open which is used in brace lists
3368(i.e. static initializers) when a list entry starts with an open
3369brace. These used to be recognized as brace-list-entry's.
3370c-electric-brace also recognizes brace-entry-open braces
3371(brace-list-entry's can no longer be electrified).
3372
3373*** New command c-indent-line-or-region, not bound by default.
3374
3375*** `#' is only electric when typed in the indentation of a line.
3376
3377*** Parentheses are now electric (via the new command c-electric-paren)
3378for auto-reindenting lines when parens are typed.
3379
3380*** In "gnu" style, inline-open offset is now set to zero.
3381
3382*** Uniform handling of the inclass syntactic symbol. The indentation
3383associated with it is now always relative to the class opening brace.
3384This means that the indentation behavior has changed in some
3385circumstances, but only if you've put anything besides 0 on the
3386class-open syntactic symbol (none of the default styles do that).
3387
3388** Gnus changes.
3389
3390*** New functionality for using Gnus as an offline newsreader has been
3391added. A plethora of new commands and modes have been added. See the
3392Gnus manual for the full story.
3393
3394*** The nndraft backend has returned, but works differently than
3395before. All Message buffers are now also articles in the nndraft
3396group, which is created automatically.
3397
3398*** `gnus-alter-header-function' can now be used to alter header
3399values.
3400
3401*** `gnus-summary-goto-article' now accept Message-ID's.
3402
3403*** A new Message command for deleting text in the body of a message
3404outside the region: `C-c C-v'.
3405
3406*** You can now post to component group in nnvirtual groups with
3407`C-u C-c C-c'.
3408
3409*** `nntp-rlogin-program' -- new variable to ease customization.
3410
3411*** `C-u C-c C-c' in `gnus-article-edit-mode' will now inhibit
3412re-highlighting of the article buffer.
3413
3414*** New element in `gnus-boring-article-headers' -- `long-to'.
3415
3416*** `M-i' symbolic prefix command. See the section "Symbolic
3417Prefixes" in the Gnus manual for details.
3418
3419*** `L' and `I' in the summary buffer now take the symbolic prefix
3420`a' to add the score rule to the "all.SCORE" file.
3421
3422*** `gnus-simplify-subject-functions' variable to allow greater
3423control over simplification.
3424
3425*** `A T' -- new command for fetching the current thread.
3426
3427*** `/ T' -- new command for including the current thread in the
3428limit.
3429
3430*** `M-RET' is a new Message command for breaking cited text.
3431
3432*** \\1-expressions are now valid in `nnmail-split-methods'.
3433
79214ddf 3434*** The `custom-face-lookup' function has been removed.
a933dad1
DL
3435If you used this function in your initialization files, you must
3436rewrite them to use `face-spec-set' instead.
3437
3438*** Cancelling now uses the current select method. Symbolic prefix
3439`a' forces normal posting method.
3440
3441*** New command to translate M******** sm*rtq**t*s into proper text
3442-- `W d'.
3443
3444*** For easier debugging of nntp, you can set `nntp-record-commands'
3445to a non-nil value.
3446
3447*** nntp now uses ~/.authinfo, a .netrc-like file, for controlling
3448where and how to send AUTHINFO to NNTP servers.
3449
3450*** A command for editing group parameters from the summary buffer
3451has been added.
3452
3453*** A history of where mails have been split is available.
3454
3455*** A new article date command has been added -- `article-date-iso8601'.
3456
3457*** Subjects can be simplified when threading by setting
3458`gnus-score-thread-simplify'.
3459
3460*** A new function for citing in Message has been added --
3461`message-cite-original-without-signature'.
3462
3463*** `article-strip-all-blank-lines' -- new article command.
3464
3465*** A new Message command to kill to the end of the article has
3466been added.
3467
3468*** A minimum adaptive score can be specified by using the
3469`gnus-adaptive-word-minimum' variable.
3470
3471*** The "lapsed date" article header can be kept continually
3472updated by the `gnus-start-date-timer' command.
3473
3474*** Web listserv archives can be read with the nnlistserv backend.
3475
3476*** Old dejanews archives can now be read by nnweb.
3477
3478*** `gnus-posting-styles' has been re-activated.
3479
3480** Changes to TeX and LaTeX mode
3481
3482*** The new variable `tex-start-options-string' can be used to give
3483options for the TeX run. The default value causes TeX to run in
3484nonstopmode. For an interactive TeX run set it to nil or "".
3485
3486*** The command `tex-feed-input' sends input to the Tex Shell. In a
3487TeX buffer it is bound to the keys C-RET, C-c RET, and C-c C-m (some
3488of these keys may not work on all systems). For instance, if you run
3489TeX interactively and if the TeX run stops because of an error, you
3490can continue it without leaving the TeX buffer by typing C-RET.
3491
3492*** The Tex Shell Buffer is now in `compilation-shell-minor-mode'.
3493All error-parsing commands of the Compilation major mode are available
3494but bound to keys that don't collide with the shell. Thus you can use
3495the Tex Shell for command line executions like a usual shell.
3496
3497*** The commands `tex-validate-region' and `tex-validate-buffer' check
3498the matching of braces and $'s. The errors are listed in a *Occur*
3499buffer and you can use C-c C-c or mouse-2 to go to a particular
3500mismatch.
3501
3502** Changes to RefTeX mode
3503
3504*** The table of contents buffer can now also display labels and
3505file boundaries in addition to sections. Use `l', `i', and `c' keys.
3506
3507*** Labels derived from context (the section heading) are now
3508lowercase by default. To make the label legal in LaTeX, latin-1
3509characters will lose their accent. All Mule characters will be
3510removed from the label.
3511
3512*** The automatic display of cross reference information can also use
3513a window instead of the echo area. See variable `reftex-auto-view-crossref'.
3514
3515*** kpsewhich can be used by RefTeX to find TeX and BibTeX files. See the
3516customization group `reftex-finding-files'.
3517
3518*** The option `reftex-bibfile-ignore-list' has been renamed to
3519`reftex-bibfile-ignore-regexps' and indeed can be fed with regular
79214ddf 3520expressions.
a933dad1
DL
3521
3522*** Multiple Selection buffers are now hidden buffers.
3523
3524** New/deleted modes and packages
3525
3526*** The package snmp-mode.el provides major modes for editing SNMP and
3527SNMPv2 MIBs. It has entries on `auto-mode-alist'.
3528
3529*** The package sql.el provides a major mode, M-x sql-mode, for
3530editing SQL files, and M-x sql-interactive-mode for interacting with
3531SQL interpreters. It has an entry on `auto-mode-alist'.
3532
3533*** M-x highlight-changes-mode provides a minor mode displaying buffer
3534changes with a special face.
3535
3536*** ispell4.el has been deleted. It got in the way of ispell.el and
3537this was hard to fix reliably. It has long been obsolete -- use
3538Ispell 3.1 and ispell.el.
3539\f
3540* MS-DOS changes in Emacs 20.4
3541
3542** Emacs compiled for MS-DOS now supports MULE features better.
3543This includes support for display of all ISO 8859-N character sets,
3544conversion to and from IBM codepage encoding of non-ASCII characters,
3545and automatic setup of the MULE environment at startup. For details,
3546check out the section `MS-DOS and MULE' in the manual.
3547
3548The MS-DOS installation procedure automatically configures and builds
3549Emacs with input method support if it finds an unpacked Leim
3550distribution when the config.bat script is run.
3551
3552** Formerly, the value of lpr-command did not affect printing on
3553MS-DOS unless print-region-function was set to nil, but now it
3554controls whether an external program is invoked or output is written
3555directly to a printer port. Similarly, in the previous version of
3556Emacs, the value of ps-lpr-command did not affect PostScript printing
3557on MS-DOS unless ps-printer-name was set to something other than a
3558string (eg. t or `pipe'), but now it controls whether an external
3559program is used. (These changes were made so that configuration of
3560printing variables would be almost identical across all platforms.)
3561
3562** In the previous version of Emacs, PostScript and non-PostScript
3563output was piped to external programs, but because most print programs
3564available for MS-DOS and MS-Windows cannot read data from their standard
3565input, on those systems the data to be output is now written to a
3566temporary file whose name is passed as the last argument to the external
3567program.
3568
3569An exception is made for `print', a standard program on Windows NT,
3570and `nprint', a standard program on Novell Netware. For both of these
3571programs, the command line is constructed in the appropriate syntax
3572automatically, using only the value of printer-name or ps-printer-name
3573as appropriate--the value of the relevant `-switches' variable is
3574ignored, as both programs have no useful switches.
3575
3576** The value of the variable dos-printer (cf. dos-ps-printer), if it has
3577a value, overrides the value of printer-name (cf. ps-printer-name), on
3578MS-DOS and MS-Windows only. This has been true since version 20.3, but
3579was not documented clearly before.
3580
3581** All the Emacs games now work on MS-DOS terminals.
3582This includes Tetris and Snake.
3583\f
3584* Lisp changes in Emacs 20.4
3585
3586** New functions line-beginning-position and line-end-position
3587return the position of the beginning or end of the current line.
3588They both accept an optional argument, which has the same
3589meaning as the argument to beginning-of-line or end-of-line.
3590
3591** find-file and allied functions now have an optional argument
3592WILDCARD. If this is non-nil, they do wildcard processing,
3593and visit all files that match the wildcard pattern.
3594
3595** Changes in the file-attributes function.
3596
3597*** The file size returned by file-attributes may be an integer or a float.
3598It is an integer if the size fits in a Lisp integer, float otherwise.
3599
3600*** The inode number returned by file-attributes may be an integer (if
3601the number fits in a Lisp integer) or a cons cell containing two
3602integers.
3603
3604** The new function directory-files-and-attributes returns a list of
3605files in a directory and their attributes. It accepts the same
3606arguments as directory-files and has similar semantics, except that
3607file names and attributes are returned.
3608
3609** The new function file-attributes-lessp is a helper function for
3610sorting the list generated by directory-files-and-attributes. It
3611accepts two arguments, each a list of a file name and its atttributes.
3612It compares the file names of each according to string-lessp and
3613returns the result.
3614
3615** The new function file-expand-wildcards expands a wildcard-pattern
3616to produce a list of existing files that match the pattern.
3617
3618** New functions for base64 conversion:
3619
3620The function base64-encode-region converts a part of the buffer
3621into the base64 code used in MIME. base64-decode-region
3622performs the opposite conversion. Line-breaking is supported
3623optionally.
3624
3625Functions base64-encode-string and base64-decode-string do a similar
3626job on the text in a string. They return the value as a new string.
3627
3628**
3629The new function process-running-child-p
3630will tell you if a subprocess has given control of its
3631terminal to its own child process.
3632
3633** interrupt-process and such functions have a new feature:
3634when the second argument is `lambda', they send a signal
3635to the running child of the subshell, if any, but if the shell
3636itself owns its terminal, no signal is sent.
3637
3638** There are new widget types `plist' and `alist' which can
3639be used for customizing variables whose values are plists or alists.
3640
3641** easymenu.el Now understands `:key-sequence' and `:style button'.
3642:included is an alias for :visible.
3643
3644easy-menu-add-item now understands the values returned by
3645easy-menu-remove-item and easy-menu-item-present-p. This can be used
3646to move or copy menu entries.
3647
3648** Multibyte editing changes
3649
3650*** The definitions of sref and char-bytes are changed. Now, sref is
3651an alias of aref and char-bytes always returns 1. This change is to
3652make some Emacs Lisp code which works on 20.2 and earlier also
3653work on the latest Emacs. Such code uses a combination of sref and
3654char-bytes in a loop typically as below:
3655 (setq char (sref str idx)
3656 idx (+ idx (char-bytes idx)))
3657The byte-compiler now warns that this is obsolete.
3658
3659If you want to know how many bytes a specific multibyte character
3660(say, CH) occupies in a multibyte buffer, use this code:
3661 (charset-bytes (char-charset ch))
3662
3663*** In multibyte mode, when you narrow a buffer to some region, and the
3664region is preceded or followed by non-ASCII codes, inserting or
3665deleting at the head or the end of the region may signal this error:
3666
3667 Byte combining across boundary of accessible buffer text inhibitted
3668
3669This is to avoid some bytes being combined together into a character
3670across the boundary.
3671
3672*** The functions find-charset-region and find-charset-string include
3673`unknown' in the returned list in the following cases:
3674 o The current buffer or the target string is unibyte and
3675 contains 8-bit characters.
3676 o The current buffer or the target string is multibyte and
3677 contains invalid characters.
3678
3679*** The functions decode-coding-region and encode-coding-region remove
3680text properties of the target region. Ideally, they should correctly
3681preserve text properties, but for the moment, it's hard. Removing
3682text properties is better than preserving them in a less-than-correct
3683way.
3684
3685*** prefer-coding-system sets EOL conversion of default coding systems.
3686If the argument to prefer-coding-system specifies a certain type of
3687end of line conversion, the default coding systems set by
3688prefer-coding-system will specify that conversion type for end of line.
3689
3690*** The new function thai-compose-string can be used to properly
3691compose Thai characters in a string.
3692
3693** The primitive `define-prefix-command' now takes an optional third
3694argument NAME, which should be a string. It supplies the menu name
3695for the created keymap. Keymaps created in order to be displayed as
3696menus should always use the third argument.
3697
3698** The meanings of optional second arguments for read-char,
3699read-event, and read-char-exclusive are flipped. Now the second
3700arguments are INHERIT-INPUT-METHOD. These functions use the current
3701input method (if any) if and only if INHERIT-INPUT-METHOD is non-nil.
3702
3703** The new function clear-this-command-keys empties out the contents
3704of the vector that (this-command-keys) returns. This is useful in
3705programs that read passwords, to prevent the passwords from echoing
3706inadvertently as part of the next command in certain cases.
3707
3708** The new macro `with-temp-message' displays a temporary message in
3709the echo area, while executing some Lisp code. Like `progn', it
3710returns the value of the last form, but it also restores the previous
3711echo area contents.
3712
3713 (with-temp-message MESSAGE &rest BODY)
3714
3715** The function `require' now takes an optional third argument
3716NOERROR. If it is non-nil, then there is no error if the
3717requested feature cannot be loaded.
3718
3719** In the function modify-face, an argument of (nil) for the
3720foreground color, background color or stipple pattern
79214ddf 3721means to clear out that attribute.
a933dad1
DL
3722
3723** The `outer-window-id' frame property of an X frame
3724gives the window number of the outermost X window for the frame.
3725
3726** Temporary buffers made with with-output-to-temp-buffer are now
3727read-only by default, and normally use the major mode Help mode
3728unless you put them in some other non-Fundamental mode before the
3729end of with-output-to-temp-buffer.
3730
3731** The new functions gap-position and gap-size return information on
3732the gap of the current buffer.
3733
3734** The new functions position-bytes and byte-to-position provide a way
3735to convert between character positions and byte positions in the
3736current buffer.
3737
3738** vc.el defines two new macros, `edit-vc-file' and `with-vc-file', to
3739facilitate working with version-controlled files from Lisp programs.
3740These macros check out a given file automatically if needed, and check
3741it back in after any modifications have been made.
3742\f
3743* Installation Changes in Emacs 20.3
3744
3745** The default value of load-path now includes most subdirectories of
3746the site-specific directories /usr/local/share/emacs/site-lisp and
3747/usr/local/share/emacs/VERSION/site-lisp, in addition to those
3748directories themselves. Both immediate subdirectories and
3749subdirectories multiple levels down are added to load-path.
3750
3751Not all subdirectories are included, though. Subdirectories whose
3752names do not start with a letter or digit are excluded.
3753Subdirectories named RCS or CVS are excluded. Also, a subdirectory
3754which contains a file named `.nosearch' is excluded. You can use
3755these methods to prevent certain subdirectories from being searched.
3756
3757Emacs finds these subdirectories and adds them to load-path when it
3758starts up. While it would be cleaner to find the subdirectories each
3759time Emacs loads a file, that would be much slower.
3760
3761This feature is an incompatible change. If you have stored some Emacs
3762Lisp files in a subdirectory of the site-lisp directory specifically
3763to prevent them from being used, you will need to rename the
3764subdirectory to start with a non-alphanumeric character, or create a
3765`.nosearch' file in it, in order to continue to achieve the desired
3766results.
3767
3768** Emacs no longer includes an old version of the C preprocessor from
3769GCC. This was formerly used to help compile Emacs with C compilers
3770that had limits on the significant length of an identifier, but in
3771fact we stopped supporting such compilers some time ago.
3772\f
3773* Changes in Emacs 20.3
3774
3775** The new command C-x z (repeat) repeats the previous command
3776including its argument. If you repeat the z afterward,
3777it repeats the command additional times; thus, you can
3778perform many repetitions with one keystroke per repetition.
3779
3780** Emacs now supports "selective undo" which undoes only within a
3781specified region. To do this, set point and mark around the desired
3782region and type C-u C-x u (or C-u C-_). You can then continue undoing
3783further, within the same region, by repeating the ordinary undo
3784command C-x u or C-_. This will keep undoing changes that were made
3785within the region you originally specified, until either all of them
3786are undone, or it encounters a change which crosses the edge of that
3787region.
3788
3789In Transient Mark mode, undoing when a region is active requests
3790selective undo.
3791
3792** If you specify --unibyte when starting Emacs, then all buffers are
3793unibyte, except when a Lisp program specifically creates a multibyte
3794buffer. Setting the environment variable EMACS_UNIBYTE has the same
3795effect. The --no-unibyte option overrides EMACS_UNIBYTE and directs
3796Emacs to run normally in multibyte mode.
3797
3798The option --unibyte does not affect the reading of Emacs Lisp files,
3799though. If you want a Lisp file to be read in unibyte mode, use
3800-*-unibyte: t;-*- on its first line. That will force Emacs to
3801load that file in unibyte mode, regardless of how Emacs was started.
3802
3803** toggle-enable-multibyte-characters no longer has a key binding and
3804no longer appears in the menu bar. We've realized that changing the
3805enable-multibyte-characters variable in an existing buffer is
3806something that most users not do.
3807
3808** You can specify a coding system to use for the next cut or paste
3809operations through the window system with the command C-x RET X.
3810The coding system can make a difference for communication with other
3811applications.
3812
3813C-x RET x specifies a coding system for all subsequent cutting and
3814pasting operations.
3815
3816** You can specify the printer to use for commands that do printing by
3817setting the variable `printer-name'. Just what a printer name looks
3818like depends on your operating system. You can specify a different
3819printer for the Postscript printing commands by setting
3820`ps-printer-name'.
3821
3822** Emacs now supports on-the-fly spell checking by the means of a
3823minor mode. It is called M-x flyspell-mode. You don't have to remember
3824any other special commands to use it, and you will hardly notice it
3825except when you make a spelling error. Flyspell works by highlighting
3826incorrect words as soon as they are completed or as soon as the cursor
3827hits a new word.
3828
3829Flyspell mode works with whichever dictionary you have selected for
3830Ispell in Emacs. In TeX mode, it understands TeX syntax so as not
3831to be confused by TeX commands.
3832
3833You can correct a misspelled word by editing it into something
3834correct. You can also correct it, or accept it as correct, by
3835clicking on the word with Mouse-2; that gives you a pop-up menu
3836of various alternative replacements and actions.
3837
3838Flyspell mode also proposes "automatic" corrections. M-TAB replaces
3839the current misspelled word with a possible correction. If several
3840corrections are made possible, M-TAB cycles through them in
3841alphabetical order, or in order of decreasing likelihood if
3842flyspell-sort-corrections is nil.
3843
3844Flyspell mode also flags an error when a word is repeated, if
3845flyspell-mark-duplications-flag is non-nil.
3846
3847** Changes in input method usage.
3848
3849Now you can use arrow keys (right, left, down, up) for selecting among
3850the alternatives just the same way as you do by C-f, C-b, C-n, and C-p
3851respectively.
3852
3853You can use the ENTER key to accept the current conversion.
3854
3855If you type TAB to display a list of alternatives, you can select one
3856of the alternatives with Mouse-2.
3857
3858The meaning of the variable `input-method-verbose-flag' is changed so
3859that you can set it to t, nil, `default', or `complex-only'.
3860
3861 If the value is nil, extra guidance is never given.
3862
3863 If the value is t, extra guidance is always given.
3864
3865 If the value is `complex-only', extra guidance is always given only
3866 when you are using complex input methods such as chinese-py.
3867
3868 If the value is `default' (this is the default), extra guidance is
79214ddf 3869 given in the following case:
a933dad1
DL
3870 o When you are using a complex input method.
3871 o When you are using a simple input method but not in the minibuffer.
3872
3873If you are using Emacs through a very slow line, setting
3874input-method-verbose-flag to nil or to complex-only is a good choice,
3875and if you are using an input method you are not familiar with,
3876setting it to t is helpful.
3877
3878The old command select-input-method is now called set-input-method.
3879
3880In the language environment "Korean", you can use the following
3881keys:
3882 Shift-SPC toggle-korean-input-method
3883 C-F9 quail-hangul-switch-symbol-ksc
3884 F9 quail-hangul-switch-hanja
3885These key bindings are canceled when you switch to another language
3886environment.
3887
3888** The minibuffer history of file names now records the specified file
3889names, not the entire minibuffer input. For example, if the
3890minibuffer starts out with /usr/foo/, you might type in /etc/passwd to
3891get
3892
3893 /usr/foo//etc/passwd
3894
3895which stands for the file /etc/passwd.
3896
3897Formerly, this used to put /usr/foo//etc/passwd in the history list.
3898Now this puts just /etc/passwd in the history list.
3899
3900** If you are root, Emacs sets backup-by-copying-when-mismatch to t
3901at startup, so that saving a file will be sure to preserve
3902its owner and group.
3903
3904** find-func.el can now also find the place of definition of Emacs
3905Lisp variables in user-loaded libraries.
3906
3907** C-x r t (string-rectangle) now deletes the existing rectangle
3908contents before inserting the specified string on each line.
3909
3910** There is a new command delete-whitespace-rectangle
3911which deletes whitespace starting from a particular column
3912in all the lines on a rectangle. The column is specified
3913by the left edge of the rectangle.
3914
3915** You can now store a number into a register with C-u NUMBER C-x r n REG,
3916increment it by INC with C-u INC C-x r + REG (to increment by one, omit
3917C-u INC), and insert it in the buffer with C-x r g REG. This is useful
3918for writing keyboard macros.
3919
3920** The new command M-x speedbar displays a frame in which directories,
3921files, and tags can be displayed, manipulated, and jumped to. The
3922frame defaults to 20 characters in width, and is the same height as
3923the frame that it was started from. Some major modes define
3924additional commands for the speedbar, including Rmail, GUD/GDB, and
3925info.
3926
3927** query-replace-regexp is now bound to C-M-%.
3928
3929** In Transient Mark mode, when the region is active, M-x
3930query-replace and the other replace commands now operate on the region
3931contents only.
3932
3933** M-x write-region, when used interactively, now asks for
3934confirmation before overwriting an existing file. When you call
3935the function from a Lisp program, a new optional argument CONFIRM
3936says whether to ask for confirmation in this case.
3937
3938** If you use find-file-literally and the file is already visited
3939non-literally, the command asks you whether to revisit the file
3940literally. If you say no, it signals an error.
3941
3942** Major modes defined with the "derived mode" feature
3943now use the proper name for the mode hook: WHATEVER-mode-hook.
3944Formerly they used the name WHATEVER-mode-hooks, but that is
3945inconsistent with Emacs conventions.
3946
3947** shell-command-on-region (and shell-command) reports success or
3948failure if the command produces no output.
3949
3950** Set focus-follows-mouse to nil if your window system or window
3951manager does not transfer focus to another window when you just move
3952the mouse.
3953
3954** mouse-menu-buffer-maxlen has been renamed to
3955mouse-buffer-menu-maxlen to be consistent with the other related
3956function and variable names.
3957
3958** The new variable auto-coding-alist specifies coding systems for
3959reading specific files. This has higher priority than
3960file-coding-system-alist.
3961
3962** If you set the variable unibyte-display-via-language-environment to
3963t, then Emacs displays non-ASCII characters are displayed by
3964converting them to the equivalent multibyte characters according to
3965the current language environment. As a result, they are displayed
3966according to the current fontset.
3967
3968** C-q's handling of codes in the range 0200 through 0377 is changed.
3969
3970The codes in the range 0200 through 0237 are inserted as one byte of
3971that code regardless of the values of nonascii-translation-table and
3972nonascii-insert-offset.
3973
3974For the codes in the range 0240 through 0377, if
3975enable-multibyte-characters is non-nil and nonascii-translation-table
3976nor nonascii-insert-offset can't convert them to valid multibyte
3977characters, they are converted to Latin-1 characters.
3978
3979** If you try to find a file that is not read-accessible, you now get
3980an error, rather than an empty buffer and a warning.
3981
3982** In the minibuffer history commands M-r and M-s, an upper case
3983letter in the regular expression forces case-sensitive search.
3984
3985** In the *Help* buffer, cross-references to commands and variables
3986are inferred and hyperlinked. Use C-h m in Help mode for the relevant
3987command keys.
3988
3989** M-x apropos-command, with a prefix argument, no longer looks for
3990user option variables--instead it looks for noninteractive functions.
3991
3992Meanwhile, the command apropos-variable normally searches for
3993user option variables; with a prefix argument, it looks at
3994all variables that have documentation.
3995
3996** When you type a long line in the minibuffer, and the minibuffer
3997shows just one line, automatically scrolling works in a special way
3998that shows you overlap with the previous line of text. The variable
3999minibuffer-scroll-overlap controls how many characters of overlap
4000it should show; the default is 20.
4001
4002Meanwhile, Resize Minibuffer mode is still available; in that mode,
4003the minibuffer grows taller (up to a point) as needed to show the whole
4004of your input.
4005
4006** The new command M-x customize-changed-options lets you customize
4007all the options whose meanings or default values have changed in
4008recent Emacs versions. You specify a previous Emacs version number as
4009argument, and the command creates a customization buffer showing all
4010the customizable options which were changed since that version.
4011Newly added options are included as well.
4012
4013If you don't specify a particular version number argument,
4014then the customization buffer shows all the customizable options
4015for which Emacs versions of changes are recorded.
4016
4017This function is also bound to the Changed Options entry in the
4018Customize menu.
4019
4020** When you run M-x grep with a prefix argument, it figures out
4021the tag around point and puts that into the default grep command.
4022
4023** The new command M-* (pop-tag-mark) pops back through a history of
4024buffer positions from which M-. or other tag-finding commands were
4025invoked.
4026
4027** The new variable comment-padding specifies the number of spaces
4028that `comment-region' will insert before the actual text of the comment.
4029The default is 1.
4030
4031** In Fortran mode the characters `.', `_' and `$' now have symbol
4032syntax, not word syntax. Fortran mode now supports `imenu' and has
4033new commands fortran-join-line (M-^) and fortran-narrow-to-subprogram
4034(C-x n d). M-q can be used to fill a statement or comment block
4035sensibly.
4036
4037** GUD now supports jdb, the Java debugger, and pdb, the Python debugger.
4038
4039** If you set the variable add-log-keep-changes-together to a non-nil
4040value, the command `C-x 4 a' will automatically notice when you make
4041two entries in one day for one file, and combine them.
4042
4043** You can use the command M-x diary-mail-entries to mail yourself a
4044reminder about upcoming diary entries. See the documentation string
4045for a sample shell script for calling this function automatically
4046every night.
4047
7464346d
GM
4048** Desktop changes
4049
4050*** All you need to do to enable use of the Desktop package, is to set
a933dad1
DL
4051the variable desktop-enable to t with Custom.
4052
7464346d
GM
4053*** Minor modes are now restored. Which minor modes are restored
4054and how modes are restored is controlled by `desktop-minor-mode-table'.
4055
a933dad1
DL
4056** There is no need to do anything special, now, to enable Gnus to
4057read and post multi-lingual articles.
4058
4059** Outline mode has now support for showing hidden outlines when
4060doing an isearch. In order for this to happen search-invisible should
4061be set to open (the default). If an isearch match is inside a hidden
4062outline the outline is made visible. If you continue pressing C-s and
4063the match moves outside the formerly invisible outline, the outline is
79214ddf 4064made invisible again.
a933dad1
DL
4065
4066** Mail reading and sending changes
4067
4068*** The Rmail e command now switches to displaying the whole header of
4069the message before it lets you edit the message. This is so that any
4070changes you make in the header will not be lost if you subsequently
4071toggle.
4072
4073*** The w command in Rmail, which writes the message body into a file,
4074now works in the summary buffer as well. (The command to delete the
4075summary buffer is now Q.) The default file name for the w command, if
4076the message has no subject, is stored in the variable
4077rmail-default-body-file.
4078
4079*** Most of the commands and modes that operate on mail and netnews no
4080longer depend on the value of mail-header-separator. Instead, they
4081handle whatever separator the buffer happens to use.
4082
4083*** If you set mail-signature to a value which is not t, nil, or a string,
4084it should be an expression. When you send a message, this expression
4085is evaluated to insert the signature.
4086
4087*** The new Lisp library feedmail.el (version 8) enhances processing of
4088outbound email messages. It works in coordination with other email
4089handling packages (e.g., rmail, VM, gnus) and is responsible for
4090putting final touches on messages and actually submitting them for
4091transmission. Users of the emacs program "fakemail" might be
4092especially interested in trying feedmail.
4093
4094feedmail is not enabled by default. See comments at the top of
4095feedmail.el for set-up instructions. Among the bigger features
4096provided by feedmail are:
4097
4098**** you can park outgoing messages into a disk-based queue and
4099stimulate sending some or all of them later (handy for laptop users);
4100there is also a queue for draft messages
4101
4102**** you can get one last look at the prepped outbound message and
4103be prompted for confirmation
4104
4105**** does smart filling of address headers
4106
4107**** can generate a MESSAGE-ID: line and a DATE: line; the date can be
4108the time the message was written or the time it is being sent; this
4109can make FCC copies more closely resemble copies that recipients get
4110
4111**** you can specify an arbitrary function for actually transmitting
4112the message; included in feedmail are interfaces for /bin/[r]mail,
4113/usr/lib/sendmail, and elisp smtpmail; it's easy to write a new
4114function for something else (10-20 lines of elisp)
4115
4116** Dired changes
4117
4118*** The Dired function dired-do-toggle, which toggles marked and unmarked
4119files, is now bound to "t" instead of "T".
4120
4121*** dired-at-point has been added to ffap.el. It allows one to easily
4122run Dired on the directory name at point.
4123
4124*** Dired has a new command: %g. It searches the contents of
4125files in the directory and marks each file that contains a match
4126for a specified regexp.
4127
4128** VC Changes
4129
4130*** New option vc-ignore-vc-files lets you turn off version control
4131conveniently.
4132
4133*** VC Dired has been completely rewritten. It is now much
4134faster, especially for CVS, and works very similar to ordinary
4135Dired.
4136
4137VC Dired is invoked by typing C-x v d and entering the name of the
4138directory to display. By default, VC Dired gives you a recursive
4139listing of all files at or below the given directory which are
4140currently locked (for CVS, all files not up-to-date are shown).
4141
4142You can change the listing format by setting vc-dired-recurse to nil,
4143then it shows only the given directory, and you may also set
4144vc-dired-terse-display to nil, then it shows all files under version
4145control plus the names of any subdirectories, so that you can type `i'
4146on such lines to insert them manually, as in ordinary Dired.
4147
4148All Dired commands operate normally in VC Dired, except for `v', which
4149is redefined as the version control prefix. That means you may type
4150`v l', `v =' etc. to invoke `vc-print-log', `vc-diff' and the like on
4151the file named in the current Dired buffer line. `v v' invokes
4152`vc-next-action' on this file, or on all files currently marked.
4153
4154The new command `v t' (vc-dired-toggle-terse-mode) allows you to
4155toggle between terse display (only locked files) and full display (all
79214ddf 4156VC files plus subdirectories). There is also a special command,
a933dad1
DL
4157`* l', to mark all files currently locked.
4158
4159Giving a prefix argument to C-x v d now does the same thing as in
4160ordinary Dired: it allows you to supply additional options for the ls
4161command in the minibuffer, to fine-tune VC Dired's output.
4162
4163*** Under CVS, if you merge changes from the repository into a working
4164file, and CVS detects conflicts, VC now offers to start an ediff
4165session to resolve them.
4166
4167Alternatively, you can use the new command `vc-resolve-conflicts' to
4168resolve conflicts in a file at any time. It works in any buffer that
4169contains conflict markers as generated by rcsmerge (which is what CVS
4170uses as well).
4171
4172*** You can now transfer changes between branches, using the new
4173command vc-merge (C-x v m). It is implemented for RCS and CVS. When
4174you invoke it in a buffer under version-control, you can specify
4175either an entire branch or a pair of versions, and the changes on that
4176branch or between the two versions are merged into the working file.
4177If this results in any conflicts, they may be resolved interactively,
4178using ediff.
4179
4180** Changes in Font Lock
4181
4182*** The face and variable previously known as font-lock-reference-face
4183are now called font-lock-constant-face to better reflect their typical
4184use for highlighting constants and labels. (Its face properties are
4185unchanged.) The variable font-lock-reference-face remains for now for
4186compatibility reasons, but its value is font-lock-constant-face.
4187
4188** Frame name display changes
4189
4190*** The command set-frame-name lets you set the name of the current
4191frame. You can use the new command select-frame-by-name to select and
4192raise a frame; this is mostly useful on character-only terminals, or
4193when many frames are invisible or iconified.
4194
4195*** On character-only terminal (not a window system), changing the
4196frame name is now reflected on the mode line and in the Buffers/Frames
4197menu.
4198
4199** Comint (subshell) changes
4200
4201*** In Comint modes, the commands to kill, stop or interrupt a
4202subjob now also kill pending input. This is for compatibility
4203with ordinary shells, where the signal characters do this.
4204
4205*** There are new commands in Comint mode.
4206
4207C-c C-x fetches the "next" line from the input history;
4208that is, the line after the last line you got.
4209You can use this command to fetch successive lines, one by one.
4210
4211C-c SPC accumulates lines of input. More precisely, it arranges to
4212send the current line together with the following line, when you send
4213the following line.
4214
4215C-c C-a if repeated twice consecutively now moves to the process mark,
4216which separates the pending input from the subprocess output and the
4217previously sent input.
4218
4219C-c M-r now runs comint-previous-matching-input-from-input;
4220it searches for a previous command, using the current pending input
4221as the search string.
4222
4223*** New option compilation-scroll-output can be set to scroll
4224automatically in compilation-mode windows.
4225
4226** C mode changes
4227
4228*** Multiline macros are now handled, both as they affect indentation,
4229and as recognized syntax. New syntactic symbol cpp-macro-cont is
4230assigned to second and subsequent lines of a multiline macro
79214ddf 4231definition.
a933dad1
DL
4232
4233*** A new style "user" which captures all non-hook-ified
4234(i.e. top-level) .emacs file variable settings and customizations.
4235Style "cc-mode" is an alias for "user" and is deprecated. "gnu"
4236style is still the default however.
4237
4238*** "java" style now conforms to Sun's JDK coding style.
4239
4240*** There are new commands c-beginning-of-defun, c-end-of-defun which
4241are alternatives which you could bind to C-M-a and C-M-e if you prefer
4242them. They do not have key bindings by default.
4243
4244*** New and improved implementations of M-a (c-beginning-of-statement)
4245and M-e (c-end-of-statement).
4246
4247*** C++ namespace blocks are supported, with new syntactic symbols
4248namespace-open, namespace-close, and innamespace.
4249
4250*** File local variable settings of c-file-style and c-file-offsets
4251makes the style variables local to that buffer only.
4252
4253*** New indentation functions c-lineup-close-paren,
4254c-indent-one-line-block, c-lineup-dont-change.
4255
4256*** Improvements (hopefully!) to the way CC Mode is loaded. You
4257should now be able to do a (require 'cc-mode) to get the entire
4258package loaded properly for customization in your .emacs file. A new
4259variable c-initialize-on-load controls this and is t by default.
4260
4261** Changes to hippie-expand.
4262
79214ddf 4263*** New customization variable `hippie-expand-dabbrev-skip-space'. If
a933dad1
DL
4264non-nil, trailing spaces may be included in the abbreviation to search for,
4265which then gives the same behavior as the original `dabbrev-expand'.
4266
4267*** New customization variable `hippie-expand-dabbrev-as-symbol'. If
4268non-nil, characters of syntax '_' is considered part of the word when
4269expanding dynamically.
4270
4271*** New customization variable `hippie-expand-no-restriction'. If
4272non-nil, narrowed buffers are widened before they are searched.
4273
4274*** New customization variable `hippie-expand-only-buffers'. If
4275non-empty, buffers searched are restricted to the types specified in
4276this list. Useful for example when constructing new special-purpose
4277expansion functions with `make-hippie-expand-function'.
4278
4279*** Text properties of the expansion are no longer copied.
4280
4281** Changes in BibTeX mode.
4282
4283*** Any titleword matching a regexp in the new variable
4284bibtex-autokey-titleword-ignore (case sensitive) is ignored during
4285automatic key generation. This replaces variable
4286bibtex-autokey-titleword-first-ignore, which only checked for matches
4287against the first word in the title.
4288
4289*** Autokey generation now uses all words from the title, not just
4290capitalized words. To avoid conflicts with existing customizations,
4291bibtex-autokey-titleword-ignore is set up such that words starting with
79214ddf 4292lowerkey characters will still be ignored. Thus, if you want to use
a933dad1 4293lowercase words from the title, you will have to overwrite the
79214ddf 4294bibtex-autokey-titleword-ignore standard setting.
a933dad1
DL
4295
4296*** Case conversion of names and title words for automatic key
4297generation is more flexible. Variable bibtex-autokey-preserve-case is
4298replaced by bibtex-autokey-titleword-case-convert and
4299bibtex-autokey-name-case-convert.
4300
4301** Changes in vcursor.el.
4302
4303*** Support for character terminals is available: there is a new keymap
4304and the vcursor will appear as an arrow between buffer text. A
4305variable `vcursor-interpret-input' allows input from the vcursor to be
4306entered exactly as if typed. Numerous functions, including
4307`vcursor-compare-windows', have been rewritten to improve consistency
4308in the selection of windows and corresponding keymaps.
4309
4310*** vcursor options can now be altered with M-x customize under the
4311Editing group once the package is loaded.
4312
4313*** Loading vcursor now does not define keys by default, as this is
4314generally a bad side effect. Use M-x customize to set
4315vcursor-key-bindings to t to restore the old behaviour.
4316
4317*** vcursor-auto-disable can be `copy', which turns off copying from the
4318vcursor, but doesn't disable it, after any non-vcursor command.
4319
4320** Ispell changes.
4321
79214ddf
FP
4322*** You can now spell check comments and strings in the current
4323buffer with M-x ispell-comments-and-strings. Comments and strings
a933dad1
DL
4324are identified by syntax tables in effect.
4325
4326*** Generic region skipping implemented.
4327A single buffer can be broken into a number of regions where text will
4328and will not be checked. The definitions of the regions can be user
4329defined. New applications and improvements made available by this
79214ddf 4330include:
a933dad1
DL
4331
4332 o URLs are automatically skipped
4333 o EMail message checking is vastly improved.
4334
4335*** Ispell can highlight the erroneous word even on non-window terminals.
4336
4337** Changes to RefTeX mode
4338
4339RefTeX has been updated in order to make it more usable with very
4340large projects (like a several volume math book). The parser has been
4341re-written from scratch. To get maximum speed from RefTeX, check the
4342section `Optimizations' in the manual.
4343
4344*** New recursive parser.
4345
4346The old version of RefTeX created a single large buffer containing the
4347entire multifile document in order to parse the document. The new
4348recursive parser scans the individual files.
4349
4350*** Parsing only part of a document.
79214ddf 4351
a933dad1
DL
4352Reparsing of changed document parts can now be made faster by enabling
4353partial scans. To use this feature, read the documentation string of
4354the variable `reftex-enable-partial-scans' and set the variable to t.
4355
4356 (setq reftex-enable-partial-scans t)
4357
4358*** Storing parsing information in a file.
4359
4360This can improve startup times considerably. To turn it on, use
4361
4362 (setq reftex-save-parse-info t)
4363
4364*** Using multiple selection buffers
4365
4366If the creation of label selection buffers is too slow (this happens
4367for large documents), you can reuse these buffers by setting
4368
4369 (setq reftex-use-multiple-selection-buffers t)
4370
4371*** References to external documents.
4372
4373The LaTeX package `xr' allows to cross-reference labels in external
4374documents. RefTeX can provide information about the external
4375documents as well. To use this feature, set up the \externaldocument
4376macros required by the `xr' package and rescan the document with
4377RefTeX. The external labels can then be accessed with the `x' key in
4378the selection buffer provided by `reftex-reference' (bound to `C-c )').
4379The `x' key also works in the table of contents buffer.
4380
4381*** Many more labeled LaTeX environments are recognized by default.
4382
4383The builtin command list now covers all the standard LaTeX commands,
4384and all of the major packages included in the LaTeX distribution.
4385
4386Also, RefTeX now understands the \appendix macro and changes
4387the enumeration of sections in the *toc* buffer accordingly.
4388
4389*** Mouse support for selection and *toc* buffers
4390
4391The mouse can now be used to select items in the selection and *toc*
4392buffers. See also the new option `reftex-highlight-selection'.
4393
4394*** New keymaps for selection and table of contents modes.
4395
4396The selection processes for labels and citation keys, and the table of
4397contents buffer now have their own keymaps: `reftex-select-label-map',
4398`reftex-select-bib-map', `reftex-toc-map'. The selection processes
4399have a number of new keys predefined. In particular, TAB lets you
4400enter a label with completion. Check the on-the-fly help (press `?'
4401at the selection prompt) or read the Info documentation to find out
4402more.
4403
4404*** Support for the varioref package
4405
4406The `v' key in the label selection buffer toggles \ref versus \vref.
4407
4408*** New hooks
4409
4410Three new hooks can be used to redefine the way labels, references,
4411and citations are created. These hooks are
4412`reftex-format-label-function', `reftex-format-ref-function',
4413`reftex-format-cite-function'.
4414
4415*** Citations outside LaTeX
4416
4417The command `reftex-citation' may also be used outside LaTeX (e.g. in
4418a mail buffer). See the Info documentation for details.
4419
4420*** Short context is no longer fontified.
4421
4422The short context in the label menu no longer copies the
4423fontification from the text in the buffer. If you prefer it to be
4424fontified, use
4425
4426 (setq reftex-refontify-context t)
4427
4428** file-cache-minibuffer-complete now accepts a prefix argument.
4429With a prefix argument, it does not try to do completion of
4430the file name within its directory; it only checks for other
4431directories that contain the same file name.
4432
4433Thus, given the file name Makefile, and assuming that a file
4434Makefile.in exists in the same directory, ordinary
4435file-cache-minibuffer-complete will try to complete Makefile to
4436Makefile.in and will therefore never look for other directories that
4437have Makefile. A prefix argument tells it not to look for longer
4438names such as Makefile.in, so that instead it will look for other
4439directories--just as if the name were already complete in its present
4440directory.
4441
4442** New modes and packages
4443
4444*** There is a new alternative major mode for Perl, Cperl mode.
4445It has many more features than Perl mode, and some people prefer
4446it, but some do not.
4447
4448*** There is a new major mode, M-x vhdl-mode, for editing files of VHDL
4449code.
4450
4451*** M-x which-function-mode enables a minor mode that displays the
4452current function name continuously in the mode line, as you move
4453around in a buffer.
4454
4455Which Function mode is effective in major modes which support Imenu.
4456
4457*** Gametree is a major mode for editing game analysis trees. The author
4458uses it for keeping notes about his postal Chess games, but it should
4459be helpful for other two-player games as well, as long as they have an
4460established system of notation similar to Chess.
4461
4462*** The new minor mode checkdoc-minor-mode provides Emacs Lisp
4463documentation string checking for style and spelling. The style
4464guidelines are found in the Emacs Lisp programming manual.
4465
4466*** The net-utils package makes some common networking features
4467available in Emacs. Some of these functions are wrappers around
4468system utilities (ping, nslookup, etc); others are implementations of
4469simple protocols (finger, whois) in Emacs Lisp. There are also
4470functions to make simple connections to TCP/IP ports for debugging and
4471the like.
4472
4473*** highlight-changes-mode is a minor mode that uses colors to
4474identify recently changed parts of the buffer text.
4475
4476*** The new package `midnight' lets you specify things to be done
4477within Emacs at midnight--by default, kill buffers that you have not
4478used in a considerable time. To use this feature, customize
4479the user option `midnight-mode' to t.
4480
4481*** The file generic-x.el defines a number of simple major modes.
4482
4483 apache-generic-mode: For Apache and NCSA httpd configuration files
4484 samba-generic-mode: Samba configuration files
4485 fvwm-generic-mode: For fvwm initialization files
4486 x-resource-generic-mode: For X resource files
4487 hosts-generic-mode: For hosts files (.rhosts, /etc/hosts, etc)
4488 mailagent-rules-generic-mode: For mailagent .rules files
4489 javascript-generic-mode: For JavaScript files
4490 vrml-generic-mode: For VRML files
4491 java-manifest-generic-mode: For Java MANIFEST files
4492 java-properties-generic-mode: For Java property files
4493 mailrc-generic-mode: For .mailrc files
4494
4495 Platform-specific modes:
4496
4497 prototype-generic-mode: For Solaris/Sys V prototype files
4498 pkginfo-generic-mode: For Solaris/Sys V pkginfo files
4499 alias-generic-mode: For C shell alias files
4500 inf-generic-mode: For MS-Windows INF files
4501 ini-generic-mode: For MS-Windows INI files
4502 reg-generic-mode: For MS-Windows Registry files
4503 bat-generic-mode: For MS-Windows BAT scripts
4504 rc-generic-mode: For MS-Windows Resource files
4505 rul-generic-mode: For InstallShield scripts
4506\f
4507* Lisp changes in Emacs 20.3 since the Emacs Lisp Manual was published
4508
4509** If you want a Lisp file to be read in unibyte mode,
4510use -*-unibyte: t;-*- on its first line.
4511That will force Emacs to read that file in unibyte mode.
4512Otherwise, the file will be loaded and byte-compiled in multibyte mode.
4513
4514Thus, each lisp file is read in a consistent way regardless of whether
4515you started Emacs with --unibyte, so that a Lisp program gives
4516consistent results regardless of how Emacs was started.
4517
4518** The new function assoc-default is useful for searching an alist,
4519and using a default value if the key is not found there. You can
4520specify a comparison predicate, so this function is useful for
4521searching comparing a string against an alist of regular expressions.
4522
4523** The functions unibyte-char-to-multibyte and
4524multibyte-char-to-unibyte convert between unibyte and multibyte
4525character codes, in a way that is appropriate for the current language
4526environment.
4527
4528** The functions read-event, read-char and read-char-exclusive now
4529take two optional arguments. PROMPT, if non-nil, specifies a prompt
4530string. SUPPRESS-INPUT-METHOD, if non-nil, says to disable the
4531current input method for reading this one event.
4532
4533** Two new variables print-escape-nonascii and print-escape-multibyte
4534now control whether to output certain characters as
4535backslash-sequences. print-escape-nonascii applies to single-byte
4536non-ASCII characters; print-escape-multibyte applies to multibyte
4537characters. Both of these variables are used only when printing
4538in readable fashion (prin1 uses them, princ does not).
4539\f
4540* Lisp changes in Emacs 20.3 before the Emacs Lisp Manual was published
4541
4542** Compiled Emacs Lisp files made with the modified "MBSK" version
4543of Emacs 20.2 do not work in Emacs 20.3.
4544
4545** Buffer positions are now measured in characters, as they were
4546in Emacs 19 and before. This means that (forward-char 1)
4547always increases point by 1.
4548
4549The function chars-in-region now just subtracts its arguments. It is
4550considered obsolete. The function char-boundary-p has been deleted.
4551
4552See below for additional changes relating to multibyte characters.
4553
4554** defcustom, defface and defgroup now accept the keyword `:version'.
4555Use this to specify in which version of Emacs a certain variable's
4556default value changed. For example,
4557
4558 (defcustom foo-max 34 "*Maximum number of foo's allowed."
4559 :type 'integer
4560 :group 'foo
4561 :version "20.3")
4562
79214ddf 4563 (defgroup foo-group nil "The foo group."
a933dad1
DL
4564 :version "20.3")
4565
4566If an entire new group is added or the variables in it have the
4567default values changed, then just add a `:version' to that group. It
4568is recommended that new packages added to the distribution contain a
4569`:version' in the top level group.
4570
4571This information is used to control the customize-changed-options command.
4572
4573** It is now an error to change the value of a symbol whose name
4574starts with a colon--if it is interned in the standard obarray.
4575
4576However, setting such a symbol to its proper value, which is that
4577symbol itself, is not an error. This is for the sake of programs that
4578support previous Emacs versions by explicitly setting these variables
4579to themselves.
4580
4581If you set the variable keyword-symbols-constant-flag to nil,
4582this error is suppressed, and you can set these symbols to any
4583values whatever.
4584
4585** There is a new debugger command, R.
4586It evaluates an expression like e, but saves the result
4587in the buffer *Debugger-record*.
4588
4589** Frame-local variables.
4590
4591You can now make a variable local to various frames. To do this, call
4592the function make-variable-frame-local; this enables frames to have
4593local bindings for that variable.
4594
4595These frame-local bindings are actually frame parameters: you create a
4596frame-local binding in a specific frame by calling
4597modify-frame-parameters and specifying the variable name as the
4598parameter name.
4599
4600Buffer-local bindings take precedence over frame-local bindings.
4601Thus, if the current buffer has a buffer-local binding, that binding is
4602active; otherwise, if the selected frame has a frame-local binding,
4603that binding is active; otherwise, the default binding is active.
4604
4605It would not be hard to implement window-local bindings, but it is not
4606clear that this would be very useful; windows tend to come and go in a
4607very transitory fashion, so that trying to produce any specific effect
4608through a window-local binding would not be very robust.
4609
4610** `sregexq' and `sregex' are two new functions for constructing
4611"symbolic regular expressions." These are Lisp expressions that, when
4612evaluated, yield conventional string-based regexps. The symbolic form
4613makes it easier to construct, read, and maintain complex patterns.
4614See the documentation in sregex.el.
4615
4616** parse-partial-sexp's return value has an additional element which
4617is used to pass information along if you pass it to another call to
4618parse-partial-sexp, starting its scan where the first call ended.
4619The contents of this field are not yet finalized.
4620
4621** eval-region now accepts a fourth optional argument READ-FUNCTION.
4622If it is non-nil, that function is used instead of `read'.
4623
4624** unload-feature by default removes the feature's functions from
4625known hooks to avoid trouble, but a package providing FEATURE can
4626define a hook FEATURE-unload-hook to be run by unload-feature instead.
4627
4628** read-from-minibuffer no longer returns the argument DEFAULT-VALUE
4629when the user enters empty input. It now returns the null string, as
4630it did in Emacs 19. The default value is made available in the
4631history via M-n, but it is not applied here as a default.
4632
4633The other, more specialized minibuffer-reading functions continue to
4634return the default value (not the null string) when the user enters
4635empty input.
4636
4637** The new variable read-buffer-function controls which routine to use
4638for selecting buffers. For example, if you set this variable to
4639`iswitchb-read-buffer', iswitchb will be used to read buffer names.
4640Other functions can also be used if they accept the same arguments as
4641`read-buffer' and return the selected buffer name as a string.
4642
4643** The new function read-passwd reads a password from the terminal,
4644echoing a period for each character typed. It takes three arguments:
4645a prompt string, a flag which says "read it twice to make sure", and a
4646default password to use if the user enters nothing.
4647
4648** The variable fill-nobreak-predicate gives major modes a way to
4649specify not to break a line at certain places. Its value is a
4650function which is called with no arguments, with point located at the
4651place where a break is being considered. If the function returns
4652non-nil, then the line won't be broken there.
4653
4654** window-end now takes an optional second argument, UPDATE.
4655If this is non-nil, then the function always returns an accurate
4656up-to-date value for the buffer position corresponding to the
4657end of the window, even if this requires computation.
4658
4659** other-buffer now takes an optional argument FRAME
4660which specifies which frame's buffer list to use.
4661If it is nil, that means use the selected frame's buffer list.
4662
4663** The new variable buffer-display-time, always local in every buffer,
4664holds the value of (current-time) as of the last time that a window
4665was directed to display this buffer.
4666
4667** It is now meaningful to compare two window-configuration objects
4668with `equal'. Two window-configuration objects are equal if they
4669describe equivalent arrangements of windows, in the same frame--in
4670other words, if they would give the same results if passed to
4671set-window-configuration.
4672
4673** compare-window-configurations is a new function that compares two
4674window configurations loosely. It ignores differences in saved buffer
4675positions and scrolling, and considers only the structure and sizes of
4676windows and the choice of buffers to display.
4677
4678** The variable minor-mode-overriding-map-alist allows major modes to
4679override the key bindings of a minor mode. The elements of this alist
4680look like the elements of minor-mode-map-alist: (VARIABLE . KEYMAP).
4681
4682If the VARIABLE in an element of minor-mode-overriding-map-alist has a
4683non-nil value, the paired KEYMAP is active, and totally overrides the
4684map (if any) specified for the same variable in minor-mode-map-alist.
4685
4686minor-mode-overriding-map-alist is automatically local in all buffers,
4687and it is meant to be set by major modes.
4688
4689** The function match-string-no-properties is like match-string
4690except that it discards all text properties from the result.
4691
4692** The function load-average now accepts an optional argument
4693USE-FLOATS. If it is non-nil, the load average values are returned as
4694floating point numbers, rather than as integers to be divided by 100.
4695
4696** The new variable temporary-file-directory specifies the directory
4697to use for creating temporary files. The default value is determined
4698in a reasonable way for your operating system; on GNU and Unix systems
4699it is based on the TMP and TMPDIR environment variables.
4700
4701** Menu changes
4702
4703*** easymenu.el now uses the new menu item format and supports the
4704keywords :visible and :filter. The existing keyword :keys is now
4705better supported.
4706
4707The variable `easy-menu-precalculate-equivalent-keybindings' controls
4708a new feature which calculates keyboard equivalents for the menu when
4709you define the menu. The default is t. If you rarely use menus, you
4710can set the variable to nil to disable this precalculation feature;
4711then the calculation is done only if you use the menu bar.
4712
4713*** A new format for menu items is supported.
4714
4715In a keymap, a key binding that has the format
4716 (STRING . REAL-BINDING) or (STRING HELP-STRING . REAL-BINDING)
4717defines a menu item. Now a menu item definition may also be a list that
4718starts with the symbol `menu-item'.
4719
4720The format is:
4721 (menu-item ITEM-NAME) or
4722 (menu-item ITEM-NAME REAL-BINDING . ITEM-PROPERTY-LIST)
4723where ITEM-NAME is an expression which evaluates to the menu item
4724string, and ITEM-PROPERTY-LIST has the form of a property list.
4725The supported properties include
4726
4727:enable FORM Evaluate FORM to determine whether the
4728 item is enabled.
4729:visible FORM Evaluate FORM to determine whether the
4730 item should appear in the menu.
79214ddf 4731:filter FILTER-FN
a933dad1
DL
4732 FILTER-FN is a function of one argument,
4733 which will be REAL-BINDING.
4734 It should return a binding to use instead.
4735:keys DESCRIPTION
4736 DESCRIPTION is a string that describes an equivalent keyboard
4737 binding for for REAL-BINDING. DESCRIPTION is expanded with
4738 `substitute-command-keys' before it is used.
4739:key-sequence KEY-SEQUENCE
4740 KEY-SEQUENCE is a key-sequence for an equivalent
4741 keyboard binding.
4742:key-sequence nil
4743 This means that the command normally has no
4744 keyboard equivalent.
4745:help HELP HELP is the extra help string (not currently used).
4746:button (TYPE . SELECTED)
4747 TYPE is :toggle or :radio.
4748 SELECTED is a form, to be evaluated, and its
4749 value says whether this button is currently selected.
4750
4751Buttons are at the moment only simulated by prefixes in the menu.
4752Eventually ordinary X-buttons may be supported.
4753
4754(menu-item ITEM-NAME) defines unselectable item.
4755
4756** New event types
4757
4758*** The new event type `mouse-wheel' is generated by a wheel on a
4759mouse (such as the MS Intellimouse). The event contains a delta that
4760corresponds to the amount and direction that the wheel is rotated,
4761which is typically used to implement a scroll or zoom. The format is:
4762
4763 (mouse-wheel POSITION DELTA)
4764
4765where POSITION is a list describing the position of the event in the
4766same format as a mouse-click event, and DELTA is a signed number
4767indicating the number of increments by which the wheel was rotated. A
4768negative DELTA indicates that the wheel was rotated backwards, towards
4769the user, and a positive DELTA indicates that the wheel was rotated
4770forward, away from the user.
4771
4772As of now, this event type is generated only on MS Windows.
4773
4774*** The new event type `drag-n-drop' is generated when a group of
4775files is selected in an application outside of Emacs, and then dragged
4776and dropped onto an Emacs frame. The event contains a list of
4777filenames that were dragged and dropped, which are then typically
4778loaded into Emacs. The format is:
4779
4780 (drag-n-drop POSITION FILES)
4781
4782where POSITION is a list describing the position of the event in the
4783same format as a mouse-click event, and FILES is the list of filenames
4784that were dragged and dropped.
4785
4786As of now, this event type is generated only on MS Windows.
4787
4788** Changes relating to multibyte characters.
4789
4790*** The variable enable-multibyte-characters is now read-only;
4791any attempt to set it directly signals an error. The only way
4792to change this value in an existing buffer is with set-buffer-multibyte.
4793
4794*** In a string constant, `\ ' now stands for "nothing at all". You
4795can use it to terminate a hex escape which is followed by a character
4796that could otherwise be read as part of the hex escape.
4797
4798*** String indices are now measured in characters, as they were
4799in Emacs 19 and before.
4800
4801The function chars-in-string has been deleted.
4802The function concat-chars has been renamed to `string'.
4803
4804*** The function set-buffer-multibyte sets the flag in the current
4805buffer that says whether the buffer uses multibyte representation or
4806unibyte representation. If the argument is nil, it selects unibyte
4807representation. Otherwise it selects multibyte representation.
4808
4809This function does not change the contents of the buffer, viewed
4810as a sequence of bytes. However, it does change the contents
4811viewed as characters; a sequence of two bytes which is treated as
4812one character when the buffer uses multibyte representation
4813will count as two characters using unibyte representation.
4814
4815This function sets enable-multibyte-characters to record which
4816representation is in use. It also adjusts various data in the buffer
4817(including its markers, overlays and text properties) so that they are
4818consistent with the new representation.
4819
4820*** string-make-multibyte takes a string and converts it to multibyte
4821representation. Most of the time, you don't need to care
4822about the representation, because Emacs converts when necessary;
4823however, it makes a difference when you compare strings.
4824
4825The conversion of non-ASCII characters works by adding the value of
4826nonascii-insert-offset to each character, or by translating them
4827using the table nonascii-translation-table.
4828
4829*** string-make-unibyte takes a string and converts it to unibyte
4830representation. Most of the time, you don't need to care about the
4831representation, but it makes a difference when you compare strings.
4832
4833The conversion from multibyte to unibyte representation
4834loses information; the only time Emacs performs it automatically
4835is when inserting a multibyte string into a unibyte buffer.
4836
4837*** string-as-multibyte takes a string, and returns another string
4838which contains the same bytes, but treats them as multibyte.
4839
4840*** string-as-unibyte takes a string, and returns another string
4841which contains the same bytes, but treats them as unibyte.
4842
4843*** The new function compare-strings lets you compare
4844portions of two strings. Unibyte strings are converted to multibyte,
4845so that a unibyte string can match a multibyte string.
4846You can specify whether to ignore case or not.
4847
4848*** assoc-ignore-case now uses compare-strings so that
4849it can treat unibyte and multibyte strings as equal.
4850
4851*** Regular expression operations and buffer string searches now
4852convert the search pattern to multibyte or unibyte to accord with the
4853buffer or string being searched.
4854
4855One consequence is that you cannot always use \200-\377 inside of
4856[...] to match all non-ASCII characters. This does still work when
4857searching or matching a unibyte buffer or string, but not when
4858searching or matching a multibyte string. Unfortunately, there is no
4859obvious choice of syntax to use within [...] for that job. But, what
4860you want is just to match all non-ASCII characters, the regular
4861expression [^\0-\177] works for it.
4862
4863*** Structure of coding system changed.
4864
4865All coding systems (including aliases and subsidiaries) are named
4866by symbols; the symbol's `coding-system' property is a vector
4867which defines the coding system. Aliases share the same vector
4868as the principal name, so that altering the contents of this
4869vector affects the principal name and its aliases. You can define
4870your own alias name of a coding system by the function
4871define-coding-system-alias.
4872
4873The coding system definition includes a property list of its own. Use
4874the new functions `coding-system-get' and `coding-system-put' to
4875access such coding system properties as post-read-conversion,
4876pre-write-conversion, character-translation-table-for-decode,
4877character-translation-table-for-encode, mime-charset, and
4878safe-charsets. For instance, (coding-system-get 'iso-latin-1
4879'mime-charset) gives the corresponding MIME-charset parameter
4880`iso-8859-1'.
4881
4882Among the coding system properties listed above, safe-charsets is new.
4883The value of this property is a list of character sets which this
4884coding system can correctly encode and decode. For instance:
4885(coding-system-get 'iso-latin-1 'safe-charsets) => (ascii latin-iso8859-1)
4886
4887Here, "correctly encode" means that the encoded character sets can
4888also be handled safely by systems other than Emacs as far as they
4889are capable of that coding system. Though, Emacs itself can encode
4890the other character sets and read it back correctly.
4891
4892*** The new function select-safe-coding-system can be used to find a
4893proper coding system for encoding the specified region or string.
4894This function requires a user interaction.
4895
4896*** The new functions find-coding-systems-region and
4897find-coding-systems-string are helper functions used by
4898select-safe-coding-system. They return a list of all proper coding
4899systems to encode a text in some region or string. If you don't want
4900a user interaction, use one of these functions instead of
4901select-safe-coding-system.
4902
4903*** The explicit encoding and decoding functions, such as
4904decode-coding-region and encode-coding-string, now set
4905last-coding-system-used to reflect the actual way encoding or decoding
4906was done.
4907
4908*** The new function detect-coding-with-language-environment can be
4909used to detect a coding system of text according to priorities of
4910coding systems used by some specific language environment.
4911
4912*** The functions detect-coding-region and detect-coding-string always
4913return a list if the arg HIGHEST is nil. Thus, if only ASCII
4914characters are found, they now return a list of single element
4915`undecided' or its subsidiaries.
4916
4917*** The new functions coding-system-change-eol-conversion and
4918coding-system-change-text-conversion can be used to get a different
4919coding system than what specified only in how end-of-line or text is
4920converted.
4921
4922*** The new function set-selection-coding-system can be used to set a
4923coding system for communicating with other X clients.
4924
4925*** The function `map-char-table' now passes as argument only valid
4926character codes, plus generic characters that stand for entire
4927character sets or entire subrows of a character set. In other words,
4928each time `map-char-table' calls its FUNCTION argument, the key value
4929either will be a valid individual character code, or will stand for a
4930range of characters.
4931
4932*** The new function `char-valid-p' can be used for checking whether a
4933Lisp object is a valid character code or not.
4934
4935*** The new function `charset-after' returns a charset of a character
4936in the current buffer at position POS.
4937
4938*** Input methods are now implemented using the variable
4939input-method-function. If this is non-nil, its value should be a
4940function; then, whenever Emacs reads an input event that is a printing
4941character with no modifier bits, it calls that function, passing the
4942event as an argument. Often this function will read more input, first
4943binding input-method-function to nil.
4944
4945The return value should be a list of the events resulting from input
4946method processing. These events will be processed sequentially as
4947input, before resorting to unread-command-events. Events returned by
4948the input method function are not passed to the input method function,
4949not even if they are printing characters with no modifier bits.
4950
4951The input method function is not called when reading the second and
4952subsequent events of a key sequence.
4953
4954*** You can customize any language environment by using
4955set-language-environment-hook and exit-language-environment-hook.
4956
4957The hook `exit-language-environment-hook' should be used to undo
4958customizations that you made with set-language-environment-hook. For
4959instance, if you set up a special key binding for a specific language
4960environment by set-language-environment-hook, you should set up
4961exit-language-environment-hook to restore the normal key binding.
4962\f
4963* Changes in Emacs 20.1
4964
4965** Emacs has a new facility for customization of its many user
4966options. It is called M-x customize. With this facility you can look
4967at the many user options in an organized way; they are grouped into a
4968tree structure.
4969
4970M-x customize also knows what sorts of values are legitimate for each
4971user option and ensures that you don't use invalid values.
4972
4973With M-x customize, you can set options either for the present Emacs
4974session or permanently. (Permanent settings are stored automatically
4975in your .emacs file.)
4976
4977** Scroll bars are now on the left side of the window.
4978You can change this with M-x customize-option scroll-bar-mode.
4979
4980** The mode line no longer includes the string `Emacs'.
4981This makes more space in the mode line for other information.
4982
4983** When you select a region with the mouse, it is highlighted
4984immediately afterward. At that time, if you type the DELETE key, it
4985kills the region.
4986
4987The BACKSPACE key, and the ASCII character DEL, do not do this; they
4988delete the character before point, as usual.
4989
4990** In an incremental search the whole current match is highlighted
4991on terminals which support this. (You can disable this feature
4992by setting search-highlight to nil.)
4993
4994** In the minibuffer, in some cases, you can now use M-n to
4995insert the default value into the minibuffer as text. In effect,
4996the default value (if the minibuffer routines know it) is tacked
4997onto the history "in the future". (The more normal use of the
4998history list is to use M-p to insert minibuffer input used in the
4999past.)
5000
5001** In Text mode, now only blank lines separate paragraphs.
5002This makes it possible to get the full benefit of Adaptive Fill mode
5003in Text mode, and other modes derived from it (such as Mail mode).
5004TAB in Text mode now runs the command indent-relative; this
5005makes a practical difference only when you use indented paragraphs.
5006
5007As a result, the old Indented Text mode is now identical to Text mode,
5008and is an alias for it.
5009
5010If you want spaces at the beginning of a line to start a paragraph,
5011use the new mode, Paragraph Indent Text mode.
5012
5013** Scrolling changes
5014
5015*** Scroll commands to scroll a whole screen now preserve the screen
5016position of the cursor, if scroll-preserve-screen-position is non-nil.
5017
5018In this mode, if you scroll several screens back and forth, finishing
5019on the same screen where you started, the cursor goes back to the line
5020where it started.
5021
5022*** If you set scroll-conservatively to a small number, then when you
5023move point a short distance off the screen, Emacs will scroll the
5024screen just far enough to bring point back on screen, provided that
5025does not exceed `scroll-conservatively' lines.
5026
5027*** The new variable scroll-margin says how close point can come to the
5028top or bottom of a window. It is a number of screen lines; if point
5029comes within that many lines of the top or bottom of the window, Emacs
5030recenters the window.
5031
5032** International character set support (MULE)
5033
5034Emacs now supports a wide variety of international character sets,
5035including European variants of the Latin alphabet, as well as Chinese,
5036Devanagari (Hindi and Marathi), Ethiopian, Greek, IPA, Japanese,
5037Korean, Lao, Russian, Thai, Tibetan, and Vietnamese scripts. These
5038features have been merged from the modified version of Emacs known as
5039MULE (for "MULti-lingual Enhancement to GNU Emacs")
5040
5041Users of these scripts have established many more-or-less standard
5042coding systems for storing files. Emacs uses a single multibyte
5043character encoding within Emacs buffers; it can translate from a wide
5044variety of coding systems when reading a file and can translate back
5045into any of these coding systems when saving a file.
5046
5047Keyboards, even in the countries where these character sets are used,
5048generally don't have keys for all the characters in them. So Emacs
5049supports various "input methods", typically one for each script or
5050language, to make it possible to type them.
5051
5052The Emacs internal multibyte encoding represents a non-ASCII
5053character as a sequence of bytes in the range 0200 through 0377.
5054
5055The new prefix key C-x RET is used for commands that pertain
5056to multibyte characters, coding systems, and input methods.
5057
5058You can disable multibyte character support as follows:
5059
5060 (setq-default enable-multibyte-characters nil)
5061
5062Calling the function standard-display-european turns off multibyte
5063characters, unless you specify a non-nil value for the second
5064argument, AUTO. This provides compatibility for people who are
5065already using standard-display-european to continue using unibyte
5066characters for their work until they want to change.
5067
5068*** Input methods
5069
5070An input method is a kind of character conversion which is designed
5071specifically for interactive input. In Emacs, typically each language
5072has its own input method (though sometimes several languages which use
5073the same characters can share one input method). Some languages
5074support several input methods.
5075
5076The simplest kind of input method works by mapping ASCII letters into
5077another alphabet. This is how the Greek and Russian input methods
5078work.
5079
5080A more powerful technique is composition: converting sequences of
5081characters into one letter. Many European input methods use
5082composition to produce a single non-ASCII letter from a sequence which
5083consists of a letter followed by diacritics. For example, a' is one
5084sequence of two characters that might be converted into a single
5085letter.
5086
5087The input methods for syllabic scripts typically use mapping followed
5088by conversion. The input methods for Thai and Korean work this way.
5089First, letters are mapped into symbols for particular sounds or tone
5090marks; then, sequences of these which make up a whole syllable are
5091mapped into one syllable sign--most often a "composite character".
5092
5093None of these methods works very well for Chinese and Japanese, so
5094they are handled specially. First you input a whole word using
5095phonetic spelling; then, after the word is in the buffer, Emacs
5096converts it into one or more characters using a large dictionary.
5097
5098Since there is more than one way to represent a phonetically spelled
5099word using Chinese characters, Emacs can only guess which one to use;
5100typically these input methods give you a way to say "guess again" if
5101the first guess is wrong.
5102
5103*** The command C-x RET m (toggle-enable-multibyte-characters)
5104turns multibyte character support on or off for the current buffer.
5105
5106If multibyte character support is turned off in a buffer, then each
5107byte is a single character, even codes 0200 through 0377--exactly as
5108they did in Emacs 19.34. This includes the features for support for
5109the European characters, ISO Latin-1 and ISO Latin-2.
5110
5111However, there is no need to turn off multibyte character support to
5112use ISO Latin-1 or ISO Latin-2; the Emacs multibyte character set
5113includes all the characters in these character sets, and Emacs can
5114translate automatically to and from either one.
5115
5116*** Visiting a file in unibyte mode.
5117
5118Turning off multibyte character support in the buffer after visiting a
5119file with multibyte code conversion will display the multibyte
5120sequences already in the buffer, byte by byte. This is probably not
5121what you want.
5122
5123If you want to edit a file of unibyte characters (Latin-1, for
5124example), you can do it by specifying `no-conversion' as the coding
5125system when reading the file. This coding system also turns off
5126multibyte characters in that buffer.
5127
5128If you turn off multibyte character support entirely, this turns off
5129character conversion as well.
5130
5131*** Displaying international characters on X Windows.
5132
5133A font for X typically displays just one alphabet or script.
5134Therefore, displaying the entire range of characters Emacs supports
5135requires using many fonts.
5136
5137Therefore, Emacs now supports "fontsets". Each fontset is a
5138collection of fonts, each assigned to a range of character codes.
5139
5140A fontset has a name, like a font. Individual fonts are defined by
5141the X server; fontsets are defined within Emacs itself. But once you
5142have defined a fontset, you can use it in a face or a frame just as
5143you would use a font.
5144
5145If a fontset specifies no font for a certain character, or if it
5146specifies a font that does not exist on your system, then it cannot
5147display that character. It will display an empty box instead.
5148
5149The fontset height and width are determined by the ASCII characters
5150(that is, by the font in the fontset which is used for ASCII
5151characters). If another font in the fontset has a different height,
5152or the wrong width, then characters assigned to that font are clipped,
5153and displayed within a box if highlight-wrong-size-font is non-nil.
5154
5155*** Defining fontsets.
5156
5157Emacs does not use any fontset by default. Its default font is still
5158chosen as in previous versions. You can tell Emacs to use a fontset
5159with the `-fn' option or the `Font' X resource.
5160
5161Emacs creates a standard fontset automatically according to the value
5162of standard-fontset-spec. This fontset's short name is
5163`fontset-standard'. Bold, italic, and bold-italic variants of the
5164standard fontset are created automatically.
5165
5166If you specify a default ASCII font with the `Font' resource or `-fn'
5167argument, a fontset is generated from it. This works by replacing the
5168FOUNDARY, FAMILY, ADD_STYLE, and AVERAGE_WIDTH fields of the font name
5169with `*' then using this to specify a fontset. This fontset's short
5170name is `fontset-startup'.
5171
5172Emacs checks resources of the form Fontset-N where N is 0, 1, 2...
5173The resource value should have this form:
5174 FONTSET-NAME, [CHARSET-NAME:FONT-NAME]...
5175FONTSET-NAME should have the form of a standard X font name, except:
5176 * most fields should be just the wild card "*".
5177 * the CHARSET_REGISTRY field should be "fontset"
5178 * the CHARSET_ENCODING field can be any nickname of the fontset.
5179The construct CHARSET-NAME:FONT-NAME can be repeated any number
5180of times; each time specifies the font for one character set.
5181CHARSET-NAME should be the name name of a character set, and
5182FONT-NAME should specify an actual font to use for that character set.
5183
5184Each of these fontsets has an alias which is made from the
5185last two font name fields, CHARSET_REGISTRY and CHARSET_ENCODING.
5186You can refer to the fontset by that alias or by its full name.
5187
5188For any character sets that you don't mention, Emacs tries to choose a
5189font by substituting into FONTSET-NAME. For instance, with the
5190following resource,
5191 Emacs*Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24
5192the font for ASCII is generated as below:
5193 -*-fixed-medium-r-normal-*-24-*-ISO8859-1
5194Here is the substitution rule:
5195 Change CHARSET_REGISTRY and CHARSET_ENCODING to that of the charset
5196 defined in the variable x-charset-registries. For instance, ASCII has
5197 the entry (ascii . "ISO8859-1") in this variable. Then, reduce
5198 sequences of wild cards -*-...-*- with a single wildcard -*-.
5199 (This is to prevent use of auto-scaled fonts.)
5200
5201The function which processes the fontset resource value to create the
5202fontset is called create-fontset-from-fontset-spec. You can also call
5203that function explicitly to create a fontset.
5204
5205With the X resource Emacs.Font, you can specify a fontset name just
5206like an actual font name. But be careful not to specify a fontset
5207name in a wildcard resource like Emacs*Font--that tries to specify the
5208fontset for other purposes including menus, and they cannot handle
5209fontsets.
5210
5211*** The command M-x set-language-environment sets certain global Emacs
5212defaults for a particular choice of language.
5213
5214Selecting a language environment typically specifies a default input
5215method and which coding systems to recognize automatically when
5216visiting files. However, it does not try to reread files you have
5217already visited; the text in those buffers is not affected. The
5218language environment may also specify a default choice of coding
5219system for new files that you create.
5220
5221It makes no difference which buffer is current when you use
5222set-language-environment, because these defaults apply globally to the
5223whole Emacs session.
5224
5225For example, M-x set-language-environment RET Latin-1 RET
5226chooses the Latin-1 character set. In the .emacs file, you can do this
5227with (set-language-environment "Latin-1").
5228
5229*** The command C-x RET f (set-buffer-file-coding-system)
5230specifies the file coding system for the current buffer. This
5231specifies what sort of character code translation to do when saving
5232the file. As an argument, you must specify the name of one of the
5233coding systems that Emacs supports.
5234
5235*** The command C-x RET c (universal-coding-system-argument)
5236lets you specify a coding system when you read or write a file.
5237This command uses the minibuffer to read a coding system name.
5238After you exit the minibuffer, the specified coding system
5239is used for *the immediately following command*.
5240
5241So if the immediately following command is a command to read or
5242write a file, it uses the specified coding system for that file.
5243
5244If the immediately following command does not use the coding system,
5245then C-x RET c ultimately has no effect.
5246
5247For example, C-x RET c iso-8859-1 RET C-x C-f temp RET
5248visits the file `temp' treating it as ISO Latin-1.
5249
5250*** You can specify the coding system for a file using the -*-
5251construct. Include `coding: CODINGSYSTEM;' inside the -*-...-*-
5252to specify use of coding system CODINGSYSTEM. You can also
5253specify the coding system in a local variable list at the end
5254of the file.
5255
5256*** The command C-x RET t (set-terminal-coding-system) specifies
5257the coding system for terminal output. If you specify a character
5258code for terminal output, all characters output to the terminal are
5259translated into that character code.
5260
5261This feature is useful for certain character-only terminals built in
5262various countries to support the languages of those countries.
5263
5264By default, output to the terminal is not translated at all.
5265
5266*** The command C-x RET k (set-keyboard-coding-system) specifies
5267the coding system for keyboard input.
5268
5269Character code translation of keyboard input is useful for terminals
5270with keys that send non-ASCII graphic characters--for example,
5271some terminals designed for ISO Latin-1 or subsets of it.
5272
5273By default, keyboard input is not translated at all.
5274
5275Character code translation of keyboard input is similar to using an
5276input method, in that both define sequences of keyboard input that
5277translate into single characters. However, input methods are designed
5278to be convenient for interactive use, while the code translations are
5279designed to work with terminals.
5280
5281*** The command C-x RET p (set-buffer-process-coding-system)
5282specifies the coding system for input and output to a subprocess.
5283This command applies to the current buffer; normally, each subprocess
5284has its own buffer, and thus you can use this command to specify
5285translation to and from a particular subprocess by giving the command
5286in the corresponding buffer.
5287
5288By default, process input and output are not translated at all.
5289
5290*** The variable file-name-coding-system specifies the coding system
5291to use for encoding file names before operating on them.
5292It is also used for decoding file names obtained from the system.
5293
5294*** The command C-\ (toggle-input-method) activates or deactivates
5295an input method. If no input method has been selected before, the
5296command prompts for you to specify the language and input method you
5297want to use.
5298
5299C-u C-\ (select-input-method) lets you switch to a different input
5300method. C-h C-\ (or C-h I) describes the current input method.
5301
5302*** Some input methods remap the keyboard to emulate various keyboard
5303layouts commonly used for particular scripts. How to do this
5304remapping properly depends on your actual keyboard layout. To specify
5305which layout your keyboard has, use M-x quail-set-keyboard-layout.
5306
5307*** The command C-h C (describe-coding-system) displays
5308the coding systems currently selected for various purposes, plus
5309related information.
5310
5311*** The command C-h h (view-hello-file) displays a file called
5312HELLO, which has examples of text in many languages, using various
5313scripts.
5314
5315*** The command C-h L (describe-language-support) displays
5316information about the support for a particular language.
5317You specify the language as an argument.
5318
5319*** The mode line now contains a letter or character that identifies
5320the coding system used in the visited file. It normally follows the
5321first dash.
5322
5323A dash indicates the default state of affairs: no code conversion
5324(except CRLF => newline if appropriate). `=' means no conversion
5325whatsoever. The ISO 8859 coding systems are represented by digits
53261 through 9. Other coding systems are represented by letters:
5327
5328 A alternativnyj (Russian)
5329 B big5 (Chinese)
5330 C cn-gb-2312 (Chinese)
5331 C iso-2022-cn (Chinese)
5332 D in-is13194-devanagari (Indian languages)
5333 E euc-japan (Japanese)
5334 I iso-2022-cjk or iso-2022-ss2 (Chinese, Japanese, Korean)
5335 J junet (iso-2022-7) or old-jis (iso-2022-jp-1978-irv) (Japanese)
5336 K euc-korea (Korean)
5337 R koi8 (Russian)
5338 Q tibetan
5339 S shift_jis (Japanese)
5340 T lao
5341 T tis620 (Thai)
5342 V viscii or vscii (Vietnamese)
5343 i iso-2022-lock (Chinese, Japanese, Korean)
5344 k iso-2022-kr (Korean)
5345 v viqr (Vietnamese)
5346 z hz (Chinese)
5347
5348When you are using a character-only terminal (not a window system),
5349two additional characters appear in between the dash and the file
5350coding system. These two characters describe the coding system for
5351keyboard input, and the coding system for terminal output.
5352
5353*** The new variable rmail-file-coding-system specifies the code
5354conversion to use for RMAIL files. The default value is nil.
5355
5356When you read mail with Rmail, each message is decoded automatically
5357into Emacs' internal format. This has nothing to do with
5358rmail-file-coding-system. That variable controls reading and writing
5359Rmail files themselves.
5360
5361*** The new variable sendmail-coding-system specifies the code
5362conversion for outgoing mail. The default value is nil.
5363
5364Actually, there are three different ways of specifying the coding system
5365for sending mail:
5366
5367- If you use C-x RET f in the mail buffer, that takes priority.
5368- Otherwise, if you set sendmail-coding-system non-nil, that specifies it.
5369- Otherwise, the default coding system for new files is used,
5370 if that is non-nil. That comes from your language environment.
5371- Otherwise, Latin-1 is used.
5372
5373*** The command C-h t (help-with-tutorial) accepts a prefix argument
5374to specify the language for the tutorial file. Currently, English,
5375Japanese, Korean and Thai are supported. We welcome additional
5376translations.
5377
5378** An easy new way to visit a file with no code or format conversion
5379of any kind: Use M-x find-file-literally. There is also a command
5380insert-file-literally which inserts a file into the current buffer
5381without any conversion.
5382
5383** C-q's handling of octal character codes is changed.
5384You can now specify any number of octal digits.
5385RET terminates the digits and is discarded;
5386any other non-digit terminates the digits and is then used as input.
5387
5388** There are new commands for looking up Info documentation for
5389functions, variables and file names used in your programs.
5390
5391Type M-x info-lookup-symbol to look up a symbol in the buffer at point.
5392Type M-x info-lookup-file to look up a file in the buffer at point.
5393
5394Precisely which Info files are used to look it up depends on the major
5395mode. For example, in C mode, the GNU libc manual is used.
5396
5397** M-TAB in most programming language modes now runs the command
5398complete-symbol. This command performs completion on the symbol name
5399in the buffer before point.
5400
5401With a numeric argument, it performs completion based on the set of
5402symbols documented in the Info files for the programming language that
5403you are using.
5404
5405With no argument, it does completion based on the current tags tables,
5406just like the old binding of M-TAB (complete-tag).
5407
5408** File locking works with NFS now.
5409
5410The lock file for FILENAME is now a symbolic link named .#FILENAME,
5411in the same directory as FILENAME.
5412
5413This means that collision detection between two different machines now
5414works reasonably well; it also means that no file server or directory
5415can become a bottleneck.
5416
5417The new method does have drawbacks. It means that collision detection
5418does not operate when you edit a file in a directory where you cannot
5419create new files. Collision detection also doesn't operate when the
5420file server does not support symbolic links. But these conditions are
5421rare, and the ability to have collision detection while using NFS is
5422so useful that the change is worth while.
5423
5424When Emacs or a system crashes, this may leave behind lock files which
5425are stale. So you may occasionally get warnings about spurious
5426collisions. When you determine that the collision is spurious, just
5427tell Emacs to go ahead anyway.
5428
5429** If you wish to use Show Paren mode to display matching parentheses,
5430it is no longer sufficient to load paren.el. Instead you must call
5431show-paren-mode.
5432
5433** If you wish to use Delete Selection mode to replace a highlighted
5434selection when you insert new text, it is no longer sufficient to load
5435delsel.el. Instead you must call the function delete-selection-mode.
5436
5437** If you wish to use Partial Completion mode to complete partial words
5438within symbols or filenames, it is no longer sufficient to load
5439complete.el. Instead you must call the function partial-completion-mode.
5440
5441** If you wish to use uniquify to rename buffers for you,
5442it is no longer sufficient to load uniquify.el. You must also
5443set uniquify-buffer-name-style to one of the non-nil legitimate values.
5444
5445** Changes in View mode.
5446
5447*** Several new commands are available in View mode.
5448Do H in view mode for a list of commands.
5449
5450*** There are two new commands for entering View mode:
5451view-file-other-frame and view-buffer-other-frame.
5452
5453*** Exiting View mode does a better job of restoring windows to their
5454previous state.
5455
5456*** New customization variable view-scroll-auto-exit. If non-nil,
5457scrolling past end of buffer makes view mode exit.
5458
5459*** New customization variable view-exits-all-viewing-windows. If
5460non-nil, view-mode will at exit restore all windows viewing buffer,
5461not just the selected window.
5462
5463*** New customization variable view-read-only. If non-nil, visiting a
5464read-only file automatically enters View mode, and toggle-read-only
5465turns View mode on or off.
5466
5467*** New customization variable view-remove-frame-by-deleting controls
5468how to remove a not needed frame at view mode exit. If non-nil,
5469delete the frame, if nil make an icon of it.
5470
5471** C-x v l, the command to print a file's version control log,
5472now positions point at the entry for the file's current branch version.
5473
5474** C-x v =, the command to compare a file with the last checked-in version,
5475has a new feature. If the file is currently not locked, so that it is
5476presumably identical to the last checked-in version, the command now asks
5477which version to compare with.
5478
5479** When using hideshow.el, incremental search can temporarily show hidden
79214ddf 5480blocks if a match is inside the block.
a933dad1
DL
5481
5482The block is hidden again if the search is continued and the next match
5483is outside the block. By customizing the variable
5484isearch-hide-immediately you can choose to hide all the temporarily
5485shown blocks only when exiting from incremental search.
5486
5487By customizing the variable hs-isearch-open you can choose what kind
5488of blocks to temporarily show during isearch: comment blocks, code
5489blocks, all of them or none.
5490
5491** The new command C-x 4 0 (kill-buffer-and-window) kills the
5492current buffer and deletes the selected window. It asks for
5493confirmation first.
5494
5495** C-x C-w, which saves the buffer into a specified file name,
5496now changes the major mode according to that file name.
5497However, the mode will not be changed if
5498(1) a local variables list or the `-*-' line specifies a major mode, or
5499(2) the current major mode is a "special" mode,
5500 not suitable for ordinary files, or
5501(3) the new file name does not particularly specify any mode.
5502
5503This applies to M-x set-visited-file-name as well.
5504
5505However, if you set change-major-mode-with-file-name to nil, then
5506these commands do not change the major mode.
5507
5508** M-x occur changes.
5509
5510*** If the argument to M-x occur contains upper case letters,
5511it performs a case-sensitive search.
5512
5513*** In the *Occur* buffer made by M-x occur,
5514if you type g or M-x revert-buffer, this repeats the search
5515using the same regular expression and the same buffer as before.
5516
5517** In Transient Mark mode, the region in any one buffer is highlighted
5518in just one window at a time. At first, it is highlighted in the
5519window where you set the mark. The buffer's highlighting remains in
5520that window unless you select to another window which shows the same
5521buffer--then the highlighting moves to that window.
5522
5523** The feature to suggest key bindings when you use M-x now operates
5524after the command finishes. The message suggesting key bindings
5525appears temporarily in the echo area. The previous echo area contents
5526come back after a few seconds, in case they contain useful information.
5527
5528** Each frame now independently records the order for recently
5529selected buffers, so that the default for C-x b is now based on the
5530buffers recently selected in the selected frame.
5531
5532** Outline mode changes.
5533
5534*** Outline mode now uses overlays (this is the former noutline.el).
5535
5536*** Incremental searches skip over invisible text in Outline mode.
5537
5538** When a minibuffer window is active but not the selected window, if
5539you try to use the minibuffer, you used to get a nested minibuffer.
5540Now, this not only gives an error, it also cancels the minibuffer that
5541was already active.
5542
5543The motive for this change is so that beginning users do not
5544unknowingly move away from minibuffers, leaving them active, and then
5545get confused by it.
5546
5547If you want to be able to have recursive minibuffers, you must
5548set enable-recursive-minibuffers to non-nil.
5549
5550** Changes in dynamic abbrevs.
5551
5552*** Expanding dynamic abbrevs with M-/ is now smarter about case
5553conversion. If the expansion has mixed case not counting the first
5554character, and the abbreviation matches the beginning of the expansion
5555including case, then the expansion is copied verbatim.
5556
5557The expansion is also copied verbatim if the abbreviation itself has
5558mixed case. And using SPC M-/ to copy an additional word always
5559copies it verbatim except when the previous copied word is all caps.
5560
5561*** The values of `dabbrev-case-replace' and `dabbrev-case-fold-search'
5562are no longer Lisp expressions. They have simply three possible
5563values.
5564
5565`dabbrev-case-replace' has these three values: nil (don't preserve
5566case), t (do), or `case-replace' (do like M-x query-replace).
5567`dabbrev-case-fold-search' has these three values: nil (don't ignore
5568case), t (do), or `case-fold-search' (do like search).
5569
5570** Minibuffer history lists are truncated automatically now to a
5571certain length. The variable history-length specifies how long they
5572can be. The default value is 30.
5573
5574** Changes in Mail mode.
5575
5576*** The key C-x m no longer runs the `mail' command directly.
5577Instead, it runs the command `compose-mail', which invokes the mail
5578composition mechanism you have selected with the variable
5579`mail-user-agent'. The default choice of user agent is
5580`sendmail-user-agent', which gives behavior compatible with the old
5581behavior.
5582
5583C-x 4 m now runs compose-mail-other-window, and C-x 5 m runs
5584compose-mail-other-frame.
5585
5586*** While composing a reply to a mail message, from Rmail, you can use
5587the command C-c C-r to cite just the region from the message you are
5588replying to. This copies the text which is the selected region in the
5589buffer that shows the original message.
5590
5591*** The command C-c C-i inserts a file at the end of the message,
5592with separator lines around the contents.
5593
5594*** The command M-x expand-mail-aliases expands all mail aliases
5595in suitable mail headers. Emacs automatically extracts mail alias
5596definitions from your mail alias file (e.g., ~/.mailrc). You do not
5597need to expand mail aliases yourself before sending mail.
5598
5599*** New features in the mail-complete command.
5600
5601**** The mail-complete command now inserts the user's full name,
5602for local users or if that is known. The variable mail-complete-style
5603controls the style to use, and whether to do this at all.
5604Its values are like those of mail-from-style.
5605
5606**** The variable mail-passwd-command lets you specify a shell command
5607to run to fetch a set of password-entries that add to the ones in
5608/etc/passwd.
5609
5610**** The variable mail-passwd-file now specifies a list of files to read
5611to get the list of user ids. By default, one file is used:
5612/etc/passwd.
5613
5614** You can "quote" a file name to inhibit special significance of
5615special syntax, by adding `/:' to the beginning. Thus, if you have a
5616directory named `/foo:', you can prevent it from being treated as a
5617reference to a remote host named `foo' by writing it as `/:/foo:'.
5618
5619Emacs uses this new construct automatically when necessary, such as
5620when you start it with a working directory whose name might otherwise
5621be taken to be magic.
5622
5623** There is a new command M-x grep-find which uses find to select
5624files to search through, and grep to scan them. The output is
5625available in a Compile mode buffer, as with M-x grep.
5626
5627M-x grep now uses the -e option if the grep program supports that.
5628(-e prevents problems if the search pattern starts with a dash.)
5629
5630** In Dired, the & command now flags for deletion the files whose names
5631suggest they are probably not needed in the long run.
5632
5633In Dired, * is now a prefix key for mark-related commands.
5634
5635new key dired.el binding old key
5636------- ---------------- -------
5637 * c dired-change-marks c
5638 * m dired-mark m
5639 * * dired-mark-executables * (binding deleted)
5640 * / dired-mark-directories / (binding deleted)
5641 * @ dired-mark-symlinks @ (binding deleted)
5642 * u dired-unmark u
5643 * DEL dired-unmark-backward DEL
5644 * ? dired-unmark-all-files M-C-?
5645 * ! dired-unmark-all-marks
5646 * % dired-mark-files-regexp % m
5647 * C-n dired-next-marked-file M-}
5648 * C-p dired-prev-marked-file M-{
5649
5650** Rmail changes.
5651
5652*** When Rmail cannot convert your incoming mail into Babyl format, it
5653saves the new mail in the file RMAILOSE.n, where n is an integer
5654chosen to make a unique name. This way, Rmail will not keep crashing
5655each time you run it.
5656
5657*** In Rmail, the variable rmail-summary-line-count-flag now controls
5658whether to include the line count in the summary. Non-nil means yes.
5659
5660*** In Rmail summary buffers, d and C-d (the commands to delete
5661messages) now take repeat counts as arguments. A negative argument
5662means to move in the opposite direction.
5663
5664*** In Rmail, the t command now takes an optional argument which lets
5665you specify whether to show the message headers in full or pruned.
5666
5667*** In Rmail, the new command w (rmail-output-body-to-file) writes
5668just the body of the current message into a file, without the headers.
5669It takes the file name from the message subject, by default, but you
5670can edit that file name in the minibuffer before it is actually used
5671for output.
5672
5673** Gnus changes.
5674
5675*** nntp.el has been totally rewritten in an asynchronous fashion.
5676
79214ddf
FP
5677*** Article prefetching functionality has been moved up into
5678Gnus.
a933dad1 5679
79214ddf 5680*** Scoring can now be performed with logical operators like
a933dad1
DL
5681`and', `or', `not', and parent redirection.
5682
5683*** Article washing status can be displayed in the
5684article mode line.
5685
5686*** gnus.el has been split into many smaller files.
5687
5688*** Suppression of duplicate articles based on Message-ID.
5689
5690(setq gnus-suppress-duplicates t)
5691
5692*** New variables for specifying what score and adapt files
5693are to be considered home score and adapt files. See
5694`gnus-home-score-file' and `gnus-home-adapt-files'.
5695
5696*** Groups can inherit group parameters from parent topics.
5697
5698*** Article editing has been revamped and is now usable.
5699
5700*** Signatures can be recognized in more intelligent fashions.
5701See `gnus-signature-separator' and `gnus-signature-limit'.
5702
5703*** Summary pick mode has been made to look more nn-like.
5704Line numbers are displayed and the `.' command can be
5705used to pick articles.
5706
5707*** Commands for moving the .newsrc.eld from one server to
5708another have been added.
5709
5710 `M-x gnus-change-server'
5711
5712*** A way to specify that "uninteresting" fields be suppressed when
5713generating lines in buffers.
5714
5715*** Several commands in the group buffer can be undone with
5716`M-C-_'.
5717
5718*** Scoring can be done on words using the new score type `w'.
5719
5720*** Adaptive scoring can be done on a Subject word-by-word basis:
5721
5722 (setq gnus-use-adaptive-scoring '(word))
5723
5724*** Scores can be decayed.
79214ddf 5725
a933dad1
DL
5726 (setq gnus-decay-scores t)
5727
5728*** Scoring can be performed using a regexp on the Date header. The
5729Date is normalized to compact ISO 8601 format first.
5730
5731*** A new command has been added to remove all data on articles from
5732the native server.
5733
5734 `M-x gnus-group-clear-data-on-native-groups'
5735
5736*** A new command for reading collections of documents
5737(nndoc with nnvirtual on top) has been added -- `M-C-d'.
5738
5739*** Process mark sets can be pushed and popped.
5740
5741*** A new mail-to-news backend makes it possible to post
5742even when the NNTP server doesn't allow posting.
5743
5744*** A new backend for reading searches from Web search engines
5745(DejaNews, Alta Vista, InReference) has been added.
5746
5747 Use the `G w' command in the group buffer to create such
5748 a group.
5749
5750*** Groups inside topics can now be sorted using the standard
5751sorting functions, and each topic can be sorted independently.
5752
5753 See the commands under the `T S' submap.
5754
5755*** Subsets of the groups can be sorted independently.
5756
5757 See the commands under the `G P' submap.
5758
5759*** Cached articles can be pulled into the groups.
79214ddf 5760
a933dad1
DL
5761 Use the `Y c' command.
5762
5763*** Score files are now applied in a more reliable order.
5764
5765*** Reports on where mail messages end up can be generated.
5766
5767 `M-x nnmail-split-history'
5768
5769*** More hooks and functions have been added to remove junk
5770from incoming mail before saving the mail.
79214ddf 5771
a933dad1
DL
5772 See `nnmail-prepare-incoming-header-hook'.
5773
5774*** The nnml mail backend now understands compressed article files.
5775
5776*** To enable Gnus to read/post multi-lingual articles, you must execute
5777the following code, for instance, in your .emacs.
5778
5779 (add-hook 'gnus-startup-hook 'gnus-mule-initialize)
5780
5781Then, when you start Gnus, it will decode non-ASCII text automatically
5782and show appropriate characters. (Note: if you are using gnus-mime
5783from the SEMI package, formerly known as TM, you should NOT add this
5784hook to gnus-startup-hook; gnus-mime has its own method of handling
5785this issue.)
5786
5787Since it is impossible to distinguish all coding systems
5788automatically, you may need to specify a choice of coding system for a
5789particular news group. This can be done by:
5790
5791 (gnus-mule-add-group NEWSGROUP 'CODING-SYSTEM)
5792
5793Here NEWSGROUP should be a string which names a newsgroup or a tree
5794of newsgroups. If NEWSGROUP is "XXX.YYY", all news groups under
5795"XXX.YYY" (including "XXX.YYY.ZZZ") will use the specified coding
5796system. CODING-SYSTEM specifies which coding system to use (for both
5797for reading and posting).
5798
5799CODING-SYSTEM can also be a cons cell of the form
5800 (READ-CODING-SYSTEM . POST-CODING-SYSTEM)
5801Then READ-CODING-SYSTEM is used when you read messages from the
5802newsgroups, while POST-CODING-SYSTEM is used when you post messages
5803there.
5804
5805Emacs knows the right coding systems for certain newsgroups by
5806default. Here are some of these default settings:
5807
5808 (gnus-mule-add-group "fj" 'iso-2022-7)
5809 (gnus-mule-add-group "alt.chinese.text" 'hz-gb-2312)
5810 (gnus-mule-add-group "alt.hk" 'hz-gb-2312)
5811 (gnus-mule-add-group "alt.chinese.text.big5" 'cn-big5)
5812 (gnus-mule-add-group "soc.culture.vietnamese" '(nil . viqr))
5813
5814When you reply by mail to an article, these settings are ignored;
5815the mail is encoded according to sendmail-coding-system, as usual.
5816
5817** CC mode changes.
5818
5819*** If you edit primarily one style of C (or C++, Objective-C, Java)
5820code, you may want to make the CC Mode style variables have global
5821values so that you can set them directly in your .emacs file. To do
5822this, set c-style-variables-are-local-p to nil in your .emacs file.
5823Note that this only takes effect if you do it *before* cc-mode.el is
5824loaded.
5825
5826If you typically edit more than one style of C (or C++, Objective-C,
79214ddf 5827Java) code in a single Emacs session, you may want to make the CC Mode
a933dad1 5828style variables have buffer local values. By default, all buffers
79214ddf
FP
5829share the same style variable settings; to make them buffer local, set
5830c-style-variables-are-local-p to t in your .emacs file. Note that you
a933dad1
DL
5831must do this *before* CC Mode is loaded.
5832
5833*** The new variable c-indentation-style holds the C style name
5834of the current buffer.
5835
5836*** The variable c-block-comments-indent-p has been deleted, because
5837it is no longer necessary. C mode now handles all the supported styles
5838of block comments, with no need to say which one you will use.
5839
5840*** There is a new indentation style "python", which specifies the C
5841style that the Python developers like.
5842
5843*** There is a new c-cleanup-list option: brace-elseif-brace.
5844This says to put ...} else if (...) {... on one line,
5845just as brace-else-brace says to put ...} else {... on one line.
5846
5847** VC Changes [new]
5848
5849** In vc-retrieve-snapshot (C-x v r), if you don't specify a snapshot
5850name, it retrieves the *latest* versions of all files in the current
5851directory and its subdirectories (aside from files already locked).
5852
5853This feature is useful if your RCS directory is a link to a common
5854master directory, and you want to pick up changes made by other
5855developers.
5856
5857You can do the same thing for an individual file by typing C-u C-x C-q
5858RET in a buffer visiting that file.
5859
5860*** VC can now handle files under CVS that are being "watched" by
5861other developers. Such files are made read-only by CVS. To get a
5862writable copy, type C-x C-q in a buffer visiting such a file. VC then
5863calls "cvs edit", which notifies the other developers of it.
5864
5865*** vc-version-diff (C-u C-x v =) now suggests reasonable defaults for
5866version numbers, based on the current state of the file.
5867
5868** Calendar changes.
5869
5870A new function, list-holidays, allows you list holidays or subclasses
5871of holidays for ranges of years. Related menu items allow you do this
5872for the year of the selected date, or the following/previous years.
5873
5874** ps-print changes
5875
79214ddf 5876There are some new user variables for customizing the page layout.
a933dad1
DL
5877
5878*** Paper size, paper orientation, columns
5879
5880The variable `ps-paper-type' determines the size of paper ps-print
5881formats for; it should contain one of the symbols:
5882`a4' `a3' `letter' `legal' `letter-small' `tabloid'
5883`ledger' `statement' `executive' `a4small' `b4' `b5'
5884It defaults to `letter'.
5885If you need other sizes, see the variable `ps-page-dimensions-database'.
5886
5887The variable `ps-landscape-mode' determines the orientation
79214ddf 5888of the printing on the page. nil, the default, means "portrait" mode,
a933dad1
DL
5889non-nil means "landscape" mode.
5890
5891The variable `ps-number-of-columns' must be a positive integer.
5892It determines the number of columns both in landscape and portrait mode.
79214ddf 5893It defaults to 1.
a933dad1
DL
5894
5895*** Horizontal layout
5896
5897The horizontal layout is determined by the variables
5898`ps-left-margin', `ps-inter-column', and `ps-right-margin'.
5899All are measured in points.
5900
5901*** Vertical layout
5902
5903The vertical layout is determined by the variables
5904`ps-bottom-margin', `ps-top-margin', and `ps-header-offset'.
5905All are measured in points.
5906
5907*** Headers
5908
5909If the variable `ps-print-header' is nil, no header is printed. Then
5910`ps-header-offset' is not relevant and `ps-top-margin' represents the
5911margin above the text.
5912
79214ddf 5913If the variable `ps-print-header-frame' is non-nil, a gaudy
a933dad1
DL
5914framing box is printed around the header.
5915
5916The contents of the header are determined by `ps-header-lines',
5917`ps-show-n-of-n', `ps-left-header' and `ps-right-header'.
5918
79214ddf
FP
5919The height of the header is determined by `ps-header-line-pad',
5920`ps-header-font-family', `ps-header-title-font-size' and
a933dad1
DL
5921`ps-header-font-size'.
5922
5923*** Font managing
5924
5925The variable `ps-font-family' determines which font family is to be
5926used for ordinary text. Its value must be a key symbol in the alist
5927`ps-font-info-database'. You can add other font families by adding
5928elements to this alist.
5929
79214ddf 5930The variable `ps-font-size' determines the size of the font
a933dad1
DL
5931for ordinary text. It defaults to 8.5 points.
5932
5933** hideshow changes.
5934
5935*** now supports hiding of blocks of single line comments (like // for
79214ddf 5936C++, ; for lisp).
a933dad1
DL
5937
5938*** Support for java-mode added.
5939
5940*** When doing `hs-hide-all' it is now possible to also hide the comments
5941in the file if `hs-hide-comments-when-hiding-all' is set.
5942
5943*** The new function `hs-hide-initial-comment' hides the the comments at
5944the beginning of the files. Finally those huge RCS logs don't stay in your
5945way! This is run by default when entering the `hs-minor-mode'.
5946
5947*** Now uses overlays instead of `selective-display', so is more
5948robust and a lot faster.
5949
79214ddf 5950*** A block beginning can span multiple lines.
a933dad1
DL
5951
5952*** The new variable `hs-show-hidden-short-form' if t, directs hideshow
5953to show only the beginning of a block when it is hidden. See the
5954documentation for more details.
5955
5956** Changes in Enriched mode.
5957
5958*** When you visit a file in enriched-mode, Emacs will make sure it is
5959filled to the current fill-column. This behavior is now independent
5960of the size of the window. When you save the file, the fill-column in
5961use is stored as well, so that the whole buffer need not be refilled
5962the next time unless the fill-column is different.
5963
5964*** use-hard-newlines is now a minor mode. When it is enabled, Emacs
5965distinguishes between hard and soft newlines, and treats hard newlines
5966as paragraph boundaries. Otherwise all newlines inserted are marked
5967as soft, and paragraph boundaries are determined solely from the text.
5968
5969** Font Lock mode
5970
5971*** Custom support
5972
5973The variables font-lock-face-attributes, font-lock-display-type and
5974font-lock-background-mode are now obsolete; the recommended way to specify the
5975faces to use for Font Lock mode is with M-x customize-group on the new custom
5976group font-lock-highlighting-faces. If you set font-lock-face-attributes in
5977your ~/.emacs file, Font Lock mode will respect its value. However, you should
5978consider converting from setting that variable to using M-x customize.
5979
5980You can still use X resources to specify Font Lock face appearances.
5981
5982*** Maximum decoration
5983
5984Fontification now uses the maximum level of decoration supported by
5985default. Previously, fontification used a mode-specific default level
5986of decoration, which is typically the minimum level of decoration
5987supported. You can set font-lock-maximum-decoration to nil
5988to get the old behavior.
5989
5990*** New support
5991
5992Support is now provided for Java, Objective-C, AWK and SIMULA modes.
5993
5994Note that Font Lock mode can be turned on without knowing exactly what modes
5995support Font Lock mode, via the command global-font-lock-mode.
5996
5997*** Configurable support
5998
5999Support for C, C++, Objective-C and Java can be more easily configured for
6000additional types and classes via the new variables c-font-lock-extra-types,
6001c++-font-lock-extra-types, objc-font-lock-extra-types and, you guessed it,
6002java-font-lock-extra-types. These value of each of these variables should be a
6003list of regexps matching the extra type names. For example, the default value
6004of c-font-lock-extra-types is ("\\sw+_t") which means fontification follows the
6005convention that C type names end in _t. This results in slower fontification.
6006
6007Of course, you can change the variables that specify fontification in whatever
6008way you wish, typically by adding regexps. However, these new variables make
6009it easier to make specific and common changes for the fontification of types.
6010
6011*** Adding highlighting patterns to existing support
6012
6013You can use the new function font-lock-add-keywords to add your own
6014highlighting patterns, such as for project-local or user-specific constructs,
6015for any mode.
6016
6017For example, to highlight `FIXME:' words in C comments, put:
6018
6019 (font-lock-add-keywords 'c-mode '(("\\<FIXME:" 0 font-lock-warning-face t)))
6020
6021in your ~/.emacs.
6022
6023*** New faces
6024
6025Font Lock now defines two new faces, font-lock-builtin-face and
6026font-lock-warning-face. These are intended to highlight builtin keywords,
6027distinct from a language's normal keywords, and objects that should be brought
6028to user attention, respectively. Various modes now use these new faces.
6029
6030*** Changes to fast-lock support mode
6031
6032The fast-lock package, one of the two Font Lock support modes, can now process
6033cache files silently. You can use the new variable fast-lock-verbose, in the
6034same way as font-lock-verbose, to control this feature.
6035
6036*** Changes to lazy-lock support mode
6037
6038The lazy-lock package, one of the two Font Lock support modes, can now fontify
6039according to the true syntactic context relative to other lines. You can use
6040the new variable lazy-lock-defer-contextually to control this feature. If
6041non-nil, changes to the buffer will cause subsequent lines in the buffer to be
6042refontified after lazy-lock-defer-time seconds of idle time. If nil, then only
6043the modified lines will be refontified; this is the same as the previous Lazy
6044Lock mode behaviour and the behaviour of Font Lock mode.
6045
6046This feature is useful in modes where strings or comments can span lines.
6047For example, if a string or comment terminating character is deleted, then if
6048this feature is enabled subsequent lines in the buffer will be correctly
6049refontified to reflect their new syntactic context. Previously, only the line
6050containing the deleted character would be refontified and you would have to use
6051the command M-g M-g (font-lock-fontify-block) to refontify some lines.
6052
6053As a consequence of this new feature, two other variables have changed:
6054
6055Variable `lazy-lock-defer-driven' is renamed `lazy-lock-defer-on-scrolling'.
6056Variable `lazy-lock-defer-time' can now only be a time, i.e., a number.
6057Buffer modes for which on-the-fly deferral applies can be specified via the
6058new variable `lazy-lock-defer-on-the-fly'.
6059
6060If you set these variables in your ~/.emacs, then you may have to change those
6061settings.
6062
6063** Ada mode changes.
6064
6065*** There is now better support for using find-file.el with Ada mode.
6066If you switch between spec and body, the cursor stays in the same
6067procedure (modulo overloading). If a spec has no body file yet, but
6068you try to switch to its body file, Ada mode now generates procedure
6069stubs.
6070
6071*** There are two new commands:
6072 - `ada-make-local' : invokes gnatmake on the current buffer
6073 - `ada-check-syntax' : check syntax of current buffer.
6074
6075The user options `ada-compiler-make', `ada-make-options',
6076`ada-language-version', `ada-compiler-syntax-check', and
79214ddf 6077`ada-compile-options' are used within these commands.
a933dad1
DL
6078
6079*** Ada mode can now work with Outline minor mode. The outline level
6080is calculated from the indenting, not from syntactic constructs.
6081Outlining does not work if your code is not correctly indented.
6082
6083*** The new function `ada-gnat-style' converts the buffer to the style of
6084formatting used in GNAT. It places two blanks after a comment start,
6085places one blank between a word end and an opening '(', and puts one
6086space between a comma and the beginning of a word.
6087
6088** Scheme mode changes.
6089
6090*** Scheme mode indentation now uses many of the facilities of Lisp
6091mode; therefore, the variables to customize it are the variables used
6092for Lisp mode which have names starting with `lisp-'. The variables
6093with names starting with `scheme-' which used to do this no longer
6094have any effect.
6095
6096If you want to use different indentation for Scheme and Lisp, this is
6097still possible, but now you must do it by adding a hook to
6098scheme-mode-hook, which could work by setting the `lisp-' indentation
6099variables as buffer-local variables.
6100
6101*** DSSSL mode is a variant of Scheme mode, for editing DSSSL scripts.
6102Use M-x dsssl-mode.
6103
133c9e59
GM
6104** Changes to the emacsclient program
6105
875c1439
GM
6106*** If a socket can't be found, and environment variables LOGNAME or
6107USER are set, emacsclient now looks for a socket based on the UID
6108associated with the name. That is an emacsclient running as root
6109can connect to an Emacs server started by a non-root user.
6110
133c9e59 6111*** The emacsclient program now accepts an option --no-wait which tells
a933dad1
DL
6112it to return immediately without waiting for you to "finish" the
6113buffer in Emacs.
6114
133c9e59
GM
6115*** The new option --alternate-editor allows to specify an editor to
6116use if Emacs is not running. The environment variable
6117ALTERNATE_EDITOR can be used for the same effect; the command line
6118option takes precedence.
6119
a933dad1
DL
6120** M-x eldoc-mode enables a minor mode in which the echo area
6121constantly shows the parameter list for function being called at point
6122(in Emacs Lisp and Lisp Interaction modes only).
6123
6124** C-x n d now runs the new command narrow-to-defun,
6125which narrows the accessible parts of the buffer to just
6126the current defun.
6127
6128** Emacs now handles the `--' argument in the standard way; all
6129following arguments are treated as ordinary file names.
6130
6131** On MSDOS and Windows, the bookmark file is now called _emacs.bmk,
6132and the saved desktop file is now called _emacs.desktop (truncated if
6133necessary).
6134
6135** When you kill a buffer that visits a file,
6136if there are any registers that save positions in the file,
6137these register values no longer become completely useless.
6138If you try to go to such a register with C-x j, then you are
6139asked whether to visit the file again. If you say yes,
6140it visits the file and then goes to the same position.
6141
6142** When you visit a file that changes frequently outside Emacs--for
6143example, a log of output from a process that continues to run--it may
6144be useful for Emacs to revert the file without querying you whenever
6145you visit the file afresh with C-x C-f.
6146
6147You can request this behavior for certain files by setting the
6148variable revert-without-query to a list of regular expressions. If a
6149file's name matches any of these regular expressions, find-file and
6150revert-buffer revert the buffer without asking for permission--but
6151only if you have not edited the buffer text yourself.
6152
6153** set-default-font has been renamed to set-frame-font
6154since it applies only to the current frame.
6155
6156** In TeX mode, you can use the variable tex-main-file to specify the
6157file for tex-file to run TeX on. (By default, tex-main-file is nil,
6158and tex-file runs TeX on the current visited file.)
6159
6160This is useful when you are editing a document that consists of
6161multiple files. In each of the included files, you can set up a local
6162variable list which specifies the top-level file of your document for
6163tex-main-file. Then tex-file will run TeX on the whole document
6164instead of just the file you are editing.
6165
6166** RefTeX mode
6167
6168RefTeX mode is a new minor mode with special support for \label, \ref
6169and \cite macros in LaTeX documents. RefTeX distinguishes labels of
6170different environments (equation, figure, ...) and has full support for
6171multifile documents. To use it, select a buffer with a LaTeX document and
6172turn the mode on with M-x reftex-mode. Here are the main user commands:
6173
79214ddf 6174C-c ( reftex-label
a933dad1
DL
6175 Creates a label semi-automatically. RefTeX is context sensitive and
6176 knows which kind of label is needed.
6177
6178C-c ) reftex-reference
6179 Offers in a menu all labels in the document, along with context of the
6180 label definition. The selected label is referenced as \ref{LABEL}.
6181
6182C-c [ reftex-citation
6183 Prompts for a regular expression and displays a list of matching BibTeX
6184 database entries. The selected entry is cited with a \cite{KEY} macro.
6185
6186C-c & reftex-view-crossref
6187 Views the cross reference of a \ref or \cite command near point.
6188
6189C-c = reftex-toc
6190 Shows a table of contents of the (multifile) document. From there you
6191 can quickly jump to every section.
79214ddf 6192
a933dad1
DL
6193Under X, RefTeX installs a "Ref" menu in the menu bar, with additional
6194commands. Press `?' to get help when a prompt mentions this feature.
6195Full documentation and customization examples are in the file
6196reftex.el. You can use the finder to view the file documentation:
6197C-h p --> tex --> reftex.el
6198
6199** Changes in BibTeX mode.
6200
6201*** Info documentation is now available.
6202
6203*** Don't allow parentheses in string constants anymore. This confused
6204both the BibTeX program and Emacs BibTeX mode.
6205
6206*** Renamed variable bibtex-mode-user-optional-fields to
6207bibtex-user-optional-fields.
6208
6209*** Removed variable bibtex-include-OPTannote
6210(use bibtex-user-optional-fields instead).
6211
6212*** New interactive functions to copy and kill fields and complete
6213entries to the BibTeX kill ring, from where they can be yanked back by
6214appropriate functions.
6215
6216*** New interactive functions for repositioning and marking of
6217entries. They are bound by default to M-C-l and M-C-h.
6218
6219*** New hook bibtex-clean-entry-hook. It is called after entry has
6220been cleaned.
6221
6222*** New variable bibtex-field-delimiters, which replaces variables
6223bibtex-field-{left|right}-delimiter.
6224
6225*** New variable bibtex-entry-delimiters to determine how entries
6226shall be delimited.
6227
6228*** Allow preinitialization of fields. See documentation of
6229bibtex-user-optional-fields, bibtex-entry-field-alist, and
6230bibtex-include-OPTkey for details.
6231
6232*** Book and InBook entries require either an author or an editor
6233field. This is now supported by bibtex.el. Alternative fields are
6234prefixed with `ALT'.
6235
6236*** New variable bibtex-entry-format, which replaces variable
6237bibtex-clean-entry-zap-empty-opts and allows specification of many
6238formatting options performed on cleaning an entry (see variable
6239documentation).
6240
6241*** Even more control on how automatic keys are generated. See
6242documentation of bibtex-generate-autokey for details. Transcriptions
6243for foreign languages other than German are now handled, too.
6244
6245*** New boolean user option bibtex-comma-after-last-field to decide if
6246comma should be inserted at end of last field.
6247
6248*** New boolean user option bibtex-align-at-equal-sign to determine if
6249alignment should be made at left side of field contents or at equal
6250signs. New user options to control entry layout (e.g. indentation).
6251
6252*** New function bibtex-fill-entry to realign entries.
6253
6254*** New function bibtex-reformat to reformat region or buffer.
6255
6256*** New function bibtex-convert-alien to convert a BibTeX database
6257from alien sources.
6258
6259*** New function bibtex-complete-key (similar to bibtex-complete-string)
6260to complete prefix to a key defined in buffer. Mainly useful in
6261crossref entries.
6262
6263*** New function bibtex-count-entries to count entries in buffer or
6264region.
6265
6266*** Added support for imenu.
6267
6268*** The function `bibtex-validate' now checks current region instead
6269of buffer if mark is active. Now it shows all errors of buffer in a
6270`compilation mode' buffer. You can use the normal commands (e.g.
6271`next-error') for compilation modes to jump to errors.
6272
6273*** New variable `bibtex-string-file-path' to determine where the files
6274from `bibtex-string-files' are searched.
6275
6276** Iso Accents mode now supports Latin-3 as an alternative.
6277
30a009a5 6278** The command next-error now opens blocks hidden by hideshow.
047f434a 6279
a933dad1
DL
6280** The function using-unix-filesystems has been replaced by the
6281functions add-untranslated-filesystem and remove-untranslated-filesystem.
6282Each of these functions takes the name of a drive letter or directory
6283as an argument.
6284
6285When a filesystem is added as untranslated, all files on it are read
6286and written in binary mode (no cr/lf translation is performed).
6287
6288** browse-url changes
6289
6290*** New methods for: Grail (browse-url-generic), MMM (browse-url-mmm),
6291Lynx in a separate xterm (browse-url-lynx-xterm) or in an Emacs window
6292(browse-url-lynx-emacs), remote W3 (browse-url-w3-gnudoit), generic
6293non-remote-controlled browsers (browse-url-generic) and associated
6294customization variables.
6295
6296*** New commands `browse-url-of-region' and `browse-url'.
6297
6298*** URLs marked up with <URL:...> (RFC1738) work if broken across
6299lines. Browsing methods can be associated with URL regexps
6300(e.g. mailto: URLs) via `browse-url-browser-function'.
6301
6302** Changes in Ediff
6303
6304*** Clicking Mouse-2 on a brief command description in Ediff control panel
6305pops up the Info file for this command.
6306
6307*** There is now a variable, ediff-autostore-merges, which controls whether
6308the result of a merge is saved in a file. By default, this is done only when
6309merge is done from a session group (eg, when merging files in two different
6310directories).
6311
6312*** Since Emacs 19.31 (this hasn't been announced before), Ediff can compare
6313and merge groups of files residing in different directories, or revisions of
6314files in the same directory.
6315
6316*** Since Emacs 19.31, Ediff can apply multi-file patches interactively.
6317The patches must be in the context format or GNU unified format. (The bug
6318related to the GNU format has now been fixed.)
6319
6320** Changes in Viper
6321
6322*** The startup file is now .viper instead of .vip
79214ddf 6323*** All variable/function names have been changed to start with viper-
a933dad1
DL
6324 instead of vip-.
6325*** C-\ now simulates the meta-key in all Viper states.
79214ddf 6326*** C-z in Insert state now escapes to Vi for the duration of the next
a933dad1
DL
6327Viper command. In Vi and Insert states, C-z behaves as before.
6328*** C-c \ escapes to Vi for one command if Viper is in Insert or Emacs states.
6329*** _ is no longer the meta-key in Vi state.
6330*** The variable viper-insert-state-cursor-color can be used to change cursor
6331color when Viper is in insert state.
6332*** If search lands the cursor near the top or the bottom of the window,
6333Viper pulls the window up or down to expose more context. The variable
6334viper-adjust-window-after-search controls this behavior.
6335
6336** Etags changes.
6337
6338*** In C, C++, Objective C and Java, Etags tags global variables by
6339default. The resulting tags files are inflated by 30% on average.
6340Use --no-globals to turn this feature off. Etags can also tag
6341variables which are members of structure-like constructs, but it does
6342not by default. Use --members to turn this feature on.
6343
6344*** C++ member functions are now recognized as tags.
6345
6346*** Java is tagged like C++. In addition, "extends" and "implements"
6347constructs are tagged. Files are recognised by the extension .java.
6348
6349*** Etags can now handle programs written in Postscript. Files are
6350recognised by the extensions .ps and .pdb (Postscript with C syntax).
6351In Postscript, tags are lines that start with a slash.
6352
6353*** Etags now handles Objective C and Objective C++ code. The usual C and
6354C++ tags are recognized in these languages; in addition, etags
6355recognizes special Objective C syntax for classes, class categories,
6356methods and protocols.
6357
6358*** Etags also handles Cobol. Files are recognised by the extension
6359.cobol. The tagged lines are those containing a word that begins in
6360column 8 and ends in a full stop, i.e. anything that could be a
6361paragraph name.
6362
6363*** Regexps in Etags now support intervals, as in ed or grep. The syntax of
6364an interval is \{M,N\}, and it means to match the preceding expression
6365at least M times and as many as N times.
6366
6367** The format for specifying a custom format for time-stamp to insert
6368in files has changed slightly.
6369
6370With the new enhancements to the functionality of format-time-string,
6371time-stamp-format will change to be eventually compatible with it.
6372This conversion is being done in two steps to maintain compatibility
6373with old time-stamp-format values.
6374
6375In the new scheme, alternate case is signified by the number-sign
6376(`#') modifier, rather than changing the case of the format character.
6377This feature is as yet incompletely implemented for compatibility
6378reasons.
6379
6380In the old time-stamp-format, all numeric fields defaulted to their
6381natural width. (With format-time-string, each format has a
6382fixed-width default.) In this version, you can specify the colon
6383(`:') modifier to a numeric conversion to mean "give me the historical
6384time-stamp-format width default." Do not use colon if you are
6385specifying an explicit width, as in "%02d".
6386
6387Numbers are no longer truncated to the requested width, except in the
6388case of "%02y", which continues to give a two-digit year. Digit
6389truncation probably wasn't being used for anything else anyway.
6390
6391The new formats will work with old versions of Emacs. New formats are
6392being recommended now to allow time-stamp-format to change in the
6393future to be compatible with format-time-string. The new forms being
6394recommended now will continue to work then.
6395
6396See the documentation string for the variable time-stamp-format for
6397details.
6398
6399** There are some additional major modes:
6400
6401dcl-mode, for editing VMS DCL files.
6402m4-mode, for editing files of m4 input.
6403meta-mode, for editing MetaFont and MetaPost source files.
6404
6405** In Shell mode, the command shell-copy-environment-variable lets you
6406copy the value of a specified environment variable from the subshell
6407into Emacs.
6408
6409** New Lisp packages include:
6410
6411*** battery.el displays battery status for laptops.
6412
6413*** M-x bruce (named after Lenny Bruce) is a program that might
6414be used for adding some indecent words to your email.
6415
6416*** M-x crisp-mode enables an emulation for the CRiSP editor.
6417
6418*** M-x dirtrack arranges for better tracking of directory changes
6419in shell buffers.
6420
6421*** The new library elint.el provides for linting of Emacs Lisp code.
6422See the documentation for `elint-initialize', `elint-current-buffer'
6423and `elint-defun'.
6424
6425*** M-x expand-add-abbrevs defines a special kind of abbrev which is
6426meant for programming constructs. These abbrevs expand like ordinary
6427ones, when you type SPC, but only at the end of a line and not within
6428strings or comments.
6429
6430These abbrevs can act as templates: you can define places within an
6431abbrev for insertion of additional text. Once you expand the abbrev,
6432you can then use C-x a p and C-x a n to move back and forth to these
6433insertion points. Thus you can conveniently insert additional text
6434at these points.
6435
6436*** filecache.el remembers the location of files so that you
6437can visit them by short forms of their names.
6438
6439*** find-func.el lets you find the definition of the user-loaded
6440Emacs Lisp function at point.
6441
6442*** M-x handwrite converts text to a "handwritten" picture.
6443
6444*** M-x iswitchb-buffer is a command for switching to a buffer, much like
6445switch-buffer, but it reads the argument in a more helpful way.
6446
6447*** M-x landmark implements a neural network for landmark learning.
6448
6449*** M-x locate provides a convenient interface to the `locate' program.
6450
6451*** M4 mode is a new mode for editing files of m4 input.
6452
6453*** mantemp.el creates C++ manual template instantiations
6454from the GCC error messages which indicate which instantiations are needed.
6455
6456*** mouse-copy.el provides a one-click copy and move feature.
6457You can drag a region with M-mouse-1, and it is automatically
6458inserted at point. M-Shift-mouse-1 deletes the text from its
6459original place after inserting the copy.
6460
6461*** mouse-drag.el lets you do scrolling by dragging Mouse-2
6462on the buffer.
6463
6464You click the mouse and move; that distance either translates into the
6465velocity to scroll (with mouse-drag-throw) or the distance to scroll
6466(with mouse-drag-drag). Horizontal scrolling is enabled when needed.
6467
6468Enable mouse-drag with:
6469 (global-set-key [down-mouse-2] 'mouse-drag-throw)
6470-or-
6471 (global-set-key [down-mouse-2] 'mouse-drag-drag)
6472
6473*** mspools.el is useful for determining which mail folders have
6474mail waiting to be read in them. It works with procmail.
6475
6476*** Octave mode is a major mode for editing files of input for Octave.
6477It comes with a facility for communicating with an Octave subprocess.
6478
6479*** ogonek
6480
6481The ogonek package provides functions for changing the coding of
6482Polish diacritic characters in buffers. Codings known from various
6483platforms are supported such as ISO8859-2, Mazovia, IBM Latin2, and
6484TeX. For example, you can change the coding from Mazovia to
6485ISO8859-2. Another example is a change of coding from ISO8859-2 to
6486prefix notation (in which `/a' stands for the aogonek character, for
6487instance) and vice versa.
6488
6489To use this package load it using
6490 M-x load-library [enter] ogonek
6491Then, you may get an explanation by calling one of
79214ddf 6492 M-x ogonek-jak -- in Polish
a933dad1
DL
6493 M-x ogonek-how -- in English
6494The info specifies the commands and variables provided as well as the
6495ways of customization in `.emacs'.
6496
6497*** Interface to ph.
6498
6499Emacs provides a client interface to CCSO Nameservers (ph/qi)
6500
6501The CCSO nameserver is used in many universities to provide directory
6502services about people. ph.el provides a convenient Emacs interface to
6503these servers.
6504
6505*** uce.el is useful for replying to unsolicited commercial email.
6506
6507*** vcursor.el implements a "virtual cursor" feature.
6508You can move the virtual cursor with special commands
6509while the real cursor does not move.
6510
6511*** webjump.el is a "hot list" package which you can set up
6512for visiting your favorite web sites.
6513
6514*** M-x winner-mode is a minor mode which saves window configurations,
6515so you can move back to other configurations that you have recently used.
6516
6517** movemail change
6518
6519Movemail no longer needs to be installed setuid root in order for POP
6520mail retrieval to function properly. This is because it no longer
6521supports the RPOP (reserved-port POP) protocol; instead, it uses the
6522user's POP password to authenticate to the mail server.
6523
6524This change was made earlier, but not reported in NEWS before.
6525\f
6526* Emacs 20.1 changes for MS-DOS and MS-Windows.
6527
6528** Changes in handling MS-DOS/MS-Windows text files.
6529
6530Emacs handles three different conventions for representing
6531end-of-line: CRLF for MSDOS, LF for Unix and GNU, and CR (used on the
6532Macintosh). Emacs determines which convention is used in a specific
6533file based on the contents of that file (except for certain special
6534file names), and when it saves the file, it uses the same convention.
6535
6536To save the file and change the end-of-line convention, you can use
6537C-x RET f (set-buffer-file-coding-system) to specify a different
6538coding system for the buffer. Then, when you save the file, the newly
6539specified coding system will take effect. For example, to save with
6540LF, specify undecided-unix (or some other ...-unix coding system); to
6541save with CRLF, specify undecided-dos.
6542\f
6543* Lisp Changes in Emacs 20.1
6544
6545** Byte-compiled files made with Emacs 20 will, in general, work in
6546Emacs 19 as well, as long as the source code runs in Emacs 19. And
6547vice versa: byte-compiled files made with Emacs 19 should also run in
6548Emacs 20, as long as the program itself works in Emacs 20.
6549
6550** Windows-specific functions and variables have been renamed
6551to start with w32- instead of win32-.
6552
6553In hacker language, calling something a "win" is a form of praise. We
6554don't want to praise a non-free Microsoft system, so we don't call it
6555"win".
6556
6557** Basic Lisp changes
6558
6559*** A symbol whose name starts with a colon now automatically
6560evaluates to itself. Therefore such a symbol can be used as a constant.
6561
6562*** The defined purpose of `defconst' has been changed. It should now
6563be used only for values that should not be changed whether by a program
6564or by the user.
6565
6566The actual behavior of defconst has not been changed.
6567
6568*** There are new macros `when' and `unless'
6569
6570(when CONDITION BODY...) is short for (if CONDITION (progn BODY...))
6571(unless CONDITION BODY...) is short for (if CONDITION nil BODY...)
6572
6573*** Emacs now defines functions caar, cadr, cdar and cddr with their
6574usual Lisp meanings. For example, caar returns the car of the car of
6575its argument.
6576
6577*** equal, when comparing strings, now ignores their text properties.
6578
6579*** The new function `functionp' tests whether an object is a function.
6580
6581*** arrayp now returns t for char-tables and bool-vectors.
6582
6583*** Certain primitives which use characters (as integers) now get an
6584error if the integer is not a valid character code. These primitives
6585include insert-char, char-to-string, and the %c construct in the
6586`format' function.
6587
6588*** The `require' function now insists on adding a suffix, either .el
6589or .elc, to the file name. Thus, (require 'foo) will not use a file
6590whose name is just foo. It insists on foo.el or foo.elc.
6591
6592*** The `autoload' function, when the file name does not contain
6593either a directory name or the suffix .el or .elc, insists on
6594adding one of these suffixes.
6595
6596*** string-to-number now takes an optional second argument BASE
6597which specifies the base to use when converting an integer.
79214ddf 6598If BASE is omitted, base 10 is used.
a933dad1
DL
6599
6600We have not implemented other radices for floating point numbers,
6601because that would be much more work and does not seem useful.
6602
6603*** substring now handles vectors as well as strings.
6604
6605*** The Common Lisp function eql is no longer defined normally.
6606You must load the `cl' library to define it.
6607
6608*** The new macro `with-current-buffer' lets you evaluate an expression
6609conveniently with a different current buffer. It looks like this:
6610
6611 (with-current-buffer BUFFER BODY-FORMS...)
6612
6613BUFFER is the expression that says which buffer to use.
6614BODY-FORMS say what to do in that buffer.
6615
6616*** The new primitive `save-current-buffer' saves and restores the
6617choice of current buffer, like `save-excursion', but without saving or
6618restoring the value of point or the mark. `with-current-buffer'
6619works using `save-current-buffer'.
6620
6621*** The new macro `with-temp-file' lets you do some work in a new buffer and
6622write the output to a specified file. Like `progn', it returns the value
6623of the last form.
6624
6625*** The new macro `with-temp-buffer' lets you do some work in a new buffer,
6626which is discarded after use. Like `progn', it returns the value of the
6627last form. If you wish to return the buffer contents, use (buffer-string)
6628as the last form.
6629
6630*** The new function split-string takes a string, splits it at certain
6631characters, and returns a list of the substrings in between the
6632matches.
6633
6634For example, (split-string "foo bar lose" " +") returns ("foo" "bar" "lose").
6635
6636*** The new macro with-output-to-string executes some Lisp expressions
6637with standard-output set up so that all output feeds into a string.
6638Then it returns that string.
6639
6640For example, if the current buffer name is `foo',
6641
6642(with-output-to-string
6643 (princ "The buffer is ")
6644 (princ (buffer-name)))
6645
6646returns "The buffer is foo".
6647
6648** Non-ASCII characters are now supported, if enable-multibyte-characters
6649is non-nil.
6650
6651These characters have character codes above 256. When inserted in the
6652buffer or stored in a string, they are represented as multibyte
6653characters that occupy several buffer positions each.
6654
6655*** When enable-multibyte-characters is non-nil, a single character in
6656a buffer or string can be two or more bytes (as many as four).
6657
6658Buffers and strings are still made up of unibyte elements;
6659character positions and string indices are always measured in bytes.
6660Therefore, moving forward one character can increase the buffer
6661position by 2, 3 or 4. The function forward-char moves by whole
6662characters, and therefore is no longer equivalent to
6663 (lambda (n) (goto-char (+ (point) n))).
6664
6665ASCII characters (codes 0 through 127) are still single bytes, always.
6666Sequences of byte values 128 through 255 are used to represent
6667non-ASCII characters. These sequences are called "multibyte
6668characters".
6669
6670The first byte of a multibyte character is always in the range 128
6671through 159 (octal 0200 through 0237). These values are called
6672"leading codes". The second and subsequent bytes are always in the
6673range 160 through 255 (octal 0240 through 0377). The first byte, the
6674leading code, determines how many bytes long the sequence is.
6675
6676*** The function forward-char moves over characters, and therefore
6677(forward-char 1) may increase point by more than 1 if it moves over a
6678multibyte character. Likewise, delete-char always deletes a
6679character, which may be more than one buffer position.
6680
6681This means that some Lisp programs, which assume that a character is
6682always one buffer position, need to be changed.
6683
6684However, all ASCII characters are always one buffer position.
79214ddf 6685
a933dad1
DL
6686*** The regexp [\200-\377] no longer matches all non-ASCII characters,
6687because when enable-multibyte-characters is non-nil, these characters
6688have codes that are not in the range octal 200 to octal 377. However,
6689the regexp [^\000-\177] does match all non-ASCII characters,
6690guaranteed.
6691
6692*** The function char-boundary-p returns non-nil if position POS is
6693between two characters in the buffer (not in the middle of a
6694character).
6695
6696When the value is non-nil, it says what kind of character follows POS:
6697
6698 0 if POS is at an ASCII character or at the end of range,
6699 1 if POS is before a 2-byte length multi-byte form,
6700 2 if POS is at a head of 3-byte length multi-byte form,
6701 3 if POS is at a head of 4-byte length multi-byte form,
6702 4 if POS is at a head of multi-byte form of a composite character.
6703
6704*** The function char-bytes returns how many bytes the character CHAR uses.
6705
6706*** Strings can contain multibyte characters. The function
6707`length' returns the string length counting bytes, which may be
6708more than the number of characters.
6709
6710You can include a multibyte character in a string constant by writing
6711it literally. You can also represent it with a hex escape,
6712\xNNNNNNN..., using as many digits as necessary. Any character which
6713is not a valid hex digit terminates this construct. If you want to
6714follow it with a character that is a hex digit, write backslash and
6715newline in between; that will terminate the hex escape.
6716
6717*** The function concat-chars takes arguments which are characters
6718and returns a string containing those characters.
6719
6720*** The function sref access a multibyte character in a string.
6721(sref STRING INDX) returns the character in STRING at INDEX. INDEX
6722counts from zero. If INDEX is at a position in the middle of a
6723character, sref signals an error.
6724
6725*** The function chars-in-string returns the number of characters
6726in a string. This is less than the length of the string, if the
6727string contains multibyte characters (the length counts bytes).
6728
6729*** The function chars-in-region returns the number of characters
6730in a region from BEG to END. This is less than (- END BEG) if the
6731region contains multibyte characters (the length counts bytes).
6732
6733*** The function string-to-list converts a string to a list of
6734the characters in it. string-to-vector converts a string
6735to a vector of the characters in it.
6736
6737*** The function store-substring alters part of the contents
6738of a string. You call it as follows:
6739
6740 (store-substring STRING IDX OBJ)
6741
6742This says to alter STRING, by storing OBJ starting at index IDX in
6743STRING. OBJ may be either a character or a (smaller) string.
6744This function really does alter the contents of STRING.
6745Since it is impossible to change the length of an existing string,
6746it is an error if OBJ doesn't fit within STRING's actual length.
6747
6748*** char-width returns the width (in columns) of the character CHAR,
6749if it were displayed in the current buffer and the selected window.
6750
6751*** string-width returns the width (in columns) of the text in STRING,
6752if it were displayed in the current buffer and the selected window.
6753
6754*** truncate-string-to-width shortens a string, if necessary,
6755to fit within a certain number of columns. (Of course, it does
6756not alter the string that you give it; it returns a new string
6757which contains all or just part of the existing string.)
6758
6759(truncate-string-to-width STR END-COLUMN &optional START-COLUMN PADDING)
6760
6761This returns the part of STR up to column END-COLUMN.
6762
6763The optional argument START-COLUMN specifies the starting column.
6764If this is non-nil, then the first START-COLUMN columns of the string
6765are not included in the resulting value.
6766
6767The optional argument PADDING, if non-nil, is a padding character to be added
6768at the beginning and end the resulting string, to extend it to exactly
6769WIDTH columns. If PADDING is nil, that means do not pad; then, if STRING
6770is narrower than WIDTH, the value is equal to STRING.
6771
6772If PADDING and START-COLUMN are both non-nil, and if there is no clean
6773place in STRING that corresponds to START-COLUMN (because one
6774character extends across that column), then the padding character
6775PADDING is added one or more times at the beginning of the result
6776string, so that its columns line up as if it really did start at
6777column START-COLUMN.
6778
6779*** When the functions in the list after-change-functions are called,
6780the third argument is the number of bytes in the pre-change text, not
6781necessarily the number of characters. It is, in effect, the
6782difference in buffer position between the beginning and the end of the
6783changed text, before the change.
6784
6785*** The characters Emacs uses are classified in various character
6786sets, each of which has a name which is a symbol. In general there is
6787one character set for each script, not for each language.
6788
6789**** The function charsetp tests whether an object is a character set name.
6790
6791**** The variable charset-list holds a list of character set names.
6792
6793**** char-charset, given a character code, returns the name of the character
6794set that the character belongs to. (The value is a symbol.)
6795
6796**** split-char, given a character code, returns a list containing the
6797name of the character set, followed by one or two byte-values
6798which identify the character within that character set.
6799
6800**** make-char, given a character set name and one or two subsequent
6801byte-values, constructs a character code. This is roughly the
6802opposite of split-char.
6803
6804**** find-charset-region returns a list of the character sets
6805of all the characters between BEG and END.
6806
6807**** find-charset-string returns a list of the character sets
6808of all the characters in a string.
6809
6810*** Here are the Lisp facilities for working with coding systems
6811and specifying coding systems.
6812
6813**** The function coding-system-list returns a list of all coding
6814system names (symbols). With optional argument t, it returns a list
6815of all distinct base coding systems, not including variants.
6816(Variant coding systems are those like latin-1-dos, latin-1-unix
6817and latin-1-mac which specify the end-of-line conversion as well
6818as what to do about code conversion.)
6819
6820**** coding-system-p tests a symbol to see if it is a coding system
6821name. It returns t if so, nil if not.
6822
6823**** file-coding-system-alist specifies which coding systems to use
6824for certain file names. It works like network-coding-system-alist,
6825except that the PATTERN is matched against the file name.
6826
6827Each element has the format (PATTERN . VAL), where PATTERN determines
6828which file names the element applies to. PATTERN should be a regexp
6829to match against a file name.
6830
6831VAL is a coding system, a cons cell containing two coding systems, or
6832a function symbol. If VAL is a coding system, it is used for both
6833decoding what received from the network stream and encoding what sent
6834to the network stream. If VAL is a cons cell containing two coding
6835systems, the car specifies the coding system for decoding, and the cdr
6836specifies the coding system for encoding.
6837
6838If VAL is a function symbol, the function must return a coding system
6839or a cons cell containing two coding systems, which is used as above.
6840
6841**** The variable network-coding-system-alist specifies
6842the coding system to use for network sockets.
6843
6844Each element has the format (PATTERN . VAL), where PATTERN determines
6845which network sockets the element applies to. PATTERN should be
6846either a port number or a regular expression matching some network
6847service names.
6848
6849VAL is a coding system, a cons cell containing two coding systems, or
6850a function symbol. If VAL is a coding system, it is used for both
6851decoding what received from the network stream and encoding what sent
6852to the network stream. If VAL is a cons cell containing two coding
6853systems, the car specifies the coding system for decoding, and the cdr
6854specifies the coding system for encoding.
6855
6856If VAL is a function symbol, the function must return a coding system
6857or a cons cell containing two coding systems, which is used as above.
6858
6859**** process-coding-system-alist specifies which coding systems to use
6860for certain subprocess. It works like network-coding-system-alist,
6861except that the PATTERN is matched against the program name used to
6862start the subprocess.
6863
6864**** The variable default-process-coding-system specifies the coding
6865systems to use for subprocess (and net connection) input and output,
6866when nothing else specifies what to do. The value is a cons cell
6867(OUTPUT-CODING . INPUT-CODING). OUTPUT-CODING applies to output
6868to the subprocess, and INPUT-CODING applies to input from it.
6869
6870**** The variable coding-system-for-write, if non-nil, specifies the
6871coding system to use for writing a file, or for output to a synchronous
6872subprocess.
6873
6874It also applies to any asynchronous subprocess or network connection,
6875but in a different way: the value of coding-system-for-write when you
6876start the subprocess or connection affects that subprocess or
6877connection permanently or until overridden.
6878
6879The variable coding-system-for-write takes precedence over
6880file-coding-system-alist, process-coding-system-alist and
6881network-coding-system-alist, and all other methods of specifying a
6882coding system for output. But most of the time this variable is nil.
6883It exists so that Lisp programs can bind it to a specific coding
6884system for one operation at a time.
6885
6886**** coding-system-for-read applies similarly to input from
6887files, subprocesses or network connections.
6888
6889**** The function process-coding-system tells you what
6890coding systems(s) an existing subprocess is using.
6891The value is a cons cell,
6892 (DECODING-CODING-SYSTEM . ENCODING-CODING-SYSTEM)
6893where DECODING-CODING-SYSTEM is used for decoding output from
6894the subprocess, and ENCODING-CODING-SYSTEM is used for encoding
6895input to the subprocess.
6896
6897**** The function set-process-coding-system can be used to
6898change the coding systems in use for an existing subprocess.
6899
6900** Emacs has a new facility to help users manage the many
6901customization options. To make a Lisp program work with this facility,
6902you need to use the new macros defgroup and defcustom.
6903
6904You use defcustom instead of defvar, for defining a user option
6905variable. The difference is that you specify two additional pieces of
6906information (usually): the "type" which says what values are
6907legitimate, and the "group" which specifies the hierarchy for
6908customization.
6909
6910Thus, instead of writing
6911
6912 (defvar foo-blurgoze nil
6913 "*Non-nil means that foo will act very blurgozely.")
6914
6915you would now write this:
6916
6917 (defcustom foo-blurgoze nil
6918 "*Non-nil means that foo will act very blurgozely."
6919 :type 'boolean
6920 :group foo)
6921
6922The type `boolean' means that this variable has only
6923two meaningful states: nil and non-nil. Other type values
6924describe other possibilities; see the manual for Custom
6925for a description of them.
6926
6927The "group" argument is used to specify a group which the option
6928should belong to. You define a new group like this:
6929
6930 (defgroup ispell nil
6931 "Spell checking using Ispell."
6932 :group 'processes)
6933
6934The "group" argument in defgroup specifies the parent group. The root
6935group is called `emacs'; it should not contain any variables itself,
6936but only other groups. The immediate subgroups of `emacs' correspond
6937to the keywords used by C-h p. Under these subgroups come
6938second-level subgroups that belong to individual packages.
6939
6940Each Emacs package should have its own set of groups. A simple
6941package should have just one group; a more complex package should
6942have a hierarchy of its own groups. The sole or root group of a
6943package should be a subgroup of one or more of the "keyword"
6944first-level subgroups.
6945
6946** New `widget' library for inserting UI components in buffers.
6947
6948This library, used by the new custom library, is documented in a
6949separate manual that accompanies Emacs.
6950
6951** easy-mmode
6952
6953The easy-mmode package provides macros and functions that make
6954developing minor modes easier. Roughly, the programmer has to code
6955only the functionality of the minor mode. All the rest--toggles,
6956predicate, and documentation--can be done in one call to the macro
6957`easy-mmode-define-minor-mode' (see the documentation). See also
6958`easy-mmode-define-keymap'.
6959
6960** Text property changes
6961
6962*** The `intangible' property now works on overlays as well as on a
6963text property.
6964
6965*** The new functions next-char-property-change and
6966previous-char-property-change scan through the buffer looking for a
6967place where either a text property or an overlay might change. The
6968functions take two arguments, POSITION and LIMIT. POSITION is the
6969starting position for the scan. LIMIT says where to stop the scan.
6970
6971If no property change is found before LIMIT, the value is LIMIT. If
6972LIMIT is nil, scan goes to the beginning or end of the accessible part
6973of the buffer. If no property change is found, the value is the
6974position of the beginning or end of the buffer.
6975
6976*** In the `local-map' text property or overlay property, the property
6977value can now be a symbol whose function definition is a keymap. This
6978is an alternative to using the keymap itself.
6979
6980** Changes in invisibility features
6981
6982*** Isearch can now temporarily show parts of the buffer which are
6983hidden by an overlay with a invisible property, when the search match
6984is inside that portion of the buffer. To enable this the overlay
6985should have a isearch-open-invisible property which is a function that
6986would be called having the overlay as an argument, the function should
6987make the overlay visible.
6988
6989During incremental search the overlays are shown by modifying the
6990invisible and intangible properties, if beside this more actions are
6991needed the overlay should have a isearch-open-invisible-temporary
6992which is a function. The function is called with 2 arguments: one is
6993the overlay and the second is nil when it should show the overlay and
6994t when it should hide it.
6995
6996*** add-to-invisibility-spec, remove-from-invisibility-spec
6997
6998Modes that use overlays to hide portions of a buffer should set the
79214ddf
FP
6999invisible property of the overlay to the mode's name (or another symbol)
7000and modify the `buffer-invisibility-spec' to include that symbol.
a933dad1 7001Use `add-to-invisibility-spec' and `remove-from-invisibility-spec' to
79214ddf 7002manipulate the `buffer-invisibility-spec'.
a933dad1
DL
7003Here is an example of how to do this:
7004
7005 ;; If we want to display an ellipsis:
79214ddf 7006 (add-to-invisibility-spec '(my-symbol . t))
a933dad1 7007 ;; If you don't want ellipsis:
79214ddf 7008 (add-to-invisibility-spec 'my-symbol)
a933dad1
DL
7009
7010 ...
7011 (overlay-put (make-overlay beginning end) 'invisible 'my-symbol)
7012
7013 ...
7014 ;; When done with the overlays:
7015 (remove-from-invisibility-spec '(my-symbol . t))
7016 ;; Or respectively:
7017 (remove-from-invisibility-spec 'my-symbol)
7018
7019** Changes in syntax parsing.
7020
7021*** The syntax-directed buffer-scan functions (such as
7022`parse-partial-sexp', `forward-word' and similar functions) can now
7023obey syntax information specified by text properties, if the variable
7024`parse-sexp-lookup-properties' is non-nil.
7025
7026If the value of `parse-sexp-lookup-properties' is nil, the behavior
7027is as before: the syntax-table of the current buffer is always
7028used to determine the syntax of the character at the position.
7029
7030When `parse-sexp-lookup-properties' is non-nil, the syntax of a
7031character in the buffer is calculated thus:
7032
7033 a) if the `syntax-table' text-property of that character
7034 is a cons, this cons becomes the syntax-type;
7035
7036 Valid values of `syntax-table' text-property are: nil, a valid
7037 syntax-table, and a valid syntax-table element, i.e.,
7038 a cons cell of the form (SYNTAX-CODE . MATCHING-CHAR).
7039
7040 b) if the character's `syntax-table' text-property
7041 is a syntax table, this syntax table is used
7042 (instead of the syntax-table of the current buffer) to
7043 determine the syntax type of the character.
7044
7045 c) otherwise the syntax-type is determined by the syntax-table
7046 of the current buffer.
7047
7048*** The meaning of \s in regular expressions is also affected by the
7049value of `parse-sexp-lookup-properties'. The details are the same as
7050for the syntax-directed buffer-scan functions.
7051
7052*** There are two new syntax-codes, `!' and `|' (numeric values 14
7053and 15). A character with a code `!' starts a comment which is ended
7054only by another character with the same code (unless quoted). A
7055character with a code `|' starts a string which is ended only by
7056another character with the same code (unless quoted).
7057
7058These codes are mainly meant for use as values of the `syntax-table'
7059text property.
7060
7061*** The function `parse-partial-sexp' has new semantics for the sixth
7062arg COMMENTSTOP. If it is `syntax-table', parse stops after the start
7063of a comment or a string, or after end of a comment or a string.
7064
7065*** The state-list which the return value from `parse-partial-sexp'
7066(and can also be used as an argument) now has an optional ninth
7067element: the character address of the start of last comment or string;
7068nil if none. The fourth and eighth elements have special values if the
7069string/comment is started by a "!" or "|" syntax-code.
7070
7071*** Since new features of `parse-partial-sexp' allow a complete
7072syntactic parsing, `font-lock' no longer supports
7073`font-lock-comment-start-regexp'.
7074
7075** Changes in face features
7076
7077*** The face functions are now unconditionally defined in Emacs, even
7078if it does not support displaying on a device that supports faces.
7079
7080*** The function face-documentation returns the documentation string
7081of a face (or nil if it doesn't have one).
7082
7083*** The function face-bold-p returns t if a face should be bold.
7084set-face-bold-p sets that flag.
7085
7086*** The function face-italic-p returns t if a face should be italic.
7087set-face-italic-p sets that flag.
7088
7089*** You can now specify foreground and background colors for text
7090by adding elements of the form (foreground-color . COLOR-NAME)
7091and (background-color . COLOR-NAME) to the list of faces in
7092the `face' property (either the character's text property or an
7093overlay property).
7094
7095This means that you no longer need to create named faces to use
7096arbitrary colors in a Lisp package.
7097
7098** Changes in file-handling functions
7099
7100*** File-access primitive functions no longer discard an extra redundant
7101directory name from the beginning of the file name. In other words,
7102they no longer do anything special with // or /~. That conversion
7103is now done only in substitute-in-file-name.
7104
7105This makes it possible for a Lisp program to open a file whose name
7106begins with ~.
7107
7108*** If copy-file is unable to set the date of the output file,
7109it now signals an error with the condition file-date-error.
7110
7111*** The inode number returned by file-attributes may be an integer (if
7112the number fits in a Lisp integer) or a list of integers.
7113
7114*** insert-file-contents can now read from a special file,
7115as long as the arguments VISIT and REPLACE are nil.
7116
7117*** The RAWFILE arg to find-file-noselect, if non-nil, now suppresses
7118character code conversion as well as other things.
7119
7120Meanwhile, this feature does work with remote file names
7121(formerly it did not).
7122
7123*** Lisp packages which create temporary files should use the TMPDIR
7124environment variable to decide which directory to put them in.
7125
7126*** interpreter-mode-alist elements now specify regexps
7127instead of constant strings.
7128
7129*** expand-file-name no longer treats `//' or `/~' specially. It used
7130to delete all the text of a file name up through the first slash of
7131any `//' or `/~' sequence. Now it passes them straight through.
7132
7133substitute-in-file-name continues to treat those sequences specially,
7134in the same way as before.
7135
7136*** The variable `format-alist' is more general now.
7137The FROM-FN and TO-FN in a format definition can now be strings
7138which specify shell commands to use as filters to perform conversion.
7139
7140*** The new function access-file tries to open a file, and signals an
7141error if that fails. If the open succeeds, access-file does nothing
7142else, and returns nil.
7143
7144*** The function insert-directory now signals an error if the specified
7145directory cannot be listed.
7146
7147** Changes in minibuffer input
7148
7149*** The functions read-buffer, read-variable, read-command, read-string
7150read-file-name, read-from-minibuffer and completing-read now take an
7151additional argument which specifies the default value. If this
7152argument is non-nil, it should be a string; that string is used in two
7153ways:
7154
7155 It is returned if the user enters empty input.
7156 It is available through the history command M-n.
7157
7158*** The functions read-string, read-from-minibuffer,
7159read-no-blanks-input and completing-read now take an additional
7160argument INHERIT-INPUT-METHOD. If this is non-nil, then the
7161minibuffer inherits the current input method and the setting of
7162enable-multibyte-characters from the previously current buffer.
7163
7164In an interactive spec, you can use M instead of s to read an
7165argument in this way.
7166
7167*** All minibuffer input functions discard text properties
7168from the text you enter in the minibuffer, unless the variable
7169minibuffer-allow-text-properties is non-nil.
7170
7171** Echo area features
7172
7173*** Clearing the echo area now runs the normal hook
7174echo-area-clear-hook. Note that the echo area can be used while the
7175minibuffer is active; in that case, the minibuffer is still active
7176after the echo area is cleared.
7177
7178*** The function current-message returns the message currently displayed
7179in the echo area, or nil if there is none.
7180
7181** Keyboard input features
7182
7183*** tty-erase-char is a new variable that reports which character was
7184set up as the terminal's erase character when time Emacs was started.
7185
7186*** num-nonmacro-input-events is the total number of input events
7187received so far from the terminal. It does not count those generated
7188by keyboard macros.
7189
7190** Frame-related changes
7191
7192*** make-frame runs the normal hook before-make-frame-hook just before
7193creating a frame, and just after creating a frame it runs the abnormal
7194hook after-make-frame-functions with the new frame as arg.
7195
7196*** The new hook window-configuration-change-hook is now run every time
7197the window configuration has changed. The frame whose configuration
7198has changed is the selected frame when the hook is run.
7199
7200*** Each frame now independently records the order for recently
7201selected buffers, in its buffer-list frame parameter, so that the
7202value of other-buffer is now based on the buffers recently displayed
7203in the selected frame.
7204
7205*** The value of the frame parameter vertical-scroll-bars
7206is now `left', `right' or nil. A non-nil value specifies
7207which side of the window to put the scroll bars on.
7208
7209** X Windows features
7210
7211*** You can examine X resources for other applications by binding
7212x-resource-class around a call to x-get-resource. The usual value of
7213x-resource-class is "Emacs", which is the correct value for Emacs.
7214
7215*** In menus, checkboxes and radio buttons now actually work.
7216The menu displays the current status of the box or button.
7217
7218*** The function x-list-fonts now takes an optional fourth argument
7219MAXIMUM which sets a limit on how many matching fonts to return.
7220A smaller value of MAXIMUM makes the function faster.
7221
7222If the only question is whether *any* font matches the pattern,
7223it is good to supply 1 for this argument.
7224
7225** Subprocess features
7226
7227*** A reminder: it is no longer necessary for subprocess filter
7228functions and sentinels to do save-match-data, because Emacs does this
7229automatically.
7230
7231*** The new function shell-command-to-string executes a shell command
7232and returns the output from the command as a string.
7233
7234*** The new function process-contact returns t for a child process,
7235and (HOSTNAME SERVICE) for a net connection.
7236
7237** An error in running pre-command-hook or post-command-hook
7238does clear the variable to nil. The documentation was wrong before.
7239
7240** In define-key-after, if AFTER is t, the new binding now always goes
7241at the end of the keymap. If the keymap is a menu, this means it
7242goes after the other menu items.
7243
7244** If you have a program that makes several changes in the same area
79214ddf 7245of the buffer, you can use the macro combine-after-change-calls
a933dad1
DL
7246around that Lisp code to make it faster when after-change hooks
7247are in use.
7248
7249The macro arranges to call the after-change functions just once for a
7250series of several changes--if that seems safe.
7251
7252Don't alter the variables after-change-functions and
7253after-change-function within the body of a combine-after-change-calls
7254form.
7255
7256** If you define an abbrev (with define-abbrev) whose EXPANSION
7257is not a string, then the abbrev does not expand in the usual sense,
7258but its hook is still run.
7259
7260** Normally, the Lisp debugger is not used (even if you have enabled it)
7261for errors that are handled by condition-case.
7262
7263If you set debug-on-signal to a non-nil value, then the debugger is called
7264regardless of whether there is a handler for the condition. This is
7265useful for debugging problems that happen inside of a condition-case.
7266
7267This mode of operation seems to be unreliable in other ways. Errors that
7268are normal and ought to be handled, perhaps in timers or process
7269filters, will instead invoke the debugger. So don't say you weren't
7270warned.
7271
7272** The new variable ring-bell-function lets you specify your own
7273way for Emacs to "ring the bell".
7274
7275** If run-at-time's TIME argument is t, the action is repeated at
7276integral multiples of REPEAT from the epoch; this is useful for
7277functions like display-time.
7278
7279** You can use the function locate-library to find the precise file
7280name of a Lisp library. This isn't new, but wasn't documented before.
7281
7282** Commands for entering view mode have new optional arguments that
7283can be used from Lisp. Low-level entrance to and exit from view mode
7284is done by functions view-mode-enter and view-mode-exit.
7285
7286** batch-byte-compile-file now makes Emacs return a nonzero status code
7287if there is an error in compilation.
7288
7289** pop-to-buffer, switch-to-buffer-other-window and
7290switch-to-buffer-other-frame now accept an additional optional
7291argument NORECORD, much like switch-to-buffer. If it is non-nil,
7292they don't put the buffer at the front of the buffer list.
7293
7294** If your .emacs file leaves the *scratch* buffer non-empty,
7295Emacs does not display the startup message, so as to avoid changing
7296the *scratch* buffer.
7297
7298** The new function regexp-opt returns an efficient regexp to match a string.
7299The arguments are STRINGS and (optionally) PAREN. This function can be used
7300where regexp matching or searching is intensively used and speed is important,
7301e.g., in Font Lock mode.
7302
7303** The variable buffer-display-count is local to each buffer,
7304and is incremented each time the buffer is displayed in a window.
7305It starts at 0 when the buffer is created.
7306
7307** The new function compose-mail starts composing a mail message
7308using the user's chosen mail composition agent (specified with the
7309variable mail-user-agent). It has variants compose-mail-other-window
7310and compose-mail-other-frame.
7311
7312** The `user-full-name' function now takes an optional parameter which
7313can either be a number (the UID) or a string (the login name). The
7314full name of the specified user will be returned.
7315
7316** Lisp packages that load files of customizations, or any other sort
7317of user profile, should obey the variable init-file-user in deciding
7318where to find it. They should load the profile of the user name found
7319in that variable. If init-file-user is nil, meaning that the -q
7320option was used, then Lisp packages should not load the customization
7321files at all.
7322
7323** format-time-string now allows you to specify the field width
7324and type of padding. This works as in printf: you write the field
7325width as digits in the middle of a %-construct. If you start
7326the field width with 0, it means to pad with zeros.
7327
7328For example, %S normally specifies the number of seconds since the
7329minute; %03S means to pad this with zeros to 3 positions, %_3S to pad
7330with spaces to 3 positions. Plain %3S pads with zeros, because that
7331is how %S normally pads to two positions.
7332
7333** thing-at-point now supports a new kind of "thing": url.
7334
7335** imenu.el changes.
7336
7337You can now specify a function to be run when selecting an
79214ddf 7338item from menu created by imenu.
a933dad1
DL
7339
7340An example of using this feature: if we define imenu items for the
7341#include directives in a C file, we can open the included file when we
7342select one of those items.
7343\f
7344* Emacs 19.34 is a bug-fix release with no user-visible changes.
7345\f
7346* Changes in Emacs 19.33.
7347
7348** Bibtex mode no longer turns on Auto Fill automatically. (No major
7349mode should do that--it is the user's choice.)
7350
7351** The variable normal-auto-fill-function specifies the function to
7352use for auto-fill-function, if and when Auto Fill is turned on.
7353Major modes can set this locally to alter how Auto Fill works.
7354\f
7355* Editing Changes in Emacs 19.32
7356
7357** C-x f with no argument now signals an error.
7358To set the fill column at the current column, use C-u C-x f.
7359
7360** Expanding dynamic abbrevs with M-/ is now smarter about case
7361conversion. If you type the abbreviation with mixed case, and it
7362matches the beginning of the expansion including case, then the
7363expansion is copied verbatim. Using SPC M-/ to copy an additional
7364word always copies it verbatim except when the previous copied word is
7365all caps.
7366
7367** On a non-windowing terminal, which can display only one Emacs frame
7368at a time, creating a new frame with C-x 5 2 also selects that frame.
7369
7370When using a display that can show multiple frames at once, C-x 5 2
7371does make the frame visible, but does not select it. This is the same
7372as in previous Emacs versions.
7373
7374** You can use C-x 5 2 to create multiple frames on MSDOS, just as on a
7375non-X terminal on Unix. Of course, only one frame is visible at any
7376time, since your terminal doesn't have the ability to display multiple
7377frames.
7378
7379** On Windows, set win32-pass-alt-to-system to a non-nil value
7380if you would like tapping the Alt key to invoke the Windows menu.
7381This feature is not enabled by default; since the Alt key is also the
7382Meta key, it is too easy and painful to activate this feature by
7383accident.
7384
7385** The command apply-macro-to-region-lines repeats the last defined
7386keyboard macro once for each complete line within the current region.
7387It does this line by line, by moving point to the beginning of that
7388line and then executing the macro.
7389
7390This command is not new, but was never documented before.
7391
7392** You can now use Mouse-1 to place the region around a string constant
7393(something surrounded by doublequote characters or other delimiter
7394characters of like syntax) by double-clicking on one of the delimiting
7395characters.
7396
7397** Font Lock mode
7398
7399*** Font Lock support modes
7400
7401Font Lock can be configured to use Fast Lock mode and Lazy Lock mode (see
7402below) in a flexible way. Rather than adding the appropriate function to the
7403hook font-lock-mode-hook, you can use the new variable font-lock-support-mode
7404to control which modes have Fast Lock mode or Lazy Lock mode turned on when
7405Font Lock mode is enabled.
7406
7407For example, to use Fast Lock mode when Font Lock mode is turned on, put:
7408
7409 (setq font-lock-support-mode 'fast-lock-mode)
7410
7411in your ~/.emacs.
7412
7413*** lazy-lock
7414
7415The lazy-lock package speeds up Font Lock mode by making fontification occur
7416only when necessary, such as when a previously unfontified part of the buffer
7417becomes visible in a window. When you create a buffer with Font Lock mode and
7418Lazy Lock mode turned on, the buffer is not fontified. When certain events
7419occur (such as scrolling), Lazy Lock makes sure that the visible parts of the
7420buffer are fontified. Lazy Lock also defers on-the-fly fontification until
7421Emacs has been idle for a given amount of time.
7422
7423To use this package, put in your ~/.emacs:
7424
7425 (setq font-lock-support-mode 'lazy-lock-mode)
7426
7427To control the package behaviour, see the documentation for `lazy-lock-mode'.
7428
7429** Changes in BibTeX mode.
7430
7431*** For all entries allow spaces and tabs between opening brace or
7432paren and key.
7433
7434*** Non-escaped double-quoted characters (as in `Sch"of') are now
7435supported.
7436
7437** Gnus changes.
7438
7439Gnus, the Emacs news reader, has undergone further rewriting. Many new
7440commands and variables have been added. There should be no
7441significant incompatibilities between this Gnus version and the
7442previously released version, except in the message composition area.
7443
7444Below is a list of the more user-visible changes. Coding changes
7445between Gnus 5.1 and 5.2 are more extensive.
7446
79214ddf 7447*** A new message composition mode is used. All old customization
a933dad1
DL
7448variables for mail-mode, rnews-reply-mode and gnus-msg are now
7449obsolete.
7450
7451*** Gnus is now able to generate "sparse" threads -- threads where
7452missing articles are represented by empty nodes.
7453
7454 (setq gnus-build-sparse-threads 'some)
7455
7456*** Outgoing articles are stored on a special archive server.
7457
7458 To disable this: (setq gnus-message-archive-group nil)
7459
7460*** Partial thread regeneration now happens when articles are
79214ddf 7461referred.
a933dad1
DL
7462
7463*** Gnus can make use of GroupLens predictions:
7464
7465 (setq gnus-use-grouplens t)
7466
7467*** A trn-line tree buffer can be displayed.
7468
7469 (setq gnus-use-trees t)
7470
7471*** An nn-like pick-and-read minor mode is available for the summary
79214ddf 7472buffers.
a933dad1
DL
7473
7474 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)
7475
7476*** In binary groups you can use a special binary minor mode:
7477
7478 `M-x gnus-binary-mode'
7479
7480*** Groups can be grouped in a folding topic hierarchy.
7481
7482 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
7483
7484*** Gnus can re-send and bounce mail.
7485
7486 Use the `S D r' and `S D b'.
7487
7488*** Groups can now have a score, and bubbling based on entry frequency
7489is possible.
7490
7491 (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group)
7492
7493*** Groups can be process-marked, and commands can be performed on
7494groups of groups.
7495
7496*** Caching is possible in virtual groups.
7497
7498*** nndoc now understands all kinds of digests, mail boxes, rnews news
79214ddf 7499batches, ClariNet briefs collections, and just about everything else.
a933dad1
DL
7500
7501*** Gnus has a new backend (nnsoup) to create/read SOUP packets.
7502
7503*** The Gnus cache is much faster.
7504
7505*** Groups can be sorted according to many criteria.
7506
7507 For instance: (setq gnus-group-sort-function 'gnus-group-sort-by-rank)
7508
7509*** New group parameters have been introduced to set list-address and
7510expiration times.
7511
7512*** All formatting specs allow specifying faces to be used.
7513
7514*** There are several more commands for setting/removing/acting on
7515process marked articles on the `M P' submap.
7516
7517*** The summary buffer can be limited to show parts of the available
7518articles based on a wide range of criteria. These commands have been
7519bound to keys on the `/' submap.
7520
7521*** Articles can be made persistent -- as an alternative to saving
7522articles with the `*' command.
7523
7524*** All functions for hiding article elements are now toggles.
7525
7526*** Article headers can be buttonized.
7527
7528 (add-hook 'gnus-article-display-hook 'gnus-article-add-buttons-to-head)
7529
7530*** All mail backends support fetching articles by Message-ID.
7531
79214ddf 7532*** Duplicate mail can now be treated properly. See the
a933dad1
DL
7533`nnmail-treat-duplicates' variable.
7534
7535*** All summary mode commands are available directly from the article
79214ddf 7536buffer.
a933dad1
DL
7537
7538*** Frames can be part of `gnus-buffer-configuration'.
7539
7540*** Mail can be re-scanned by a daemonic process.
7541
7542*** Gnus can make use of NoCeM files to filter spam.
7543
7544 (setq gnus-use-nocem t)
7545
79214ddf 7546*** Groups can be made permanently visible.
a933dad1
DL
7547
7548 (setq gnus-permanently-visible-groups "^nnml:")
7549
79214ddf 7550*** Many new hooks have been introduced to make customizing easier.
a933dad1
DL
7551
7552*** Gnus respects the Mail-Copies-To header.
7553
79214ddf 7554*** Threads can be gathered by looking at the References header.
a933dad1 7555
79214ddf 7556 (setq gnus-summary-thread-gathering-function
a933dad1
DL
7557 'gnus-gather-threads-by-references)
7558
7559*** Read articles can be stored in a special backlog buffer to avoid
79214ddf 7560refetching.
a933dad1
DL
7561
7562 (setq gnus-keep-backlog 50)
7563
7564*** A clean copy of the current article is always stored in a separate
7565buffer to allow easier treatment.
7566
7567*** Gnus can suggest where to save articles. See `gnus-split-methods'.
7568
7569*** Gnus doesn't have to do as much prompting when saving.
7570
7571 (setq gnus-prompt-before-saving t)
7572
7573*** gnus-uu can view decoded files asynchronously while fetching
79214ddf 7574articles.
a933dad1
DL
7575
7576 (setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view)
7577
79214ddf 7578*** Filling in the article buffer now works properly on cited text.
a933dad1
DL
7579
7580*** Hiding cited text adds buttons to toggle hiding, and how much
7581cited text to hide is now customizable.
7582
7583 (setq gnus-cited-lines-visible 2)
7584
7585*** Boring headers can be hidden.
7586
7587 (add-hook 'gnus-article-display-hook 'gnus-article-hide-boring-headers)
7588
7589*** Default scoring values can now be set from the menu bar.
7590
7591*** Further syntax checking of outgoing articles have been added.
7592
7593The Gnus manual has been expanded. It explains all these new features
7594in greater detail.
7595\f
7596* Lisp Changes in Emacs 19.32
7597
7598** The function set-visited-file-name now accepts an optional
7599second argument NO-QUERY. If it is non-nil, then the user is not
7600asked for confirmation in the case where the specified file already
7601exists.
7602
7603** The variable print-length applies to printing vectors and bitvectors,
7604as well as lists.
7605
7606** The new function keymap-parent returns the parent keymap
7607of a given keymap.
7608
7609** The new function set-keymap-parent specifies a new parent for a
7610given keymap. The arguments are KEYMAP and PARENT. PARENT must be a
7611keymap or nil.
7612
7613** Sometimes menu keymaps use a command name, a symbol, which is really
7614an automatically generated alias for some other command, the "real"
7615name. In such a case, you should give that alias symbol a non-nil
7616menu-alias property. That property tells the menu system to look for
7617equivalent keys for the real name instead of equivalent keys for the
7618alias.
7619\f
7620* Editing Changes in Emacs 19.31
7621
7622** Freedom of the press restricted in the United States.
7623
7624Emacs has been censored in accord with the Communications Decency Act.
7625This includes removing some features of the doctor program. That law
7626was described by its supporters as a ban on pornography, but it bans
7627far more than that. The Emacs distribution has never contained any
7628pornography, but parts of it were nonetheless prohibited.
7629
7630For information on US government censorship of the Internet, and what
7631you can do to bring back freedom of the press, see the web site
7632`http://www.vtw.org/'.
7633
7634** A note about C mode indentation customization.
7635
7636The old (Emacs 19.29) ways of specifying a C indentation style
7637do not normally work in the new implementation of C mode.
7638It has its own methods of customizing indentation, which are
7639much more powerful than the old C mode. See the Editing Programs
7640chapter of the manual for details.
7641
7642However, you can load the library cc-compat to make the old
7643customization variables take effect.
7644
7645** Marking with the mouse.
7646
7647When you mark a region with the mouse, the region now remains
7648highlighted until the next input event, regardless of whether you are
7649using M-x transient-mark-mode.
7650
7651** Improved Windows NT/95 support.
7652
7653*** Emacs now supports scroll bars on Windows NT and Windows 95.
7654
7655*** Emacs now supports subprocesses on Windows 95. (Subprocesses used
7656to work on NT only and not on 95.)
7657
7658*** There are difficulties with subprocesses, though, due to problems
7659in Windows, beyond the control of Emacs. They work fine as long as
7660you run Windows applications. The problems arise when you run a DOS
7661application in a subprocesses. Since current shells run as DOS
7662applications, these problems are significant.
7663
7664If you run a DOS application in a subprocess, then the application is
7665likely to busy-wait, which means that your machine will be 100% busy.
7666However, if you don't mind the temporary heavy load, the subprocess
7667will work OK as long as you tell it to terminate before you start any
7668other DOS application as a subprocess.
7669
7670Emacs is unable to terminate or interrupt a DOS subprocess.
7671You have to do this by providing input directly to the subprocess.
7672
7673If you run two DOS applications at the same time in two separate
7674subprocesses, even if one of them is asynchronous, you will probably
7675have to reboot your machine--until then, it will remain 100% busy.
7676Windows simply does not cope when one Windows process tries to run two
7677separate DOS subprocesses. Typing CTL-ALT-DEL and then choosing
7678Shutdown seems to work although it may take a few minutes.
7679
7680** M-x resize-minibuffer-mode.
7681
7682This command, not previously mentioned in NEWS, toggles a mode in
7683which the minibuffer window expands to show as many lines as the
7684minibuffer contains.
7685
7686** `title' frame parameter and resource.
7687
7688The `title' X resource now specifies just the frame title, nothing else.
7689It does not affect the name used for looking up other X resources.
7690It works by setting the new `title' frame parameter, which likewise
7691affects just the displayed title of the frame.
7692
7693The `name' parameter continues to do what it used to do:
7694it specifies the frame name for looking up X resources,
7695and also serves as the default for the displayed title
7696when the `title' parameter is unspecified or nil.
7697
7698** Emacs now uses the X toolkit by default, if you have a new
7699enough version of X installed (X11R5 or newer).
7700
7701** When you compile Emacs with the Motif widget set, Motif handles the
7702F10 key by activating the menu bar. To avoid confusion, the usual
7703Emacs binding of F10 is replaced with a no-op when using Motif.
7704
7705If you want to be able to use F10 in Emacs, you can rebind the Motif
7706menubar to some other key which you don't use. To do so, add
7707something like this to your X resources file. This example rebinds
7708the Motif menu bar activation key to S-F12:
7709
7710 Emacs*defaultVirtualBindings: osfMenuBar : Shift<Key>F12
7711
7712** In overwrite mode, DEL now inserts spaces in most cases
7713to replace the characters it "deletes".
7714
7715** The Rmail summary now shows the number of lines in each message.
7716
7717** Rmail has a new command M-x unforward-rmail-message, which extracts
7718a forwarded message from the message that forwarded it. To use it,
7719select a message which contains a forwarded message and then type the command.
7720It inserts the forwarded message as a separate Rmail message
7721immediately after the selected one.
7722
7723This command also undoes the textual modifications that are standardly
7724made, as part of forwarding, by Rmail and other mail reader programs.
7725
7726** Turning off saving of .saves-... files in your home directory.
7727
7728Each Emacs session writes a file named .saves-... in your home
7729directory to record which files M-x recover-session should recover.
7730If you exit Emacs normally with C-x C-c, it deletes that file. If
7731Emacs or the operating system crashes, the file remains for M-x
7732recover-session.
7733
7734You can turn off the writing of these files by setting
7735auto-save-list-file-name to nil. If you do this, M-x recover-session
7736will not work.
7737
7738Some previous Emacs versions failed to delete these files even on
7739normal exit. This is fixed now. If you are thinking of turning off
7740this feature because of past experiences with versions that had this
7741bug, it would make sense to check whether you still want to do so
7742now that the bug is fixed.
7743
7744** Changes to Version Control (VC)
7745
7746There is a new variable, vc-follow-symlinks. It indicates what to do
7747when you visit a link to a file that is under version control.
7748Editing the file through the link bypasses the version control system,
7749which is dangerous and probably not what you want.
7750
7751If this variable is t, VC follows the link and visits the real file,
7752telling you about it in the echo area. If it is `ask' (the default),
7753VC asks for confirmation whether it should follow the link. If nil,
7754the link is visited and a warning displayed.
7755
7756** iso-acc.el now lets you specify a choice of language.
7757Languages include "latin-1" (the default) and "latin-2" (which
7758is designed for entering ISO Latin-2 characters).
7759
7760There are also choices for specific human languages such as French and
7761Portuguese. These are subsets of Latin-1, which differ in that they
7762enable only the accent characters needed for particular language.
7763The other accent characters, not needed for the chosen language,
7764remain normal.
7765
7766** Posting articles and sending mail now has M-TAB completion on various
7767header fields (Newsgroups, To, CC, ...).
7768
7769Completion in the Newsgroups header depends on the list of groups
7770known to your news reader. Completion in the Followup-To header
7771offers those groups which are in the Newsgroups header, since
7772Followup-To usually just holds one of those.
7773
7774Completion in fields that hold mail addresses works based on the list
7775of local users plus your aliases. Additionally, if your site provides
7776a mail directory or a specific host to use for any unrecognized user
7777name, you can arrange to query that host for completion also. (See the
7778documentation of variables `mail-directory-process' and
7779`mail-directory-stream'.)
7780
7781** A greatly extended sgml-mode offers new features such as (to be configured)
7782skeletons with completing read for tags and attributes, typing named
7783characters including optionally all 8bit characters, making tags invisible
7784with optional alternate display text, skipping and deleting tag(pair)s.
7785
7786Note: since Emacs' syntax feature cannot limit the special meaning of ', " and
7787- to inside <>, for some texts the result, especially of font locking, may be
7788wrong (see `sgml-specials' if you get wrong results).
7789
7790The derived html-mode configures this with tags and attributes more or
7791less HTML3ish. It also offers optional quick keys like C-c 1 for
7792headline or C-c u for unordered list (see `html-quick-keys'). Edit /
7793Text Properties / Face or M-g combinations create tags as applicable.
7794Outline minor mode is supported and level 1 font-locking tries to
7795fontify tag contents (which only works when they fit on one line, due
7796to a limitation in font-lock).
7797
7798External viewing via browse-url can occur automatically upon saving.
7799
7800** M-x imenu-add-to-menubar now adds to the menu bar for the current
7801buffer only. If you want to put an Imenu item in the menu bar for all
7802buffers that use a particular major mode, use the mode hook, as in
7803this example:
7804
7805 (add-hook 'emacs-lisp-mode-hook
7806 '(lambda () (imenu-add-to-menubar "Index")))
7807
7808** Changes in BibTeX mode.
7809
7810*** Field names may now contain digits, hyphens, and underscores.
7811
7812*** Font Lock mode is now supported.
7813
7814*** bibtex-make-optional-field is no longer interactive.
7815
7816*** If bibtex-maintain-sorted-entries is non-nil, inserting new
7817entries is now done with a faster algorithm. However, inserting
7818will fail in this case if the buffer contains invalid entries or
7819isn't in sorted order, so you should finish each entry with C-c C-c
7820(bibtex-close-entry) after you have inserted or modified it.
7821The default value of bibtex-maintain-sorted-entries is nil.
7822
7823*** Function `show-all' is no longer bound to a key, since C-u C-c C-q
7824does the same job.
7825
7826*** Entries with quotes inside quote-delimited fields (as `author =
7827"Stefan Sch{\"o}f"') are now supported.
7828
7829*** Case in field names doesn't matter anymore when searching for help
7830text.
7831
7832** Font Lock mode
7833
7834*** Global Font Lock mode
7835
7836Font Lock mode can be turned on globally, in buffers that support it, by the
7837new command global-font-lock-mode. You can use the new variable
7838font-lock-global-modes to control which modes have Font Lock mode automagically
7839turned on. By default, this variable is set so that Font Lock mode is turned
7840on globally where the buffer mode supports it.
7841
7842For example, to automagically turn on Font Lock mode where supported, put:
7843
7844 (global-font-lock-mode t)
7845
7846in your ~/.emacs.
7847
7848*** Local Refontification
7849
7850In Font Lock mode, editing a line automatically refontifies that line only.
7851However, if your change alters the syntactic context for following lines,
7852those lines remain incorrectly fontified. To refontify them, use the new
7853command M-g M-g (font-lock-fontify-block).
7854
7855In certain major modes, M-g M-g refontifies the entire current function.
7856(The variable font-lock-mark-block-function controls how to find the
7857current function.) In other major modes, M-g M-g refontifies 16 lines
7858above and below point.
7859
7860With a prefix argument N, M-g M-g refontifies N lines above and below point.
7861
7862** Follow mode
7863
7864Follow mode is a new minor mode combining windows showing the same
7865buffer into one tall "virtual window". The windows are typically two
7866side-by-side windows. Follow mode makes them scroll together as if
7867they were a unit. To use it, go to a frame with just one window,
7868split it into two side-by-side windows using C-x 3, and then type M-x
7869follow-mode.
7870
7871M-x follow-mode turns off Follow mode if it is already enabled.
7872
7873To display two side-by-side windows and activate Follow mode, use the
7874command M-x follow-delete-other-windows-and-split.
7875
7876** hide-show changes.
7877
7878The hooks hs-hide-hooks and hs-show-hooks have been renamed
7879to hs-hide-hook and hs-show-hook, to follow the convention for
7880normal hooks.
7881
7882** Simula mode now has a menu containing the most important commands.
7883The new command simula-indent-exp is bound to C-M-q.
7884
7885** etags can now handle programs written in Erlang. Files are
7886recognised by the extensions .erl and .hrl. The tagged lines are
7887those that begin a function, record, or macro.
7888
7889** MSDOS Changes
7890
7891*** It is now possible to compile Emacs with the version 2 of DJGPP.
7892Compilation with DJGPP version 1 also still works.
7893
7894*** The documentation of DOS-specific aspects of Emacs was rewritten
7895and expanded; see the ``MS-DOS'' node in the on-line docs.
7896
7897*** Emacs now uses ~ for backup file names, not .bak.
7898
7899*** You can simulate mouse-3 on two-button mice by simultaneously
7900pressing both mouse buttons.
7901
7902*** A number of packages and commands which previously failed or had
7903restricted functionality on MS-DOS, now work. The most important ones
79214ddf 7904are:
a933dad1
DL
7905
7906**** Printing (both with `M-x lpr-buffer' and with `ps-print' package)
7907now works.
7908
7909**** `Ediff' works (in a single-frame mode).
7910
7911**** `M-x display-time' can be used on MS-DOS (due to the new
7912implementation of Emacs timers, see below).
7913
7914**** `Dired' supports Unix-style shell wildcards.
7915
7916**** The `c-macro-expand' command now works as on other platforms.
7917
7918**** `M-x recover-session' works.
7919
7920**** `M-x list-colors-display' displays all the available colors.
7921
7922**** The `TPU-EDT' package works.
7923\f
7924* Lisp changes in Emacs 19.31.
7925
7926** The function using-unix-filesystems on Windows NT and Windows 95
7927tells Emacs to read and write files assuming that they reside on a
7928remote Unix filesystem. No CR/LF translation is done on any files in
7929this case. Invoking using-unix-filesystems with t activates this
7930behavior, and invoking it with any other value deactivates it.
7931
7932** Change in system-type and system-configuration values.
7933
7934The value of system-type on a Linux-based GNU system is now `lignux',
7935not `linux'. This means that some programs which use `system-type'
7936need to be changed. The value of `system-configuration' will also
7937be different.
7938
7939It is generally recommended to use `system-configuration' rather
7940than `system-type'.
7941
7942See the file LINUX-GNU in this directory for more about this.
7943
7944** The functions shell-command and dired-call-process
7945now run file name handlers for default-directory, if it has them.
7946
7947** Undoing the deletion of text now restores the positions of markers
7948that pointed into or next to the deleted text.
7949
7950** Timers created with run-at-time now work internally to Emacs, and
7951no longer use a separate process. Therefore, they now work more
7952reliably and can be used for shorter time delays.
7953
7954The new function run-with-timer is a convenient way to set up a timer
7955to run a specified amount of time after the present. A call looks
7956like this:
7957
7958 (run-with-timer SECS REPEAT FUNCTION ARGS...)
7959
7960SECS says how many seconds should elapse before the timer happens.
7961It may be an integer or a floating point number. When the timer
7962becomes ripe, the action is to call FUNCTION with arguments ARGS.
7963
7964REPEAT gives the interval for repeating the timer (measured in
7965seconds). It may be an integer or a floating point number. nil or 0
7966means don't repeat at all--call FUNCTION just once.
7967
7968*** with-timeout provides an easy way to do something but give
7969up if too much time passes.
7970
7971 (with-timeout (SECONDS TIMEOUT-FORMS...) BODY...)
7972
7973This executes BODY, but gives up after SECONDS seconds.
7974If it gives up, it runs the TIMEOUT-FORMS and returns the value
7975of the last one of them. Normally it returns the value of the last
7976form in BODY.
7977
7978*** You can now arrange to call a function whenever Emacs is idle for
7979a certain length of time. To do this, call run-with-idle-timer. A
7980call looks like this:
7981
7982 (run-with-idle-timer SECS REPEAT FUNCTION ARGS...)
7983
7984SECS says how many seconds of idleness should elapse before the timer
7985runs. It may be an integer or a floating point number. When the
7986timer becomes ripe, the action is to call FUNCTION with arguments
7987ARGS.
7988
7989Emacs becomes idle whenever it finishes executing a keyboard or mouse
7990command. It remains idle until it receives another keyboard or mouse
7991command.
7992
7993REPEAT, if non-nil, means this timer should be activated again each
7994time Emacs becomes idle and remains idle for SECS seconds The timer
7995does not repeat if Emacs *remains* idle; it runs at most once after
7996each time Emacs becomes idle.
7997
7998If REPEAT is nil, the timer runs just once, the first time Emacs is
7999idle for SECS seconds.
8000
8001*** post-command-idle-hook is now obsolete; you shouldn't use it at
8002all, because it interferes with the idle timer mechanism. If your
8003programs use post-command-idle-hook, convert them to use idle timers
8004instead.
8005
8006*** y-or-n-p-with-timeout lets you ask a question but give up if
8007there is no answer within a certain time.
8008
8009 (y-or-n-p-with-timeout PROMPT SECONDS DEFAULT-VALUE)
8010
8011asks the question PROMPT (just like y-or-n-p). If the user answers
8012within SECONDS seconds, it returns the answer that the user gave.
8013Otherwise it gives up after SECONDS seconds, and returns DEFAULT-VALUE.
8014
8015** Minor change to `encode-time': you can now pass more than seven
8016arguments. If you do that, the first six arguments have the usual
8017meaning, the last argument is interpreted as the time zone, and the
8018arguments in between are ignored.
8019
8020This means that it works to use the list returned by `decode-time' as
8021the list of arguments for `encode-time'.
8022
8023** The default value of load-path now includes the directory
8024/usr/local/share/emacs/VERSION/site-lisp In addition to
8025/usr/local/share/emacs/site-lisp. You can use this new directory for
8026site-specific Lisp packages that belong with a particular Emacs
8027version.
8028
8029It is not unusual for a Lisp package that works well in one Emacs
8030version to cause trouble in another. Sometimes packages need updating
8031for incompatible changes; sometimes they look at internal data that
8032has changed; sometimes the package has been installed in Emacs itself
8033and the installed version should be used. Whatever the reason for the
8034problem, this new feature makes it easier to solve.
8035
8036** When your program contains a fixed file name (like .completions or
8037.abbrev.defs), the file name usually needs to be different on operating
8038systems with limited file name syntax.
8039
8040Now you can avoid ad-hoc conditionals by using the function
8041convert-standard-filename to convert the file name to a proper form
8042for each operating system. Here is an example of use, from the file
8043completions.el:
8044
8045(defvar save-completions-file-name
8046 (convert-standard-filename "~/.completions")
8047 "*The filename to save completions to.")
8048
8049This sets the variable save-completions-file-name to a value that
8050depends on the operating system, because the definition of
8051convert-standard-filename depends on the operating system. On
8052Unix-like systems, it returns the specified file name unchanged. On
8053MS-DOS, it adapts the name to fit the limitations of that system.
8054
8055** The interactive spec N now returns the numeric prefix argument
8056rather than the raw prefix argument. (It still reads a number using the
8057minibuffer if there is no prefix argument at all.)
8058
8059** When a process is deleted, this no longer disconnects the process
8060marker from its buffer position.
8061
8062** The variable garbage-collection-messages now controls whether
8063Emacs displays a message at the beginning and end of garbage collection.
8064The default is nil, meaning there are no messages.
8065
8066** The variable debug-ignored-errors specifies certain kinds of errors
8067that should not enter the debugger. Its value is a list of error
8068condition symbols and/or regular expressions. If the error has any
8069of the condition symbols listed, or if any of the regular expressions
8070matches the error message, then that error does not enter the debugger,
8071regardless of the value of debug-on-error.
8072
8073This variable is initialized to match certain common but uninteresting
8074errors that happen often during editing.
8075
8076** The new function error-message-string converts an error datum
8077into its error message. The error datum is what condition-case
8078puts into the variable, to describe the error that happened.
8079
8080** Anything that changes which buffer appears in a given window
8081now runs the window-scroll-functions for that window.
8082
8083** The new function get-buffer-window-list returns a list of windows displaying
8084a buffer. The function is called with the buffer (a buffer object or a buffer
8085name) and two optional arguments specifying the minibuffer windows and frames
8086to search. Therefore this function takes optional args like next-window etc.,
8087and not get-buffer-window.
8088
8089** buffer-substring now runs the hook buffer-access-fontify-functions,
8090calling each function with two arguments--the range of the buffer
8091being accessed. buffer-substring-no-properties does not call them.
8092
8093If you use this feature, you should set the variable
8094buffer-access-fontified-property to a non-nil symbol, which is a
8095property name. Then, if all the characters in the buffer range have a
8096non-nil value for that property, the buffer-access-fontify-functions
8097are not called. When called, these functions should put a non-nil
8098property on the text that they fontify, so that they won't get called
8099over and over for the same text.
8100
8101** Changes in lisp-mnt.el
8102
8103*** The lisp-mnt package can now recognize file headers that are written
8104in the formats used by the `what' command and the RCS `ident' command:
8105
8106;; @(#) HEADER: text
8107;; $HEADER: text $
8108
8109in addition to the normal
8110
8111;; HEADER: text
8112
8113*** The commands lm-verify and lm-synopsis are now interactive. lm-verify
8114checks that the library file has proper sections and headers, and
8115lm-synopsis extracts first line "synopsis'"information.
8116\f
8117* For older news, see the file ONEWS.
8118
8119----------------------------------------------------------------------
8120Copyright information:
8121
404fa7d6 8122Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
a933dad1
DL
8123
8124 Permission is granted to anyone to make or distribute verbatim copies
8125 of this document as received, in any medium, provided that the
8126 copyright notice and this permission notice are preserved,
8127 thus giving the recipient permission to redistribute in turn.
8128
8129 Permission is granted to distribute modified versions
8130 of this document, or of portions of it,
8131 under the above conditions, provided also that they
8132 carry prominent notices stating who last changed them.
8133\f
8134Local variables:
8135mode: outline
8136paragraph-separate: "[ \f]*$"
8137end: