Commit | Line | Data |
---|---|---|
a933dad1 DL |
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 | ||
ff9ab414 | 5 | For older news, see the file ONEWS.4. |
a933dad1 DL |
6 | \f |
7 | * Editing Changes in Emacs 19.30. | |
8 | ||
9 | ** Be sure to recompile your byte-compiled Emacs Lisp files | |
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), | |
ff9ab414 | 257 | VC searches for RCS headers in working files (like `$Id: ONEWS,v 1.3 2000/11/02 13:34:50 gerd Exp $') and |
a933dad1 DL |
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 | \f | |
519 | * Lisp changes in Emacs 19.30. | |
520 | ||
521 | ** New Data Types | |
522 | ||
523 | *** There is a new data type called a char-table which is an array | |
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 | \f | |
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 | \f | |
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 | \f | |
1400 | * Lisp-Level Changes in Emacs 19.29 | |
1401 | ||
1402 | ** Basic Lisp | |
1403 | ||
1404 | *** The range of integer values is now at least 2**28 on all machines. | |
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 | \f | |
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 | \f | |
2150 | * User Editing Changes in Emacs 19.26 | |
2151 | ||
2152 | ** In the X toolkit version, if you click on a menu bar item and | |
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 | \f | |
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 | \f | |
2273 | * Changes in cc-mode.el in Emacs 19.26: | |
2274 | ||
2275 | ** A new syntactic symbol has been added: substatement-open. It | |
2276 | defines the open brace of a substatement block. These used to get: | |
2277 | ((block-open ...) (substatement . ...)). | |
2278 | ||
2279 | Non-block substatement lines still get just ((substatement . ...)) | |
2280 | ||
2281 | Note that the custom indent function c-adaptive-block-open has been | |
2282 | removed as obsolete. | |
2283 | ||
2284 | ** You can now specify the `hanginess' of closing braces. See | |
2285 | c-hanging-braces-alist. | |
2286 | ||
2287 | ** Recognizes try and catch blocks in C++. They are given the | |
2288 | substatement syntactic symbol. | |
2289 | ||
2290 | ** should be generally more forgiving about non-GNU standard top-level | |
2291 | construct definition styles (i.e. where the function/class/struct | |
2292 | opening brace does not start in column zero). | |
2293 | ||
2294 | If you hang the braces that open a top-level construct on the right | |
2295 | edge, and you find you still need to define defun-open-prompt (Emacs | |
2296 | 19) please let me know. Note that there may still be performance | |
2297 | issues related to non-column zero opening braces. | |
2298 | ||
2299 | ** c-macro-expand is put on C-c C-e | |
2300 | ||
2301 | ** New style: "Default". Resets indentation to those shipped with | |
2302 | cc-mode.el. | |
2303 | ||
2304 | ** internal defun c-indent-via-language-element has been renamed | |
2305 | c-indent-line for compatibility with c-mode.el and awk-mode. | |
2306 | ||
2307 | ** new buffer-local variable c-comment-start-regexp for (potential) | |
2308 | flexibility in adding new modes based on cc-mode.el | |
2309 | \f | |
2310 | * Changes in Emacs 19.25 | |
2311 | ||
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 | \f | |
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 | \f | |
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 | \f | |
2636 | * Changes in CC mode in Emacs 19.23. | |
2637 | ||
2638 | `cc-mode' provides ANSI C, K&R C, and ARM C++ language editing. It | |
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 | \f | |
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 | \f | |
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 | \f | |
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 | \f | |
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 | \f | |
3494 | * Emacs Lisp programming changes in Emacs 19.20. | |
3495 | ||
3496 | ** A new function `remove-hook' is now used to remove a hook that you might | |
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 | \f | |
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 | \f | |
3703 | * Changes in version 19.18. | |
3704 | ||
3705 | ** Typing C-z in an iconified Emacs frame now deiconifies it. | |
3706 | ||
3707 | ** hilit19 is a new library for automatic highlighting of parts of the | |
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 | \f | |
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 | \f | |
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 | \f | |
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 | \f | |
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 | \f | |
4247 | * Changes in version 19.13. | |
4248 | ||
4249 | ** Magic file names can now handle the `load' operation. | |
4250 | ||
4251 | ** Bibtex mode now sets up special entries in the menu bar. | |
4252 | ||
4253 | ** The incremental search commands C-w and C-y, which copy text from | |
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 | \f | |
4265 | * Changes in version 19.12. | |
4266 | ||
4267 | ** You can now make many of the sort commands ignore case by setting | |
4268 | `sort-fold-case' to a non-nil value. | |
4269 | \f | |
4270 | * Changes in version 19.11. | |
4271 | ||
4272 | ** Supercite is installed. | |
4273 | ||
4274 | ** `write-file-hooks' functions that return non-nil are responsible | |
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 | \f | |
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 | \f | |
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 | \f | |
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 | \f | |
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 | \f | |
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 | \f | |
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 | \f | |
975f82c9 | 5688 | * For older news, see the file ONEWS.4. For Lisp changes in (the first |
a933dad1 DL |
5689 | * release of) Emacs 19, see the file LNEWS. |
5690 | ||
5691 | ---------------------------------------------------------------------- | |
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 | \f | |
5706 | Local variables: | |
5707 | mode: outline | |
5708 | paragraph-separate: "[ \f]*$" | |
5709 | end: | |
5710 |