(Fwhere_is_internal): Use the first valid binding
[bpt/emacs.git] / etc / ONEWS
CommitLineData
a933dad1
DL
1GNU Emacs NEWS -- history of user-visible changes. 1992.
2Copyright (C) 1995 Free Software Foundation, Inc.
3See the end for copying conditions.
4
ff9ab414 5For older news, see the file ONEWS.4.
a933dad1
DL
6\f
7* Editing Changes in Emacs 19.30.
8
9** Be sure to recompile your byte-compiled Emacs Lisp files
10if you last compiled them with Emacs 19.28 or earlier.
11You can use M-x byte-force-recompile to recompile all the .elc files
12in a specified directory.
13
14** Emacs now provides multiple-frame support on Windows NT
15and Windows 95.
16
17** M-x column-number-mode toggles a minor mode which displays
18the current column number in the mode line.
19
20** Line Number mode is now enabled by default.
21
22** M-x what-line now displays the line number in the accessible
23portion of the buffer as well as the line number in the full buffer,
24when narrowing is in effect.
25
26** If you type a M-x command that has an equivalent key binding,
27the equivalent is shown in the minibuffer before the command executes.
28This feature is enabled by default for the sake of beginning users.
29You can turn the feature off by setting suggest-key-bindings to nil.
30
31** The menu bar is now visible on text-only terminals. To choose a
32command from the menu bar when you have no mouse, type M-`
33(Meta-Backquote) or F10. To turn off menu bar display,
34do (menu-bar-mode -1).
35
36** Whenever you invoke a minibuffer, it appears in the minibuffer
37window that the current frame uses.
38
39Emacs can only use one minibuffer window at a time. If you activate
40the minibuffer while a minibuffer window is active in some other
41frame, the outer minibuffer window disappears while the inner one is
42active.
43
44** Echo area messages always appear in the minibuffer window that the
45current frame uses. If a minibuffer is active in some other frame,
46the echo area message does not hide it even temporarily.
47
48** The minibuffer now has a menu-bar menu. You can use it to exit or
49abort the minibuffer, or to ask for completion.
50
51** Dead-key and composite character processing is done in the standard
52X11R6 manner (through the default "input method" using the
53/usr/lib/X11/locale/*/Compose databases of key combinations). I.e. if
54it works in xterm, it should also work in emacs now.
55
56** Mouse changes
57
58*** You can now use the mouse when running Emacs in an xterm.
59Use M-x xterm-mouse-mode to let emacs take control over the mouse.
60
61*** C-mouse-1 now once again provides a menu of buffers to select.
62S-mouse-1 is now the way to select a default font for the frame.
63
64*** There is a new mouse-scroll-min-lines variable to control the
65minimum number of lines scrolled by dragging the mouse outside a
66window's edge.
67
68*** Dragging mouse-1 on a vertical line that separates windows
69now moves the line, thus changing the widths of the two windows.
70(This feature is available only if you don't have vertical scroll bars.
71If you do use them, a scroll bar separates two side-by-side windows.)
72
73*** Double-click mouse-1 on a character with "symbol" syntax (such as
74underscore, in C mode) selects the entire symbol surrounding that
75character. (Double-click mouse-1 on a letter selects a whole word.)
76
77** When incremental search wraps around to the beginning (or end) of
78the buffer, if you keep on searching until you go past the original
79starting point of the search, the echo area changes from "Wrapped" to
80"Overwrapped". That tells you that you are revisiting matches that
81you have already seen.
82
83** Filling changes.
84
85*** If the variable colon-double-space is non-nil, the explicit fill
86commands put two spaces after a colon.
87
88*** Auto-Fill mode now supports Adaptive Fill mode just as the
89explicit fill commands do. The variable adaptive-fill-regexp
90specifies a regular expression to match text at the beginning of
91a line that should be the fill prefix.
92
93*** Adaptive Fill mode can take a fill prefix from the first line of a
94paragraph, *provided* that line is not a paragraph-starter line.
95
96Paragraph-starter lines are indented lines that start a new
97paragraph because they are indented. This indentation shouldn't
98be copied to additional lines.
99
100Whether indented lines are paragraph lines depends on the value of the
101variable paragraph-start. Some major modes set this; you can set it
102by hand or in mode hooks as well. For editing text in which paragraph
103first lines are not indented, and which contains paragraphs in which
104all lines are indented, you should use Indented Text mode or arrange
105for paragraph-start not to match these lines.
106
107*** You can specify more complex ways of choosing a fill prefix
108automatically by setting `adaptive-fill-function'. This function
109is called with point after the left margin of a line, and it should
110return the appropriate fill prefix based on that line.
111If it returns nil, that means it sees no fill prefix in that line.
112
113** Gnus changes.
114
115Gnus, the Emacs news reader, has been rewritten and expanded. Most
116things that worked with the old version should still work with the new
117version. Code that relies heavily on Gnus internals is likely to
118fail, though.
119
120*** Incompatibilities with the old GNUS.
121
122**** All interactive commands have kept their names, but many internal
123functions have changed names.
124
125**** The summary mode gnus-uu commands have been moved from the `C-c
126C-v' keymap to the `X' keymap.
127
128**** There can now be several summary buffers active at once.
129Variables that are relevant to each summary buffer are buffer-local to
130that buffer.
131
132**** Old hilit code doesn't work at all. Gnus performs its own
133highlighting based not only on what's visible in the buffer, but on
134other data structures.
135
136**** Old packages like `expire-kill' will no longer work.
137
138**** `C-c C-l' in the group buffer no longer switches to a different
139buffer, but instead lists killed groups in the group buffer.
140
141*** New features.
142
143**** The look of all buffers can be changed by setting format-like
144variables.
145
146**** Local spool and several NNTP servers can be used at once.
147
148**** Groups can be combined into virtual groups.
149
150**** Different mail formats can be read much the same way as one would
151read newsgroups. All the mail backends implement mail expiry schemes.
152
153**** Gnus can use various strategies for gathering threads that have
154lost their roots (thereby gathering loose sub-threads into one thread)
155or it can go back and retrieve enough headers to build a complete
156thread.
157
158**** Killed groups can be read.
159
160**** Gnus can do partial group updates - you do not have to retrieve
161the entire active file just to check for new articles in a few groups.
162
163**** Gnus implements a sliding scale of subscribedness to groups.
164
165**** You can score articles according to any number of criteria. You
166can get Gnus to score articles for you using adaptive scoring.
167
168**** Gnus maintains a dribble buffer that is auto-saved the normal
169Emacs manner, so it should be difficult to lose much data on what you
170have read if your machine should go down.
171
172**** Gnus now has its own startup file (`.gnus.el') to avoid
173cluttering up the `.emacs' file.
174
175**** You can set the process mark on both groups and articles and
176perform operations on all the marked items.
177
178**** You can grep through a subset of groups and create a group from
179the results.
180
181**** You can list subsets of groups using matches on group names or
182group descriptions.
183
184**** You can browse foreign servers and subscribe to groups from those
185servers.
186
187**** Gnus can pre-fetch articles asynchronously on a second connection
188to the servers.
189
190**** You can cache articles locally.
191
192**** Gnus can fetch FAQs to and descriptions of groups.
193
194**** Digests (and other files) can be used as the basis for groups.
195
196**** Articles can be highlighted and customized.
197
198** Changes to Version Control (VC)
199
200*** General changes (all backends).
201
202VC directory listings (C-x v d) are now kept up to date when you do a
203vc-next-action (C-x v v) on the marked files. The `g' command updates
204the buffer properly. `=' in a VC dired buffer produces a version
205control diff, not an ordinary diff.
206
207*** CVS changes.
208
209Under CVS, you no longer need to type C-x C-q before you can edit a
210file. VC doesn't write-protect unmodified buffers anymore; you can
211freely change them at any time. The mode line keeps track of the
212file status.
213
214If you do want unmodified files to be write-protected, set your
215CVSREAD environment variable. VC sees this and behaves accordingly;
216that will give you the behaviour of Emacs 19.29, similar to that under
217RCS and SCCS. In this mode, if the variable vc-mistrust-permissions
218is nil, VC learns the modification state from the file permissions.
219When setting CVSREAD for the first time, you should check out the
220whole module anew, so that the file permissions are set correctly.
221
222VC also works with remote repositories now. When you visit a file, it
223doesn't run "cvs status" anymore, so there shouldn't be any long delays.
224
225Directory listings under VC/CVS have been enhanced. Type C-x v d, and
226you get a list of all files in or below the current directory that are
227not up-to-date. The actual status (modified, merge, conflict, ...) is
228displayed for each file. If you give a prefix argument (C-u C-x v d),
229up-to-date files are also listed. You can mark any number of files,
230and execute the next logical version control command on them (C-x v v).
231
232*** Starting a new branch.
233
234If you try to lock a version that is not the latest on its branch,
235VC asks for confirmation in the minibuffer. If you say no, it offers
236to lock the latest version instead.
237
238*** RCS non-strict locking.
239
240VC can now handle RCS non-strict locking, too. In this mode, working
241files are always writable and you needn't lock the file before making
242changes, similar to the default mode under CVS. To enable non-strict
243locking for a file, use the "rcs -U" command.
244
245*** Sharing RCS master files.
246
247If you share RCS subdirs with other users (through symbolic links),
248and you always want to work on the latest version, set
249vc-consult-headers to nil and vc-mistrust-permissions to `t'.
250Then you see the state of the *latest* version on the mode line, not
251that of your working file. When you do a check out, VC overwrites
252your working file with the latest version from the master.
253
254*** RCS customization.
255
256There is a new variable vc-consult-headers. If it is t (the default),
ff9ab414 257VC searches for RCS headers in working files (like `$Id: ONEWS,v 1.3 2000/11/02 13:34:50 gerd Exp $') and
a933dad1
DL
258determines the state of the file from them, not from the master file.
259This is fast and more reliable when you use branches. (The variable
260was already present in Emacs 19.29, but didn't get mentioned in the
261NEWS.)
262
263** Calendar changes.
264
265*** New calendars supported: Chinese, Coptic, Ethiopic
266
267Here are the commands for converting to and from these calendars:
268
269 gC: calendar-goto-chinese-date
270 gk: calendar-goto-coptic-date
271 ge: calendar-goto-ethiopic-date
272
273 pC: calendar-print-chinese-date
274 pk: calendar-print-coptic-date
275 pe: calendar-print-ethiopic-date
276
277*** Printed calendars
278
279Calendar mode now has commands to produce fancy printed calendars via
280LaTeX. You can ask for a calendar for one or more days, weeks, months
281or years. The commands all start with `t'; see the manual for a list
282of them.
283
284*** New sexp diary entry type
285
286Reminders that apply in the days leading up to an event.
287
288** The CC-mode package now provides the default C and C++ modes.
289See the manual for documentation of its features.
290
291** The uniquify package chooses buffer names differently when you
292visit multiple files with the same name (in different directories).
293
294** RMAIL now always uses the movemail program when it renames an
295inbox file, so that it can interlock properly with the mailer
296no matter where it is delivering mail.
297
298** tex-start-of-header and tex-end-of-header are now regular expressions,
299not strings.
300
301** To enable automatic uncompression of compressed files,
302type M-x auto-compression-mode. (This command used to be called
303toggle-auto-compression, but was not documented before.) In Lisp,
304you can do
305
306 (auto-compression-mode 1)
307
308to turn the mode on.
309
310** The new pc-select package emulates the key bindings for cutting and
311pasting, and selection of regions, found in Windows, Motif, and the
312Macintosh.
313
314** Help buffers now use a special major mode, Help mode. This mode
315normally turns on View mode; it also provides a hook, help-mode-hook,
316which you can use for other customization.
317
318** Apropos now uses faces for enhanced legibility. It now describes
319symbol properties as well as their function definitions and variable
320values. You can use Mouse-2 or RET to get more information about a
321function definition, variable, or property.
322
323** Font Lock mode
324
325*** Supports Scheme, TCL and Help modes
326
327For example, to automatically turn on Font Lock mode in the *Help*
328buffer, put:
329
330 (add-hook 'help-mode-hook 'turn-on-font-lock)
331
332in your ~/.emacs.
333
334*** Enhanced fontification
335
336The structure of font-lock-keywords is extended to allow "anchored" keywords.
337Typically, a keyword item of font-lock-keywords comprises a regexp to search
338for and information to specify how the regexp should be highlighted. However,
339the highlighting information is extended so that it can be another keyword
340item. This keyword item, its regexp and highlighting information, is processed
341before resuming with the keyword item of which it is part.
342
343For example, a typical keyword item might be:
344
345 ("\\<anchor\\>" (0 anchor-face))
346
347which fontifies each occurrence of the discrete word "anchor" in the value of
348the variable anchor-face. However, the highlighting information can be used to
349fontify text that is anchored to the word "anchor". For example:
350
351 ("\\<anchor\\>" (0 anchor-face) ("\\=[ ,]*\\(item\\)" nil nil (1 item-face)))
352
353which fontifies each occurrence of "anchor" as above, but for each occurrence
354of "anchor", each occurrence of "item", in any following comma separated list,
355is fontified in the value of the variable item-face. Thus the "item" text is
356anchored to the "anchor" text. See the variable documentation for further
357information.
358
359This feature is used to extend the level and quality of fontification in a
360number of modes. For example, C/C++ modes now have level 3 decoration that
361includes the fontification of variable and function names in declaration lists.
362In this instance, the "anchor" described in the above example is a type or
363class name, and an "item" is a variable or function name.
364
365*** Fontification levels
366
367The variables font-lock-maximum-decoration and font-lock-maximum-size are
368extended to specify levels and sizes for specific modes. The variable
369font-lock-maximum-decoration specifies the preferred level of fontification for
370modes that provide multiple levels (typically from "subdued" to "gaudy"). The
371variable font-lock-maximum-size specifies the buffer size for which buffer
372fontification is suppressed when Font Lock mode is turned on (typically because
373it would take too long).
374
375These variables can now specify values for individual modes, by supplying
376lists of mode names and values. For example, to use the above mentioned level
3773 decoration for buffers in C/C++ modes, and default decoration otherwise, put:
378
379 (setq font-lock-maximum-decoration '((c-mode . 3) (c++-mode . 3)))
380
381in your ~/.emacs. Maximum buffer size values for individual modes are
382specified in the same way with the variable font-lock-maximum-size.
383
384*** Font Lock configuration
385
386The mechanism to provide default settings for Font Lock mode are the variables
387font-lock-defaults and font-lock-maximum-decoration. Typically, you should
388only need to change the value of font-lock-maximum-decoration. However, to
389support Font Lock mode for buffers in modes that currently do not support Font
390Lock mode, you should set a buffer local value of font-lock-defaults for that
391mode, typically via its mode hook.
392
393These variables are used by Font Lock mode to set the values of the variables
394font-lock-keywords, font-lock-keywords-only, font-lock-syntax-table,
395font-lock-beginning-of-syntax-function and font-lock-keywords-case-fold-search.
396
397You need not set these variables directly, and should not set them yourself
398since the underlining mechanism may change in future.
399
400** Archive mode is now the default mode for various sorts of
401archive files (files whose names end with .arc, .lzh, .zip, and .zoo).
402
403** You can automatically update the years in copyright notice by
404means of (add-hook 'write-file-hooks 'copyright-update).
405Optionally it can update the GPL version as well.
406
407** Scripts of various languages (Shell, AWK, Perl, makefiles ...) can
408be automatically provided with a magic number and be made executable
409by their respective modes under control of various user variables.
410The mode must call (executable-set-magic "perl") or
411(executable-set-magic "make" "-f"). The latter for example has no
412effect on [Mm]akefile.
413
414** Shell script mode now supports over 15 different shells. The new
415command C-c ! executes the region, and optionally beginning of script
416as well, by passing them to the shell.
417
418Cases such as `sh' being a `bash' are now accounted for.
419Fontification now also does variables, the magic number and all
420builtin commands. Shell script mode no longer mingles `tab-width' and
421indentation style. The variable `sh-tab-width' has been renamed to
422`sh-indentation'. Empty lines are now indented like previous
423non-empty line, rather than just previous line.
424
425The annoying $ variable prompting has been eliminated. Instead, shell
426script mode uses `comint-dynamic-completion' for commands, variables
427and filenames.
428
429** Two-column mode now automatically scrolls both buffers together,
430which makes it possible to eliminate the special scrolling commands
431that used to do so.
432
433The commands that operate in two-column mode are no longer bound to
434keys outside that mode. f2 o will now position at the same point in
435associated buffer.
436
437the new command f2 RET inserts a newline in both buffers, at point and
438at the corresponding position in the associated buffer.
439
440** Skeleton commands now work smoothly as abbrev definitions. The
441element < no longer exists, ' is a new element.
442
443** The autoinsert insert facility for prefilling empty files as soon
444as they are found has been extended to accommodate skeletons or calling
445functions. See the function auto-insert.
446
447** TPU-edt Changes
448
449Loading tpu-edt no longer turns on tpu-edt mode. In fact, it is no
450longer necessary to explicitly load tpu-edt. All you need to do to
451turn on tpu-edt is run the tpu-edt function. Here's how to run
452tpu-edt instead of loading the file:
453
454 Running Emacs: Type emacs -f tpu-edt
455 not emacs -l tpu-edt
456
457 Within Emacs: Type M-x tpu-edt <ret>
458 not M-x load-library <ret> tpu-edt <ret>
459
460 In .emacs: Use (tpu-edt)
461 not (load "tpu-edt")
462
463The default name of the tpu-edt X key definition file has changed from
464~/.tpu-gnu-keys to ~/.tpu-keys. If you don't rename the file yourself,
465tpu-edt will offer to rename it the first time you invoke it under
466x-windows.
467
468** MS-DOS Enhancements:
469
470*** Better mouse control by adding the following functions [in dosfns.c]
471msdos-mouse-enable, msdos-mouse-disable, msdos-mouse-init.
472
473*** If another foreground/background color than the default is setup in
474your ~/_emacs, then the screen briefly flickers with the default
475colors before changing to the colors you have specified. To avoid
476this, the EMACSCOLORS environment variable exists. It shall be
477defined as a string with the following elements:
478
479 set EMACSCOLORS=fb;fb
480
481The first set of "fb" defines the initial foreground and background
482colors using standard dos color numbers (0=black,.., 7=white).
483If specified, the second set of "fb" defines the colors which are
484restored when you leave emacs.
485
486*** The new SUSPEND environment variable can now be set as the shell to
487use when suspending emacs. This can be used to override the stupid
488limitation on the environment of sub-shells in MS-DOS (they are just
489large enough to hold the currently defined variables, not leaving
490room for more); to overcome this limitation, add this to autoexec.bat:
491
492 set SUSPEND=%COMSPEC% /E:2000
493
494** The escape character can now be displayed on X frames. Try
495this:
496 (aset standard-display-table 27 (vector 27))
497after first creating a display table (you can do that by loading
498the disp-table library).
499
500** The new command-line option --eval specifies an expression to evaluate
501from the command line.
502
503** etags has now the ability to tag Perl files. They are recognised
504either by the .pm and .pl suffixes or by a first line which starts
505with `#!' and specifies a Perl interpreter. The tagged lines are
506those beginning with the `sub' keyword.
507
508New suffixes recognised are .hpp for C++; .f90 for Fortran; .bib,
509.ltx, .TeX for TeX (.bbl, .dtx removed); .ml for Lisp; .prolog for
510prolog (.pl is now Perl).
511
512** The files etc/termcap.dat and etc/termcap.ucb have been replaced
513with a new, merged, and much more comprehensive termcap file. The
514new file should include all the special entries from the old one.
515This new file is under active development as part of the ncurses
516project. If you have any questions about this file, or problems with
517an entry in it, email terminfo@ccil.org.
518\f
519* Lisp changes in Emacs 19.30.
520
521** New Data Types
522
523*** There is a new data type called a char-table which is an array
524indexed by a character. Currently this is mostly equivalent to a
525vector of length 256, but in the future, when a wider character set is
526in use, it will be different. To create one, call
527 (make-char-table SUBTYPE INITIAL-VALUE)
528
529SUBTYPE is a symbol that identifies the specific use of this
530character table. It can be any of these values:
531
532 syntax-table
533 display-table
534 keyboard-translate-table
535 case-table
536
537The function `char-table-subtype' returns the subtype of a char-table.
538You cannot alter the subtype of an existing char-table.
539
540A char-table has an element for each character code. It also has some
541"extra slots". The number of extra slots depends on the subtype and
542their use depends on the subtype. (Each subtype symbol has a
543`char-table-extra-slots' property that says how many extra slots to
544make.) Use (char-table-extra-slot TABLE N) to access extra slot N and
545(set-char-table-extra-slot TABLE N VALUE) to store VALUE in slot N.
546
547A char-table T can have a parent, which should be another char-table
548P. If you look for the value in T for character C, and the table T
549actually holds nil, P's element for character C is used instead.
550The functions `char-table-parent' and `set-char-table-parent'
551let you read or set the parent of a char-table.
552
553To scan all the values in a char-table, do not try to loop through all
554possible character codes. That would work for now, but will not work
555in the future. Instead, call map-char-table. (map-char-table
556FUNCTION TABLE) calls FUNCTION once for each character or character
557set that has a distinct value in TABLE. FUNCTION gets two arguments,
558RANGE and VALUE. RANGE specifies a range of TABLE that has one
559uniform value, and VALUE is the value in TABLE for that range.
560
561Currently, RANGE is always a vector containing a single character
562and it refers to that character alone. In the future, other kinds
563of ranges will occur. You can set the value for a given range
564with (set-char-table-range TABLE RANGE VALUE) and examine the value
565for a range with (char-table-range TABLE RANGE).
566
567*** Syntax tables are now represented as char-tables.
568All syntax tables other than the standard syntax table
569normally have the standard syntax table as their parent.
570Their subtype is `syntax-table'.
571
572*** Display tables are now represented as char-tables.
573Their subtype is `display-table'.
574
575*** Case tables are now represented as char-tables.
576Their subtype is `case-table'.
577
578*** The value of keyboard-translate-table may now be a char-table
579instead of a string. Normally the char-tables used for this purpose
580have the subtype `keyboard-translate-table', but that is not required.
581
582*** A new data type called a bool-vector is a vector of values
583that are either t or nil. To create one, do
584 (make-bool-vector LENGTH INITIAL-VALUE)
585
586** You can now specify, for each marker, how it should relocate when
587text is inserted at the place where the marker points. This is called
588the "insertion type" of the marker.
589
590To set the insertion type, do (set-marker-insertion-type MARKER TYPE).
591If TYPE is t, it means the marker advances when text is inserted. If
592TYPE is nil, it means the marker does not advance. (In Emacs 19.29,
593markers did not advance.)
594
595The function marker-insertion-type reports the insertion type of a
596given marker. The function copy-marker takes a second argument TYPE
597which specifies the insertion type of the new copied marker.
598
599** When you create an overlay, you can specify the insertion type of
600the beginning and of the end. To do this, you can use two new
601arguments to make-overlay: front-advance and rear-advance.
602
603** The new function overlays-in returns a list of the overlays that
604overlap a specified range of the buffer. The returned list includes
605empty overlays at the beginning of this range, as well as within the
606range.
607
608** The new hook window-scroll-functions is run when a window has been
609scrolled. The functions in this list are called just before
610redisplay, after the new window-start has been computed. Each function
611is called with two arguments--the window that has been scrolled, and its
612new window-start position.
613
614This hook is useful for on-the-fly fontification and other features
615that affect how the redisplayed text will look when it is displayed.
616
617The window-end value of the window is not valid when these functions
618are called. The computation of window-end is byproduct of actual
619redisplay of the window contents, which means it has not yet happened
620when the hook is run. Computing window-end specially in advance for
621the sake of these functions would cause a slowdown.
622
623The hook functions can determine where the text on the window will end
624by calling vertical-motion starting with the window-start position.
625
626** The new hook redisplay-end-trigger-functions is run whenever
627redisplay in window uses text that extends past a specified end
628trigger position. You set the end trigger position with the function
629set-window-redisplay-end-trigger. The functions are called with two
630arguments: the window, and the end trigger position. Storing nil for
631the end trigger position turns off the feature, and the trigger value
632is automatically reset to nil just after the hook is run.
633
634You can use the function window-redisplay-end-trigger to read a
635window's current end trigger value.
636
637** The new function insert-file-contents-literally inserts the
638contents of a file without any character set translation or decoding.
639
640** The new function safe-length computes the length of a list.
641It never gets an error--it treats any non-list like nil.
642If given a circular list, it returns an upper bound for the number
643of elements before the circularity.
644
645** replace-match now takes a fifth argument, SUBEXP. If SUBEXP is
646non-nil, that says to replace just subexpression number SUBEXP of the
647regexp that was matched, not the entire match. For example, after
648matching `foo \(ba*r\)' calling replace-match with 1 as SUBEXP means
649to replace just the text that matched `\(ba*r\)'.
650
651** The new keymap special-event-map defines bindings for certain
652events that should be handled at a very low level--as soon as they
653are read. The read-event function processes these events itself,
654and never returns them.
655
656Events that are handled in this way do not echo, they are never
657grouped into key sequences, and they never appear in the value of
658last-command-event or (this-command-keys). They do not discard a
659numeric argument, they cannot be unread with unread-command-events,
660they may not appear in a keyboard macro, and they are not recorded
661in a keyboard macro while you are defining one.
662
663These events do, however, appear in last-input-event immediately after
664they are read, and this is the way for the event's definition to find
665the actual event.
666
667The events types iconify-frame, make-frame-visible and delete-frame
668are normally handled in this way.
669
670** encode-time now supports simple date arithmetic by means of
671out-of-range values for its SEC, MINUTE, HOUR, DAY, and MONTH
672arguments; for example, day 0 means the day preceding the given month.
673Also, the ZONE argument can now be a TZ-style string.
674
675** command-execute and call-interactively now accept an optional third
676argument KEYS. If specified and non-nil, this specifies the key
677sequence containing the events that were used to invoke the command.
678
679** The environment variable NAME, if set, now specifies the value of
680(user-full-name), when Emacs starts up.
681\f
682* User Editing Changes in Emacs 19.29
683
684** If you run out of memory.
685
686If you get the error message "Virtual memory exhausted", type C-x s.
687That way of saving files has the least additional memory needs. Emacs
68819.29 keeps a reserve of memory which it makes available when this
689error happens; that is to ensure that C-x s can complete its work.
690
691Once you have saved your data, you can exit and restart Emacs, or use
692M-x kill-some-buffers to free up space. If you kill buffers
693containing a substantial amount of text, you can go on editing.
694
695Do not use M-x buffer-menu to save or kill buffers when you are out of
696memory, because that needs a fair amount memory itself and you may not
697have enough to get it started.
698
699** The format of compiled files has changed incompatibly.
700
701Byte-compiled files made with Emacs 19.29 normally use a new format
702that will not work in older Emacs versions. You can compile files
703in the old format if you wish; see "Changes in compilation," below.
704
705** Emacs 19.29 supports the DEC Alpha.
706
707** Emacs runs on Windows NT.
708
709This port does not yet support windowing features. It works like a
710text-only terminal, but it does support a mouse.
711
712In general, support for non-GNU-like operating systems is not a high
713priority for the GNU project. We merged in the support for Windows NT
714because that system is expected to be very widely used.
715
716** Emacs supports Motif widgets.
717
718You can build Emacs with Motif widgets by specifying --with-x-toolkit=motif
719when you run configure.
720
721Motif defines collections of windows called "tab groups", and uses the
722tab key and the cursor keys to move between windows in a tab group.
723Emacs naturally does not support this--it has other uses for the tab
724key and cursor keys. Emacs does not support Motif accelerators either,
725because it uses its normal keymap event binding features.
726
727We give higher priority to operation with a free widget set than to
728operation with a proprietary one.
729
730** If Emacs or the computer crashes, you can recover all the files you
731were editing from their auto save files by typing M-x recover-session.
732This first shows you a list of recorded interrupted sessions. Move
733point to the one you choose, and type C-c C-c.
734
735Then recover-session asks about each of the files that were being
736edited during that session, asking whether to recover that file. If
737you answer y, it calls recover-file, which works in its normal
738fashion. It shows the dates of the original file and its auto-save
739file and asks once again whether to recover that file.
740
741When recover-session is done, the files you've chosen to recover
742are present in Emacs buffers. You should then save them.
743Only this--saving them--updates the files themselves.
744
745** Menu bar menus now stay up if you click on the menu bar item and
746release the mouse button within a certain amount of time. This is in
747the X Toolkit version.
748
749** The menu bar menus have been rearranged and split up to make for a
750better organization. Two new menu bar menus, Tools and Search,
751contain items that were formerly in the Files and Edit menus, as well
752as some that did not exist in the menu bar menus before.
753
754** Emacs can now display on more than one X display at the same time.
755Use the command make-frame-on-display to create a frame, specifying
756which display to use.
757
758** M-x talk-connect sets up a multi-user talk connection
759via Emacs. Specify the X display of the person you want to talk to.
760You can talk to any number of people (within reason) by using
761this command repeatedly to specify different people.
762
763Emacs does not make a fuss about security; the people who you talk to
764can use all Emacs features, including visiting and editing files. If
765this frightens you, don't use M-x talk-connect.
766
767** The range of integer values is now at least 2**28 on all machines.
768This means the maximum size of a buffer is at least 2**27-1,
769or 134,217,727.
770
771** When you start Emacs, you can now specify option names in
772long GNU form (starting with `--') and you can abbreviate the names.
773
774You can now specify the options in any order.
775The previous requirements about the order of options
776have been eliminated.
777
778The -L or --directory option lets you specify an additional
779directory to search for Lisp libraries (including libraries
780that you specify with the -l or --load options).
781
782** Incremental search in Transient Mark mode, if the mark is already
783active, now leaves the mark active and does not change its position.
784You can make incremental search deactivate the mark once again with
785this expression.
786
787 (add-hook 'isearch-mode-hook 'deactivate-mark)
788
789** C-delete now deletes a word backwards. This is for compatibility
790with some editors in the PC world. (This key is not available on
791ordinary ASCII terminals, because C-delete is not a distinct character
792on those terminals.)
793
794** ESC ESC ESC is now a command to escape from various temporary modes
795and states.
796
797** M-x pc-bindings-mode sets up bindings compatible with many PC editors.
798In particular, Delete and its variants delete forward instead of backward.
799Use Backspace to delete backward.
800
801C-Backspace kills backward a word (as C-Delete normally would).
802M-Backspace does undo.
803Home and End move to beginning and end of line
804C-Home and C-End move to beginning and end of buffer.
805
806** The key sequence for evaluating a Lisp expression using the minibuffer
807is now ESC :. It used to be ESC ESC, but we moved it to make way for
808the ESC ESC ESC feature, on the grounds that people who evaluate Lisp
809expressions are experienced users and can cope with a change.
810If you prefer the old ESC ESC binding, put in your `~/.emacs':
811
812 (global-set-key "\e\e" 'eval-expression)
813
814** The f1 function key is now equivalent to the help key. This is
815done with key-translation-map; delete the binding for f1 in that map
816if you want to use f1 for something else.
817
818** Mouse-3, in the simplest case, still sets the region. But now, it
819places the mark where point was, and sets point where you click.
820(It used to set the mark where you click and leave point alone.)
821
822If you position point with Mouse-1, then scroll with the scroll bar
823and use Mouse-3, Mouse-3 uses the position you specified with Mouse-1
824even if it has scrolled off the screen (and point is no longer there).
825This makes it easier to select a region with the mouse which is bigger
826than a screenful.
827
828Any editing of the buffer, and any cursor motion or scrolling for any
829reason other than the scroll bar, cancels the special state set up by
830Mouse-1--so that a subsequent Mouse-3 click will use the actual value
831of point.
832
833** C-mouse-3 now pops up a mode-specific menu of commands--normally
834the same ones available in the mode's own menu bar menus.
835
836** C-mouse-2 now pops up a menu of faces, indentation, justification,
837and certain other text properties. This menu is also available
838through the menu-bar Edit menu. It is meant for use with Enriched
839mode.
840
841*** You can use this menu to change the face of the region.
842You can also set the face of the region with the new M-g command.
843
844*** The menu also includes commands for indenting the region,
845which locally changes the values of left-margin and fill-column that
846are used.
847
848*** All fill functions now indent every line to the left-margin. If
849there is also a fill-prefix, that goes after the margin indentation.
850
851*** Open-line and newline also make sure that the lines they create
852are indented to the left margin.
853
854*** It also allows you to set the "justification" of the region:
855whether it should be centered, flush right, and so forth. The fill
856functions (including auto-fill-mode) will maintain the justification
857and indentation that you request.
858
859*** The new function `list-colors-display' shows you what colors are
860available. This is also accessible from the C-mouse-2 menu.
861
862** You can now save and load files including their faces and other
863text-properties by using Enriched-mode. Files are saved in an
864extended version of the MIME text/enriched format. You can use the
865menus described above, or M-g and other keyboard commands, to
866alter the formatting information.
867
868** C-mouse-1 now pops up the menu for changing the frame's default font.
869
870** You can input Hyper, Super, Meta, and Alt characters, as well as
871non-ASCII control characters, on an ASCII-only terminal.
872To do this, use
873
874 C-x @ h -- hyper
875 C-x @ s -- super
876 C-x @ m -- meta
877 C-x @ a -- alt
878 C-x @ S -- shift
879 C-x @ c -- control
880
881These are not ordinary key sequences; they operate through
882function-key-map, which means they can be used even in the
883middle of an ordinary key sequence.
884
885** Outline minor mode and Hideif mode now use C-c @ as their prefix
886character.
887
888** Echo area messages are now logged in the "*Messages*" buffer. The
889size of this buffer is limited to message-log-max lines.
890
891** RET in various special modes for read-only buffers that contain
892lists of items now selects the item point is on. These modes include
893Dired, Compilation buffers, Buffer-menu, Tar mode, and Occur mode.
894(In Info, RET follows the reference near point; in completion list
895buffers, RET chooses the completion around point.)
896
897** set-background-color now updates the modeline face in a special
898way. If that face was previously set up to be reverse video, the
899reverse of the default face, then set-background-color updates it so
900that it remains the reverse of the default face.
901
902** The functions raise-frame and lower-frame are now commands.
903When used interactively, they apply to the selected frame.
904
905** M-x buffer-menu now displays the buffer list in the selected window.
906Use M-x buffer-menu-other-window to display it in another window.
907
908** M-w followed by a kill command now *does not* append the text in
909the kill ring. In consequence, M-w followed by C-w works as you would
910expect: it leaves the top of the kill ring matching the region that
911you killed.
912
913** In Lisp mode, the C-M-x command now executes defvar forms in a
914special way: it unconditionally sets the variable to the specified
915default value, if there is one. Normal execution of defvar does not
916alter the variable if it already has a non-void value.
917
918** In completion list buffers, the left and right arrow keys run the
919new commands previous-completion and next-completion. They move one
920completion at a time.
921
922** While doing completion in the minibuffer, the `prior' or `pageup'
923key switches to the completion list window.
924
925** When you exit the minibuffer with empty contents, the empty string
926is not put in the minibuffer history.
927
928** The default buffer for insert-buffer is now the "first" buffer
929other than the current one. If you have more than one window, this
930is a buffer visible in another window. (Usually it is the buffer
931that C-M-v would scroll.)
932
933** The etags program is now capable of recording tags based on regular
934expressions provided on the command line.
935
936This new feature allows easy support for constructs not normally
937handled by etags, such as the macros frequently used in big C/C++
938projects to define project-specific structures. It also enables the
939use of etags and TAGS files for languages not supported by etags.
940
941The Emacs manual section on Tags contains explanations and examples
942for Emacs's DEFVAR, VHDL, Cobol, Postscript and TCL.
943
944** Various mode-specific commands that used to be bound to C-c LETTER
945have been moved.
946
947*** In gnus-uu mode, gnus-uu-interactive-scan-directory is now on C-c C-d,
948and gnus-uu-interactive-save-current-file is on C-c C-z.
949
950*** In Scribe mode, scribe-insert-environment is now on C-c C-v,
951scribe-chapter is on C-c C-c, scribe-subsection is on C-c C-s,
952scribe-section is on C-c C-t, scribe-bracket-region-be is on C-c C-e,
953scribe-italicize-word is on C-c C-i, scribe-bold-word is on C-c C-b,
954and scribe-underline-word is on C-c C-u.
955
956*** In Gomoku mode, gomoku-human-takes-back is now on C-c C-b,
957gomoku-human-plays is on C-c C-p, gomoku-human-resigns is on C-c C-r,
958and gomoku-emacs-plays is on C-c C-e.
959
960*** In the Outline mode defined in allout.el,
961outline-rebullet-current-heading is now on C-c *.
962
963** M-s in Info now searches through the nodes of the Info file,
964just like s. The alias M-s was added so that you can use the same
965command for searches in both Info and Rmail.
966
967** iso-acc.el now lets you enter inverted-! and inverted-?
968with the sequences ~! and ~?.
969
970** M-x compare-windows now pushes mark in both windows before
971it starts moving point.
972
973** There are two new commands in Dired, A (dired-do-search)
974and Q (dired-do-query-replace). These are similar to tags-search and
975tags-query-replace, but instead of searching the list of files that
976appears in a tags table, they search all the files marked in Dired.
977
978** Changes to dabbrev.
979
980A new function, `dabbrev-completion' (bound to M-C-/), expands the
981unique part of an abbreviation.
982
983Dabbrev now looks for expansions in other buffers, looks for symbols
984instead of words and it works in the minibuffer.
985
986Dabbrev can be customized to work for shell scripts, with variables
987that sometimes have and sometimes haven't a leading "$". See the
988variable 'dabbrev-abbrev-skip-leading-regexp'.
989
990** In Rmail, the command rmail-input-menu has been eliminated. The
991feature of selecting an Rmail file from a menu is now implemented in
992another way.
993
994** Bookmarks changes.
995
996*** It now works to set bookmarks in Info nodes.
997
998*** Bookmarks can have annotations; type "C-h m" after doing
999"M-x list-bookmarks", for more information on annotations.
1000
1001*** The bookmark-jump popup menu function is now `bookmark-menu-jump', for
1002those who bind it to a mouse click.
1003
1004*** The default bookmarks file name is now "~/.emacs.bmk". If you
1005already have a bookmarks file, it will be renamed automagically when
1006you next load it.
1007
1008** New package, ps-print.
1009
1010The ps-print package generates PostScript printouts of buffers or
1011regions, and includes face attributes such as color, underlining,
1012boldface and italics in the printed output.
1013
1014** New package, msb.
1015
1016The msb package provides a buffer-menu in the menubar with separate
1017menus for different types of buffers.
1018
1019** `cpp.el' is a new library that can highlight or hide parts of a C
1020file according to C preprocessor conditionals. To try it, run the
1021command M-x cpp-highlight-buffer.
1022
1023** Changes in CC mode.
1024
1025*** c-set-offset and related functions and variables can now accept
1026variable symbols. Also ++ and -- which mean 2* positive and negative
1027c-basic-offset respectively.
1028
1029*** New variable, c-recognize-knr-p, which controls whether K&R C
1030constructs will be recognized. Trying to recognize K&R constructs is a
1031time hog so if you're programming strictly in ANSI C, set this
1032variable to nil (it should already be nil in c++-mode).
1033
1034*** New variable, c-hanging-comment-ender-p for controlling
1035c-fill-paragraph's behavior.
1036
1037*** New syntactic symbol: statement-case-open. This is assigned to lines
1038containing an open brace just after a case/default label.
1039
1040*** New variable, c-progress-interval, which controls minibuffer update
1041message displays during long re-indention. This is a new feature
1042which prints percentage complete messages at specified intervals.
1043
1044** Makefile mode changes.
1045
1046*** The electric keys are not enabled by default.
1047
1048*** There is now a mode-specific menu bar menu.
1049
1050*** The mode supports font-lock, add-log, and imenu.
1051
1052*** The command M-TAB does completion of target names and variable names.
1053
1054** icomplete.el now works more like a minor mode. Use M-x icomplete-mode
1055to turn it on and off.
1056
1057Icomplete now supports an `icomplete-minibuffer-setup-hook', which is
1058run on minibuffer setup whenever icompletion will be occurring. This
1059hook can be used to customize interoperation of icomplete with other
1060minibuffer-specific packages, eg rsz-mini. See the doc string for
1061more info.
1062
1063** Ediff change.
1064
1065Use ediff-revision instead of vc-ediff. It also replaces rcs-ediff,
1066for those who use that; if you want to use a version control package
1067other than vc.el, you must set the variable
1068ediff-version-control-package to specify which package.
1069
1070** VC now supports branches with RCS.
1071
1072You can use C-u C-x C-q to select any branch or version by number.
1073It reads the version number or branch number with the minibuffer,
1074then checks out the file unlocked.
1075
1076Type C-x C-q again to lock the selected branch or version.
1077When you check in changes to that branch or version, there are two
1078possibilities:
1079
1080-- If you've selected a branch, or a version at the tip of a branch,
1081then the new version adds to that branch. If you wish to create a
1082new branch, use C-u C-x C-q to specify a version number when you check
1083in the new version.
1084
1085-- If you've selected an inner version which is not the latest in its
1086branch, then the new version automatically creates a new branch.
1087
1088** VC now supports CVS as well as RCS and SCCS.
1089
1090Since there are no locks in CVS, some things behave slightly
1091different when the backend is CVS. When vc-next-action is invoked
1092in a directory handled by CVS, it does the following:
1093
1094 If the file is not already registered, this registers it for version
1095control. This does a "cvs add", but no "cvs commit".
1096 If the file is added but not committed, it is committed.
1097 If the file has not been changed, neither in your working area or
1098in the repository, a message is printed and nothing is done.
1099 If your working file is changed, but the repository file is
1100unchanged, this pops up a buffer for entry of a log message; when you
1101finish the log message with C-c C-c, that checks in the resulting
1102changes along with the log message as change commentary. A writable
1103file remains in existence.
1104
1105 If vc-next-action changes the repository file, it asks you
1106whether to merge in the changes into your working copy.
1107
1108vc-directory, when started in a CVS file hierarchy, reports
1109all files that are modified (and thus need to be committed).
1110(When the backend is RCS or SCCS vc-directory reports all
1111locked files).
1112
1113VC has no support for running the initial "cvs checkout" to get a
1114working copy of a module. You can only use VC in a working copy of
1115a module.
1116
1117You can disable the CVS support as follows:
1118
1119 (setq vc-master-templates (delq 'vc-find-cvs-master vc-master-templates))
1120
1121or by setting vc-handle-cvs to nil.
1122
1123This may be desirable if you run a non-standard version of CVS, or
1124if CVS was compiled with FORCE_USE_EDITOR or (possibly)
1125RELATIVE_REPOS.
1126
1127** Comint and shell mode changes:
1128
1129*** Completion works with file names containing quoted characters.
1130
1131File names containing special characters (such as " ", "!", etc.) that are
1132quoted with a "\" character are recognised during completion. Special
1133characters are quoted when they are inserted during completion.
1134
1135*** You can use M-x comint-truncate-buffer to truncate the buffer.
1136
1137When this command is run, the buffer is truncated to a maximum number
1138of lines, specified by the variable comint-buffer-maximum-size. Just
1139like the command comint-strip-ctrl-m, this can be run automatically
1140during process output by doing this:
1141
1142(add-hook 'comint-output-filter-functions
1143 'comint-truncate-buffer)
1144
1145** Telnet mode buffer name changed.
1146
1147The buffer name for a Telnet buffer is now *telnet-HOST*, not
1148 *HOST-telnet*. This is for consistency with other Emacs packages.
1149
1150** M-x man (man) is now faster and more robust. On systems where the
1151entire man page is indented, the indentation is removed.
1152
1153The user option names that used to end in -p now end in -flag. The
1154new names are: Man-reuse-okay-flag, Man-downcase-section-letters-flag,
1155Man-circular-pages-flag. The Man-notify user option has been renamed to
1156Man-notify-method and accepts one more value, `pushy', that just
1157switches the current buffer to the manpage buffer, without switching
1158frames nor changing your windows configuration.
1159
1160A new user option Man-fontify-manpage-flag disables fontification
1161(thus speeding up man) when set to nil. Default is to fontify if a
1162window system is used. Two new user options Man-overstrike-face
1163(default 'bold) and Man-underline-face (default 'underline) can be set
1164to the preferred faces to be used for the words that man overstrikes
1165and underlines. Useful for those who like coloured man pages.
1166
1167Two new interactive functions are provided: Man-cleanup-manpage and
1168Man-fontify-manpage. Both can be used on a buffer that contains the
1169output of a `rsh host man manpage' command, or the output of an
1170`nroff -man -Tman manpage' command to make them readable.
1171Man-cleanup-manpage is faster, but does not fontify.
1172
1173** The new function modify-face makes it easy to specify
1174all the attributes of a face, all at once.
1175
1176** Faces now support background stippling.
1177
1178Use the command set-face-stipple to specify the stipple-pattern for a
1179face. Use face-stipple to access the specified stipple pattern. The
1180existing face functions now handle the stipple pattern when
1181appropriate.
1182
1183If you specify one of the standard gray colors as a face background
1184color, and your display doesn't handle gray, Emacs automatically uses
1185stipple instead to get the same effect.
1186
1187** Changes in Font Lock mode.
1188
1189*** Fontification
1190
1191Two new default faces are provided; `font-lock-variable-name-face' and
1192`font-lock-reference-face'. The face `font-lock-doc-string-face' has
1193been removed since it is the same as the existing
1194`font-lock-string-face'. Where appropriate, fontification
1195automatically uses these new faces.
1196
1197Fontification via commands `font-lock-mode' and
1198`font-lock-fontify-buffer' is now cleanly interruptible (i.e., with
1199C-g). If you interrupt during the fontification process, the buffer
1200remains in its previous modified state and all highlighting is removed
1201from the buffer.
1202
1203For C/C++ modes, Font Lock mode is much faster but highlights much
1204more. Other modes are faster/more extensive/more discriminatory, or a
1205combination of these.
1206
1207To enable Font Lock mode, add the new function `turn-on-font-lock' in
1208one of the following ways:
1209
1210 (add-hook 'c-mode-hook 'turn-on-font-lock)
1211
1212Or for any visited file with:
1213
1214 (add-hook 'find-file-hooks 'turn-on-font-lock)
1215
1216*** Supports color and grayscale displays
1217
1218Font Lock mode supports different ways of highlighting, depending on
1219the type of display and background shade. Attributes (face color,
1220bold, italic and underline, and display type and background mode) can
1221be controlled either from Emacs Lisp or X resources.
1222
1223See the new variables `font-lock-display-type' and
1224`font-lock-face-attributes'.
1225
1226*** Supports more modes
1227
1228The following modes are directly supported:
1229
1230ada-mode, asm-mode, bibtex-mode, c++-c-mode, c++-mode, c-mode,
1231change-log-mode, compilation-mode, dired-mode, emacs-lisp-mode,
1232fortran-mode, latex-mode, lisp-mode, mail-mode, makefile-mode,
1233outline-mode, pascal-mode, perl-mode, plain-tex-mode, rmail-mode,
1234rmail-summary-mode, scheme-mode, shell-mode, slitex-mode, tex-mode,
1235texinfo-mode.
1236
1237See the new variables `font-lock-defaults-alist' and
1238`font-lock-defaults'.
1239
1240Some modes support different levels of fontification. You can choose
1241to use the minimum or maximum available decoration by changing the
1242value of the new variable `font-lock-maximum-decoration'.
1243
1244Programmers are urged to make available to the community their own
1245keywords for modes not yet supported. See font-lock.el for
1246information about efficiency.
1247
1248*** fast-lock
1249
1250The fast-lock package speeds up Font Lock mode by saving font choices
1251in associated cache files. When you visit a file with Font Lock mode
1252and Fast Lock mode turned on for the first time, the file's buffer is
1253fontified as normal. When certain events occur (such as exiting
1254Emacs), Fast Lock saves the highlighting in a cache file. When you
1255subsequently visit this file, its cache is used to restore the
1256highlighting.
1257
1258To use this package, put in your `~/.emacs':
1259
1260 (add-hook 'font-lock-mode-hook 'turn-on-fast-lock)
1261
1262To control the use of caches, see the documentation for `fast-lock-mode'.
1263
1264** You can tell pop-to-buffer to display certain buffers in the selected
1265window rather than finding some other window to display them in.
1266There are two variables you can use to specify these buffers.
1267
1268same-window-buffer-names holds a list of buffer names; if a buffer's
1269name appears in this list, pop-to-buffer puts it in the selected window.
1270
1271same-window-regexps holds a list of regexps--if any one of them
1272matches a buffer's name, then pop-to-buffer puts that buffer in the
1273selected window.
1274
1275The default values of these variables are not nil: they list various
1276buffers that normally appear, when you as for them, in the selected
1277window. These include shell buffers, mail buffers, telnet buffers,
1278and others. By removing elements from these variables, you can ask
1279Emacs to display those buffers in separate windows.
1280
1281** The special-display-buffer-names and special-display-regexps lists
1282have been generalized. An element may now be a list. The car of the list
1283is the buffer name or regular expression for matching buffer names.
1284
1285The cdr of the list can be an alist specifying additional frame
1286parameters for use in constructing the special display frame.
1287
1288Alternatively, the cdr can have this form:
1289
1290 (FUNCTION ARGS...)
1291
1292where FUNCTION is a symbol. Then the frame is constructed by calling
1293FUNCTION; its first argument is the buffer, and its remaining
1294arguments are ARGS.
1295
1296** If the environment variable REPLYTO is set, its value is the default
1297for mail-default-reply-to.
1298
1299** When you send a message in Emacs, if you specify an Rmail file with
1300the FCC: header field, Emacs converts the message to Rmail format
1301before writing it. Thus, the file never contains anything but Rmail
1302format messages.
1303
1304** The new variable mail-from-style controls whether the From: header
1305should include the sender's full name, and if so, which format to use.
1306
1307** The new variable mail-personal-alias-file specifies the name of the
1308user's personal aliases. This defaults to the file ~/.mailrc.
1309mailabbrev.el used to have its own variable for this purpose
1310(mail-abbrev-mailrc-file). That variable is no longer used.
1311
1312** In Buffer-Menu mode, the d and C-d commands (which mark buffers for
1313deletion) now accept a prefix argument which serves as a repeat count.
1314
1315** Changes in BibTeX mode.
1316
1317*** Reference keys can now be entered with TAB completion. All
1318reference keys defined in that buffer and all labels that appear in
1319crossreference entries are object to completion.
1320
1321*** Braces are supported as field delimiters in addition to quotes.
1322BibTeX entries may have brace-delimited and quote-delimited fields
1323intermixed. The delimiters generated for new entries are specified by
1324the variables bibtex-field-left-delimiter and
1325bibtex-field-right-delimiter on a buffer-local basis. Those variables
1326default to braces, since it is easier to put quote accented characters
1327(as the german umlauts) into a brace-delimited entry.
1328
1329*** The function bibtex-clean-entry can now be invoked with a prefix
1330argument. In this case, a label is automatically generated from
1331various fields in the record. If bibtex-clean-entry is invoked on a
1332record without label, a label is also generated automatically.
1333Various variables (all beginning with `bibtex-autokey-') control the
1334creation of that key. The variable bibtex-autokey-edit-before-use
1335determines, if the user is allowed to edit auto-generated reference
1336keys before they are used.
1337
1338*** A New function bibtex-complete-string completes strings with
1339respect to the strings defined in this buffer and a set of predefined
1340strings (initialized to the string macros defined in the standard
1341BibTeX style files) in the same way in which ispell-complete-word
1342works with respect to words in a dictionary. Candidates for
1343bibtex-complete-string are initialized from variable
1344bibtex-predefined-strings and by parsing the files found in
1345bibtex-string-files for @String definitions.
1346
1347*** Every reference/field pair has now attached a comment which
1348appears in the echo area when this field is edited. These comments
1349should provide useful hints for BibTeX usage, especially for BibTeX
1350beginners. New variable bibtex-help-message determines if these help
1351messages are to appear in the minibuffer when moving to a text entry.
1352
1353*** Inscriptions of menu bar changed from "Entry Types" to
1354"Entry-Types" and "Bibtex Edit" to "BibTeX-Edit".
1355
1356*** The variable bibtex-include-OPTcrossref is now not longer a binary
1357switch but a list of reference names which should contain a crossref
1358field. E.g., you can tell bibtex-mode you want a crossref field for
1359@InProceedings and @InBook entries but for no other.
1360
1361*** The function validate-bibtex-buffer was completely rewritten to
1362validate if a buffer is syntactically correct. find-bibtex-duplicates
1363is no longer a function itself but was moved into
1364validate-bibtex-buffer.
1365
1366*** Cleaning a BibTeX entry tests, if necessary fields are there.
1367E.g., if you tell bibtex-mode to include a crossref entry, some fields
1368are optional which would be required without the crossref entry. If
1369you now leave the crossref entry empty and do a bibtex-clean-entry
1370with some now required fields left empty, version 2.0 of bibtex.el
1371complains about the absence of these fields, whereas version 1.3
1372didn't.
1373
1374*** Default value for variables bibtex-maintain-sorted-entries and
1375bibtex-sort-ignore-string-entries is now t.
1376
1377*** All interactive functions are renamed to begin with `bibtex-'.
1378
1379*** Keybindings with \C-c\C-e entry changed for unification. Often
1380used reference types are now on control-modified keys, mediocre used
1381types are on unmodified keys, seldom used types are on shift-modified
1382keys and almost never used types on meta-modified keys.
1383\f
1384* Configuration Changes in Emacs 19.29
1385
1386** Emacs now uses directory /usr/local/share for most of its installed
1387files. This follows a GNU convention for directory usage.
1388
1389** The option --with-x11 is no longer supported.
1390X11 is the only version of X that Emacs 19.29 supports;
1391use --with-x if you need to request X support explicitly.
1392(Normally this should not be necessary, since configure should
1393automatically enable X support if X is installed on your machine.)
1394
1395** If you use the site-init.el file to set the variable
1396mail-host-address to a string in the dumped Emacs, that string becomes
1397the default host address for initializing user-mail-address.
1398It is used instead of the value of (system-name).
1399\f
1400* Lisp-Level Changes in Emacs 19.29
1401
1402** Basic Lisp
1403
1404*** The range of integer values is now at least 2**28 on all machines.
1405This means the maximum size of a buffer is at least 2**27-1,
1406or 134,217,727.
1407
1408*** You can now use Common Lisp syntax for the backquote and comma
1409macros. Thus, you can now write `(x ,y z) instead of (` (x (, y) z)).
1410
1411The old syntax is still accepted.
1412
1413*** The new function rassoc is like assoc, except that it compares the
1414key against the cdr of each alist element, where assoc would compare
1415it against the car of each alist element.
1416
1417*** The new function unintern deletes a symbol from an obarray. The
1418first argument can be the symbol to delete, or a string giving its
1419name. The second argument specifies the obarray (nil means the
1420current default obarray).
1421
1422If the specified symbol is not in the obarray, or if there's no symbol
1423in the obarray matching the specified string, unintern does nothing
1424and returns nil. If it does delete a symbol, it returns t.
1425
1426*** You can specify an alternative read function for use by load and
1427eval-region by binding the variable load-read-function to some other
1428function. This function should accept one argument just like read.
1429If load-read-function is nil, load and eval-region use ordinary read.
1430
1431*** The new function `type-of' takes any object as argument, and
1432returns a symbol identifying the type of that object--one of `symbol',
1433`integer', `float', `string', `cons', `vector', `marker', `overlay',
1434`window', `buffer', `subr', `compiled-function',
1435`window-configuration', `process'.
1436
1437*** When you use eval-after-load for a file that is already loaded, it
1438executes the FORM right away. As before, if the file is not yet
1439loaded, it arranges to execute FORM if and when the file is loaded
1440later. The result is: if you have called eval-after-load for a file,
1441and if that file has been loaded, then regardless of the order of
1442these two events, the specified form has been evaluated.
1443
1444*** The Lisp construct #@NUMBER now skips the next NUMBER characters,
1445treating them as a comment.
1446
1447You would not want to use this in a file you edit by hand, but it is
1448useful for commenting out parts of machine-generated files.
1449
1450*** Two new functions, `plist-get' and `plist-put',
1451allow you to modify and retrieve values from lists formatted as property-lists.
1452They work like `get' and `put', but operate on any list.
1453`plist-put' returns the modified property-list; you must store it
1454back where you got it.
1455
1456*** The new function add-to-list is called with two elements,
1457a variable that holds a list and a new element.
1458It adds the element to the list unless it is already present.
1459It compares elements using `equal'. Here is an example:
1460
1461(setq foo '(a b)) => (a b)
1462
1463(add-to-list 'foo 'c) => (c a b)
1464
1465(add-to-list 'foo 'b) => (c a b)
1466
1467foo => (c a b)
1468
1469** Changes in compilation.
1470
1471Functions and variables loaded from a byte-compiled file
1472now refer to the file for their doc strings.
1473
1474This has a few consequences:
1475
1476-- Loading the file is faster and uses less memory.
1477-- Reference to doc strings is a little slower (the same speed
1478 as reference to the doc strings of primitive and preloaded functions).
1479-- The compiled files will not work in old versions of Emacs.
1480-- If you move the compiled file after loading it, Emacs can no longer
1481 find these doc strings.
1482-- If you alter the compiled file (such as by compiling a new
1483 version), then further access to documentation strings will get
1484 nonsense results.
1485
1486The byte compiler now optionally supports lazy loading of compiled
1487functions' definitions. If you enable this feature when you compile,
1488loading the compiled file does not actually bring the function
1489definitions into core. Instead it creates references to the compiled
1490file, and brings each function's definition into core the first time
1491you call that function, or when you force it with the new function
1492`fetch-bytecode'.
1493
1494Using the lazy loading feature has a few consequences:
1495
1496-- Loading the file is faster and uses less memory.
1497-- Calling any function in the file for the first time is slower.
1498-- If you move the compiled file after loading it, Emacs can no longer
1499 find the function definitions.
1500-- If you alter the compiled file (such as by compiling a new
1501 version), then further access to functions not already loaded
1502 will get nonsense results.
1503
1504To enable the lazy loading feature, set up a non-nil file local
1505variable binding for the variable `byte-compile-dynamic' in the Lisp
1506source file. For example, put this on the first line:
1507
1508 -*-byte-compile-dynamic: t;-*-
1509
1510It's a good idea to use the lazy loading feature for a file that
1511contains many functions, most of which are not actually used by a
1512given user in a given session.
1513
1514To turn off the basic feature of referring to the file for doc
1515strings, set byte-compile-dynamic-docstrings to nil. You can do this
1516globally, or for one source file by adding this to the first line:
1517
1518 -*-byte-compile-dynamic-docstrings: nil;-*-
1519
1520** Strings
1521
1522*** Do not pass integer arguments to `concat' (or `vconcat' or
1523`append'). We are phasing out the old unrecommended support for
1524integers as arguments to these functions, in preparation for treating
1525numbers as single characters in a future release. To concatenate
1526numbers in string form, use `number-to-string' first, or rewrite the
1527call to use `format' instead of `concat'.
1528
1529*** The new function match-string returns the string of text matched at
1530the given parenthesized expression by the last regexp search, or nil
1531if there was no match. If the last match was by `string-match' on a
1532string, the string must be given. Therefore, this function can be
1533used in place of `buffer-substring' and `substring', when using
1534`match-beginning' and `match-end' to find match positions.
1535
1536 (match-string N) or (match-string N STRING)
1537
1538*** The function replace-match now accepts an optional fourth argument,
1539STRING. Use this after performing string-match on STRING, to replace
1540the portion of STRING that was matched. When used in this way,
1541replace-match returns a newly created string which is the same as
1542STRING except for the matched portion.
1543
1544*** The new function buffer-substring-no-properties
1545is like buffer-substring except that the string it returns
1546has no text properties.
1547
1548*** The function `equal' now considers two strings to be different
1549if they don't have the same text properties.
1550
1551** Completion
1552
1553*** all-completions now takes an optional fourth argument.
1554If that argument is non-nil, completions that start with a space
1555are ignored unless the initial string also starts with a space.
1556(This used to happen unconditionally.)
1557
1558** Local Variables
1559
1560*** Local hook variables.
1561
1562There is now a clean way to give a hook variable a buffer-local value.
1563Call the function `make-local-hook' to do this.
1564
1565Once a hook variable is buffer-local, you can add hooks to it either
1566globally or locally. run-hooks runs the local hook functions
1567of the current buffer, then all the global hook functions.
1568
1569The functions add-hook and remove-hook take an additional optional
1570argument LOCAL which says whether to add (or remove) a local hook
1571function or a global one.
1572
1573Local hooks use t as an element of the (local) value of the hook
1574variable as a flag meaning to use the global value also.
1575
1576*** The new function local-variable-p tells you whether a particular
1577variable is buffer-local in the current buffer or a specified buffer.
1578
1579** Editing Facilities
1580
1581*** The function copy-region-as-kill no longer sets this-command;
1582as a result, a following kill command will not normally append
1583to the text saved by copy-region-as-kill.
1584
1585*** Regular expression searching and matching no longer performs full
1586Posix backtracking by default. They now stop with the first match found
1587instead of looking for the longest match--just as they did in Emacs 18.
1588The reason for this change is to get higher speed.
1589
1590There are new functions you can use if you really want to search or
1591match with Posix behavior: posix-search-forward,
1592posix-search-backward, posix-looking-at, and posix-string-match. Call
1593these just like re-search-forward, re-search-backward, looking-at, and
1594string-match.
1595
1596** Files
1597
1598*** The new variable `format-alist' defines file formats,
1599which are ways of translating between the data in a file and things
1600(text, text-properties, and possibly other information) in a buffer.
1601
1602`format-alist' has one element for each format. Each element is a
1603list like this:
1604 (NAME DOC-STRING REGEXP FROM-FN TO-FN MODIFY MODE-FN)
1605containing the name of the format, a documentation string, a regular
1606expression which is used to recognize files in that format, a decoding
1607function, an encoding function, a flag that indicates whether the
1608encoding function modifies the buffer, and a mode function.
1609
1610FROM-FN is called to decode files in that format; it gets two args, BEGIN
1611 and END, and can make any modifications it likes, returning the new
1612 end position. It must make sure that the beginning of the file no
1613 longer matches REGEXP, or else it will get called again.
1614TO-FN is called to encode a region into that format; it is also passed BEGIN
1615 and END, and either returns a list of annotations as in
1616 `write-region-annotate-functions', or modifies the region and returns
1617 the new end position.
1618MODIFY, if non-nil, means the TO-FN modifies the region. If nil, TO-FN may
1619 not make any changes and should return a list of annotations.
1620
1621`insert-file-contents' checks the beginning of the file that it is
1622inserting to see if it matches one of the regexps. If so, then it
1623calls the decoding function, and then looks for another match. When
1624visiting a file, it also calls the mode function, and sets the
1625variable `buffer-file-format' to the list of formats that the file
1626used.
1627
1628`write-region' calls the encoding functions for each format in
1629`buffer-file-format' before it writes the file. To save a file in a
1630different format, either set `buffer-file-format' to a different
1631value, or call the new function `format-write-file'.
1632
1633Since some encoding functions may be slow, you can request that
1634auto-save use a format different from the buffer's default by setting
1635the variable `auto-save-file-format' to the desired format. This will
1636determine the format of all auto-save files.
1637
1638*** The new function file-ownership-preserved-p tells you whether
1639deleting a file and recreating it would keep the file's owner
1640unchanged.
1641
1642*** The new function file-regular-p returns t if a file
1643is a "regular" file (not a directory, symlink, named pipe,
1644terminal, or other I/O device).
1645
1646*** The new function file-name-sans-extension discards the extension
1647of a file name. You call it with a file name, and returns a string
1648lacking the extension.
1649
1650*** The variable path-separator is a string which says which
1651character separates directories in a search path. It is ":"
1652for Unix and GNU systems, ";" for MSDOG and Windows NT.
1653
1654** Commands and Key Sequences
1655
1656*** Key sequences consisting of C-c followed by {, }, <, >, : or ; are
1657now reserved for major modes. Sequences consisting of C-c followed by
1658any other punctuation character are now meant for minor modes. We don't
1659plan to convert all existing major modes to stop using those sequences,
1660but we hope to keep them to a minimum.
1661
1662*** When the post-command-hook or the pre-command-hook gets an error, the error
1663is silently ignored. Emacs no longer sets the hook variable to nil when this
1664happens. Meanwhile, the hook functions can now alter the hook variable in
1665a normal fashion; there is no need to do anything special.
1666
1667*** define-key, lookup-key, and various other functions for changing or
1668looking up key bindings now let you write an event type with a list
1669like (ctrl meta newline) or (meta ?d), as in XEmacs. (ctrl meta newline)
1670is equivalent to the event type symbol C-M-newline, and (meta ?d)
1671is equivalent to the character ?\M-d.
1672
1673*** The function event-convert-list converts a list such as
1674(meta ?d) into the corresponding event type (a symbol or integer).
1675
1676*** In an interactive spec, `k' means to read a key sequence. In this
1677key sequence, upper case characters and shifted function keys which
1678have no bindings are converted to lower case if that makes them
1679defined.
1680
1681The new interactive code `K' reads a key sequence similarly, but does
1682not convert the last event. `K' is useful for reading a key sequence
1683to be given a binding.
1684
1685*** The variable overriding-local-map now has no effect on the menu bar
1686display unless overriding-local-map-menu-flag is non-nil. This is why
1687incremental search no longer temporarily changes the menu bars.
1688
1689Note that overriding-local-map does still affect the execution of key
1690sequences entered using the menu bar. So if you use
1691overriding-local-map, and a menu bar key sequence comes in, you should
1692make sure to clear overriding-local-map before that key sequence gets
1693looked up and executed. But this is what you'd normally do anyway:
1694programs that use overriding-local-map normally exit and "put back"
1695any event such as menu-bar that they do not handle specially.
1696
1697*** The new variable `overriding-terminal-local-map' is like
1698overriding-local-map, but is specific to a single terminal.
1699
1700*** delete-frame events.
1701
1702When you use the X window manager's "delete window" command, this now
1703generates a delete-frame event. The standard definition of this event
1704is a command that deletes the frame that received the event, and kills
1705Emacs when the last visible or iconified frame is deleted. You can
1706rebind the event to some other command if you wish.
1707
1708*** Two new types of events, iconify-frame and make-frame-visible,
1709indicate that the user iconified or deiconified a frame with the
1710window manager. Since the window manager has already done the work,
1711the default definition for both event types in Emacs is to do nothing.
1712
1713** Frames and X
1714
1715*** Certain Lisp variables are now local to an X terminal (in other
1716words, all the screens of a single X server). The value in effect, at
1717any given time, is the one that belongs to the terminal of the
1718selected frame. The terminal-local variables are
1719default-minibuffer-frame, system-key-alist, defining-kbd-macro, and
1720last-kbd-macro. There is no way for Lisp programs to create others.
1721
1722The terminal-local variables cannot be buffer-local.
1723
1724*** When you create an X frame, for the `top' and `left' frame
1725parameters, you can now use values of the form (+ N) or (- N), where N
1726is an integer. (+ N) means N pixels to the right of the left edge of
1727the screen and (- N) means N pixels to the left of the right edge. In
1728both cases, N may be zero (exactly at the edge) or negative (putting
1729the window partly off the screen).
1730
1731The function x-parse-geometry can return values of these forms
1732for certain inputs.
1733
1734*** The variable menu-bar-file-menu has been renamed to
1735menu-bar-files-menu to match the actual item that appears in the menu.
1736(All the other such variable names do match.)
1737
1738*** The new function active-minibuffer-window returns the minibuffer window
1739currently active, or nil if none is now active.
1740
1741*** In the functions next-window, previous-window, next-frame,
1742previous-frame, get-buffer-window, get-lru-window, get-largest-window
1743and delete-windows-on, if you specify 0 for the last argument,
1744it means to consider all visible and iconified frames.
1745
1746*** When you set a frame's cursor type with modify-frame-parameters,
1747you can now specify (bar . INTEGER) as the cursor type. This stands
1748for a bar cursor of width INTEGER.
1749
1750*** The new function facep returns t if its argument is a face name
1751(or if it is a vector such as is used internally by the Lisp code
1752to represent a face).
1753
1754*** Each frame can now have a buffer-predicate function,
1755which is the `buffer-predicate' frame parameter.
1756When `other-buffer' looks for an alternative buffer, it considers
1757only the buffers that fit the selected frame's buffer predicate (if it
1758has one). This is useful for applications that make their own frames.
1759
1760*** When you create an X frame, you can now specify the frame parameter
1761`display'. This says which display to put the frame on. The value
1762should be a display name--a string of the form
1763"HOST:DPYNUMBER.SCREENNUMBER".
1764
1765The functions x-server-... and x-display-... now take an optional
1766argument which specifies the display to ask about. You can use either
1767a display name string or a frame. A value of nil stands for the
1768selected frame.
1769
1770To close the connection to an X display, use the function
1771x-close-connection. Specify which display with a display name. You
1772cannot close the connection if Emacs still has frames open on that
1773display.
1774
1775x-display-list returns a list indicating which displays Emacs has
1776connections to. Its elements are display names (strings).
1777
1778*** The icon-type frame parameter may now be a file name.
1779Then the contents of that file specify the icon bitmap to use
1780for that frame.
1781
1782*** The title of an Emacs frame, displayed by most window managers, is
1783set from frame-title-format or icon-title-format. These have the same
1784structure as mode-line-format.
1785
1786*** x-display-grayscale-p is a new function that returns non-nil if
1787your X server can display shades of gray. Currently it returns
1788non-nil for color displays (because they can display shades of gray);
1789we may change it in the next version to return nil for color displays.
1790
1791*** The frame parameter scroll-bar-width specifies the width of the
1792scrollbar in pixels.
1793
1794** Buffers
1795
1796*** Creating a buffer with get-buffer-create does not obey
1797default-major-mode. That variable is now handled in a separate
1798function, set-buffer-major-mode. get-buffer-create and generate-new-buffer
1799always leave the newly created buffer in Fundamental mode.
1800
1801Creating a new buffer by visiting a file or with switch-to-buffer,
1802pop-to-buffer, and similar functions does call set-buffer-major-mode
1803to select the default major mode specified with default-major-mode.
1804
1805*** You can now create an "indirect buffer". An indirect buffer shares
1806its text, including text properties, with another buffer (the "base
1807buffer"), but has its own major mode, local variables, overlays, and
1808narrowing. An indirect buffer has a name of its own, distinct from
1809those of the base buffer and all other buffers. An indirect buffer
1810cannot itself be visiting a file (though its base buffer can be).
1811The base buffer cannot itself be indirect.
1812
1813Use (make-indirect-buffer BASE-BUFFER NAME) to make an indirect buffer
1814named NAME whose base is BASE-BUFFER. If BASE-BUFFER is an indirect
1815buffer, its base buffer is used as the base for the new buffer.
1816
1817You can make an indirect buffer current, or switch to it in a window,
1818just as you would a non-indirect buffer.
1819
1820The function buffer-base-buffer, given an indirect buffer, returns its
1821base buffer. It returns nil when given an ordinary buffer (not
1822indirect).
1823
1824The library `noutline' has versions of Outline mode and Outline minor
1825mode which let you display different parts of the outline in different
1826indirect buffers.
1827
1828** Subprocesses
1829
1830*** The functions call-process and call-process-region now allow
1831you to direct error message output from the subprocess into a
1832separate destination, instead of mixing it with ordinary output.
1833To do this, specify for the third argument, BUFFER, a list of the form
1834 (BUFFER-OR-NAME ERROR-DESTINATION)
1835BUFFER-OR-NAME specifies where to put ordinary output; it should
1836be a buffer or buffer name, or t, nil or 0. This is what would
1837have been the BUFFER argument, ordinarily.
1838
1839ERROR-DESTINATION specifies where to put the error output.
1840nil means discard it, t means mix it with the ordinary output,
1841and a string specifies a file name to write this output into.
1842
1843You can't specify a buffer to put the error output in; that is not
1844easy to implement directly. You can put the error output into a
1845buffer by sending it to a temporary file and then inserting the file
1846into a buffer.
1847
1848*** Comint mode changes:
1849
1850**** The variable comint-completion-addsuffix can also be a cons pair
1851of the form (DIRSUFFIX . FILESUFFIX), where DIRSUFFIX and FILESUFFIX are
1852strings added on unambiguous or exact completion of directories and file
1853names, respectively.
1854
1855** Text properties
1856
1857*** You can now specify which values of the `invisible' property
1858make text invisible in a given buffer. The variable
1859`buffer-invisibility-spec', which is always local in all buffers,
1860controls this.
1861
1862If its value is t, then any non-nil `invisible' property makes
1863a character invisible.
1864
1865If its value is a list, then a character is invisible if its
1866`invisible' property value appears as a member of the list, or if it
1867appears as the car of a member of the list.
1868
1869When the `invisible' property value appears as the car of a member of
1870the `buffer-invisibility-spec' list, then the cdr of that member has
1871an effect. If it is non-nil, then an ellipsis appears in place of the
1872character. (This happens only for the *last* invisible character in a
1873series of consecutive invisible characters, and only at the end of a
1874line.)
1875
1876If a character's `invisible' property is a list, then Emacs checks each
1877element of the list against `buffer-invisibility-spec'. If any element
1878matches, the character is invisible.
1879
1880*** The command `list-text-properties-at' shows what text properties
1881are in effect at point.
1882
1883*** Frame objects now exist in Emacs even on systems that don't support
1884X Windows. You can create multiple frames, and switch between them
1885using select-frame. The selected frame is actually displayed on your
1886terminal; other frames are not displayed at all. The selected frame
1887number appears in the mode line after `Emacs', except for frame 1.
1888
1889Switching frames on ASCII terminals is therefore more or less
1890equivalent to switching between different window configurations.
1891
1892*** The new variable window-size-change-functions holds a list of
1893functions to be called if window sizes change (or if windows are
1894created or deleted). The functions are called once for each frame on
1895which changes have occurred, with the frame as the sole argument.
1896This takes place shortly before redisplay.
1897
1898*** The modification hook functions of overlays now work differently.
1899They are called both before and after each change. This makes it
1900possible for the functions to determine exactly what the change was.
1901
1902This change affects three overlay properties: the modification-hooks
1903property, a list of functions called for deletions overlapping the
1904overlay's range and for insertions inside it; the
1905insert-in-front-hooks, a list of functions called for insertions at
1906the beginning of the overlay; and the insert-behind-hooks, a list of
1907functions called for insertions at the end of the overlay.
1908
1909Each function is called both before and after each change that it
1910applies to. Before the change, it is called with four arguments:
1911 (funcall FUNCTION OVERLAY nil START END)
1912START and END are the same arguments that the before-change-functions
1913receive.
1914
1915After the change, each function is called with five arguments:
1916 (funcall FUNCTION OVERLAY t START END OLDSIZE)
1917The last arguments, START and END and OLDSIZE,
1918are the same arguments that the after-change-functions receive.
1919
1920This means the function must accept either four or five arguments.
1921
1922*** You can set defaults for text-properties with the new variable
1923`default-text-properties'. Its value is a property list; the values
1924specified there are used whenever a character (or its category) does
1925not specify a value.
1926
1927*** The `face' property of a character or an overlay can now be a list
1928of face names. Formerly it had to be just one face name.
1929
1930*** Changes in handling the `intangible' text property.
1931
1932**** If inhibit-point-motion-hooks is non-nil, then `intangible' properties
1933are ignored.
1934
1935**** Moving to just before a stretch of intangible text
1936is no longer special in any way. Point stays at that place.
1937
1938**** When you move point backwards into the midst of intangible text,
1939point moves back to the beginning of that text. (It used to move
1940forward to the end of that text, which was not very useful.)
1941
1942**** When moving across intangible text, Emacs stops wherever the
1943property value changes. So if you have two stretches of intangible
1944text, with different non-nil intangible properties, it is possible to
1945place point between them.
1946
1947** Overlays
1948
1949*** Overlay changes.
1950
1951**** The new function previous-overlay-change returns the position of
1952the previous overlay start or end, before a specified position. This
1953is the backwards-moving counterpart of next-overlay-change.
1954
1955**** overlay-get now supports category properties on an overlay
1956the same way get-text-property supports them as text properties.
1957
1958Specifically, if an overlay does not have the property PROP that you
1959ask for, but it does have a `category' property which is a symbol,
1960then that symbol's PROP property is used.
1961
1962**** If an overlay has a non-nil `evaporate' property, it will be
1963deleted if it ever becomes empty (i.e., when it spans no characters).
1964
1965**** If an overlay has a `before-string' and/or `after-string' property,
1966these strings are displayed at the overlay's endpoints.
1967
1968** Filling
1969
1970*** The new variable fill-paragraph-function provides a way for major
1971modes to override the filling of paragraphs. If this is non-nil,
1972fill-paragraph calls it as a function, passing along its sole
1973argument. If the function returns non-nil, fill-paragraph assumes it
1974has done the job and simply passes on whatever value it returned.
1975
1976The usual use of this feature is to fill comments in programming
1977language modes.
1978
1979*** Text filling and justification changes:
1980
1981**** The new variable use-hard-newlines can be used to make a
1982distinction between "hard" and "soft" newlines; the fill functions
1983will then never remove a newline that was manually inserted. Hard
1984newlines are marked with a non-nil `hard' text-property.
1985
1986**** The fill-column and left-margin can now be modified by text-properties.
1987Most lisp programs should use the new functions (current-fill-column) and
1988(current-left-margin), which return the proper values to use for the
1989current line.
1990
1991**** There are new functions for dealing with margins:
1992
1993***** Set-left-margin and set-right-margin (set the value for a region
1994and re-fill). These functions take three arguments: two to specify
1995a region, and the desired margin value.
1996
1997***** Increase-left-margin, decrease-left-margin, increase-right-margin, and
1998decrease-right-margin (change settings relative to current values, and
1999re-fill).
2000
2001***** move-to-left-margin moves point there, optionally adding
2002indentation or changing tabs to spaces in order to make that possible.
2003beginning-of-line-text also moves past the fill-prefix and any
2004indentation added to center or right-justify a line, to the beginning
2005of the text that the user actually typed.
2006
2007***** delete-to-left-margin removes any left-margin indentation, but
2008does not change the property.
2009
2010**** The paragraph-movement functions look for the paragraph-start and
2011paragraph-separate regexps at the current left margin, not at the
2012beginning of the line. This means that those regexps should NOT use ^
2013to anchor the search. However, for backwards compatibility, a ^ at
2014the beginning of the regexp will be ignored, so most packages won't break.
2015
2016**** justify-current-line is now capable of doing left, center, or
2017right justification as well as full justification.
2018
2019**** The fill functions can do any kind of justification based on the new
2020`justification' text-property and `default-justification' variable,
2021or arguments to the functions. They also have a new option which
2022defeats the normal removal of extra whitespace.
2023
2024**** The new function `current-justification' returns the kind of
2025justification used for the current line. The new function
2026`set-justification' can be used to change it, including re-justifying
2027the text of the region according to the new value.
2028
2029**** Filling and auto-fill are disabled if justification is `none'.
2030
2031**** The auto-fill-function is now called regardless of whether
2032the fill-column has been exceeded; the function can determine on its
2033own whether filling (or justification) is necessary.
2034
2035** Processes
2036
2037*** process-tty-name is a new function that returns the name of the
2038terminal that the process itself reads and writes on (not the name of
2039the pty that Emacs uses to talk with that terminal).
2040
2041*** Errors in process filters and sentinels are now normally caught
2042automatically, so that they don't abort other Lisp programs.
2043
2044Setting debug-on-error non-nil turns off this feature; then errors in
2045filters and sentinels are not caught. As a result, they can invoke
2046the debugger, under the control of debug-on-error.
2047
2048*** Emacs now preserves the match data around the execution of process
2049filters and sentinels. You can use search and match functions freely
2050in filters and sentinels without explicitly bothering to save the
2051match data.
2052
2053** Display
2054
2055*** The variable message-log-max controls how messages are logged in the
2056"*Messages*" buffer. An integer value means to keep that many lines;
2057t means to log with no limit; nil means disable message logging. Lisp
2058code that calls `message' excessively (e.g. isearch.el) should probably
2059bind this variable to nil.
2060
2061*** Display tables now have a new element, at index 261, specifying the
2062glyph to use for the separator between two side-by-side windows. By
2063default, this is the vertical bar character `|'. Probably the only
2064other useful character to store for this element is a space, to make
2065less visual separation between two side-by-side windows displaying
2066related information.
2067
2068*** The new mode-line-format spec %c displays the current column number.
2069
2070*** The new variable blink-matching-delay specifies how long to keep
2071the cursor at the matching open-paren, after you insert a close-paren.
2072This is useful mainly on systems which can wait for a fraction of a
2073second--you can then specify fractional values such as 0.5.
2074
2075*** Faster processing of buffers with long lines
2076
2077The new variable cache-long-line-scans determines whether Emacs
2078should use caches to handle long lines more quickly. This variable is
2079buffer-local, in all buffers.
2080
2081Normally, the line-motion functions work by scanning the buffer for
2082newlines. Columnar operations (like `move-to-column' and
2083`compute-motion') also work by scanning the buffer, summing character
2084widths as they go. This works well for ordinary text, but if the
2085buffer's lines are very long (say, more than 500 characters), these
2086motion functions will take longer to execute. Emacs may also take
2087longer to update the display.
2088
2089If cache-long-line-scans is non-nil, these motion functions cache
2090the results of their scans, and consult the cache to avoid rescanning
2091regions of the buffer until the text is modified. The caches are most
2092beneficial when they prevent the most searching---that is, when the
2093buffer contains long lines and large regions of characters with the
2094same, fixed screen width.
2095
2096When cache-long-line-scans is non-nil, processing short lines will
2097become slightly slower (because of the overhead of consulting the
2098cache), and the caches will use memory roughly proportional to the
2099number of newlines and characters whose screen width varies.
2100
2101The caches require no explicit maintenance; their accuracy is
2102maintained internally by the Emacs primitives. Enabling or disabling
2103the cache should not affect the behavior of any of the motion functions;
2104it should only affect their performance.
2105
2106** System Interface
2107
2108*** The function user-login-name now accepts an optional
2109argument uid. If the argument is non-nil, user-login-name
2110returns the login name for that user id.
2111
2112*** system-name, user-name, user-full-name and user-real-name are now
2113variables as well as functions. The variables hold the same values
2114that the functions would return. The new variable multiple-frames
2115is non-nil if at least two non-minibuffer frames are visible. These
2116variables may be useful in constructing the value of frame-title-format
2117or icon-title-format.
2118
2119*** Changes in time-conversion functions.
2120
2121**** The new function format-time-string takes a format string and a
2122time value. It converts the time to a string, according to the format
2123specified. You can specify what kind of conversion to use with
2124%-specifications.
2125
2126**** The new function decode-time converts a time value into a list of
2127specific items of information: the year, month, day of week, day of
2128month, hour, minute and second. (A time value is a list of two or
2129three integers.)
2130
2131**** The new function encode-time converts specific items of time
2132information--the second, minute, hour, day, month, year, and time
2133zone--into a time value.
2134\f
2135* Changes in Emacs 19.27
2136
2137There are no changes; however, here is one bug fix made in 19.26 that users
2138think should be documented here.
2139
2140** SPC and DEL in Info now handle menus consistently.
2141
2142SPC and DEL scroll through an entire subtree an Info manual. Once you
2143scroll through a node far enough to reach a menu, SPC begins moving
2144into the subnodes of the menu, starting with the first one. When you
2145reach the end of a subnode, SPC moves into the next subnode, and so
2146on.
2147
2148DEL more or less scrolls through the same text in reverse order.
2149\f
2150* User Editing Changes in Emacs 19.26
2151
2152** In the X toolkit version, if you click on a menu bar item and
2153release the button quickly outside the menu, the menu remains visible
2154until you click or type something else. If you click on the menu, you
2155select from the menu. Any other mouse click makes the menu disappear.
2156Keyboard input gets rid of the menu and then is processed normally.
2157
2158"Quickly" means within double-click-time milliseconds.
2159
2160** The C-x 5 commands to select a buffer in "another frame" now use an
2161existing iconified frame, if any, deiconifying it. They also raise
2162the frame.
2163
2164** Region highlighting on a black-and-white-only display now uses
2165underlining. Inverse-video had the problem that you couldn't see
2166the cursor.
2167
2168** You can now change the height of a window by pressing mouse-1 on
2169the mode line and dragging it up and down.
2170
2171** If you set the environment variable LC_CTYPE to iso_8859_1 or
2172iso-8859-1, Emacs automatically sets up for display and syntactic
2173handling of the ISO Latin-1 character set.
2174
2175This does not automatically load any of the packages for input of
2176these characters, because it's not yet clear what is right to do.
2177You must still explicitly load either iso-transl or iso-acc.
2178
2179** For a read-only buffer that is also modified, the mode line now displays
2180%* instead of %%.
2181
2182** M-prior (scroll-other-window-down) is a new command that works like
2183M-next (and C-M-v) but scrolls in the opposite direction.
2184
2185M-home moves to the beginning of the buffer, in the other window.
2186M-end moves to the end of the buffer, in the other window. These two
2187commands, along with M-next and M-prior, form a series of commands for
2188moving around in the other window.
2189
2190** In change logs, the mail address is now delimited with <...> instead
2191of (...).
2192
2193This makes it a little more convenient to extract the mail address for
2194use in mailing a message.
2195
2196** In Shell mode and other comint modes, C-a has now returned to
2197its ordinary meaning: move to the beginning of the line.
2198Use C-c C-a to move to the end of the prompt.
2199
2200** If you set mail-signature to t to cause automatic insertion of
2201your .signature file, you now get a -- before the signature.
2202
2203** Setting rmail-highlighted-headers to nil entirely turns off
2204highlighting in Rmail. However, if your motivation for doing this is
2205that the highlighted text doesn't look good on your display, it might
2206be better to change the appearance of the `highlight' face. Once
2207you've done that, you may find Rmail highlighting is useful.
2208
2209** In the calendar, mouse-2 is now used only for commands that apply to a date.
2210If you click it when not on a date, it gives an immediate error.
2211
2212Mouse-3 in the calendar now gives a menu of commands that do not apply
2213to a particular date.
2214
2215The D command displays diary entries from a specified diary file (not
2216your standard diary file).
2217
2218** In the gnus-uu package, the binding for gnus-uu-threaded-decode-and-view
2219is now C-c C-v C-d, not C-c C-v C-h. Thus, C-c C-v C-h is now available
2220for asking for a list of the subcommands of C-c C-v.
2221
2222** You can now specify "who you are" for various Emacs packages by
2223setting just one variable, user-mail-address. This currently applies
2224to posting news with GNUS and to making change log entries. It may
2225apply to additional Emacs features in the future.
2226\f
2227* Lisp-Level Changes in Emacs 19.26:
2228
2229** The function insert-char now takes an optional third argument
2230which, if non-nil, says the inserted characters should inherit sticky
2231text properties from the surrounding text.
2232
2233** The `diary' library has been renamed to `diary-lib'. If you refer
2234to this library in your Lisp code, you must update the references.
2235
2236** Sending text to a subprocess can read input from subprocesses if it
2237has to wait because the destination subprocess's terminal input buffer
2238is full.
2239
2240It was already possible in unusual occasions for this operation to
2241read subprocess input, but it did not happen very often. It is now
2242more likely to happen.
2243
2244** last-nonmenu-event is now bound to t around filter functions and sentinels.
2245This is to ensure that y-or-n-p and yes-or-no-p use the keyboard by default.
2246
2247** In mode lines, %+ now displays as % for unmodified read-only
2248buffers. It is now the same as %* except in the case of a modified
2249read-only buffer; in that case, %+ displays as *.
2250
2251The old meaning of %+ is now available on %&.
2252It displays * for a modified buffer and - for an unmodified buffer,
2253regardless of read-only status.
2254
2255** You can now use `underline' in the color list of a face.
2256It serves as a last resort, and says to underline the face
2257(if previous color list elements can't be used).
2258
2259** The new function x-color-values returns the list of color values
2260for a given color name (a string). The list contains three integers
2261which give the amounts of red, green and blue in the color: (R G B).
2262
2263** In run-at-time, 0 as the repeat interval means "don't repeat".
2264
2265** The variable trim-versions-without-asking has been renamed to
2266delete-old-versions.
2267
2268** The new function other-window-for-scrolling returns the choice of
2269other window for C-M-v to scroll.
2270
2271** Note that the function fceiling was mistakenly documented as fceil before.
2272\f
2273* Changes in cc-mode.el in Emacs 19.26:
2274
2275** A new syntactic symbol has been added: substatement-open. It
2276 defines the open brace of a substatement block. These used to get:
2277 ((block-open ...) (substatement . ...)).
2278
2279 Non-block substatement lines still get just ((substatement . ...))
2280
2281 Note that the custom indent function c-adaptive-block-open has been
2282 removed as obsolete.
2283
2284** You can now specify the `hanginess' of closing braces. See
2285 c-hanging-braces-alist.
2286
2287** Recognizes try and catch blocks in C++. They are given the
2288 substatement syntactic symbol.
2289
2290** should be generally more forgiving about non-GNU standard top-level
2291 construct definition styles (i.e. where the function/class/struct
2292 opening brace does not start in column zero).
2293
2294 If you hang the braces that open a top-level construct on the right
2295 edge, and you find you still need to define defun-open-prompt (Emacs
2296 19) please let me know. Note that there may still be performance
2297 issues related to non-column zero opening braces.
2298
2299** c-macro-expand is put on C-c C-e
2300
2301** New style: "Default". Resets indentation to those shipped with
2302 cc-mode.el.
2303
2304** internal defun c-indent-via-language-element has been renamed
2305 c-indent-line for compatibility with c-mode.el and awk-mode.
2306
2307** new buffer-local variable c-comment-start-regexp for (potential)
2308 flexibility in adding new modes based on cc-mode.el
2309\f
2310* Changes in Emacs 19.25
2311
2312The variable x-cross-pointer-shape (which didn't really exist) has
2313been renamed to x-sensitive-text-pointer-shape, and now does exist.
2314\f
2315* Changes in Emacs 19.24
2316
2317Here is a list of new Lisp packages introduced since 19.22.
2318
2319derived.el Define new major modes based on old ones.
2320dired-x.el Extra Dired features.
2321double.el New mode for conveniently inputting non-beyond chars.
2322easymenu.el Create menus easily.
2323ediff.el Snazzy diff interface.
2324foldout.el A kind of outline mode designed for editing programs.
2325gnus-uu.el UUdecode in GNUS buffers.
2326ielm.el Interactively evaluate Lisp.
2327 This is a replacement for Lisp Interaction Mode.
2328iso-cvt.el Conversion of beyond-ASCII characters between
2329 various different representations.
2330jka-compr.el Automatic compression/decompression.
2331mldrag.el Drag modeline to change heights of windows.
2332mail-hist.el Provides history for headers of outgoing mail.
2333rsz-mini.el Automatically resizing minibuffers.
2334s-region.el Set region by holding shift.
2335skeleton.el Templates for statement insertion.
2336soundex.el Classifying words by how they sound.
2337tempo.el Template insertion with hotspots.
2338\f
2339* User Editing Changes in 19.23.
2340
2341** Emacs 19.23 uses Ispell version 3.
2342
2343Previous Emacs 19 versions used Ispell version 4. That version had
2344improvements in storing the dictionary compactly, but these are not
2345very important nowadays. Meanwhile, in parallel to the work on Ispell
23464, many useful features were added to Ispell 3. Until a few months
2347ago, the terms on Ispell 3 did not let us use it; but they have now
2348been changed, so now we are using it. We are dropping Ispell 4.
2349
2350** Emacs 19.23 can run on MS-DOG. See the file MSDOS in the same
2351directory as this file.
2352
2353** Emacs 19.23 can work with an X toolkit. You must specify toolkit
2354operation when you configure Emacs: use the option
2355--with-x-toolkit=yes. (This option uses code developed by Lucid;
2356thanks to Frederic Pierresteguy for helping to adapt it.)
2357
2358** Emacs now has dialog boxes; yes/no and y/n questions automatically
2359use them in commands invoked with the mouse. For more information,
2360see below under "Lisp programming changes".
2361
2362** Menus now display the keyboard equivalents (if any) of the menu
2363commands in parentheses after the menu item.
2364
2365** Kill commands, used in a read-only buffer, now move point across
2366the text they would otherwise have killed. This way, you can use
2367repeated kill commands to transfer text into the kill ring.
2368
2369** There is now a global mark ring in addition to the mark ring that is local
2370to each buffer. The global mark ring stores positions in any buffer. Any
2371time the mark is set and the current buffer is different from the last time
2372the mark was set, the new mark is pushed on the global mark ring as well.
2373The new command C-x C-SPC (pop-global-mark) pops the global mark ring and
2374jumps to the last mark pushed, first switching to that buffer.
2375
2376** Query Replace is now available in the Edit menu.
2377
2378** ESC no longer simply exits a Query Replace. It now exits the Query
2379Replace and remains pending. Thus, ESC A and M-A are now equivalent
2380in Query Replace.
2381
2382To simply exit a Query Replace, type RET or Period.
2383
2384** M-mouse-2 now puts point at the end of the yanked secondary selection.
2385
2386** Mouse-1 in the mode line now simply selects the window above that
2387mode line. Mouse-2 in the mode line selects that window and expands
2388it to fill the frame it is in.
2389
2390** You can now use mouse-2 in a Dired buffer or Tar mode buffer to find
2391a file you click on, in a compilation buffer to go to a particular
2392error message, and in a *Occur* buffer to go to a particular
2393occurrence.
2394
2395(It was already possible to do likewise in Info and in completion list
2396buffers.)
2397
2398What's more, the sensitive areas of the buffer now highlight when you
2399move the mouse over them.
2400
2401** In a completion list buffer, the command RET now chooses the completion
2402that is around or next to point.
2403
2404** If you specify the foreground color for the `mode-line' face, and
2405mode-line-inverse-video is non-nil, then the default background color
2406is the usual foreground color.
2407
2408** revert-buffer now preserves markers pointing within the unchanged
2409text (if any) at the beginning and end of the file.
2410
2411** Version control checkin and checkout preserve all markers if the
2412file does not contain any of the magic version header sequences that
2413are updated automatically by RCS and SCCS. If such version headers
2414are present, checkin and checkout preserve a marker unless it comes
2415between two such sequences. (So it's a good idea to put all the
2416header sequences close together.)
2417
2418** When a large deletion shuts off auto save temporarily in a buffer,
2419you can now turn it on again by saving the buffer with C-x C-s (as was
2420possible in Emacs 18). You can also turn it on again with M-1 M-x
2421auto-save (as has been possible in Emacs 19).
2422
2423** C-x r d now runs the command delete-rectangle.
2424
2425** The new command imenu shows you a menu of interesting places in the
2426current buffer and lets you select one; then it moves point there.
2427The definition of interesting places depends on the major mode, but
2428typically this includes function definitions and such. Normally,
2429imenu displays the menu in a buffer; but if you bind it to a mouse
2430event, it shows a mouse popup menu.
2431
2432** You can make certain chosen buffers, that normally appear in a
2433separate window, appear in special frames of their own. To do this,
2434set special-display-buffer-names to a list of buffer names; any buffer
2435whose name is in that list automatically gets a special frame when it
2436is to be displayed in another window.
2437
2438A good value to try is ("*compilation*" "*grep*" "*TeX Shell*").
2439
2440More generally, you can set special-display-regexps to a list of regular
2441expressions; then each buffer whose name matches any of those regular
2442expressions gets its own frame.
2443
2444The variable special-display-frame-alist specifies the frame
2445parameters for these frames. It has a default value, so you don't
2446need to set it.
2447
2448** If you set sentence-end-double-space to nil, the fill commands
2449expect just one space at the end of a sentence. (If you want the
2450sentence commands to accept single spaces, you must modify the regexp
2451sentence-end also.)
2452
2453** You can suppress the startup echo area message by adding text like
2454this to your .emacs file:
2455
2456(setq inhibit-startup-echo-area-message "YOUR-LOGIN-NAME")
2457
2458Simply setting inhibit-startup-echo-area-message to your login name is
2459not sufficient to inhibit the message; Emacs explicitly checks whether
2460.emacs contains an expression as shown above. Your login name must
2461appear in the expression as a Lisp string constant.
2462
2463This way, you can easily inhibit the message for yourself if you wish,
2464but thoughtless copying of your .emacs file will not inhibit the
2465message for someone else.
2466
2467** Outline minor mode now uses C-c C-o as a prefix instead of just C-c.
2468
2469** In Outline mode, hide-subtree is now C-c C-d. (It was C-c C-h; but
2470that is now a conventional way to ask for help about C-c commands.)
2471
2472** There are two additional commands in Outline mode.
2473M-x hide-sublevels
2474 hides all headers except the topmost N levels.
2475M-x hide-other
2476 hides everything about the body that point is in
2477 plus the headers leading up from there to the top of the tree.
2478
2479** In iso-transl and iso-insert, the sequences for entering A-ring and
2480the AE ligature are now just A and E (plus the initial C-x 8 or Alt).
2481You used to have to enter AA or AE, after the C-x 8 prefix of course.
2482Likewise for lower case a-ring and ae.
2483
2484** iso-transl now defines convenient Alt keys as well as the C-x 8 prefix.
2485Instead of prefixing a sequence with C-x 8, you can add Alt to the
2486first character of the sequence. For example, Alt-" a is now a way
2487to enter an a-umlaut.
2488
2489** CC mode is a greatly improved mode for C and C++.
2490See the following page.
2491
2492** tcl mode is a new major mode. It provides features for
2493editing, indenting and running tcl programs.
2494
2495** Compilation minor mode lets you parse error messages in any buffer,
2496not just a normal compilation output buffer. Type M-x
2497compilation-minor-mode to enable the minor mode; then C-c C-c jumps to
2498the source location for the error at point, as in the `*compilation*'
2499buffer. If you use compilation-minor-mode in an Rlogin buffer, it
2500automatically accesses remote source files by ftp.
2501
2502** Comint and shell mode changes:
2503
2504*** Comint modes (including Shell mode, GUD modes, etc.) now bind
2505C-M-l to the command comint-show-output. This command scrolls the
2506buffer to show the last batch of output from the subprogram.
2507
2508*** Completion in Comint modes now truly operates on the string before
2509point, rather than the word that point is within.
2510
2511*** Comint mode file name completion ignores those files that end with a
2512string in the new variable comint-completion-fignore. This variable's
2513default value is nil.
2514
2515*** Shell mode uses the variable shell-completion-fignore to set
2516comint-completion-fignore. The default value is nil, but some
2517people prefer ("~" "#" "%").
2518
2519*** The function `comint-watch-for-password-prompt' can be used to
2520suppress echoing when a subprocess asks for a password. To use it,
2521do this:
2522
2523(add-hook 'comint-output-filter-functions
2524 'comint-watch-for-password-prompt)
2525
2526*** You can use M-x shell-strip-ctrl-m to strip ^M characters from
2527process output.
2528
2529*** In Shell mode, TAB now completes environment variables, if possible,
2530and expands directory references.
2531
2532*** You can use M-x comint-run to execute any program of your choice in
2533a comint mode. Some programs such as shells, rlogin, and debuggers
2534have their own specialized modes; this command is one way to use
2535comint to run programs for which no such specialized mode exits. (You
2536can also run a shell with M-x shell and run the program of your choice
2537under the shell--but that gives you the specializations of Shell
2538mode.)
2539
2540** When you run GUD (M-x gdb, M-x dbx, and so on), you can use TAB
2541to do file name completion in the minibuffer.
2542
2543The "Complete" menu includes an item for directory expansion.
2544
2545** GUD working with future versions of GDB will permit TAB for
2546GDB-style symbol completion. This will work with GDB 4.13.
2547
2548** Rmail no longer gets new mail automatically when you visit an Rmail
2549file specified by name--not even if it is your primary Rmail file. To
2550get new mail, type `g'. This feature is an advantage because you now
2551have a choice of whether to get new mail. (This change actually
2552occurred in an earlier version, but wasn't listed here then, since it
2553made the code do what the documentation already said.)
2554
2555** Rmail now highlights certain fields automatically, when you use X
2556windows. The variable rmail-highlighted-headers controls which
2557fields.
2558
2559** If you set rmail-summary-window-size to an integer, Rmail uses
2560a window that many lines high for the summary buffer.
2561
2562** rmail-input-menu is a new command that visits an Rmail file letting
2563you choose which file with a mouse menu. rmail-output-menu is
2564similar; it outputs the current message, using a mouse menu to choose
2565which Rmail file. These commands use the variables
2566rmail-secondary-file-directory and rmail-secondary-file-regexp.
2567
2568** The mh-e package has been changed substantially.
2569See the file ./MH-E-NEWS for details.
2570
2571** The calendar and diary have new features.
2572
2573The menu bar for the calendar contains most of the calendar commands,
2574arranged into logical categories.
2575
2576Mouse-2 now performs specific-date-related commands when clicked on a
2577date in the calendar window and common three-month-related commands
2578when clicked elsewhere in the calendar window.
2579
2580You can set up colored/shaded highlighting of holidays, diary entry
2581dates, and today's date, by setting calendar-holiday-marker,
2582diary-entry-marker, and calendar-today-marker to a face instead of a
2583character. Using a special face is now the default if you are using a
2584window system.
2585
2586** The appt package for displaying appointment reminders has new
2587features.
2588
2589*** The appt alarm window stays for the full duration of
2590appt-display-duration. It no longer disappears when you start typing
2591text.
2592
2593*** You can change the way the appointment window is created/deleted by
2594setting the variables appt-disp-window-function and
2595appt-delete-window-function.
2596
2597For instance, these variables can be set to functions that display
2598appointments in pop-up frames, which are lowered or iconified after
2599appt-display-duration seconds.
2600
2601** desktop.el can now save a list of buffer-local variables,
2602and saves more global ones.
2603
2604** Pascal mode has been completely rewritten. It now features
2605completing of function names, variables and type definitions around
2606current point (like M-TAB does with lisp-symbols). There's also an
2607outline mode (M-x pascal-outline) that hides the bodies of all
2608functions you're not working with.
2609
2610** Edebug has a number of changes:
2611
2612*** Edebug syntax error reporting is improved.
2613
2614*** Top-level forms and defining forms other than defun and defmacro may
2615now be debugged with Edebug.
2616
2617*** Edebug specifications may now contain body, &define, name, arg or
2618arglist, def-body, and def-form, to support definitions.
2619
2620*** edebug-all-defuns is renamed to edebug-all-defs.
2621def-edebug-form-spec is replaced by def-edebug-form whose arguments
2622are unevaluated. The old names are still available for now.
2623
2624*** Frequency counts and coverage data may be displayed for functions being
2625debugged.
2626
2627*** A global break condition is now checked at every stop point.
2628
2629*** The previous condition at a breakpoint may now be edited.
2630
2631*** A new "next" mode stops only after expression evaluation.
2632
2633*** A new command, top-level-nonstop, does not even stop for unwind-protect,
2634as top-level would.
2635\f
2636* Changes in CC mode in Emacs 19.23.
2637
2638`cc-mode' provides ANSI C, K&R C, and ARM C++ language editing. It
2639represents the merge of c++-mode.el and c-mode.el. cc-mode provides a
2640new, more flexible indentation engine so that indentation
2641customization is more intuitive. There are two steps to calculating
2642indentation: first, CC mode analyzes the line for syntactic content,
2643then based on this content it applies user defined offsets and adds
2644this offset to the indentation of some previous line.
2645
2646The syntactic analysis determines if the line describes a `statement',
2647`substatement', `class-open', `member-init-intro', etc. These are
2648described in detail with C-h v c-offsets-alist. You can change the
2649offsets interactively with C-c C-o (c-set-offsets), or
2650programmatically in your c-mode-common-hook, which is run both by
2651c-mode and c++-mode. You can also set up "styles" in the same way
2652that you could with c-mode.el. The variable c-basic-offset controls
2653the basic offset given to a level of indentation.
2654
2655If, for example, you wanted to change this style:
2656
2657int foo (int i)
2658{
2659 switch (i) {
2660 case 1:
2661 printf ("its a foo\n");
2662 break;
2663 default:
2664 printf ("don't know what it is\n");
2665 break;
2666 }
2667}
2668
2669into this:
2670
2671int foo (int i)
2672{
2673 switch (i) {
2674 case 1:
2675 printf ("its a foo\n");
2676 break;
2677 default:
2678 printf ("don't know what it is\n");
2679 break;
2680 }
2681}
2682
2683you could add the following to your .emacs file:
2684
2685(defun my-c-mode-common-hook ()
2686 (c-set-offset 'case-label 2)
2687 (c-set-offset 'statement-case-intro 2))
2688(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
2689
2690** New variables:
2691
2692c-offsets-alist contains an association list of syntactic symbols and
2693their relative offsets. Do a "C-h v c-offsets-alist" to get a list of
2694all syntactic symbols currently defined, and their meanings. You
2695should not change this variable directly; use the supplied interface
2696commands c-set-offset and c-set-style.
2697
2698c-mode-common-hook is run by both c-mode and c++-mode during their
2699common initializations. You should put any customizations that are
2700the same for both C and C++ into this hook.
2701
2702The variable c-strict-semantics-p is used mainly for debugging. When
2703non-nil, CC mode signals an error if it returns a syntactic symbol
2704that can't be found in c-offsets-alist.
2705
2706If you want CC mode to echo the syntactic analysis for a particular
2707line when you hit the TAB key, set c-echo-semantic-information-p to
2708non-nil.
2709
2710c-basic-offset controls the standard amount of offset for a level of
2711indentation. You can set a syntactic symbol's offset to + or - as a
2712short-hand for positive or negative c-basic-offset.
2713
2714c-comment-only-line-offset lets you control indentation given to lines
2715which contain only a comment, in the case of C++ line style comments,
2716or the introduction to a C block comment. Comment-only lines at
2717column zero can be anchored there independent of the indentation given
2718to other comment-only lines.
2719
2720c-block-comments-indent-p controls the style of C block comment
2721re-indentation. If you put leading stars in front of comment
2722continuation lines, you should set this variable to nil.
2723
2724c-cleanup-list is a list describing certain C and C++ constructs to be
2725"cleaned up" as they are typed, but only when the auto-newline feature
2726is turned on. In C++, make sure this variable contains at least
2727'scope-operator so that double colons will not be separated by a
2728newline.
2729
2730Colons (`:') and braces (`{` and `}') are special in C and C++. For
2731certain constructs, you may like them to hang on the right edge of the
2732code, or you may like them to start a new line of code. You can use
2733the two variables c-hanging-braces-alist and c-hanging-colons-alist
2734to control whether newlines are placed before and/or after colons and
2735braces when certain C and C++ constructs are entered. For example,
2736you can control whether the colon that introduces a C++ member
2737initialization list hangs on the right edge, starts a new line, or has
2738no newlines either before or after it.
2739
2740c-special-indent-hook is run after a line is indented by CC mode. You
2741can perform any custom indentations here.
2742
2743c-delete-function is the function that is called when a single
2744character is deleted with the c-electric-delete command (DEL).
2745
2746c-electric-pound-behavior describes what happens when you enter the
2747`#' that introduces a cpp macro.
2748
2749If c-tab-always-indent is neither t nor nil, then TAB inserts a tab
2750when within strings, comments, and cpp directives, but it reindents
2751the line unconditionally.
2752
2753c-inhibit-startup-warnings-p inhibits warnings about any old
2754version of Emacs you might be running, which could be incompatible
2755with cc-mode.
2756
2757** There are two new minor-mode features in CC mode: auto-newline and
2758hungry-delete. Auto-newline inserts newlines automatically as you
2759type certain constructs. Hungry-delete consumes all preceding
2760whitespace (spaces, tabs, and newlines) when the delete key is hit.
2761You can toggle auto-newline on and off on a per-buffer basis by
2762hitting C-c C-a. You can toggle hungry-delete on and off by hitting
2763C-c C-d. You can toggle them both on and off together with C-c C-t.
2764
2765** Slash (`/') and star (`*') are now both electric characters.
2766
2767** New commands:
2768
2769The new C-c C-o (c-set-offset) command can be used to interactively change
2770the offset for a particular syntactic symbol.
2771
2772The new command C-c : (c-scope-operator) inserts the C++ scope operator in
2773c++-mode only.
2774
2775The new command C-c C-q (c-indent-defun) indents the entire enclosing
2776top-level function or class.
2777
2778The new command C-c C-s (c-show-semantic-information) echos the current
2779syntactic analysis without re-indenting the current line.
2780
2781The new commands M-x c-forward-into-nomenclature and M-x
2782c-backward-into-nomenclature (currently otherwise unbound to a key
2783sequence), make movement easier when using the C++ variable naming
2784convention of VariableNamesWithoutUnderscoresButEachWordCapitalized.
2785
2786** Command from c-mode.el that have been renamed in cc-mode.el:
2787
2788 electric-c-brace => c-electric-brace
2789 electric-c-semi => c-electric-semi&comma
2790 electric-c-sharp-sign => c-electric-pound
2791 mark-c-function => c-mark-function
2792 electric-c-terminator => c-electric-colon
2793 indent-c-exp => c-indent-exp
2794 set-c-style => c-set-style
2795
2796** Variables from c-mode.el that are obsolete with cc-mode.el:
2797
2798 c-indent-level
2799 c-brace-imaginary-offset
2800 c-brace-offset
2801 c-argdecl-indent
2802 c-label-offset
2803 c-continued-statement-offset
2804 c-continued-brace-offset
2805\f
2806* Lisp programming changes in Emacs 19.23.
2807
2808** To pop up a dialog box, call x-popup-dialog.
2809It takes two arguments, POSITION and CONTENTS.
2810
2811POSITION specifies which frame to place the dialog box over;
2812the dialog box always goes on the center of the frame.
2813POSITION may be a mouse event, a window, a frame,
2814or t meaning use the frame that the mouse is in.
2815
2816CONTENTS specifies the contents of the dialog box.
2817It looks like a single pane of a popup menu:
2818(TITLE ITEM1 ITEM2 ...), where each ITEM has the form (STRING . VALUE).
2819The return value is VALUE from the chosen item.
2820
2821An ITEM may also be just a string--that makes a nonselectable item.
2822An ITEM may also be nil--that means to put all preceding items
2823on the left of the dialog box and all following items on the right.
2824(By default, approximately half appear on each side.)
2825
2826If your Emacs is not using an X toolkit, then it cannot display a
2827real dialog box; so instead it displays a pop-up menu in the center
2828of the frame.
2829
2830** y-or-n-p, yes-or-no-p and map-y-or-n-p now use menus or dialog boxes
2831to ask their question(s) if the command that is running was reached by
2832a mouse event.
2833
2834If you want to control which way these functions work, bind the
2835variable last-nonmenu-event around the call. These functions use the
2836keyboard if that variable holds a keyboard event (actually, any
2837non-list); they use the mouse if that variable holds a mouse event
2838(actually, any list).
2839
2840** The mouse-face property is now implemented, both in overlays and as
2841a text property. It specifies a face to use when the mouse is in the
2842range of text for which the property is specified.
2843
2844** When text has a non-nil `intangible' property, you cannot move point
2845within it or right before it. If you try, point actually moves to the
2846end of the intangible text. Note that this means that backward-char
2847is a no-op when there is an intangible character to the left of point.
2848
2849** minibuffer-exit-hook is a new normal hook that is run when you
2850exit the minibuffer.
2851
2852** The variable x-cross-pointer-shape specifies the cursor shape to use
2853when the mouse is over text that has a mouse-face property.
2854
2855** The new variable interpreter-mode-alist specifies major modes to use
2856for shell scripts that specify a command interpreter. Its elements
2857look like (INTERPRETER . MODE); for example, ("perl" . perl-mode) is
2858one element present by default. This feature applies only when the
2859file name doesn't indicate which mode to use.
2860
2861** If you use a minibuffer-only frame, set the variable
2862minibuffer-auto-raise to t, and entering the minibuffer will then
2863raise the minibuffer frame.
2864
2865** If pop-up-frames is t, display-buffer now looks for an existing
2866window in any visible frame, showing the specified buffer, and uses
2867such a window in preference to making a new frame.
2868
2869** In the functions next-window, previous-window, next-frame,
2870previous-frame, get-buffer-window, get-lru-window, get-largest-window
2871and delete-windows-on, if you specify `visible' for the last argument,
2872it means to consider all visible frames.
2873
2874** Mouse events now give the X and Y coordinates in pixels, rather than
2875in characters. You can convert these values to characters by dividing by
2876the values of (frame-char-width) and (frame-char-height).
2877
2878** The new functions mouse-pixel-position and set-mouse-pixel-position
2879read and set the mouse position in units of pixels. The existing
2880functions mouse-position and set-mouse-position continue to work with
2881units of characters.
2882
2883** The new function compute-motion is useful for computing the width
2884of certain text when it is displayed.
2885
2886** The function vertical-motion now takes an option second argument WINDOW
2887which says which window to use for the display calculations.
2888
2889vertical-motion always operates on the current buffer.
2890It is ok to specify a window displaying some other buffer.
2891Then vertical-motion uses the width, hscroll and display-table of
2892the specified window, but still scans the current buffer.
2893
2894** An error no longer sets last-command to t; the value of last-command
2895does reflect the previous command (the one that got an error).
2896
2897If you do not want a particular command to be recognized as the
2898previous command in the case where it got an error, you must code that
2899command to prevent this. Set this-command to t at the beginning of
2900the command, and set this-command back to its proper value at the end,
2901like this:
2902
2903 (defun foo (args...)
2904 (interactive ...)
2905 (setq this-command t)
2906 ...do the work...
2907 (setq this-command 'foo))
2908
2909or like this:
2910
2911 (defun foo (args...)
2912 (interactive ...)
2913 (let ((old-this-command this-command))
2914 (setq this-command t)
2915 ...do the work...
2916 (setq this-command old-this-command)))
2917
2918The undo and yank commands do this.
2919
2920** If you specify an explicit title for a new frame when you create it,
2921the title is used as the resource name when looking up X resources to
2922control the shape of that frame. If you don't specify the frame title,
2923the value of x-resource-name is used, as before.
2924
2925** The frame parameter user-position, if non-nil, says that the user
2926has specified the frame position. Emacs reports this to the window
2927manager, to tell it not to override the position that the user
2928specified.
2929
2930** Major modes can now set change-major-mode-hook to arrange for state
2931to be cleaned up when the user switches to a new major mode. The function
2932kill-all-local-variables runs this hook. For best results, make the hook a
2933buffer-local variable so that it will disappear after doing its job and will
2934not interfere with the subsequent major mode.
2935
2936** The new variable overriding-local-map, if non-nil, specifies a keymap
2937that overrides the current local map, all minor mode keymaps, and all
2938text property keymaps. Incremental search uses this feature to override
2939all other keymaps temporarily.
2940
2941** A key definition in a menu keymap can now have additional structure:
2942in addition to (ITEMNAME [HELPSTRING] . COMMAND) which was allowed
2943before, the form (ITEMNAME [HELPSTRING] (...) . COMMAND) is
2944allowed. (HELPSTRING is optional, and is not currently used.)
2945
2946Here (...) represents a sublist containing information about keyboard
2947key sequences that run the same command COMMAND. Displaying the menu
2948automatically creates and updates the sublist when appropriate; you
2949need never set these up yourself.
2950
2951lookup-key, key-binding, and similar functions return just COMMAND,
2952not the whole binding.
2953
2954To precompute this information for a given keymap, you can do
2955 (x-popup-menu nil KEYMAP).
2956
2957** When you specify coordinates for x-popup-menu as a list ((XOFFSET
2958YOFFSET) WINDOW), the coordinates are now measured in pixels.
2959
2960** where-is-internal now takes just four arguments:
2961DEFINITION KEYMAP FIRSTONLY NOINDIRECT.
2962The single argument KEYMAP replaces two arguments KEYMAP and KEYMAP1.
2963
2964If KEYMAP is non-nil, where-is-internal searches only KEYMAP and the
2965global keymap.
2966
2967If KEYMAP is nil, where-is-internal searches all the currently active
2968keymaps, but finds the active keymaps as if overriding-local-map were
2969nil.
2970
2971If you pass a list of the form (keymap) as KEYMAP, where-is-internal
2972searches only the global map. (This is not a special case--it follows
2973from the specifications above.)
2974
2975If you pass the value of overriding-local-map as KEYMAP, where-is-internal
2976searches in exactly the same was as command execution does.
2977
2978** Use the macro define-derived-mode to define a new major mode that
2979inherits the definition of another major mode. Here's how to define a
2980command named hypertext-mode that inherits from the command text-mode:
2981
2982 (define-derived-mode hypertext-mode text-mode "Hypertext"
2983 "Major mode for hypertext.\n\n\\{hypertext-mode-map}"
2984 (setq case-fold-search nil))
2985
2986 (define-key hypertext-mode-map [down-mouse-3] 'do-hyper-link)
2987
2988The new mode has its own keymap, which inherits from that of the
2989original mode. It also has its own syntax and abbrev tables, which
2990are initialized by copying those of the original mode. It also has
2991its own mode hook. All are given names made by appending a suffix
2992to the name of the new mode.
2993
2994** A syntax table can now inherit the data for some characters from
2995standard-syntax-table, while specifying other characters itself.
2996Syntax code 13 means "inherit this character from the standard syntax
2997table." In modify-syntax-entry, the character `@' represents this code.
2998
2999The function `make-syntax-table' now creates a syntax table which
3000inherits all letters and control characters (0 to 31 and 128 to 255)
3001from the standard syntax table, while copying the other characters
3002from the standard syntax table. Most syntax tables in Emacs are set
3003up this way.
3004
3005This sort of inheritance is useful for people who set up character
3006sets with additional alphabetic characters in the range 128 to 255.
3007Just changing the standard syntax for these characters affects all
3008major modes.
3009
3010** The new function transpose-regions swaps two regions of the buffer.
3011It preserves the markers in those two regions, so that they stay with
3012the surrounding text as it is swapped.
3013
3014** revert-buffer now runs before-revert-hook at the beginning and
3015after-revert-hook at the end. These can be used by minor modes
3016that need to clean up state variables.
3017
3018** The new function get-char-property is like get-text-property, but
3019checks for overlays with properties as well as for text properties.
3020It checks for overlays first, in order of descending priority, and
3021text properties last.
3022
3023get-char-property allows windows as the OBJECT argument, as well
3024as buffers and strings. If you specify a window, then only overlays
3025active on that window are considered.
3026
3027** Overlays can have the `invisible' property.
3028
3029** The function insert-file-contents now takes an optional fifth
3030argument called REPLACE. If this is t, it means to replace the
3031contents of the buffer (actually, just the accessible portion)
3032with the contents of the file.
3033
3034This is better than simply deleting and inserting the whole thing
3035because (1) it preserves some marker positions and (2) it puts less
3036data in the undo list.
3037
3038** The variable inhibit-first-line-modes-regexps specifies classes of
3039file names for which -*- on the first line should not be looked for.
3040
3041** The variables before-change-functions and after-change-functions
3042hold lists of functions to call before and after a change in the
3043buffer's text. They work much like before-change-function and
3044after-change-function, except that they hold a list of functions
3045instead of just one.
3046
3047These variables will eventually make before-change-function and
3048after-change-function obsolete.
3049
3050** The variable kill-buffer-query-functions holds a list of functions
3051to be called with no arguments when a buffer is about to be killed.
3052(That buffer is the current buffer when the function is called.)
3053If any of the functions returns nil, the buffer is not killed
3054(and the remaining functions in the list are not called).
3055
3056** The variable kill-emacs-query-functions holds a list of functions
3057to be called with no arguments when you ask to exit Emacs.
3058If any of the functions returns nil, the exit is canceled
3059(and the remaining functions in the list are not called).
3060
3061** The argument for buffer-disable-undo is now optional,
3062like the argument for buffer-enable-undo.
3063
3064** The new variable system-configuration holds the canonical three-part
3065GNU configuration name for which Emacs was built.
3066
3067** The function system-name now tries harder to return a fully qualified
3068domain name.
3069
3070** The variable emacs-major-version holds the major version number
3071of Emacs. (Currently 19.)
3072
3073** The variable emacs-minor-version holds the minor version number
3074of Emacs. (Currently 23.)
3075
3076** The default value of comint-input-autoexpand is now nil.
3077However, Shell mode sets it from the value of shell-input-autoexpand,
3078whose default value is `history'.
3079
3080** The new function set-process-window-size specifies the terminal window
3081size for a subprocess. On some systems it sends the subprocess a signal
3082to let it know that the size has changed.
3083
3084** %P is a new way to display a percentage in the mode line. It
3085displays the percentage of the buffer text that is above the *bottom*
3086of the window (which includes the text visible, in the window as well
3087as the text above the top). It displays `Top' as well as the
3088percentage if the top of the buffer is visible on screen.
3089
3090** %+ in the mode line specs displays `*' if the buffer is modified,
3091and otherwise `-'. It never displays `%', as `%*' would do; whether the
3092buffer is read-only has no effect on %+.
3093
3094** The new functions ffloor, fceiling, fround and ftruncate take a
3095floating point argument and return a floating point result whose value
3096is a nearby integer. ffloor returns the nearest integer below; fceiling,
3097the nearest integer above; ftruncate, the nearest integer in the
3098direction towards zero; fround, the nearest integer.
3099
3100** Setting `print-escape-newlines' to a non-nil value now also makes
3101formfeeds print as ``\f''.
3102
3103** auto-mode-alist now has a new feature. If an element has the form
3104(REGEXP FUNCTION t), and REGEXP matches the file name, then after calling
3105FUNCTION, Emacs deletes the part of the file name that matched REGEXP
3106and then searches auto-mode-alist again for a new match.
3107
3108This is useful for uncompression packages. An entry of this sort for
3109.gz can uncompress the file and then put the uncompressed file in the
3110proper mode according to the name sans .gz.
3111
3112** The new function emacs-pid returns the process ID number of Emacs.
3113
3114** user-login-name now consistently checks the LOGNAME environment
3115variable before USER. user-original-login-name is obsolete, since it
3116provides the same functionality. To ignore the environment variables,
3117use user-real-login-name.
3118
3119** There is a more general way of handling the system-specific X
3120keysyms. Set the variable system-key-alist to an alist containing
3121elements of the form (CODE . SYMBOL), where CODE is the numeric keysym
3122code minus the "vendor specific" bit, and symbol is the name for the
3123function key.
3124
3125** You can use the variable command-line-functions to set up functions
3126to process unrecognized command line arguments. The variable's value
3127should be a list of functions of no arguments. The functions are
3128called successively until one of them returns non-nil.
3129
3130Each function should access the free variables argi (the current
3131argument) and command-line-args-left (the remaining arguments). The
3132function should return non-nil only if it recognizes and processes the
3133argument in argi. If it does so, it may consume following arguments
3134as well by removing them from command-line-args-left.
3135
3136** There's a new way for a magic file name handler to run a primitive
3137and inhibit handling of the file name. Here is how to do it:
3138
3139(let ((inhibit-file-name-handlers
3140 (cons 'ange-ftp-file-handler
3141 (and (eq inhibit-file-name-operation operation)
3142 inhibit-file-name-handlers)))
3143 (inhibit-file-name-operation operation))
3144 (apply this-operation args))
3145
3146The function find-file-name-handler now takes two arguments. The
3147second argument is OPERATION, the operation for which the handler is
3148being sought.
3149
3150People have suggested that the second argument should be optional, for
3151backward compatibility. It would be nice if that were possible, but
3152it is not. There is simply no way for find-file-name-handler to do
3153the right thing without receiving the proper value for its second
3154argument.
3155
3156** The variable completion-regexp-list affects the completion
3157primitives try-completion and all-completions. They consider
3158only the possible completions that match each regexp in the list.
3159
3160** Case conversion in the function replace-match has been changed.
3161
3162The old behavior was this: if any word in the old text was
3163capitalized, replace-match capitalized each word of the replacement
3164text.
3165
3166The new behavior is this: if the first word in the old text is capitalized,
3167replace-match capitalizes the first word of the replacement text.
3168
3169** You can now specify a case table with CANON non-nil and EQV nil.
3170Then the EQV part of the case table is deduced from CANON.
3171
3172** The new function minibuffer-prompt takes no arguments and returns
3173the current minibuffer prompt string.
3174
3175The new function minibuffer-prompt-width takes no arguments and
3176returns the display width of the minibuffer prompt string.
3177
3178** The new function frame-first-window returns the window at the
3179upper left corner of a given frame.
3180
3181** wholenump is a new alias for natnump.
3182
3183** The variable installation-directory, if non-@code{nil}, names a
3184directory within which to look for the `lib-src' and `etc'
3185subdirectories. This is non-nil when Emacs can't find those
3186directories in their standard installed locations, but can find them
3187near where the Emacs executable was found.
3188
3189** invocation-name and invocation-directory are now variables as well
3190as functions. The variable values are the same values that the
3191functions return: the Emacs program name sans directories, and the
3192directory it was found in. (invocation-directory may be nil, if Emacs
3193can't determine which directory it should be.)
3194
3195** Installation change regarding version number counting.
3196
3197The version number of an Emacs executable contains three numbers.
3198The first two describe the Emacs release and the third increments
3199each time you build Emacs.
3200
3201Now the file version.el contains only the first two version numbers.
3202The third component is now determined on the basis of the names of the
3203existing executable files. This means that version.el is not altered
3204by building Emacs.
3205\f
3206* Changes in 19.22.
3207
3208** The mouse click M-mouse-2 now inserts the current secondary
3209selection (from Emacs or any other X client) where you click.
3210It does not move point.
3211This command is called mouse-yank-secondary.
3212
3213mouse-kill-secondary no longer has a key binding by default.
3214Clicking M-mouse-3 (mouse-secondary-save-then-kill) twice
3215may be a convenient enough way of killing the secondary selection.
3216Or perhaps there should be a keyboard binding for killing the
3217secondary selection. Any suggestions?
3218
3219** New packages:
3220
3221*** `icomplete' provides character-by-character information
3222about what you could complete if you type TAB.
3223
3224*** `avoid' moves the mouse away from point so that it doesn't hide
3225your typing.
3226
3227*** `shadowfile' helps you update files that are supposed to be stored
3228identically in different places (perhaps on different machines).
3229
3230** C-h p now knows about four additional keywords: data, faces, mouse,
3231and matching.
3232
3233** The key for starting an inferior Lisp process, in Lisp mode,
3234is now C-c C-z instead of C-c C-l.
3235
3236** When the VC commands ask whether to save the buffer, if you say no,
3237they signal an error. This is so that you won't operate on the wrong
3238data.
3239
3240** ISO Accents mode now supports `"s' as a way of typing German sharp s.
3241
3242** By default, comint buffers (including Shell mode and debuggers)
3243no longer try to scroll to keep the cursor on the bottom line.
3244This feature was added in 19.21 but did not work smoothly enough.
3245
3246** Emacs now handles the window manager "delete window" operation.
3247
3248** Display of buffers with text properties is much faster now.
3249
3250** The feature previously announced whereby `insert' does not inherit
3251text properties from surrounding text was not fully implemented
3252before; but now it is. use `insert-and-inherit' if you wish to
3253inherit sticky properties from the surrounding text.
3254
3255** The functions next-property-change, previous-property-change,
3256next-single-property-change, and previous-single-property-change
3257now take one additional optional argument LIMIT that is a position at
3258which to stop scanning. If scan ends without finding the property
3259change sought, these functions return the specified limit.
3260
3261The value returned by previous-single-property-change and
3262previous-property-change, when they do find a change, is now one
3263greater than what it used to be. It is the position between the two
3264characters whose properties differ, which is one greater than the
3265position of the first character found (while scanning back) with
3266different properties.
3267\f
3268* User editing changes in version 19.21.
3269
3270** ISO Accents mode supports four additional characters:
3271A-with-ring (entered as /A), AE ligature (entered as /E),
3272and their lower-case equivalents.
3273\f
3274* User editing changes in version 19.20.
3275(See following page for Lisp programming changes.)
3276
3277Note that some of these changes were made subsequent to the Emacs 19.20
3278editions of the Emacs manual and Emacs Lisp manual; therefore, if you
3279have those editions, do read this page.
3280
3281** Dragging with mouse button 1 now puts the selected region
3282in the kill ring so you can paste it into other X applications.
3283
3284** Double and triple clicks with button 1 now behave as in xterm,
3285selecting the word or line surrounding where you click. If you drag
3286after the last click, you can select a range of words or lines.
3287
3288** You can use button 3 to extend a mouse-selected region, as in xterm.
3289This works for regions selected either by dragging Mouse-1 or by
3290multiple-clicking Mouse-1. Clicking Mouse-3 moves the end of the
3291region that is (initially) nearer to where you click.
3292
3293If the selection was first made by multiple-clicking Mouse-1, and thus
3294consists of entire words or lines, Mouse-3 preserves that state.
3295
3296As before, clicking Mouse-3 again in the same place kills the region
3297thus selected.
3298
3299** The secondary selection commands, M-Mouse-1 and M-Mouse-3, have been
3300likewise modified.
3301
3302** You can now search for strings and regexps using the Edit menu bar menu.
3303
3304** You can now access bookmarks using the Bookmark submenu in the File
3305menu in the menu bar.
3306
3307** ISO Accents mode, a buffer-local minor mode, provides a convenient
3308way to type certain non-ASCII characters. It makes the characters `,
3309', ", ^, ~ and / serve as modifiers for the following letter. ` and '
3310add accents, " adds an umlaut or dieresis, ^ adds a circumflex, ~
3311adds a tilde, and / adds a slash to the following letter.
3312
3313If the following character is not a letter, or cannot be modified as
3314requested, then both characters stand for themselves. If you
3315duplicate the modifier accent character, that enters the corresponding
3316ISO non-spacing accent character (thus, '' enters the ISO acute-accent
3317character). To enter a modifier character itself, type it followed by
3318a space.
3319
3320This feature can be used whenever a key sequence is expected: for
3321ordinary insertion, for searching, and for certain command arguments.
3322
3323A few special combinations:
3324
3325~c => c with cedilla
3326~d => d with stroke
3327~< => left guillemot
3328~> => right guillemot
3329
3330** iso-transl.el is a new library that replaces iso-insert.el.
3331It defines C-x 8 as an insertion prefix for the ISO characters
3332between 128 and 255, much like iso-insert, except that iso-transl
3333works even in searches and help commands--wherever a key sequence
3334is expected.
3335
3336To define case-conversion for these characters for ISO 8859/1,
3337load the library iso-syntax. (This is not new.)
3338
3339** M-TAB in Text mode now runs the command ispell-complete-word
3340which performs completion using the spelling dictionary.
3341
3342The spelling correction submenu now includes this command
3343and another command which completes a word fragment (that is,
3344it doesn't assume that the text to be completed starts at the
3345beginning of a word.
3346
3347** In incremental search, you can use M-y to yank the most recent kill
3348into the search string.
3349
3350** The new function ispell-message checks the spelling of a message
3351you are about to send or post. It ignores text cited from other
3352messages.
3353
3354To automatically check all your outgoing messages, include the
3355following line in your .emacs file:
3356 (setq news-inews-hook (setq mail-send-hook 'ispell-message))
3357
3358** There is now a separate minibuffer history list for the names of
3359extended commands. This history list is used by M-x when reading
3360the command name. The motivation for this is to prevent command
3361names from appearing in the history used for other minibuffer
3362arguments.
3363
3364Note that the history list for entire commands that use the minibuffer
3365is a separate feature. That history list records a command with all
3366its arguments, and you must use C-x ESC ESC to access it.
3367
3368** You can use the new command C-x v ~ VERSION RET to examine a
3369specified version of a file that is maintained with version control.
3370
3371** In Indented Text mode, only blank lines now separate paragraphs.
3372Indented lines continue the paragraph that is in progress. This makes
3373the user option variable adaptive-fill-mode have its intended effect.
3374
3375** Local variable specifications in files for variables whose names end
3376in `-hook' and `-function' are now controlled by the variable
3377`enable-local-eval', just like the `eval' variable.
3378
3379** C-x r j (jump-to-register) when restoring a frame configuration now
3380makes all unwanted frames (existing frames not mentioned in the
3381configuration) invisible.
3382
3383If you want to delete these unwanted frames, use a prefix argument for
3384C-x r j.
3385
3386** You can customize the calendar to display weeks beginning on
3387Monday: set the variable `calendar-week-start-day' to 1.
3388
3389** Rmail changes.
3390
3391If you save messages to a file in Unix format while viewing a message
3392with its whole header, this now copies to the file the entire header
3393of each message copied.
3394
3395** Comint mode changes.
3396
3397C-c C-e shows as much output as possible in the window.
3398C-c RET copies an old input (the one at point)
3399and places the copy after the latest prompt.
3400C-c C-p and C-c C-n move through the buffer, stopping at places
3401where the subshell prompted for input.
3402C-c C-h lists the input history in a `*Help*' buffer.
3403
3404There are new menu bar items for completion/input/output/signal commands.
3405
3406Input behaviour is configurable. Variables control whether some windows
3407showing the buffer scroll to the bottom before insertion. These are
3408`comint-scroll-to-bottom-on-input' and `before-change-function'. By default,
3409insertion causes the selected window to scroll to the bottom before insertion
3410occurs.
3411
3412Subprocess output now keeps point at the end of the buffer in each
3413window individually if point was already at the end of the buffer in
3414that window.
3415
3416If `comint-scroll-show-maximum-output' is non-nil (which is the
3417default), then scrolling due to arrival of output tries to place the
3418last line of text at the bottom line of the window, so as to show as
3419much useful text as possible. (This mimics the scrolling behavior of
3420many terminals.)
3421
3422By setting `comint-scroll-to-bottom-on-output', you can opt for having
3423point jump to the end of the buffer whenever output arrives--no matter
3424where in the buffer point was before. If the value is `this', point
3425jumps in the selected window. If the value is `all', point jumps in
3426each window that shows the comint buffer. If the value is `other',
3427point jumps in all nonselected windows that show the current buffer.
3428The default value is nil, which means point does not jump to the end.
3429
3430Input history insertion is configurable. A variable controls whether only the
3431first instance of successive identical inputs is stored in the input history.
3432This is `comint-input-ignoredups'.
3433
3434Completion (bound to TAB) is now more general. Depending on context,
3435completion now operates on the input history, on command names, or (as
3436before) on filenames.
3437
3438Filename completion is configurable. Variables control whether
3439file/directory suffix characters are added (`comint-completion-addsuffix'),
3440whether shortest completion is acceptable when no further unambiguous
3441completion is possible (`comint-completion-recexact'), and the timing of
3442completion candidate listing (`comint-completion-autolist').
3443
3444Comint mode now provides history expansion. Insert input using `!'
3445and `^', in the same syntax that typical shells use; then type TAB.
3446This searches the comint input history for a matching element,
3447performs substitution if necessary, and places the result in the
3448comint buffer in place of the original input.
3449
3450History references in the input may be expanded before insertion into
3451the input ring, or on input to the interpreter (and therefore
3452visibly). The variable `comint-input-autoexpand' specifies which.
3453
3454You can make the SPC key perform history expansion by binding
3455SPC to the command `comint-magic-space'.
3456
3457The command `comint-dynamic-complete-variable' does variable name
3458completion using the environment variables as set within Emacs. The
3459variables controlling filename completion apply to variable name
3460completion too. This command is normally available through the menu
3461bar.
3462
3463** Shell mode
3464
3465Paragraph motion and marking commands (default bindings M-{, M-}, M-h) operate
3466on output groups (i.e., shell prompt plus associated shell output).
3467
3468TAB now completes commands, as well as file names and expand history.
3469Commands are searched for along the path that Emacs has on startup.
3470
3471C-c C-f now moves forward a command (`shell-forward-command') and
3472C-c C-b now moves backward a command (`shell-backward-command').
3473
3474Command completion is configurable. The variables controlling
3475filename completion in comint mode apply, together with a variable
3476controlling whether to restrict possible completions to only files
3477that are executable (`shell-command-execonly').
3478
3479The input history is initialised from the file name given in the
3480variable `shell-input-ring-file-name'--normally `.history' in your
3481home directory.
3482
3483Directory tracking is more robust. It can cope with command sequences
3484and forked commands, and can detect the failure of directory changing
3485commands in most circumstances. It's still not infallible, of course.
3486
3487You can now configure the behaviour of `pushd'. Variables control
3488whether `pushd' behaves like `cd' if no argument is given
3489(`shell-pushd-tohome'), pop rather than rotate with a numeric argument
3490(`shell-pushd-dextract'), and only add directories to the directory
3491stack if they are not already on it (`shell-pushd-dunique'). The
3492configuration you choose should match the underlying shell, of course.
3493\f
3494* Emacs Lisp programming changes in Emacs 19.20.
3495
3496** A new function `remove-hook' is now used to remove a hook that you might
3497have added with `add-hook'.
3498
3499** There is now a Lisp pretty-printer in the library `pp'.
3500
3501** The partial Common Lisp support has been entirely reimplemented.
3502
3503** When you insert text using `insert', `insert-before-markers' or
3504`insert-buffer-substring', text properties are no longer inherited
3505from the surrounding text.
3506
3507When you want to inherit text properties, use the new functions
3508`insert-and-inherit' or `insert-before-markers-and-inherit'.
3509
3510The self-inserting character command does do inheritance.
3511
3512** Frame creation hooks.
3513
3514The function make-frame now runs the normal hooks
3515before-make-frame-hook and after-make-frame-hook.
3516
3517** You can now use function-key-map to make a key an alias for other
3518key sequences that can vary depending on circumstances. To do this,
3519give the key a definition in function-key-map which is a function
3520rather than a specific expansion key sequence.
3521
3522If the function reads input itself, it can have the effect of altering
3523the event that follows. For example, here's how to define C-c h to
3524turn the character that follows into a hyper character:
3525
3526(define-key function-key-map "\C-ch" 'hyperify)
3527
3528(defun hyperify (prompt)
3529 (let ((e (read-event)))
3530 (vector (if (numberp e)
3531 (logior (lsh 1 20) e)
3532 (if (memq 'hyper (event-modifiers e))
3533 e
3534 (add-event-modifier "H-" e))))))
3535
3536(defun add-event-modifier (string e)
3537 (let ((symbol (if (symbolp e) e (car e))))
3538 (setq symbol (intern (concat string (symbol-name symbol))))
3539 (if (symbolp e)
3540 symbol
3541 (cons symbol (cdr e)))))
3542
3543The character translation function gets one argument, which is the
3544prompt that was specified in read-key-sequence--or nil if the key
3545sequence is being read by the editor command loop. In most cases
3546you can just ignore the prompt value.
3547
3548** Changes for reading and writing text properties.
3549
3550New low-level Lisp features make it possible to write Lisp programs to
3551save text properties in files, and read text properties from files.
3552You can program any file format you like.
3553
3554The variable `write-region-annotation-functions' should contain a list
3555of functions to be run by `write-region' to encode text properties in
3556some fashion as annotations to the text that is written.
3557
3558Each function in the list is called with two arguments: the start and
3559end of the region to be written. These functions should not alter the
3560contents of the buffer. Instead, they should return lists indicating
3561annotations to write in the file in addition to the text in the
3562buffer.
3563
3564Each function should return a list of elements of the form (POSITION
3565. STRING), where POSITION is an integer specifying the relative
3566position in the text to be written, and STRING is the annotation to
3567add there.
3568
3569Each list returned by one of these functions must be already sorted in
3570increasing order by POSITION. If there is more than one function,
3571`write-region' merges the lists destructively into one sorted list.
3572
3573When `write-region' actually writes the text from the buffer to the
3574file, it intermixes the specified annotations at the corresponding
3575positions. All this takes place without modifying the buffer.
3576
3577The variable `after-insert-file-functions' should contain a list of
3578functions to be run each time a file's contents have been inserted into
3579a buffer. Each function receives one argument, the length of the
3580inserted text; point indicates the start of that text. The function
3581should make whatever changes it wants to make, then return the updated
3582length of the inserted text, as it stands after those changes. The
3583value returned by one function is used as the argument to the next.
3584These functions should always return with point at the beginning of
3585the inserted text.
3586
3587The intended use of `after-insert-file-functions' is for converting
3588some sort of textual annotations into actual text properties. But many
3589other uses may be possible.
3590
3591We now invite users to begin implementing Lisp programs to store and
3592retrieve text properties in files, using these new primitive features,
3593and thus to experiment with various data formats and find good ones.
3594
3595We suggest not trying to handle arbitrary Lisp objects as property
3596names or property values--because a program that general is probably
3597difficult to write, and slow. Instead, choose a set of possible data
3598types that are reasonably flexible, and not too hard to encode.
3599
3600** Comint completion.
3601
3602Currently comint-dynamic-complete-command (and associated variable
3603comint-after-partial-pathname-command) are set by default to complete a
3604filename. Other comint-mode users should have their own functions to achieve
3605this. For example, gud-mode could complete debugger commands. A completion
3606function is provided solely for this reason (comint-dynamic-simple-complete).
3607
3608Other comint-mode users should bind comint-dynamic-complete (shell-mode does
3609already).
3610
3611** Comint history reference expansion
3612
3613Currently comint-input-autoexpand is 'history, which means only expand
3614history on insertion to comint-input-ring. For non-shell modes, this is
3615a strange default, since non-shells will not understand history references.
3616Perhaps it would be better for the variable to be 'input, which means expand
3617on RET.
3618
3619The value 'history might possibly be wrong even for shells, since the
3620expansion will be done both by comint and the underlying shell (except sh, of
3621course). It would be better for expansion to be done by one or the other,
3622not both since they may (ahem) disagree. Since it is silly to put a literal
3623history reference into comint-input-ring, perhaps it would be better for the
3624variable to be 'input too.
3625
3626The reason the variable is not 'input by default is that I was attempting to
3627adhere to The Principle of Least Astonishment. I didn't want to shock users
3628by having their input change in front of their eyes.
3629
3630** Argument delimiters and Comint mode.
3631
3632Currently comint-delimiter-argument-list is '(), which means no strings are
3633to be treated as delimiters and arguments. In shell-mode, this variable is
3634set to shell-delimiter-argument-list, '("|" "&" "<" ">" "(" ")" ";"). Other
3635comint-mode users should set this variable too. For example, a lisp-type
3636mode might want to set this to '("." "(" ")") or some such.
3637
3638** Comint output hook.
3639
3640There is now a hook, comint-output-filter-hook, that is run-hooks'ed by the
3641output filter, comint-output-filter. This is useful for scrolling (see
3642below), but also things like processing output for specific text, output
3643highlighting, etc.
3644
3645So that such output processing may be done efficiently, there is a new
3646variable, comint-last-output-start, that records the position of the start of
3647the lastest output inserted into the buffer (effectively the previous value
3648of process-mark). Output processing functions should process the text
3649between comint-last-output-start (or perhaps the beginning of the line that
3650the position lies on) and process-mark.
3651
3652** Comint scrolling.
3653
3654There is now automatic scrolling of process windows.
3655
3656Currently comint-scroll-show-maximum-output is t, which means when scrolling
3657output put process-mark at the bottom of the window. There is a good case
3658for it to be t, since the user is likely to want to see as much output as
3659possible. But, then again, there is a comint-show-maximum-output command.
3660
3661** Comint history retrieval.
3662
3663The input following point is not deleted when moving around the input history
3664(with M-p etc.). Emacs maintainers may not like this. However, I feel this
3665is a useful feature. The simple remedy is to put end-of-line in before
3666delete-region in comint-previous-matching-input.
3667
3668The input history retrieval commands still wrap-around the input ring, unlike
3669Emacs command history.
3670\f
3671* Changes in version 19.19.
3672
3673** The new package bookmark.el records named bookmarks: positions that
3674you can jump to. Bookmarks are saved automatically between Emacs
3675sessions.
3676
3677** Another simpler package saveplace.el records your position in each
3678file when you kill its buffer (or kill Emacs), and jumps to the same
3679position when you visit the file again (even in another Emacs
3680session). Use `toggle-save-place' to turn on place-saving in a given file;
3681use (setq-default save-place t) to turn it on for all files.
3682
3683** In Outline mode, you can now customize how to compute the level of a
3684heading line. Set `outline-level' to a function of no arguments which
3685returns the level, assuming point is at the beginning of a heading
3686line.
3687
3688** You can now specify the prefix key to use for Outline minor mode.
3689(The default is C-c.) Set the variable outline-minor-mode-prefix to
3690the key sequence you want to use (as a string or vector).
3691
3692** In Bibtex mode, C-c e has been changed to C-c C-b. This is because
3693C-c followed by a letter is reserved for users.
3694
3695** The `mod' function is no longer an alias for `%', but is a separate function
3696that yields a result with the same sign as the divisor. `floor' now takes an
3697optional second argument, which divides the first argument before the floor is
3698taken.
3699
3700** `%' no longer allows floating point arguments, since the results were often
3701inconsistent with integer `%'.
3702\f
3703* Changes in version 19.18.
3704
3705** Typing C-z in an iconified Emacs frame now deiconifies it.
3706
3707** hilit19 is a new library for automatic highlighting of parts of the
3708text in the buffer, based on its meaning and context.
3709
3710** Killing no longer sends the killed text to the X clipboard.
3711And large strings are not put in the cut buffer either.
3712The variable x-cut-buffer-max specifies the maximum number of characters
3713to put in the cut buffer.
3714
3715** The new command C-x 5 o (other-frame) selects different frames,
3716successively, in cyclic order. It does for frames what C-x o
3717does for windows.
3718
3719** The command M-ESC (eval-expression) has its own command history.
3720
3721** The commands M-! and M-| for running shell commands have their own
3722command history.
3723
3724** If the directory containing the Emacs executable has a sibling named
3725`lisp', that `lisp' directory is added to the end of `load-path'
3726(provided you don't override the normal value with the EMACSLOADPATH
3727environment variable). This feature may make it easier to move
3728an installed Emacs from place to place.
3729
3730** M-x validate-tex-buffer now records the locations of mismatches
3731found in the `*Occur*' buffer. You can go to that buffer and type C-c
3732C-c to visit a particular mismatch.
3733
3734** There are new commands in Shell mode.
3735
3736C-c C-n and C-c C-p move point to the next or previous shell input line.
3737
3738C-c C-d is now another way to send an end-of-file to the subshell.
3739
3740** Changes to calendar/diary.
3741
3742Time zone data is now determined automatically, including the
3743start/stop days and times of daylight savings time. The code now
3744works correctly almost anywhere in the world.
3745
3746The format of the holiday specifications has changed and IS NO LONGER
3747COMPATIBLE with the old (version 18) format. See the documentation of
3748the variable calendar-holidays for details of the new, improved
3749format.
3750
3751The hook `diary-display-hook' has been split into two:
3752diary-display-hook which should be used ONLY for the display and
3753`diary-hook' which should be used for appointment notification. If
3754diary-display-hook is nil (the default), simple-diary-display is
3755used. This allows the diary hooks to be correctly set with add-hook.
3756
3757The forms used for dates in diary entries and general display are no
3758longer autoloaded, but set at load time; this means they will be set
3759correctly based on values you assign to various variables.
3760
3761** The functions x-rebind-key and x-rebind-keys have been deleted,
3762because you can accomplish the same job by binding keys to keyboard
3763macros.
3764
3765** Emacs now distinguishes double and triple drag events and double and
3766triple button-down events. These work analogously to double and
3767triple click events.
3768
3769Double drag events, if not defined, convert to ordinary click events.
3770Double down events, if not defined, convert first to ordinary down
3771events, which are then discarded if not defined. Triple events that
3772are not defined convert to the corresponding double event; if that is
3773also not defined, it may convert further.
3774
3775** The new function event-click-count returns the number of clicks,
3776from an event which is a list. It is 1 for an ordinary click, drag,
3777or button-down event, 2 for a double event, and 3 or more for a triple
3778event.
3779
3780** The new function previous-frame is like next-frame, but moves
3781around through the set of existing frames in the opposite order.
3782
3783** The post-command-hook now runs even after commands that get an error
3784and return to top level. As a consequence of the same change, this
3785hook also runs before Emacs reads the first command. That might sound
3786paradoxical, as if this hook were the same as the pre-command-hook.
3787Actually, they are not similar; the latter runs before *execution* of
3788a command, but after it has been read.
3789
3790** You can turn off the text property hooks that run when point moves
3791to certain places in the buffer, by binding inhibit-point-motion-hooks
3792to a non-nil value.
3793
3794** Inserting a string with no text properties into the buffer normally
3795inherits the properties of the preceding character. You can now
3796control this inheritance by setting the front-sticky and
3797rear-nonsticky properties of a character.
3798
3799If you make a character's front-sticky property t, then insertion
3800before the character inherits its properties. If you make the
3801rear-nonsticky property t, then insertion after the character does not
3802inherit its properties. You can regard characters as normally being
3803rear-sticky and not front-sticky, and this is why insertion normally
3804inherits from the previous character.
3805
3806If neither side of an insertion is suitably sticky, then the inserted
3807text gets no properties. If both sides are sticky, then the inserted
3808text gets the properties of both sides, with the previous character's
3809properties taking precedence when both sides have a property in
3810common.
3811
3812You can also specify stickiness for individual properties. To do so,
3813use a list of property names as the value of the front-sticky property
3814or the rear-nonsticky property. For example, if a character has a
3815rear-nonsticky property whose value is (face read-only), then
3816insertion after the character will not inherit its face property or
3817read-only property (if any), but will inherit any other properties.
3818
3819The merging of properties when both sides of the insertion are sticky
3820takes place one property at a time. If the preceding character is
3821rear-sticky for the property, and the property is non-nil, it
3822dominates. Otherwise, the following character's property value is
3823used if it is front-sticky for that property.
3824
3825** If you give a character a non-nil `invisible' text property, the
3826character does not appear on the screen. This works much like
3827selective display.
3828
3829The details of this feature are likely to change in future Emacs
3830versions.
3831
3832** In Info, when you go to a node, it runs the normal hook
3833Info-selection-hook.
3834
3835** You can use the new function `invocation-directory' to get the name
3836of the directory containing the Emacs executable that was run.
3837
3838** Entry to the minibuffer runs the normal hook minibuffer-setup-hook.
3839
3840** The new function minibuffer-window-active-p takes one argument, a
3841minibuffer window, and returns t if the window is currently active.
3842\f
3843* Changes in version 19.17.
3844
3845** When Emacs displays a list of completions in a buffer,
3846you can select a completion by clicking mouse button 2
3847on that completion.
3848
3849** Use the command `list-faces-display' to display a list of
3850all the currently defined faces, showing what they look like.
3851
3852** Menu bar items from local maps now come after the usual items.
3853
3854** The Help menu bar item always comes last in the menu bar.
3855
3856** If you enable Font-Lock mode on a buffer containing a program
3857(certain languages such as C and Lisp are supported), everything you
3858type is automatically given a face property appropriate to its
3859syntactic role. For example, there are faces for comments, string
3860constants, names of functions being defined, and so on.
3861
3862** Dunnet, an adventure game, is now available.
3863
3864** Several major modes now have their own menu bar items,
3865including Dired, Rmail, and Sendmail. We would like to add
3866suitable menu bar items to other major modes.
3867
3868** The key binding C-x a C-h has been eliminated.
3869This is because it got in the way of the general feature of typing
3870C-h after a prefix character. If you want to run
3871inverse-add-global-abbrev, you can use C-x a - or C-x a i g instead.
3872
3873** If you set the variable `rmail-mail-new-frame' to a non-nil value,
3874all the Rmail commands to send mail make a new frame to do it in.
3875When you send the message, or use the menu bar command not to send it,
3876that frame is deleted.
3877
3878** In Rmail, the o and C-o commands are now almost interchangeable.
3879Both commands check the format of the file you specify, and append
3880the message to it in Rmail format if it is an Rmail file, and in
3881inbox file format otherwise. C-o and o are different only when you
3882specify a new file.
3883
3884** The function `copy-face' now takes an optional fourth argument
3885NEW-FRAME. If you specify this, it copies the definition of face
3886OLD-FACE on frame FRAME to face NEW-NAME on frame NEW-FRAME.
3887
3888** A local map can now cancel out one of the global map's menu items.
3889Just define that subcommand of the menu item with `undefined'
3890as the definition. For example, this cancels out the `Buffers' item
3891for the current major mode:
3892
3893 (local-set-key [menu-bar buffer] 'undefined)
3894
3895** To put global items at the end of the menu bar, use the new variable
3896`menu-bar-final-items'. It should be a list of symbols--event types
3897bound in the menu bar. The menu bar items for these symbols are
3898moved to the end.
3899
3900** The list returned by `buffer-local-variables' now contains cons-cell
3901elements of the form (SYMBOL . VALUE) only for buffer-local variables
3902that have values. For unbound buffer-local variables, the variable
3903name (symbol) appears directly as an element of the list.
3904
3905** The `modification-hooks' property of a character no longer affects
3906insertion; it runs only for deletion and modification of the character.
3907
3908To detect insertion, use `insert-in-front-hooks' and
3909`insert-behind-hooks' properties. The former runs when text is
3910inserted immediately preceding the character that has the property;
3911the latter runs when text is inserted immediately following the
3912character.
3913
3914** Buffer modification now runs hooks belonging to overlays as well as
3915hooks belonging to characters. If an overlay has a
3916`modification-hooks' property, it applies to any change to text in the
3917overlay, and any insertion within the overlay. If the overlay has a
3918`insert-in-front-hooks' property, it runs for insertion at the
3919beginning boundary of the overlay. If the overlay has an
3920`insert-behind-hooks' property, it runs for insertion at the end
3921boundary of the overlay.
3922
3923The values of these properties should be lists of functions. Each
3924function is called, receiving as arguments the overlay in question,
3925followed by the bounds of the range being modified.
3926
3927** The new `-name NAME' option directs Emacs to search for its X
3928resources using the name `NAME', and sets the title of the initial
3929frame. This argument was added for consistency with other X clients.
3930
3931** The new `-xrm DATABASE' option tells Emacs to treat the string
3932DATABASE as the text of an X resource database. Emacs searches
3933DATABASE for resource values, in addition to the usual places. This
3934argument was added for consistency with other X clients.
3935
3936** Emacs now searches for X resources in the files specified by the
3937XFILESEARCHPATH, XUSERFILESEARCHPATH, and XAPPLRESDIR environment
3938variables, emulating the functionality provided by programs written
3939using Xt. Because of this change, Emacs will now notice system-wide
3940application defaults files, as other X clients do.
3941
3942XFILESEARCHPATH and XUSERFILESEARCHPATH should be a list of file names
3943separated by colons; XAPPLRESDIR should be a list of directory names
3944separated by colons.
3945
3946Emacs searches for X resources
3947 + specified on the command line, with the `-xrm RESOURCESTRING'
3948 option,
3949 + then in the value of the XENVIRONMENT environment variable,
3950 - or if that is unset, in the file named ~/.Xdefaults-HOSTNAME if it exists
3951 (where HOSTNAME is the hostname of the machine Emacs is running on),
3952 + then in the screen-specific and server-wide resource properties
3953 provided by the server,
3954 - or if those properties are unset, in the file named ~/.Xdefaults
3955 if it exists,
3956 + then in the files listed in XUSERFILESEARCHPATH,
3957 - or in files named LANG/Emacs in directories listed in XAPPLRESDIR
3958 (where LANG is the value of the LANG environment variable), if
3959 the LANG environment variable is set,
3960 - or in files named Emacs in the directories listed in XAPPLRESDIR
3961 - or in ~/LANG/Emacs (if the LANG environment variable is set),
3962 - or in ~/Emacs,
3963 + then in the files listed in XFILESEARCHPATH.
3964
3965The paths in the variables XFILESEARCHPATH, XUSERFILESEARCHPATH, and
3966XAPPLRESDIR may contain %-escapes (like the control strings passed to
3967the the Emacs lisp `format' function or C printf function), which
3968Emacs expands.
3969
3970%N is replaced by the string "Emacs" wherever it occurs.
3971%T is replaced by "app-defaults" wherever it occurs.
3972%S is replaced by the empty string wherever it occurs.
3973%L and %l are replaced by the value of the LANG environment variable; if LANG
3974 is not set, Emacs does not use that directory or file name at all.
3975%C is replaced by the value of the resource named "customization"
3976 (class "Customization"), as retrieved from the server's resource
3977 properties or the user's ~/.Xdefaults file, or the empty string if
3978 that resource doesn't exist.
3979
3980So, for example,
3981 if XFILESEARCHPATH is set to the value
3982 "/usr/lib/X11/%L/%T/%N%C:/usr/lib/X11/%T/%N%C:/usr/lib/X11/%T/%N",
3983 and the LANG environment variable is set to
3984 "english",
3985 and the customization resource is the string
3986 "-color",
3987then, in the last step of the process described above, Emacs checks
3988for resources in the first of the following files that is present and
3989readable:
3990 /usr/lib/X11/english/app-defaults/Emacs-color
3991 /usr/lib/X11/app-defaults/Emacs-color
3992 /usr/lib/X11/app-defaults/Emacs
3993If the LANG environment variable is not set, then Emacs never uses the
3994first element of the path, "/usr/lib/X11/%L/%T/%N%C", because it
3995contains the %L escape.
3996
3997If XFILESEARCHPATH is unset, Emacs uses the default value
3998"/usr/lib/X11/%L/app-defaults/Emacs%C:\
3999/usr/lib/X11/app-defaults/Emacs%C:\
4000/usr/lib/X11/%L/app-defaults/Emacs:\
4001/usr/lib/X11/app-defaults/Emacs"
4002
4003This feature was added for consistency with other X applications.
4004
4005** The new function `text-property-any' scans the region of text from
4006START to END to see if any character's property PROP is `eq' to
4007VALUE. If so, it returns the position of the first such character.
4008Otherwise, it returns nil.
4009
4010The optional fifth argument, OBJECT, specifies the string or buffer to
4011be examined.
4012
4013** The new function `text-property-not-all' scans the region of text from
4014START to END to see if any character's property PROP is not `eq' to
4015VALUE. If so, it returns the position of the first such character.
4016Otherwise, it returns nil.
4017
4018The optional fifth argument, OBJECT, specifies the string or buffer to
4019be examined.
4020
4021** The function `delete-windows-on' now takes an optional second
4022argument FRAME, which specifies which frames it should affect.
4023 + If FRAME is nil or omitted, then `delete-windows-on' deletes windows
4024 showing BUFFER (its first argument) on all frames.
4025 + If FRAME is t, then `delete-windows-on' only deletes windows on the
4026 selected frame; other frames are unaffected.
4027 + If FRAME is a frame, then `delete-windows-on' only deletes windows on
4028 the given frame; other frames are unaffected.
4029
4030\f
4031* Changes in version 19.16.
4032
4033** When dragging the mouse to select a region, Emacs now highlights the
4034region as you drag (if Transient Mark mode is enabled). If you
4035continue the drag beyond the boundaries of the window, Emacs scrolls
4036the window at a steady rate until you either move the mouse back into
4037the window or release the button.
4038
4039** RET now exits `query-replace' and `query-replace-regexp'; this makes it
4040more consistent with the incremental search facility, which uses RET
4041to end the search.
4042
4043** In C mode, C-c C-u now runs c-up-conditional.
4044C-c C-n and C-c C-p now run new commands that move forward
4045and back over balanced sets of C conditionals (c-forward-conditional
4046and c-backward-conditional).
4047
4048** The Edit entry in the menu bar has a new alternative:
4049"Choose Next Paste". It gives you a menu showing the various
4050strings in the kill ring; click on one to select it as the text
4051to be yanked ("pasted") the next time you yank.
4052
4053** If you enable Transient Mark mode and set `mark-even-if-inactive' to
4054non-nil, then the region is highlighted in a transient fashion just as
4055normally in Transient Mark mode, but the mark really remains active
4056all the time; commands that use the region can be used even if the
4057region highlighting turns off.
4058
4059** If you type C-h after a prefix key, it displays the bindings
4060that start with that prefix.
4061
4062** The VC package now searches for version control commands in the
4063directories named by the variable `vc-path'; its value should be a
4064list of strings.
4065
4066** If you are visiting a file that has locks registered under RCS,
4067VC now displays each lock's owner and version number in the mode line
4068after the string `RCS'. If there are no locks, VC displays the head
4069version number.
4070
4071** When using X, if you load the `paren' library, Emacs automatically
4072underlines or highlights the matching paren whenever point is
4073next to the outside of a paren. When point is before an open-paren,
4074this shows the matching close; when point is after a close-paren,
4075this shows the matching open.
4076
4077** The new function `define-key-after' is like `define-key',
4078but takes an extra argument AFTER. It places the newly defined
4079binding after the binding for the event AFTER.
4080
4081** `accessible-keymaps' now takes an optional second argument, PREFIX.
4082If PREFIX is non-nil, it means the value should include only maps for
4083keys that start with PREFIX.
4084
4085`describe-bindings' also accepts an optional argument PREFIX which
4086means to describe only the keys that start with PREFIX.
4087
4088** The variable `prefix-help-command' hold a command to run to display help
4089whenever the character `help-char' follows a prefix key and does not have
4090a key binding in that context.
4091
4092** Emacs now detects double- and triple-mouse clicks. A single mouse
4093click produces a pair events of the form:
4094 (down-mouse-N POSITION)
4095 (mouse-N POSITION)
4096Clicking the same mouse button again, soon thereafter and at the same
4097location, produces another pair of events of the form:
4098 (down-mouse-N POSITION)
4099 (double-mouse-N POSITION 2)
4100Another click will produce an event pair of the form:
4101 (down-mouse-N POSITION)
4102 (triple-mouse-N POSITION 3)
4103All the POSITIONs in such a sequence would be identical, except for
4104their timestamps.
4105
4106To count as double- and triple-clicks, mouse clicks must be at the
4107same location as the first click, and the number of milliseconds
4108between the first release and the second must be less than the value
4109of the lisp variable `double-click-time'. Setting `double-click-time'
4110to nil disables multi-click detection. Setting it to t removes the
4111time limit; Emacs then detects multi-clicks by position only.
4112
4113If `read-key-sequence' finds no binding for a double-click event, but
4114the corresponding single-click event would be bound,
4115`read-key-sequence' demotes it to a single-click. Similarly, it
4116demotes unbound triple-clicks to double- or single-clicks. This means
4117you don't have to distinguish between single- and multi-clicks if you
4118don't want to.
4119
4120Emacs reports all clicks after the third as `triple-mouse-N' clicks,
4121but increments the click count after POSITION. For example, a fourth
4122click, soon after the third and at the same location, produces a pair
4123of events of the form:
4124 (down-mouse-N POSITION)
4125 (triple-mouse-N POSITION 4)
4126
4127** The way Emacs reports positions of mouse events has changed
4128slightly. If a mouse event includes a position list of the form:
4129 (WINDOW (PLACE-SYMBOL) (COLUMN . ROW) TIMESTAMP)
4130this denotes exactly the same position as the list:
4131 (WINDOW PLACE-SYMBOL (COLUMN . ROW) TIMESTAMP)
4132That is, the event occurred over a non-textual area of the frame,
4133specified by PLACE-SYMBOL, a symbol like `mode-line' or
4134`vertical-scroll-bar'.
4135
4136Enclosing PLACE-SYMBOL in a singleton list does not change the
4137position denoted, but the `read-key-sequence' function uses the
4138presence or absence of the singleton list to tell whether or not it
4139should prefix the event with its place symbol.
4140
4141Normally, `read-key-sequence' prefixes mouse events occurring over
4142non-textual areas with their PLACE-SYMBOLs, to select the sub-keymap
4143appropriate for the event; for example, clicking on the mode line
4144produces a sequence like
4145 [mode-line (mouse-1 POSN)]
4146However, if lisp code elects to unread the resulting key sequence by
4147placing it in the `unread-command-events' variable, it is important
4148that `read-key-sequence' not insert the prefix symbol again; that
4149would produce a malformed key sequence like
4150 [mode-line mode-line (mouse-1 POSN)]
4151For this reason, `read-key-sequence' encloses the event's PLACE-SYMBOL
4152in a singleton list when it first inserts the prefix, but doesn't
4153insert the prefix when processing events whose PLACE-SYMBOLs are
4154already thus enclosed.
4155
4156\f
4157* Changes in version 19.15.
4158
4159** `make-frame-visible', which uniconified frames, is now a command,
4160and thus may be bound to a key. This makes sense because frames
4161respond to user input while iconified.
4162
4163** You can now use Meta mouse clicks to set and use the "secondary
4164selection". You can drag M-Mouse-1 across the region you want to
4165select. Or you can press M-Mouse-1 at one end and M-Mouse-3 at the
4166other (this also copies the text to the kill ring). Repeating M-Mouse-3
4167again at the same place kills that text.
4168
4169M-Mouse-2 kills the secondary selection.
4170
4171Setting the secondary selection does not move point or the mark. It
4172is possible to make a secondary selection that does not all fit on the
4173screen, by using M-Mouse-1 at one end, scrolling, then using M-Mouse-3
4174at the other end.
4175
4176Emacs has only one secondary selection at any time. Starting to set
4177a new one cancels any previous one. The secondary selection displays
4178using a face named `secondary-selection'.
4179
4180** There's a new way to request use of Supercite (sc.el). Do this:
4181
4182 (add-hook 'mail-citation-hook 'sc-cite-original)
4183
4184Currently this works with Rmail. In the future, other Emacs based
4185mail-readers should be modified to understand this hook also.
4186In the mean time, you should keep doing what you have done in the past
4187for those other mail readers.
4188
4189** When a regular expression contains `\(...\)' inside a repetition
4190operator such as `*' or `+', and you ask about the range that was matched
4191using `match-beginning' and `match-end', the range you get corresponds
4192to the *last* repetition *only*. In Emacs 18, you would get a range
4193corresponding to all the repetitions.
4194
4195If you want to get a range corresponding to all the repetitions,
4196put a `\(...\)' grouping *outside* the repetition operator. This
4197is the syntax that corresponds logically to the desired result, and
4198it works the same in Emacs 18 and Emacs 19.
4199
4200(This change actually took place earlier, but we didn't know about it
4201and thus didn't document it.)
4202\f
4203* Changes in version 19.14.
4204
4205** To modify read-only text, bind the variable `inhibit-read-only'
4206to a non-nil value. If the value is t, then all reasons that might
4207make text read-only are inhibited (including `read-only' text properties).
4208If the value is a list, then a `read-only' property is inhibited
4209if it is `memq' in the list.
4210
4211** If you call `get-buffer-window' passing t as its second argument, it
4212will only search for windows on visible frames. Previously, passing t
4213as the secord argument caused `get-buffer-window' to search all
4214frames, visible or not.
4215
4216** If you call `other-buffer' with a nil or omitted second argument, it
4217will ignore buffers displayed windows on any visible frame, not just
4218the selected frame.
4219
4220** You can specify a window or a frame for C-x # to use when
4221selects a server buffer. Set the variable server-window
4222to the window or frame that you want.
4223
4224** The command M-( now inserts spaces outside the open-parentheses in
4225some cases--depending on the syntax classes of the surrounding
4226characters. If the variable `parens-dont-require-spaces' is non-nil,
4227it inhibits insertion of these spaces.
4228
4229** The GUD package now supports the debugger known as xdb on HP/UX
4230systems. Use M-x xdb. The variable `gud-xdb-directories' lets you
4231specify a list of directories to search for source code.
4232
4233** If you are using the mailabbrev package, you should note that its
4234function for defining an alias is now called `define-mail-abbrev'.
4235This package no longer contains a definition for `define-mail-alias';
4236that name is used only in mailaliases.
4237
4238** Inserted characters now inherit the properties of the text before
4239them, by default, rather than those of the following text.
4240
4241** The function `insert-file-contents' now takes optional arguments BEG
4242and END that specify which part of the file to insert. BEG defaults to
42430 (the beginning of the file), and END defaults to the end of the file.
4244
4245If you specify BEG or END, then the argument VISIT must be nil.
4246\f
4247* Changes in version 19.13.
4248
4249** Magic file names can now handle the `load' operation.
4250
4251** Bibtex mode now sets up special entries in the menu bar.
4252
4253** The incremental search commands C-w and C-y, which copy text from
4254the buffer into the search string, now convert it to lower case
4255if you are in a case-insensitive search. This is to avoid making
4256the search a case-sensitive one.
4257
4258** GNUS now knows your time zone automatically if Emacs does.
4259
4260** Hide-ifdef mode no longer defines keys of the form
4261C-c LETTER, since those keys are reserved for users.
4262Those commands have been moved to C-c M-LETTER.
4263We may move them again for greater consistency with other modes.
4264\f
4265* Changes in version 19.12.
4266
4267** You can now make many of the sort commands ignore case by setting
4268`sort-fold-case' to a non-nil value.
4269\f
4270* Changes in version 19.11.
4271
4272** Supercite is installed.
4273
4274** `write-file-hooks' functions that return non-nil are responsible
4275for making a backup file if you want that to be done.
4276To do so, execute the following code:
4277
4278 (or buffer-backed-up (backup-buffer))
4279
4280You might wish to save the file modes value returned by
4281`backup-buffer' and use that to set the mode bits of the file
4282that you write. This is what `basic-save-buffer' does when
4283it writes a file in the usual way.
4284
4285(This is not actually new, but wasn't documented before.)
4286\f
4287* Changes in version 19.10.
4288
4289** The command `repeat-complex-command' is now on C-x ESC ESC.
4290It used to be bound to C-x ESC.
4291
4292The reason for this change is to make function keys work after C-x.
4293
4294** The variable `highlight-nonselected-windows' now controls whether
4295the region is highlighted in windows other than the selected window
4296(in Transient Mark mode only, of course, and currently only when
4297using X).
4298\f
4299* Changes in version 19.8.
4300
4301** It is now simpler to tell Emacs to display accented characters under
4302X windows. M-x standard-display-european toggles the display of
4303buffer text according to the ISO Latin-1 standard. With a prefix
4304argument, this command enables European character display iff the
4305argument is positive.
4306
4307** The `-i' command-line argument tells Emacs to use a picture of the
4308GNU gnu as its icon, instead of letting the window manager choose an
4309icon for it. This option used to insert a file into the current
4310buffer; use `-insert' to do that now.
4311
4312** The `configure' script now supports `--prefix' and `--exec-prefix'
4313options.
4314
4315The `--prefix=PREFIXDIR' option specifies where the installation process
4316should put emacs and its data files. This defaults to `/usr/local'.
4317- Emacs (and the other utilities users run) go in PREFIXDIR/bin
4318 (unless the `--exec-prefix' option says otherwise).
4319- The architecture-independent files go in PREFIXDIR/lib/emacs/VERSION
4320 (where VERSION is the version number of Emacs, like `19.7').
4321- The architecture-dependent files go in
4322 PREFIXDIR/lib/emacs/VERSION/CONFIGURATION
4323 (where CONFIGURATION is the configuration name, like mips-dec-ultrix4.2),
4324 unless the `--exec-prefix' option says otherwise.
4325
4326The `--exec-prefix=EXECDIR' option allows you to specify a separate
4327portion of the directory tree for installing architecture-specific
4328files, like executables and utility programs. If specified,
4329- Emacs (and the other utilities users run) go in EXECDIR/bin, and
4330- The architecture-dependent files go in
4331 EXECDIR/lib/emacs/VERSION/CONFIGURATION.
4332EXECDIR/bin should be a directory that is normally in users' PATHs.
4333
4334** When running under X, the new lisp function `x-list-fonts'
4335allows code to find out which fonts are available from the X server.
4336The first argument PATTERN is a string, perhaps with wildcard characters;
4337 the * character matches any substring, and
4338 the ? character matches any single character.
4339 PATTERN is case-insensitive.
4340If the optional arguments FACE and FRAME are specified, then
4341`x-list-fonts' returns only fonts the same size as FACE on FRAME.
4342
4343
4344\f
4345* Changes in version 19.
4346
4347** When you kill buffers, Emacs now returns memory to the operating system,
4348thus reducing the size of the Emacs process. All the space that you free
4349up by killing buffers can now be reused for other buffers no matter what
4350their sizes, or reused by other processes if Emacs doesn't need it.
4351
4352** Emacs now does garbage collection and auto saving while it is waiting
4353for input, which often avoids the need to do these things while you
4354are typing.
4355
4356The variable `auto-save-timeout' says how many seconds Emacs should
4357wait, after you stop typing, before it does an auto save and a garbage
4358collection.
4359
4360** If auto saving detects that a buffer has shrunk greatly, it refrains
4361from auto saving that buffer and displays a warning. Now it also turns
4362off Auto Save mode in that buffer, so that you won't get the same
4363warning again.
4364
4365If you reenable Auto Save mode in that buffer, Emacs will start saving
4366it again with no further warnings.
4367
4368** A new minor mode called Line Number mode displays the current line
4369number in the mode line, updating it as necessary when you move
4370point.
4371
4372However, if the buffer is very large (larger than the value of
4373`line-number-display-limit'), then the line number doesn't appear.
4374This is because computing the line number can be painfully slow if the
4375buffer is very large.
4376
4377** You can quit while Emacs is waiting to read or write files.
4378
4379** The arrow keys now have default bindings to move in the appropriate
4380directions.
4381
4382** You can suppress next-line's habit of inserting a newline when
4383called at the end of a buffer by setting next-line-add-newlines to nil
4384(it defaults to t).
4385
4386** You can now get back recent minibuffer inputs conveniently. While
4387in the minibuffer, type M-p to fetch the next earlier minibuffer
4388input, and use M-n to fetch the next later input.
4389
4390There are also commands to search forward or backward through the
4391history for history elements that match a regular expression. M-r
4392searches older elements in the history, while M-s searches newer
4393elements. By special dispensation, these commands can always use the
4394minibuffer to read their arguments even though you are already in the
4395minibuffer when you issue them.
4396
4397The history feature is available for all uses of the minibuffer, but
4398there are separate history lists for different kinds of input. For
4399example, there is a list for file names, used by all the commands that
4400read file names. There is a list for arguments of commands like
4401`query-replace'. There are also very specific history lists, such
4402as the one that `compile' uses for compilation commands.
4403
4404** You can now display text in a mixture of fonts and colors, using the
4405"face" feature, together with the overlay and text property features.
4406See the Emacs Lisp manual for details. The Emacs Users Manual describes
4407how to change the colors and font of standard predefined faces.
4408
4409** You can refer to files on other machines using special file name syntax:
4410
4411/HOST:FILENAME
4412/USER@HOST:FILENAME
4413
4414When you do this, Emacs uses the FTP program to read and write files on
4415the specified host. It logs in through FTP using your user name or the
4416name USER. It may ask you for a password from time to time; this
4417is used for logging in on HOST.
4418
4419** Some C-x key bindings have been moved onto new prefix keys.
4420
4421C-x r is a prefix for registers and rectangles.
4422C-x n is a prefix for narrowing.
4423C-x a is a prefix for abbrev commands.
4424
4425C-x r C-SPC
4426C-x r SPC point-to-register (Was C-x /)
4427C-x r j jump-to-register (Was C-x j)
4428C-x r s copy-to-register (Was C-x x)
4429C-x r i insert-register (Was C-x g)
4430C-x r r copy-rectangle-to-register (Was C-x r)
4431C-x r k kill-rectangle
4432C-x r y yank-rectangle
4433C-x r o open-rectangle
4434C-x r f frame-configuration-to-register
4435 (This saves the state of all windows in all frames.)
4436C-x r w window-configuration-to-register
4437 (This saves the state of all windows in the selected frame.)
4438
4439(Use C-x r j to restore a configuration saved with C-x r f or C-x r w.)
4440
4441C-x n n narrow-to-region (Was C-x n)
4442C-x n p narrow-to-page (Was C-x p)
4443C-x n w widen (Was C-x w)
4444
4445C-x a l add-mode-abbrev (Was C-x C-a)
4446C-x a g add-global-abbrev (Was C-x +)
4447C-x a i l inverse-add-mode-abbrev (Was C-x C-h)
4448C-x a i g inverse-add-global-abbrev (Was C-x -)
4449C-x a e expand-abbrev (Was C-x ')
4450
4451(The old key bindings C-x /, C-x j, C-x x and C-x g
4452have not yet been removed.)
4453
4454** You can put a file name in a register to be able to visit the file
4455quickly. Do this:
4456
4457 (set-register ?CHAR '(file . NAME))
4458
4459where NAME is the file name as a string. Then C-x r j CHAR finds that
4460file.
4461
4462This is useful for files that you need to visit frequently,
4463but that you don't want to keep in buffers all the time.
4464
4465** The keys M-g (fill-region) and C-x a (append-to-buffer)
4466have been eliminated.
4467
4468** The new command `string-rectangle' inserts a specified string on
4469each line of the region-rectangle.
4470
4471** C-x 4 r is now `find-file-read-only-other-window'.
4472
4473** C-x 4 C-o is now `display-buffer', which displays a specified buffer
4474in another window without selecting it.
4475
4476** Picture mode has been substantially improved. The picture editing commands
4477now arrange for automatic horizontal scrolling to keep point visible
4478when editing a wide buffer with truncate-lines on. Picture-mode
4479initialization now does a better job of rebinding standard commands;
4480it finds not just their normal keybindings, but any function keys
4481attached to them.
4482
4483** If you enable Transient Mark mode, then the mark becomes "inactive"
4484after every command that modifies the buffer. While the mark is
4485active, the region is highlighted (under X, at least). Most commands
4486that use the mark give an error if the mark is inactive, but you can
4487use C-x C-x to make it active again. This feature is also sometimes
4488known as "Zmacs mode".
4489
4490** Outline mode is now available as a minor mode. This minor mode can
4491combine with any major mode; it substitutes the C-c commands of
4492Outline mode for those of the major mode. Use M-x outline-minor-mode
4493to enable and disable the new mode.
4494
4495M-x outline-mode is unchanged; it still switches to Outline mode as a
4496major mode.
4497
4498** The default setting of `version-control' comes from the environment
4499variable VERSION_CONTROL.
4500
4501** The user option for controlling whether files can set local
4502variables is now called `enable-local-variables'. A value of t means
4503local-variables lists are obeyed; nil means they are ignored; anything
4504else means query the user.
4505
4506The user option for controlling use of the `eval' local variable is
4507now called is `enable-local-eval'; its values are interpreted like
4508those of `enable-local-variables'.
4509
4510** X Window System changes:
4511
4512C-x 5 C-f and C-x 5 b switch to a specified file or buffer in a new
4513frame. Likewise, C-x 5 m starts outgoing mail in another frame, and
4514C-x 5 . finds a tag in another frame.
4515
4516When you are using X, C-z now iconifies the selected frame.
4517
4518Emacs can now exchange text with other X applications. Killing or
4519copying text in Emacs now makes that text available for pasting into
4520other X applications. The Emacs yanking commands now insert the
4521latest selection set by other applications, and add the text to the
4522kill ring. The Emacs commands for selecting and inserting text with
4523the mouse now use the kill ring in the same way the keyboard killing
4524and yanking commands do.
4525
4526The option to specify the title for the initial frame is now `-name NAME'.
4527There is currently no way to specify an icon title; perhaps we will add
4528one in the future.
4529
4530** Undoing a deletion now puts point back where it was before the
4531deletion.
4532
4533** The variables that control how much undo information to save have
4534been renamed to `undo-limit' and `undo-strong-limit'. They used to be
4535called `undo-threshold' and `undo-high-threshold'.
4536
4537** You can now use kill commands in read-only buffers. They don't
4538actually change the buffer, and Emacs will beep and warn you that the
4539buffer is read-only, but they do copy the text you tried to kill into
4540the kill ring, so you can yank it into other buffers.
4541
4542** C-o inserts the fill-prefix on the newly created line. The command
4543M-^ deletes the prefix (if it occurs) after the newline that it
4544deletes.
4545
4546** C-M-l now runs the command `reposition-window'. It scrolls the
4547window heuristically in a way designed to get useful information onto
4548the screen.
4549
4550** C-M-r is now reverse incremental regexp search.
4551
4552** M-z now kills through the target character. In version 18, it
4553killed up to but not including the target character.
4554
4555** M-! now runs the specified shell command asynchronously if it
4556ends in `&' (just as the shell does).
4557
4558** C-h C-f and C-h C-k are new help commands that display the Info
4559node for a given Emacs function name or key sequence, respectively.
4560
4561** The C-h p command system lets you find Emacs Lisp packages by
4562topic keywords. Here is a partial list of package categories:
4563
4564abbrev abbreviation handling, typing shortcuts, macros
4565bib code related to the bib bibliography processor
4566c C and C++ language support
4567calendar calendar and time management support
4568comm communications, networking, remote access to files
4569docs support for Emacs documentation
4570emulations emulations of other editors
4571extensions Emacs Lisp language extensions
4572games games, jokes and amusements
4573hardware support for interfacing with exotic hardware
4574help support for on-line help systems
4575i14n internationalization and alternate character-set support
4576internal code for Emacs internals, build process, defaults
4577languages specialized modes for editing programming languages
4578lisp Lisp support, including Emacs Lisp
4579local code local to your site
4580maint maintenance aids for the Emacs development group
4581mail modes for electronic-mail handling
4582news support for netnews reading and posting
4583processes process, subshell, compilation, and job control support
4584terminals support for terminal types
4585tex code related to the TeX formatter
4586tools programming tools
4587unix front-ends/assistants for, or emulators of, UNIX features
4588vms support code for vms
4589wp word processing
4590
4591More will be added soon.
4592
4593** The command to split a window into two side-by-side windows is now
4594C-x 3. It was C-x 5.
4595
4596** M-. (find-tag) no longer has any effect on what M-, will do
4597subsequently. You can no longer use M-, to find the next similar tag;
4598you must use M-. with a prefix argument, instead.
4599
4600The motive for this change is so that you can more reliably use
4601M-, to resume a suspended `tags-search' or `tags-query-replace'.
4602
4603** C-x s (`save-some-buffers') now gives you more options when it asks
4604whether to save a particular buffer. In addition to `y' or `n', you
4605can answer `!' to save all the remaining buffers, `.' to save this
4606buffer but not save any others, ESC to stop saving and exit the
4607command, and C-h to get help. These options are analogous to those
4608of `query-replace'.
4609
4610** M-x make-symbolic-link does not expand its first argument.
4611This lets you make a link with a target that is a relative file name.
4612
4613** M-x add-change-log-entry and C-x 4 a now automatically insert the
4614name of the file and often the name of the function that you changed.
4615They also handle grouping of entries.
4616
4617There is now a special major mode for editing ChangeLog files. It
4618makes filling work conveniently. Each bunch of grouped entries is one
4619paragraph, and each collection of entries from one person on one day
4620is considered a page.
4621
4622** The `comment-region' command adds comment delimiters to the lines that
4623start in the region, thus commenting them out. With a negative argument,
4624it deletes comment delimiters from the lines in the region--this cancels
4625the effect of `comment-region' without an argument.
4626
4627With a positive argument, `comment-region' adds comment delimiters
4628but duplicates the last character of the comment start sequence as many
4629times as the argument specifies. This is a way of calling attention to
4630the comment. In Lisp, you should use an argument at least two, because
4631the indentation convention for single semicolon comments does not leave
4632them at the beginning of a line.
4633
4634** If `split-window-keep-point' is non-nil, C-x 2 tries to avoid
4635shifting any text on the screen by putting point in whichever window
4636happens to contain the screen line the cursor is already on.
4637The default is that `split-window-keep-point' is non-nil on slow
4638terminals.
4639
4640** M-x super-apropos is like M-x apropos except that it searches both
4641Lisp symbol names and documentation strings for matches. It describes
4642every symbol that has a match in either the symbol's name or its
4643documentation.
4644
4645Both M-x apropos and M-x super-apropos take an optional second
4646argument DO-ALL which controls the more expensive part of the job.
4647This includes looking up and printing the key bindings of all
4648commands. It also includes checking documentation strings in
4649super-apropos. DO-ALL is nil by default; use a prefix arg to make it
4650non-nil.
4651
4652** M-x revert-buffer no longer offers to revert from a recent auto-save
4653file unless you give it a prefix argument. Otherwise it always
4654reverts from the real file regardless of whether there has been an
4655auto-save since thenm. (Reverting from the auto-save file is no longer
4656very useful now that the undo capacity is larger.)
4657
4658** M-x recover-file no longer turns off Auto Save mode when it reads
4659the last Auto Save file.
4660
4661** M-x rename-buffer, if you give it a prefix argument,
4662avoids errors by modifying the new name to make it unique.
4663
4664** M-x rename-uniquely renames the current buffer to a similar name
4665with a numeric suffix added to make it both different and unique.
4666
4667One use of this command is for creating multiple shell buffers.
4668If you rename your shell buffer, and then do M-x shell again, it
4669makes a new shell buffer. This method is also good for mail buffers,
4670compilation buffers, and any Emacs feature which creates a special
4671buffer with a particular name.
4672
4673** M-x compare-windows with a prefix argument ignores changes in whitespace.
4674If `compare-ignore-case' is non-nil, then differences in case are also
4675ignored.
4676
4677** `backward-paragraph' is now bound to M-{ by default, and `forward-paragraph'
4678to M-}. Originally, these commands were bound to M-[ and M-], but they were
4679running into conflicts with the use of function keys. On many terminals,
4680function keys send a sequence beginning ESC-[, so many users have defined this
4681as a prefix key.
4682
4683** C-x C-u (upcase-region) and C-x C-l (downcase-region) are now disabled by
4684default; these commands seem to be often hit by accident, and can be
4685quite destructive if their effects are not noticed immediately.
4686
4687** The function `erase-buffer' is now interactive, but disabled by default.
4688
4689** When visiting a new file, Emacs attempts to abbreviate the file's
4690path using the symlinks listed in `directory-abbrev-alist'.
4691
4692** When you visit the same file in under two names that translate into
4693the same name once symbolic links are handled, Emacs warns you that
4694you have two buffers for the same file.
4695
4696** If you wish to avoid visiting the same file in two buffers under
4697different names, set the variable `find-file-existing-other-name'
4698non-nil. Then `find-file' uses the existing buffer visiting the file,
4699no matter which of the file's names you specify.
4700
4701** If you set `find-file-visit-truename' non-nil, then the file name
4702recorded for a buffer is the file's truename (in which all symbolic
4703links have been removed), rather than the name you specify. Setting
4704`find-file-visit-truename' also implies the effect of
4705`find-file-existing-other-name'.
4706
4707** C-x C-v now inserts the entire current file name in the minibuffer.
4708This is convenient if you made a small mistake in typing it. Point
4709goes after the last slash, before the last file name component, so if
4710you want to replace it entirely, you can use C-k right away to delete
4711it.
4712
4713** Commands such as C-M-f in Lisp mode now ignore parentheses within comments.
4714
4715** C-x q now uses ESC to terminate all iterations of the keyboard
4716macro, rather than C-d as before.
4717
4718** Use the command `setenv' to set an individual environment variable
4719for Emacs subprocesses. Specify a variable name and a value, both as
4720strings. This command applies only to subprocesses yet to be
4721started.
4722
4723** Use `rot13-other-window' to examine a buffer with rot13.
4724
4725This command does not change the text in the buffer. Instead, it
4726creates a window with a funny display table that applies the code when
4727displaying the text.
4728
4729** The command `M-x version' now prints the current Emacs version; The
4730`version' command is an alias for the `emacs-version' command.
4731
4732** More complex changes in existing packages.
4733
4734*** `fill-nonuniform-paragraphs' is a new command, much like
4735`fill-individual-paragraphs' except that only separator lines separate
4736paragraphs. Since this means that the lines of one paragraph may have
4737different amounts of indentation, the fill prefix used is the smallest
4738amount of indentation of any of the lines of the paragraph.
4739
4740*** Filling is now partially controlled by a new minor mode, Adaptive
4741Fill mode. When this mode is enabled (and it is enabled by default),
4742if you use M-x fill-region-as-paragraph on an indented paragraph and
4743you don't have a fill prefix, it uses the indentation of the second
4744line of the paragraph as the fill prefix.
4745
4746Adaptive Fill mode doesn't have much effect on M-q in most major
4747modes, because an indented line will probably count as a paragraph
4748starter and thus each line of an indented paragraph will be considered
4749a paragraph of its own.
4750
4751*** M-q in C mode now runs `c-fill-paragraph', which is designed
4752for filling C comments. (We assume you don't want to fill
4753the code in a C program.)
4754
4755*** M-$ now runs the Ispell program instead of the Unix spell program.
4756
4757M-$ starts an Ispell process the first time you use it. But the process
4758stays alive, so that subsequent uses of M-$ run very fast.
4759If you want to get rid of the process, use M-x kill-ispell.
4760
4761To check the entire current buffer, use M-x ispell-buffer.
4762Use M-x ispell-region to check just the current region.
4763
4764Ispell commands often involve interactive replacement of words.
4765You can interrupt the interactive replacement with C-g.
4766You can restart it again afterward with C-u M-$.
4767
4768During interactive replacement, you can type the following characters:
4769
4770a Accept this word this time.
4771DIGIT Replace the word (this time) with one of the displayed near-misses.
4772 The digit you use says which near-miss to use.
4773i Insert this word in your private dictionary
4774 so that Ispell will consider it correct it from now on.
4775r Replace the word this time with a string typed by you.
4776
4777When the Ispell process starts, it reads your private dictionary which
4778is the file `~/ispell.words'. If you "insert" words with the `i' command,
4779these words are added to that file, but not right away--only at the end
4780of the interactive replacement process.
4781
4782Use M-x reload-ispell to reload your private dictionary from
4783`~/ispell.words' if you edit it outside of Ispell.
4784
4785** Changes in existing modes.
4786
4787*** gdb-mode has been replaced by gud-mode.
4788
4789The package gud.el (Grand Unified Debugger) replaces gdb.el in Emacs
479019. It provides a gdb.el-like interface to any of three debuggers;
4791gdb itself, the sdb debugger supported on some Unix systems, or the
4792dbx debugger on Berkeley systems.
4793
4794 You start it up with one of the commands M-x gdb, M-x sdb, or
4795M-x dbx. Each entry point finishes by executing a hook; gdb-mode-hook,
4796sdb-mode-hook or dbx-mode-hook respectively.
4797
4798These bindings have changed:
4799C-x C-a > gud-down (was M-d)
4800C-x C-a < gud-up (was M-u)
4801C-x C-a C-r gud-cont (was M-c)
4802C-x C-a C-n gud-next (was M-n)
4803C-x C-a C-s gud-step (was M-s)
4804C-x C-a C-i gud-stepi (was M-i)
4805C-x C-a C-l gud-recenter (was C-l)
4806C-d comint-delchar-or-maybe-eof (was C-c C-d)
4807
4808These bindings have been removed:
4809C-c C-r (was comint-show-output; now gud-cont)
4810
4811Since GUD mode uses comint, it uses comint's input history commands,
4812superseding C-c C-y (copy-last-shell-input):
4813 M-p comint-next-input
4814 M-n comint-previous-input
4815 M-r comint-previous-similar-input
4816 M-s comint-next-similar-input
4817 M-C-r comint-previous-input-matching
4818
4819The C-x C-a bindings are also active in source files.
4820
4821*** The old TeX mode bindings of M-{ and M-} have been moved to C-c {
4822and C-c }. (These commands are `up-list' and `tex-insert-braces';
4823they are the TeX equivalents of M-( and M-).) This is because M-{
4824and M-} are now globally defined commands.
4825
4826*** Changes in Mail mode.
4827
4828`%' is now a word-separator character in Mail mode.
4829
4830`mail-signature', if non-nil, tells M-x mail to insert your
4831`.signature' file automatically. If you don't want your signature in
4832a particular message, just delete it before you send the message.
4833
4834You can specify the text to insert at the beginning of each line when
4835you use C-c C-y to yank the message you are replying to. Set
4836`mail-yank-prefix' to the desired string. A value of `nil' (the
4837default) means to use indentation, as in Emacs 18. If you use just
4838C-u as the prefix argument to C-c C-y, then it does not insert
4839anything at the beginning of the lines, regardless of the value of
4840`mail-yank-prefix'.
4841
4842If you like, you can expand mail aliases as abbrevs, as soon as you
4843type them in. To enable this feature, execute the following:
4844
4845 (add-hook 'mail-setup-hook 'mail-abbrevs-setup)
4846
4847This can go in your .emacs file.
4848
4849Word abbrevs don't expand unless you insert a word-separator character
4850afterward. Any mail aliases that you didn't expand at insertion time
4851are expanded subsequently when you send the message.
4852
4853*** Changes in Rmail.
4854
4855Rmail by default gets new mail only from the system inbox file,
4856not from `~/mbox'.
4857
4858In Rmail, you can retry sending a message that failed
4859by typing `M-m' on the failure message.
4860
4861By contrast, another new command M-x rmail-resend is used for
4862forwarding a message and marking it as "resent from" you
4863with header fields "Resent-From:" and "Resent-To:".
4864
4865`e' is now the command to edit a message.
4866To expunge, type `x'. We know this will surprise people
4867some of the time, but the surprise will not be disastrous--if
4868you type `e' meaning to expunge, just turn off editing with C-c C-c
4869and then type `x'.
4870
4871Another new Rmail command is `<', which moves to the first message.
4872This is for symmetry with `>'.
4873
4874Use the `b' command to bury the Rmail buffer and its summary buffer,
4875if any, removing both of them from display on the screen.
4876
4877The variable `rmail-output-file-alist' now controls the default
4878for the file to output a message to.
4879
4880In the Rmail summary buffer, all cursor motion commands select
4881the message you move to. It's really neat when you use
4882incremental search.
4883
4884You can now issue most Rmail commands from an Rmail summary buffer.
4885The commands do the same thing in that buffer that they do in the
4886Rmail buffer. They apply to the message that is selected in the Rmail
4887buffer, which is always the one described by the current summary
4888line.
4889
4890Conversely, motion and deletion commands in the Rmail buffer also
4891update the summary buffer. If you set the variable
4892`rmail-redisplay-summary' to a non-nil value, then they bring the
4893summary buffer (if one exists) back onto the screen.
4894
4895C-M-t is a new command to make a summary by topic. It uses regexp
4896matching against just the subjects of the messages to decide which
4897messages to show in the summary.
4898
4899You can easily convert an Rmail file to system mailbox format with the
4900command `unrmail'. This command reads two arguments, the name of
4901the Rmail file to convert, and the name of the new mailbox file.
4902(This command does not change the Rmail file itself.)
4903
4904Rmail now handles Content Length fields in messages.
4905
4906*** `mail-extract-address-components' unpacks mail addresses.
4907It takes an address as a string (the contents of the From field, for
4908example) and returns a list of the form (FULL-NAME
4909CANONICAL-ADDRESS).
4910
4911*** Changes in C mode and C-related commands.
4912
4913**** M-x c-up-conditional
4914
4915In C mode, `c-up-conditional' moves back to the containing
4916preprocessor conditional, setting the mark where point was
4917previously.
4918
4919A prefix argument acts as a repeat count. With a negative argument,
4920this command moves forward to the end of the containing preprocessor
4921conditional. When going backwards, `#elif' acts like `#else' followed
4922by `#if'. When going forwards, `#elif' is ignored.
4923
4924**** In C mode, M-a and M-e are now defined as
4925`c-beginning-of-statement' and `c-end-of-statement'.
4926
4927**** In C mode, M-x c-backslash-region is a new command to insert or
4928align `\' characters at the ends of the lines of the region, except
4929for the last such line. This is useful after writing or editing a C
4930macro definition.
4931
4932If a line already ends in `\', this command adjusts the amount of
4933whitespace before it. Otherwise, it inserts a new `\'.
4934
4935*** New features in info.
4936
4937When Info looks for an Info file, it searches the directories
4938in `Info-directory-list'. This makes it easy to install the Info files
4939that come with various packages. You can specify the path with
4940the environment variable INFOPATH.
4941
4942There are new commands in Info mode.
4943
4944`]' now moves forward a node, going up and down levels as needed.
4945`[' is similar but moves backward. These two commands try to traverse
4946the entire Info tree, node by node. They are the equivalent of reading
4947a printed manual sequentially.
4948
4949`<' moves to the top node of the current Info file.
4950`>' moves to the last node of the file.
4951
4952SPC scrolls through the current node; at the end, it advances to the
4953next node in depth-first order (like `]').
4954
4955DEL scrolls backwards in the current node; at the end, it moves to the
4956previous node in depth-first order (like `[').
4957
4958After a menu select, the info `up' command now restores point in the
4959menu. The combination of this and the previous two changes means that
4960repeated SPC keystrokes do the right (depth-first traverse forward) thing.
4961
4962`i STRING RET' moves to the node associated with STRING in the index
4963or indices of this manual. If there is more than one match for
4964STRING, the `i' command finds the first match.
4965
4966`,' finds the next match for the string in the previous `i' command
4967
4968If you click the middle mouse button near a cross-reference,
4969menu item or node pointer while in Info, you will go to the node
4970which is referenced.
4971
4972*** Changes in M-x compile.
4973
4974You can repeat any previous compilation command conveniently using the
4975minibuffer history commands, while in the minibuffer entering the
4976compilation command.
4977
4978While a compilation is going on, the string `Compiling' appears in
4979the mode line. When this string disappears, that tells you the
4980compilation is finished.
4981
4982The buffer of compiler messages is in Compilation mode. This mode
4983provides the keys SPC and DEL to scroll by screenfuls, and M-n and M-p
4984to move to the next or previous error message. You can also use C-c
4985C-c on any error message to find the corresponding source code.
4986
4987Emacs 19 has a more general parser for compiler messages. For example, it
4988can understand messages from lint, and from certain C compilers whose error
4989message format is unusual. Also, it only parses until it sees the error
4990message you want; you never have to wait a long time to see the first
4991error, no matter how big the buffer is.
4992
4993*** M-x diff and M-x diff-backup.
4994
4995This new command compares two files, displaying the differences in an
4996Emacs buffer. The options for the `diff' program come from the
4997variable `diff-switches', whose value should be a string.
4998
4999The buffer of differences has Compilation mode as its major mode, so you
5000can use C-x ` to visit successive changed locations in the two
5001source files, or you can move to a particular hunk of changes and type
5002C-c C-c to move to the corresponding source. You can also use the
5003other special commands of Compilation mode: SPC and DEL for
5004scrolling, and M-n and M-p for cursor motion.
5005
5006M-x diff-backup compares a file with its most recent backup.
5007If you specify the name of a backup file, `diff-backup' compares it
5008with the source file that it is a backup of.
5009
5010*** The View commands (such as M-x view-buffer and M-x view-file) no
5011longer use recursive edits; instead, they switch temporarily to a
5012different major mode (View mode) specifically designed for moving
5013around through a buffer without editing it.
5014
5015*** Changes in incremental search.
5016
5017**** The character to terminate an incremental search is now RET.
5018This is for compatibility with the way most other arguments are read.
5019
5020To search for a newline in an incremental search, type LFD (also known
5021as C-j).
5022
5023**** Incremental search now maintains a ring of previous search
5024strings. Use M-p and M-n to move through the ring to pick a search
5025string to reuse. These commands leave the selected search ring
5026element in the minibuffer, where you can edit it. Type C-s or C-r to
5027finish editing and search for the chosen string.
5028
5029**** If you type an upper case letter in incremental search, that turns
5030off case-folding, so that you get a case-sensitive search.
5031
5032**** If you type a space during regexp incremental search, it matches
5033any sequence of whitespace characters. If you want to match just a space,
5034type C-q SPC.
5035
5036**** Incremental search is now implemented as a major mode. When you
5037type C-s, it switches temporarily to a different keymap which defines
5038each key to do what it ought to do for incremental search. This has
5039next to no effect on the user-visible behavior of searching, but makes
5040it easier to customize that behavior.
5041
5042Emacs 19 eliminates the old variables `search-...-char' that used to
5043be the way to specify the characters to use for various special
5044purposes in incremental search. Instead, you can define the meaning
5045of a character in incremental search by modifying `isearch-mode-map'.
5046
5047*** New commands in Buffer Menu mode.
5048
5049The command C-o now displays the current line's buffer in another
5050window but does not select it. This is like the existing command `o'
5051which selects the current line's buffer in another window.
5052
5053The command % toggles the read-only flag of the current line's buffer.
5054
5055The way to switch to a set of several buffers, including those marked
5056with m, is now v. The q command simply quits, replacing the buffer
5057menu buffer with the buffer that was displayed previously.
5058
5059** New major modes and packages.
5060
5061*** The news reader GNUS is now installed.
5062
5063*** There is a new interface for version control systems, called VC.
5064It works with both RCS and SCCS; in fact, you don't really have to
5065know which one of them is being used, because it automatically deals
5066with either one.
5067
5068Most of the time, the only command you have to know about is C-x C-q.
5069This command normally toggles the read-only flag of the current
5070buffer. If the buffer is visiting a file that is maintained with a
5071version control system, the command still toggles read-only, but does
5072so by checking the file in or checking it out.
5073
5074When you check a file in, VC asks you for a log entry by popping up a
5075buffer. Edit the entry there, then type C-c C-c when it is ready.
5076That's when the actual checkin happens. If you change your mind about
5077the checkin, simply switch buffers and don't ever go back to the log
5078buffer.
5079
5080To start using version control for a file, use the command C-x v v.
5081This works like C-x C-q (performing the next logical version-control
5082operation needed to change the file's writability) but it will also
5083perform initial checkin on an unregistered file.
5084
5085By default, VC uses RCS if RCS is installed on your machine;
5086otherwise, SCCS. If you want to make the choice explicitly, you can do
5087it by setting `vc-default-back-end' to the symbol `RCS' or the symbol
5088`SCCS'.
5089
5090You can tell when a file you visit is maintained with version control
5091because either `RCS' or `SCCS' appears in the mode line.
5092
5093*** A new Calendar mode has been added, the work of Edward M. Reingold.
5094The mode can display the Gregorian calendar and a variety of other
5095calendars at any date, and interacts with a diary facility similar to
5096the UNIX `calendar' utility.
5097
5098*** There is a new major mode for editing binary files: Hexl mode.
5099To use it, use M-x hexl-find-file instead of C-x C-f to visit the file.
5100This command converts the file's contents to hexadecimal and lets you
5101edit the translation. When you save the file, it is converted
5102automatically back to binary.
5103
5104You can also use M-x hexl-mode to translate an existing buffer into hex.
5105Do this if you have already visited a binary file.
5106
5107Hexl mode has a few other commands:
5108
5109C-M-d insert a byte with a code typed in decimal.
5110C-M-o insert a byte with a code typed in octal.
5111C-M-x insert a byte with a code typed in hex.
5112
5113C-x [ move to the beginning of a 1k-byte "page".
5114C-x ] move to the end of a 1k-byte "page".
5115
5116M-g go to an address specified in hex.
5117M-j go to an address specified in decimal.
5118
5119C-c C-c leave hexl mode and go back to the previous major mode.
5120
5121*** Miscellaneous new major modes include Awk mode, Icon mode, Makefile
5122mode, Perl mode and SGML mode.
5123
5124*** Edebug, a new source-level debugger for Emacs Lisp functions.
5125
5126To use Edebug, use the command M-x edebug-defun to "evaluate" a
5127function definition in an Emacs Lisp file. We put "evaluate" in
5128quotation marks because it doesn't just evaluate the function, it also
5129inserts additional information to support source-level debugging.
5130
5131You must also do
5132
5133 (setq debugger 'edebug-debug)
5134
5135to cause errors and single-stepping to use Edebug instead of the usual
5136Emacs Lisp debugger.
5137
5138For more information, see the Edebug manual, which should be included
5139in the Emacs distribution.
5140
5141*** C++ mode is like C mode, except that it understands C++ comment syntax
5142and certain other differences between C and C++. It also has a command
5143`fill-c++-comment' which fills a paragraph made of comment lines.
5144
5145The command `comment-region' is useful in C++ mode for commenting out
5146several consecutive lines, or removing the commenting out of such lines.
5147
5148*** A new package for merging two variants of the same text.
5149
5150It's not unusual for programmers to get their signals crossed and
5151modify the same program in two different directions. Then somebody
5152has to merge the two versions. The command `emerge-files' makes this
5153easier.
5154
5155`emerge-files' reads two file names and compares them. Then it
5156displays three buffers: one for each file, and one for the
5157differences.
5158
5159If the original version of the file is available, you can make things
5160even easier using `emerge-files-with-ancestor'. It reads three file
5161names--variant 1, variant 2, and the common ancestor--and uses diff3
5162to compare them.
5163
5164You control the merging interactively. The main loop of Emerge
5165consists of showing you one set of differences, asking you what to do
5166about them, and doing it. You have a choice of two modes for giving
5167directions to Emerge: "fast" mode and "edit" mode.
5168
5169In Fast mode, Emerge commands are single characters, and ordinary
5170Emacs commands are disabled. This makes Emerge operations fast, but
5171prevents you from doing more than selecting the A or the B version of
5172differences. In Edit mode, all emerge commands use the C-c prefix,
5173and the usual Emacs commands are available. This allows editing the
5174merge buffer, but slows down Emerge operations. Edit and fast modes
5175are indicated by `F' and `E' in the minor modes in the mode line.
5176
5177The Emerge commands are:
5178
5179 p go to the previous difference
5180 n go to the next difference
5181 a select the A version of this difference
5182 b select the B version of this difference
5183 j go to a particular difference (prefix argument
5184 specifies which difference) (0j suppresses display of
5185 the flags)
5186 q quit - finish the merge*
5187 f go into fast mode
5188 e go into edit mode
5189 l recenter (C-l) all three windows*
5190 - and 0 through 9
5191 prefix numeric arguments
5192 d a select the A version as the default from here down in
5193 the merge buffer*
5194 d b select the B version as the default from here down in
5195 the merge buffer*
5196 c a copy the A version of the difference into the kill
5197 ring
5198 c b copy the B version of the difference into the kill
5199 ring
5200 i a insert the A version of the difference at the point
5201 i b insert the B version of the difference at the point
5202 m put the point and mark around the difference region
5203 ^ scroll-down (like M-v) the three windows*
5204 v scroll-up (like C-v) the three windows*
5205 < scroll-left (like C-x <) the three windows*
5206 > scroll-right (like C-x >) the three windows*
5207 | reset horizontal scroll on the three windows*
5208 x 1 shrink the merge window to one line (use C-u l to restore it
5209 to full size)
5210 x a find the difference containing a location in the A buffer*
5211 x b find the difference containing a location in the B buffer*
5212 x c combine the two versions of this difference*
5213 x C combine the two versions of this difference, using a
5214 register's value as the template*
5215 x d find the difference containing a location in the merge buffer*
5216 x f show the files/buffers Emerge is operating on in Help window
5217 (use C-u l to restore windows)
5218 x j join this difference with the following one
5219 (C-u x j joins this difference with the previous one)
5220 x l show line numbers of points in A, B, and merge buffers
5221 x m change major mode of merge buffer*
5222 x s split this difference into two differences
5223 (first position the point in all three buffers to the places
5224 to split the difference)
5225 x t trim identical lines off top and bottom of difference
5226 (such lines occur when the A and B versions are
5227 identical but differ from the ancestor version)
5228 x x set the template for the x c command*
5229
5230Normally, the merged output goes back in the first file specified.
5231If you use a prefix argument, Emerge reads another file name to use
5232for the output file.
5233
5234Once Emerge has prepared the buffer of differences, it runs the hooks
5235in `emerge-startup-hooks'.
5236
5237*** Asm mode is a new major mode for editing files of assembler code.
5238It defines these commands:
5239
5240TAB tab-to-tab-stop.
5241LFD Insert a newline and then indent using tab-to-tab-stop.
5242: Insert a colon and then remove the indentation
5243 from before the label preceding colon. Then tab-to-tab-stop.
5244; Insert or align a comment.
5245
5246*** Two-column mode lets you conveniently edit two side-by-side columns
5247of text. It works using two side-by-side windows, each showing its
5248own buffer.
5249
5250Here are three ways to enter two-column mode:
5251
5252C-x 6 2 makes the current buffer into the left-hand buffer. In the
5253right-hand window it puts a buffer whose name is based on the current
5254buffer's name.
5255
5256C-x 6 b BUFFER RET makes the current buffer into the left-hand buffer,
5257and uses buffer BUFFER as the right-hand buffer.
5258
5259C-x 6 s splits the current buffer, which contains two-column text,
5260into two side-by-side buffers. The old current buffer becomes the
5261left-hand buffer, but the text in the right column is moved into the
5262right-hand buffer. The current column specifies the split point.
5263Splitting starts with the current line and continues to the end of the
5264buffer.
5265
5266C-x 6 s takes a prefix argument which specifies how many characters
5267before point constitute the column separator. (The default argument
5268is 1, as usual, so by default the column separator is the character
5269before point.) Lines that don't have the column separator at the
5270proper place remain unsplit; they stay in the left-hand buffer, and
5271the right-hand buffer gets an empty line to correspond.
5272
5273You can scroll both buffers together using C-x 6 SPC (scroll up), C-x
52746 DEL (scroll down), and C-x 6 RET (scroll up one line). C-x 6 C-l
5275recenters both buffers together.
5276
5277If you want to make a line which will span both columns, put it in
5278the left-hand buffer, with an empty line in the corresponding place in
5279the right-hand buffer.
5280
5281When you have edited both buffers as you wish, merge them with C-x 6
52821. This copies the text from the right-hand buffer as a second column
5283in the other buffer. To go back to two-column editing, use C-x 6 s.
5284
5285Use C-x 6 d to disassociate the two buffers, leaving each as it
5286stands. (If the other buffer, the one that was not current when you
5287type C-x 6 d, is empty, C-x 6 d kills it.)
5288
5289*** You can supply command arguments such as files to visit to an Emacs
5290that is already running. To do this, you must do this in your .emacs
5291file:
5292 (add-hook 'suspend-hook 'resume-suspend-hook)
5293Also you must use the shellscript emacs.csh or emacs.sh, found in the
5294etc subdirectory.
5295
5296*** Shell mode has been completely replaced.
5297The basic idea is the same, but there are new commands available in
5298this mode.
5299
5300TAB now completes the file name before point in the shell buffer.
5301To get a list of all possible completions, type M-?.
5302
5303There is a new convenient history mechanism for repeating previous
5304commands. Use the command M-p to recall the last command; it copies
5305the text of that command to the place where you are editing. If you
5306repeat M-p, it replaces the copied command with the previous command.
5307M-n is similar but goes in the opposite direction towards the present.
5308When you find the command you wanted, you can edit it, or just
5309resubmit it by typing RET.
5310
5311You can also use M-r and M-s to search for (respectively) earlier or
5312later inputs starting with a given string. First type the string,
5313then type M-r to yank a previous input from the history which starts
5314with that string. You can repeat M-r to find successively earlier
5315inputs starting with the same string. You can start moving in the
5316opposite direction (toward more recent inputs) by typing M-s instead
5317of M-r. As long as you don't use any commands except M-r and M-s,
5318they keep using the same string that you had entered initially.
5319
5320C-c C-o kills the last batch of output from a shell command. This is
5321useful if a shell command spews out lots of output that just gets in
5322the way.
5323
5324C-c C-r scrolls to display the beginning of the last batch of output
5325at the top of the window; it also moves the cursor there.
5326
5327C-a on a line that starts with a shell prompt moves to the end of the
5328prompt, not to the very beginning of the line.
5329
5330C-d typed at the end of the shell buffer sends EOF to the subshell.
5331At any other position in the buffer, it deletes a character as usual.
5332
5333If Emacs gets confused while trying to track changes in the shell's
5334current directory, type M-x dirs to re-synchronize.
5335
5336M-x send-invisible reads a line of text without echoing it, and
5337sends it to the shell.
5338
5339If you accidentally suspend your process, use M-x comint-continue-subjob
5340to continue it.
5341
5342*** There is now a convenient way to enable flow control on terminals
5343where you can't win without it. Suppose you want to do this on
5344VT-100 and H19 terminals; put the following in your `.emacs' file:
5345
5346 (enable-flow-control-on "vt100" "h19")
5347
5348When flow control is enabled, you must type C-\ to get the effect of a
5349C-s, and type C-^ to get the effect of a C-q.
5350
5351The function `enable-flow-control' enables flow control unconditionally.
5352\f
5353** Changes in Dired
5354
5355Dired has many new features which allow you to do these things:
5356
5357- Rename, copy, or make links to many files at once.
5358
5359- Make distinguishable types of marks for different operations.
5360
5361- Display contents of subdirectories in the same Dired buffer as the
5362parent directory.
5363
5364*** Setting and Clearing Marks
5365
5366There are now two kinds of marker that you can put on a file in Dired:
5367`D' for deletion, and `*' for any other kind of operation.
5368The `x' command deletes only files marked with `D', and most
5369other Dired commands operate only on the files marked with `*'.
5370
5371To mark files with `D' (also called "flagging" the files), you
5372can use `d' as usual. Here are some commands for marking with
5373`*' (and also for unmarking):
5374
5375**** `m' marks the current file with `*', for an operation other than
5376deletion.
5377
5378**** `*' marks all executable files. With a prefix argument, it
5379unmarks all those files.
5380
5381**** `@' marks all symbolic links. With a prefix argument, it unmarks
5382all those files.
5383
5384**** `/' marks all directory files except `.' and `..'. With a prefix
5385argument, it unmarks all those files.
5386
5387**** M-DEL removes a specific or all marks from every file. With an
5388argument, queries for each marked file. Type your help character,
5389usually C-h, at that time for help.
5390
5391**** `c' replaces all marks that use the character OLD with marks that
5392use the character NEW. You can use almost any character as a mark
5393character by means of this command, to distinguish various classes of
5394files. If OLD is ` ', then the command operates on all unmarked
5395files; if NEW is ` ', then the command unmarks the files it acts on.
5396
5397*** Operating on Multiple Files
5398
5399The Dired commands to operate directly on files (rename them, copy
5400them, and so on) have been generalized to work on multiple files.
5401There are also some additional commands in this series.
5402
5403All of these commands use the same convention to decide which files to
5404manipulate:
5405
5406- If you give the command a numeric prefix argument @var{n}, it operates
5407on the next @var{n} files, starting with the current file.
5408
5409- Otherwise, if there are marked files, the commands operate on all the
5410marked files.
5411
5412- Otherwise, the command operates on the current file only.
5413
5414These are the commands:
5415
5416**** `C' copies the specified files. You must specify a directory to
5417copy into, or (if copying a single file) a new name.
5418
5419If `dired-copy-preserve-time' is non-`nil', then copying sets
5420the modification time of the new file to be the same as that of the old
5421file.
5422
5423**** `R' renames the specified files. You must specify a directory to
5424rename into, or (if renaming a single file) a new name.
5425
5426Dired automatically changes the visited file name of buffers associated
5427with renamed files so that they refer to the new names.
5428
5429**** `H' makes hard links to the specified files. You must specify a
5430directory to make the links in, or (if making just one link) the name
5431to give the link.
5432
5433**** `S' makes symbolic links to the specified files. You must specify
5434a directory to make the links in, or (if making just one link) the
5435name to give the link.
5436
5437**** `M' changes the mode of the specified files. This calls the
5438`chmod' program, so you can describe the desired mode change with any
5439argument that `chmod' would handle.
5440
5441**** `G' changes the group of the specified files.
5442
5443**** `O' changes the owner of the specified files. (On normal systems,
5444only the superuser can do this.)
5445
5446The variable `dired-chown-program' specifies the name of the
5447program to use to do the work (different systems put `chown' in
5448different places.
5449
5450**** `Z' compresses or uncompresses the specified files.
5451
5452**** `L' loads the specified Emacs Lisp files.
5453
5454**** `B' byte compiles the specified Emacs Lisp files.
5455
5456**** `P' prints the specified files. It uses the variables
5457`lpr-command' and `lpr-switches' just as `lpr-file' does.
5458
5459*** Shell Commands in Dired
5460
5461`!' reads a shell command string in the minibuffer and runs the shell
5462command on all the specified files. There are two ways of applying a
5463shell command to multiple files:
5464
5465- If you use `*' in the command, then the shell command runs just
5466once, with the list of file names substituted for the `*'.
5467
5468Thus, `! tar cf foo.tar * RET' runs `tar' on the entire list of file
5469names, putting them into one tar file `foo.tar'. The file names are
5470inserted in the order that they appear in the Dired buffer.
5471
5472- If the command string doesn't contain `*', then it runs once for
5473each file, with the file name attached at the end. For example, `!
5474uudecode RET' runs `uudecode' on each file.
5475
5476To run the shell command once for each file but without being limited
5477to putting the file name inserted in the middle, use a shell loop.
5478For example, this shell command would run `uuencode' on each of the
5479specified files, writing the output into a corresponding `.uu' file:
5480
5481 for file in *; uuencode $file $file >$file.uu; done
5482
5483The working directory for the shell command is the top level directory
5484of the Dired buffer.
5485
5486*** Regular Expression File Name Substitution
5487
5488**** `% m REGEXP RET' marks all files whose names match the regular
5489expression REGEXP.
5490
5491Only the non-directory part of the file name is used in matching. Use
5492`^' and `$' to anchor matches. Exclude subdirs by hiding them.
5493
5494**** `% d REGEXP RET' flags for deletion all files whose names match
5495the regular expression REGEXP.
5496
5497**** `% R', `% C', `% H', `% S'
5498
5499These four commands rename, copy, make hard links and make soft links,
5500in each case computing the new name by regular expression substitution
5501from the name of the old file. They effectively perform
5502`query-replace-regexp' on the selected file names in the Dired buffer.
5503
5504The commands read two arguments: a regular expression, and a
5505substitution pattern. Each selected file name is matched against the
5506regular expression, and then the part which matched is replaced with
5507the substitution pattern. You can use `\&' and `\DIGIT' in the
5508substitution pattern to refer to all or part of the old file name.
5509
5510If the regular expression matches more than once in a file name,
5511only the first match is replaced.
5512
5513Normally, the replacement process does not consider the directory names;
5514it operates on the file name within the directory. If you specify a
5515prefix argument of zero, then replacement affects entire file name.
5516
5517To apply the command to all files matching the same regexp that you
5518use in the command, mark those files with `% m REGEXP RET', then use
5519the same regular expression in `% R'. To make this easier, `% R' uses
5520as a default the last regular expression specified in a `%' command.
5521
5522*** Dired Case Conversion
5523
5524**** `% u' renames each of the selected files to an upper case name.
5525
5526**** `% l' renames each of the selected files to a lower case name.
5527
5528*** File Comparison with Dired
5529
5530**** `=' compares the current file with another file (the file at the
5531mark), by running the `diff' program. The file at the mark is given
5532to `diff' first.
5533
5534**** `M-=' compares the current file with its backup file. If there
5535are several numerical backups, it uses the most recent one. If this
5536file is a backup, it is compared with its original.
5537
5538The backup file is the first file given to `diff'.
5539
5540*** Subdirectories in Dired
5541
5542You can display more than one directory in one Dired buffer.
5543The simplest way to do this is to specify the options `-lR' for
5544running `ls'. That produces a recursive directory listing showing
5545all subdirectories, all within the same Dired buffer.
5546
5547You can also insert the contents of a particular subdirectory with the
5548`i' command. Use this command on the line that describes a file which
5549is a directory. Inserted subdirectory contents follow the top-level
5550directory of the Dired buffer, just as they do in `ls -lR' output.
5551
5552If the subdirectory's contents are already present in the buffer, the
5553`i' command just moves to it (type `l' to refresh it). It sets the
5554Emacs mark before moving, so C-x C-x takes you back to the old
5555position in the buffer.
5556
5557When you have subdirectories in the Dired buffer, you can use the page
5558motion commands C-x [ and C-x ] to move by entire directories.
5559
5560The following commands move up and down in the tree of directories
5561in one Dired buffer:
5562
5563**** C-M-u Go up to the parent directory's headerline.
5564
5565**** C-M-d Go down in the tree, to the first subdirectory's
5566headerline.
5567
5568**** C-M-n Go to next subdirectory headerline, regardless of level.
5569
5570**** C-M-p Go to previous subdirectory headerline, regardless of
5571level.
5572
5573*** Hiding Subdirectories
5574
5575"Hiding" a subdirectory means to make it invisible, except for its
5576headerline. Files inside a hidden subdirectory are never considered
5577by Dired. For example, the commands to operate on marked files ignore
5578files in hidden directories even if they are marked.
5579
5580**** `$' hides or unhides the current subdirectory and move to next
5581subdirectory. A prefix argument serves as a repeat count.
5582
5583**** `M-$' hides all subdirectories, leaving only their header lines.
5584Or, if at least one subdirectory is currently hidden, it makes
5585everything visible again. You can use this command to get an overview
5586in very deep directory trees or to move quickly to subdirectories far
5587away.
5588
5589*** Editing the Dired Buffer
5590
5591**** `l' updates the specified files in a Dired buffer. This means
5592reading their current status from the file system and changing the
5593buffer to reflect it properly.
5594
5595If you use this command on a subdirectory header line, it updates the
5596contents of the subdirectory.
5597
5598**** `g' updates the entire contents of the Dired buffer. It preserves
5599all marks except for those on files that have vanished. Hidden
5600subdirectories are updated but remain hidden.
5601
5602**** `k' kills all marked lines (not the files). With a prefix
5603argument, it kills that many lines starting with the current line.
5604
5605This command does not delete files; it just deletes text from the Dired
5606buffer.
5607
5608If you kill the line for a file that is a directory, then its contents
5609are also deleted from the buffer. Typing `C-u k' on the header line
5610for a subdirectory is another way to delete a subdirectory from the
5611Dired buffer.
5612
5613*** `find' and Dired.
5614
5615To search for files with names matching a wildcard pattern use
5616`find-name-dired'. Its arguments are DIRECTORY and
5617PATTERN. It selects all the files in DIRECTORY or its
5618subdirectories whose own names match PATTERN.
5619
5620The files thus selected are displayed in a Dired buffer in which the
5621ordinary Dired commands are available.
5622
5623If you want to test the contents of files, rather than their names, use
5624`find-grep-dired'. This command takes two minibuffer arguments,
5625DIRECTORY and REGEXP; it selects all the files in
5626DIRECTORY or its subdirectories that contain a match for
5627REGEXP. It works by running `find' and `grep'.
5628
5629The most general command in this series is `find-dired', which lets
5630you specify any condition that `find' can test. It takes two
5631minibuffer arguments, DIRECTORY and FIND-ARGS; it runs `find' in
5632DIRECTORY with using FIND-ARGS as the arguments to `find' specifying
5633which files to accept. To use this command, you need to know how to
5634use `find'.
5635\f
5636** New amusements and novelties.
5637
5638*** `M-x mpuz' displays a multiplication puzzle, in which each letter
5639stands for a digit, and you must determine which digit. The puzzles
5640are determined randomly, so they are always different.
5641
5642*** `M-x gomoku' plays the game Gomoku with you. It needs more work.
5643
5644*** `M-x spook' adds a line of randomly chosen keywords to an outgoing
5645mail message. The keywords are chosen from a list of words that
5646suggest you are discussing something subversive.
5647
5648The idea is that the NSA reads all messages that contain keywords
5649suggesting they might be interested, and that adding these lines could
5650help to overload them. I would guess that they have modified their
5651program by now to ignore these lines of keywords; perhaps the program
5652can be updated if some clever hacker can determine what criterion they
5653actually use now.
5654\f
5655** Installation changes
5656
5657*** The configure script has been provided to help with the
5658installation process. It takes the place of editing the Makefiles and
5659src/config.h, and can often guess the appropriate operating system to
5660use for a particular machine type. See INSTALL for a more detailed
5661description of the steps required for installation.
5662
5663*** If you create a Lisp file named `site-start.el', Emacs loads the file
5664whenever it starts up.
5665
5666*** A new Lisp variable, `data-directory', indicates the directory
5667containing the DOC file, tutorial, copying agreement, and other
5668familiar `etc' files. The value of `data-directory' is a simple string.
5669The default should be set at build time, and the person installing
5670Emacs should place all the data files in this directory. The `help.el'
5671functions that look for docstrings and information files check this
5672variable. All Emacs Lisp packages should also be coded so that they
5673refer to `data-directory' to find data files.
5674
5675*** The PURESIZE definition has been moved from config.h to its own
5676file, puresize.h. Since almost every file of C source in the
5677distribution depends on config.h, but only alloc.c and data.c depend
5678on puresize.h, this means that changing the value of PURESIZE causes
5679only those two files to be recompiled.
5680
5681*** The makefile at the top of the Emacs source tree now supports a
5682`dist' target, which creates a compressed tar file suitable for
5683distribution, using the contents of the source tree. Object files,
5684old file versions, executables, DOC files, and other
5685architecture-specific or easy-to-recreate files are not included in
5686the tar file.
5687\f
975f82c9 5688* For older news, see the file ONEWS.4. For Lisp changes in (the first
a933dad1
DL
5689* release of) Emacs 19, see the file LNEWS.
5690
5691----------------------------------------------------------------------
5692Copyright information:
5693
5694Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
5695
5696 Permission is granted to anyone to make or distribute verbatim copies
5697 of this document as received, in any medium, provided that the
5698 copyright notice and this permission notice are preserved,
5699 thus giving the recipient permission to redistribute in turn.
5700
5701 Permission is granted to distribute modified versions
5702 of this document, or of portions of it,
5703 under the above conditions, provided also that they
5704 carry prominent notices stating who last changed them.
5705\f
5706Local variables:
5707mode: outline
5708paragraph-separate: "[ \f]*$"
5709end:
5710