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