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