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