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