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