Commit | Line | Data |
---|---|---|
a933dad1 | 1 | GNU Emacs NEWS -- history of user-visible changes. 26-Mar-1986 |
5b87ad55 | 2 | |
bb65542c | 3 | Copyright (C) 1985, 1986, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. |
5b87ad55 GM |
4 | See the end of the file for license conditions. |
5 | ||
a933dad1 | 6 | |
9a21d88b KS |
7 | This file is about changes in emacs versions 1 through 17. |
8 | ||
9 | ||
a933dad1 DL |
10 | \f |
11 | Changes in Emacs 17 | |
12 | ||
13 | * Frustrated? | |
14 | ||
15 | Try M-x doctor. | |
16 | ||
17 | * Bored? | |
18 | ||
19 | Try M-x hanoi. | |
20 | ||
21 | * Brain-damaged? | |
22 | ||
23 | Try M-x yow. | |
24 | ||
25 | * Sun3, Tahoe, Apollo, HP9000s300, Celerity, NCR Tower 32, | |
26 | Sequent, Stride, Encore, Plexus and AT&T 7300 machines supported. | |
27 | ||
28 | The Tahoe, Sun3, Sequent and Celerity use 4.2. In regard to the | |
29 | Apollo, see the file APOLLO in this directory. NCR Tower32, | |
30 | HP9000s300, Stride and Nu run forms of System V. System V rel 2 also | |
31 | works on Vaxes now. See etc/MACHINES. | |
32 | ||
33 | * System V Unix supported, including subprocesses. | |
34 | ||
35 | It should be possible now to bring up Emacs on a machine running | |
36 | mere unameliorated system V Unix with no major work; just possible bug | |
37 | fixes. But you can expect to find a handful of those on any machine | |
38 | that Emacs has not been run on before. | |
39 | ||
40 | * Berkeley 4.1 Unix supported. | |
41 | ||
42 | See etc/MACHINES. | |
43 | ||
44 | * Portable `alloca' provided. | |
45 | ||
46 | Emacs can now run on machines that do not and cannot support the library | |
47 | subroutine `alloca' in the canonical fashion, using an `alloca' emulation | |
48 | written in C. | |
49 | ||
50 | * On-line manual. | |
51 | ||
52 | Info now contains an Emacs manual, with essentially the same text | |
53 | as in the printed manual. | |
54 | ||
55 | The manual can now be printed with a standard TeX. | |
56 | ||
57 | Nicely typeset and printed copies of the manual are available | |
58 | from the Free Software Foundation. | |
59 | ||
60 | * Backup file version numbers. | |
61 | ||
62 | Emacs now supports version numbers in backup files. | |
63 | ||
64 | The first time you save a particular file in one editing session, | |
65 | the old file is copied or renamed to serve as a backup file. | |
66 | In the past, the name for the backup file was made by appending `~' | |
67 | to the end of the original file name. | |
68 | ||
69 | Now the backup file name can instead be made by appending ".~NN~" to | |
70 | the original file name, where NN stands for a numeric version. Each | |
71 | time this is done, the new version number is one higher than the | |
72 | highest previously used. | |
73 | ||
74 | Thus, the active, current file does not have a version number. | |
75 | Only the backups have them. | |
76 | ||
77 | This feature is controlled by the variable `version-control'. If it | |
78 | is `nil', as normally, then numbered backups are made only for files | |
79 | that already have numbered backups. Backup names with just `~' are | |
80 | used for files that have no numbered backups. | |
81 | ||
82 | If `version-control' is `never', then the backup file's name is | |
83 | made with just `~' in any case. | |
84 | ||
85 | If `version-control' is not `nil' or `never', numbered backups are | |
86 | made unconditionally. | |
87 | ||
88 | To prevent unlimited consumption of disk space, Emacs can delete | |
89 | old backup versions automatically. Generally Emacs keeps the first | |
90 | few backups and the latest few backups, deleting any in between. | |
91 | This happens every time a new backup is made. The two variables that | |
92 | control the deletion are `kept-old-versions' and `kept-new-versions'. | |
93 | Their values are, respectively, the number of oldest backups to keep | |
94 | and the number of newest ones to keep, each time a new backup is made. | |
95 | The value of `kept-new-versions' includes the backup just created. | |
96 | By default, both values are 2. | |
97 | ||
98 | If `trim-versions-without-asking' is non-`nil', the excess middle versions | |
99 | are deleted without a murmur. If it is `nil', the default, then you | |
100 | are asked whether the excess middle versions should really be deleted. | |
101 | ||
102 | Dired has a new command `.' which marks for deletion all but the latest | |
103 | and oldest few of every numeric series of backups. `kept-old-versions' | |
104 | controls the number of oldest versions to keep, and `dired-kept-versions' | |
105 | controls the number of latest versions to keep. A numeric argument to | |
106 | the `.' command, if positive, specifies the number of latest versions | |
107 | to keep, overriding `dired-kept-versions'. A negative argument specifies | |
108 | the number of oldest versions to keep, using minus the argument to override | |
109 | `kept-old-versions'. | |
110 | ||
111 | * Immediate conflict detection. | |
112 | ||
113 | Emacs now locks the files it is modifying, so that if | |
114 | you start to modify within Emacs a file that is being | |
115 | modified in another Emacs, you get an immediate warning. | |
116 | ||
117 | The warning gives you three choices: | |
118 | 1. Give up, and do not make any changes. | |
119 | 2. Make changes anyway at your own risk. | |
120 | 3. Make changes anyway, and record yourself as | |
121 | the person locking the file (instead of whoever | |
122 | was previously recorded.) | |
123 | ||
124 | Just visiting a file does not lock it. It is locked | |
125 | when you try to change the buffer that is visiting the file. | |
126 | Saving the file unlocks it until you make another change. | |
127 | ||
128 | Locking is done by writing a lock file in a special designated | |
129 | directory. If such a directory is not provided and told to | |
130 | Emacs as part of configuring it for your machine, the lock feature | |
131 | is turned off. | |
132 | ||
133 | * M-x recover-file. | |
134 | ||
135 | This command is used to get a file back from an auto-save | |
136 | (after a system crash, for example). It takes a file name | |
137 | as argument and visits that file, but gets the data from the | |
138 | file's last auto save rather than from the file itself. | |
139 | ||
140 | * M-x normal-mode. | |
141 | ||
142 | This command resets the current buffer's major mode and local | |
143 | variables to be as specified by the visit filename, the -*- line | |
144 | and/or the Local Variables: block at the end of the buffer. | |
145 | It is the same thing normally done when a file is first visited. | |
146 | ||
147 | * Echo area messages disappear shortly if minibuffer is in use. | |
148 | ||
149 | Any message in the echo area disappears after 2 seconds | |
150 | if the minibuffer is active. This allows the minibuffer | |
151 | to become visible again. | |
152 | ||
153 | * C-z on System V runs a subshell. | |
154 | ||
155 | On systems which do not allow programs to be suspended, the C-z command | |
156 | forks a subshell that talks directly to the terminal, and then waits | |
157 | for the subshell to exit. This gets almost the effect of suspending | |
158 | in that you can run other programs and then return to Emacs. However, | |
159 | you cannot log out from the subshell. | |
160 | ||
161 | * C-c is always a prefix character. | |
162 | ||
163 | Also, subcommands of C-c which are letters are always | |
164 | reserved for the user. No standard Emacs major mode | |
165 | defines any of them. | |
166 | ||
167 | * Picture mode C-c commands changed. | |
168 | ||
169 | The old C-c k command is now C-c C-w. | |
170 | The old C-c y command is now C-c C-x. | |
171 | ||
172 | * Shell mode commands changed. | |
173 | ||
174 | All the special commands of Shell mode are now moved onto | |
175 | the C-c prefix. Most are not changed aside from that. | |
176 | Thus, the old Shell mode C-c command (kill current job) | |
177 | is now C-c C-c; the old C-z (suspend current job) is now C-c C-z, | |
178 | etc. | |
179 | ||
180 | The old C-x commands are now C-c commands. C-x C-k (kill output) | |
181 | is now C-c C-o, and C-x C-v (show output) is now C-c C-r. | |
182 | ||
183 | The old M-= (copy previous input) command is now C-c C-y. | |
184 | ||
185 | * Shell mode recognizes aliases for `pushd', `popd' and `cd'. | |
186 | ||
187 | Shell mode now uses the variable `shell-pushd-regexp' as a | |
188 | regular expression to recognize any command name that is | |
189 | equivalent to a `pushd' command. By default it is set up | |
190 | to recognize just `pushd' itself. If you use aliases for | |
191 | `pushd', change the regexp to recognize them as well. | |
192 | ||
193 | There are also `shell-popd-regexp' to recognize commands | |
194 | with the effect of a `popd', and `shell-cd-regexp' to recognize | |
195 | commands with the effect of a `cd'. | |
196 | ||
197 | * "Exit" command in certain modes now C-c C-c. | |
198 | ||
199 | These include electric buffer menu mode, electric command history | |
200 | mode, Info node edit mode, and Rmail edit mode. In all these | |
201 | modes, the command to exit used to be just C-c. | |
202 | ||
203 | * Outline mode changes. | |
204 | ||
205 | Lines that are not heading lines are now called "body" lines. | |
206 | The command `hide-text' is renamed to `hide-body'. | |
207 | The key M-H is renamed to C-c C-h. | |
208 | The key M-S is renamed to C-c C-s. | |
209 | The key M-s is renamed to C-c C-i. | |
210 | ||
211 | Changes of line visibility are no longer undoable. As a result, | |
212 | they no longer use up undo memory and no longer interfere with | |
213 | undoing earlier commands. | |
214 | ||
215 | * Rmail changes. | |
216 | ||
217 | The s and q commands now both expunge deleted messages before saving; | |
218 | use C-x C-s to save without expunging. | |
219 | ||
220 | The u command now undeletes the current message if it is deleted; | |
221 | otherwise, it backs up as far as necessary to reach a deleted message, | |
222 | and undeletes that one. The u command in the summary behaves likewise, | |
223 | but considers only messages listed in the summary. The M-u command | |
224 | has been eliminated. | |
225 | ||
226 | The o and C-o keys' meanings are interchanged. | |
227 | o now outputs to an Rmail file, and C-o to a Unix mail file. | |
228 | ||
229 | The F command (rmail-find) is renamed to M-s (rmail-search). | |
230 | Various new commands and features exist; see the Emacs manual. | |
231 | ||
232 | * Local bindings described first in describe-bindings. | |
233 | ||
234 | * [...], {...} now balance in Fundamental mode. | |
235 | ||
236 | * Nroff mode and TeX mode. | |
237 | ||
238 | The are two new major modes for editing nroff input and TeX input. | |
239 | See the Emacs manual for full information. | |
240 | ||
241 | * New C indentation style variable `c-brace-imaginary-offset'. | |
242 | ||
243 | The value of `c-brace-imaginary-offset', normally zero, controls the | |
244 | indentation of a statement inside a brace-group where the open-brace | |
245 | is not the first thing on a line. The value says where the open-brace | |
246 | is imagined to be, relative to the first nonblank character on the line. | |
247 | ||
248 | * Dired improvements. | |
249 | ||
250 | Dired now normally keeps the cursor at the beginning of the file name, | |
251 | not at the beginning of the line. The most used motion commands are | |
252 | redefined in Dired to position the cursor this way. | |
253 | ||
254 | `n' and `p' are now equivalent in dired to `C-n' and `C-p'. | |
255 | ||
256 | If any files to be deleted cannot be deleted, their names are | |
257 | printed in an error message. | |
258 | ||
259 | If the `v' command is invoked on a file which is a directory, | |
260 | dired is run on that directory. | |
261 | ||
262 | * `visit-tag-table' renamed `visit-tags-table'. | |
263 | ||
264 | This is so apropos of `tags' finds everything you need to | |
265 | know about in connection with Tags. | |
266 | ||
267 | * `mh-e' library uses C-c as prefix. | |
268 | ||
269 | All the special commands of `mh-rmail' now are placed on a | |
270 | C-c prefix rather than on the C-x prefix. This is for | |
271 | consistency with other special modes with their own commands. | |
272 | ||
273 | * M-$ or `spell-word' checks word before point. | |
274 | ||
275 | It used to check the word after point. | |
276 | ||
277 | * Quitting during autoloading no longer causes trouble. | |
278 | ||
279 | Now, when a file is autoloaded, all function redefinitions | |
280 | and `provide' calls are recorded and are undone if you quit | |
281 | before the file is finished loading. | |
282 | ||
283 | As a result, it no longer happens that some of the entry points | |
284 | which are normally autoloading have been defined already, but the | |
285 | entire file is not really present to support them. | |
286 | ||
287 | * `else' can now be indented correctly in C mode. | |
288 | ||
289 | TAB in C mode now knows which `if' statement an `else' matches | |
290 | up with, and can indent the `else' correctly under the `if', | |
291 | even if the `if' contained such things as another `if' statement, | |
292 | or a `while' or `for' statement, with no braces around it. | |
293 | ||
294 | * `batch-byte-compile' | |
295 | ||
296 | Runs byte-compile-file on the files specified on the command line. | |
297 | All the rest of the command line arguments are taken as files to | |
298 | compile (or, if directories, to do byte-recompile-directory on). | |
299 | Must be used only with -batch, and kills emacs on completion. | |
300 | Each file will be processed even if an error occurred previously. | |
301 | For example, invoke `emacs -batch -f batch-byte-compile *.el'. | |
302 | ||
303 | * `-batch' changes. | |
304 | ||
305 | `-batch' now implies `-q': no init file is loaded by Emacs when | |
306 | `-batch' is used. Also, no `term/TERMTYPE.el' file is loaded. Auto | |
307 | saving is not done except in buffers in which it is explicitly | |
308 | requested. Also, many echo-area printouts describing what is going on | |
309 | are inhibited in batch mode, so that the only output you get is the | |
310 | output you program specifically. | |
311 | ||
312 | One echo-area message that is not suppressed is the one that says | |
313 | that a file is being loaded. That is because you can prevent this | |
314 | message by passing `t' as the third argument to `load'. | |
315 | ||
316 | * Display of search string in incremental search. | |
317 | ||
318 | Now, when you type C-s or C-r to reuse the previous search | |
319 | string, that search string is displayed immediately in the echo area. | |
320 | ||
321 | Three dots are displayed after the search string while search | |
322 | is actually going on. | |
323 | ||
324 | * View commands. | |
325 | ||
326 | The commands C-x ], C-x [, C-x /, C-x j and C-x o are now | |
327 | available inside `view-buffer' and `view-file', with their | |
328 | normal meanings. | |
329 | ||
330 | * Full-width windows preferred. | |
331 | ||
332 | The ``other-window'' commands prefer other full width windows, | |
333 | and will split only full width windows. | |
334 | ||
335 | * M-x rename-file can copy if necessary. | |
336 | ||
337 | When used between different file systems, since actual renaming does | |
338 | not work, the old file will be copied and deleted. | |
339 | ||
340 | * Within C-x ESC, you can pick the command to repeat. | |
341 | ||
342 | While editing a previous command to be repeated, inside C-x ESC, | |
343 | you can now use the commands M-p and M-n to pick an earlier or | |
344 | later command to repeat. M-n picks the next earlier command | |
345 | and M-p picks the next later one. The new command appears in | |
346 | the minibuffer, and you can go ahead and edit it, and repeat it | |
347 | when you exit the minibuffer. | |
348 | ||
349 | Using M-n or M-p within C-x ESC is like having used a different | |
350 | numeric argument when you ran C-x ESC in the first place. | |
351 | ||
352 | The command you finally execute using C-x ESC is added to the | |
353 | front of the command history, unless it is identical with the | |
354 | first thing in the command history. | |
355 | ||
356 | * Use C-c C-c to exit from editing within Info. | |
357 | ||
358 | It used to be C-z for this. Somehow this use of C-z was | |
359 | left out when all the others were moved. The intention is that | |
360 | C-z should always suspend Emacs. | |
361 | ||
362 | * Default arg to C-x < and C-x > now window width minus 2. | |
363 | ||
364 | These commands, which scroll the current window horizontally | |
365 | by a specified number of columns, now scroll a considerable | |
366 | distance rather than a single column if used with no argument. | |
367 | ||
368 | * Auto Save Files Deleted. | |
369 | ||
370 | The default value of `delete-auto-save-files' is now `t', so that | |
371 | when you save a file for real, its auto save file is deleted. | |
372 | ||
373 | * Rnews changes. | |
374 | ||
375 | The N, P and J keys in Rnews are renamed to M-n, M-p and M-j. | |
376 | These keys move among newsgroups. | |
377 | ||
378 | The n and p keys for moving sequentially between news articles now | |
379 | accept repeat count arguments, and the + and - keys, made redundant by | |
380 | this change, are eliminated. | |
381 | ||
382 | The s command for outputting the current article to a file | |
383 | is renamed as o, to be compatible with Rmail. | |
384 | ||
385 | * Sendmail changes. | |
386 | ||
387 | If you have a ~/.mailrc file, Emacs searches it for mailing address | |
388 | aliases, and these aliases are expanded when you send mail in Emacs. | |
389 | ||
390 | Fcc fields can now be used in the headers in the *mail* buffer | |
391 | to specify files in which copies of the message should be put. | |
392 | The message is written into those files in Unix mail file format. | |
393 | The message as sent does not contain any Fcc fields in its header. | |
394 | You can use any number of Fcc fields, but only one file name in each one. | |
395 | The variable `mail-archive-file-name', if non-`nil', can be a string | |
396 | which is a file name; an Fcc to that file will be inserted in every | |
397 | message when you begin to compose it. | |
398 | ||
399 | A new command C-c q now exists in Mail mode. It fills the | |
400 | paragraphs of an old message that had been inserted with C-c y. | |
401 | ||
402 | When the *mail* buffer is put in Mail mode, text-mode-hook | |
403 | is now run in addition to mail-mode-hook. text-mode-hook | |
404 | is run first. | |
405 | ||
406 | The new variable `mail-header-separator' now specifies the string | |
407 | to use on the line that goes between the headers and the message text. | |
408 | By default it is still "--text follows this line--". | |
409 | ||
410 | * Command history truncated automatically. | |
411 | ||
412 | Just before each garbage collection, all but the last 30 elements | |
413 | of the command history are discarded. | |
9a21d88b | 414 | |
a933dad1 DL |
415 | \f |
416 | Incompatible Lisp Programming Changes in Emacs 17 | |
417 | ||
418 | * `"e' no longer supported. | |
419 | ||
420 | This feature, which allowed Lisp functions to take arguments | |
421 | that were not evaluated, has been eliminated, because it is | |
422 | inescapably hard to make the compiler work properly with such | |
423 | functions. | |
424 | ||
425 | You should use macros instead. A simple way to change any | |
426 | code that uses `"e' is to replace | |
427 | ||
428 | (defun foo ("e x y z) ... | |
429 | ||
430 | with | |
431 | ||
432 | (defmacro foo (x y z) | |
433 | (list 'foo-1 (list 'quote x) (list 'quote y) (list 'quote z))) | |
434 | ||
435 | (defun foo-1 (x y z) ... | |
436 | ||
437 | * Functions `region-to-string' and `region-around-match' removed. | |
438 | ||
439 | These functions were made for compatibility with Gosling Emacs, but it | |
440 | turns out to be undesirable to use them in GNU Emacs because they use | |
441 | the mark. They have been eliminated from Emacs proper, but are | |
442 | present in mlsupport.el for the sake of converted mocklisp programs. | |
443 | ||
444 | If you were using `region-to-string', you should instead use | |
445 | `buffer-substring'; then you can pass the bounds as arguments and | |
446 | can avoid setting the mark. | |
447 | ||
448 | If you were using `region-around-match', you can use instead | |
449 | the two functions `match-beginning' and `match-end'. These give | |
450 | you one bound at a time, as a numeric value, without changing | |
451 | point or the mark. | |
452 | ||
453 | * Function `function-type' removed. | |
454 | ||
455 | This just appeared not to be very useful. It can easily be written in | |
456 | Lisp if you happen to want it. Just use `symbol-function' to get the | |
457 | function definition of a symbol, and look at its data type or its car | |
458 | if it is a list. | |
459 | ||
460 | * Variable `buffer-number' removed. | |
461 | ||
462 | You can still use the function `buffer-number' to find out | |
463 | a buffer's unique number (assigned in order of creation). | |
464 | ||
465 | * Variable `executing-macro' renamed `executing-kbd-macro'. | |
466 | ||
467 | This variable is the currently executing keyboard macro, as | |
468 | a string, or `nil' when no keyboard macro is being executed. | |
469 | ||
470 | * Loading term/$TERM. | |
471 | ||
472 | The library term/$TERM (where $TERM get replaced by your terminal | |
473 | type), which is done by Emacs automatically when it starts up, now | |
474 | happens after the user's .emacs file is loaded. | |
475 | ||
476 | In previous versions of Emacs, these files had names of the form | |
477 | term-$TERM; thus, for example, term-vt100.el, but now they live | |
478 | in a special subdirectory named term, and have names like | |
479 | term/vt100.el. | |
480 | ||
481 | * `command-history' format changed. | |
482 | ||
483 | The elements of this list are now Lisp expressions which can | |
484 | be evaluated directly to repeat a command. | |
485 | ||
486 | * Unused editing commands removed. | |
487 | ||
488 | The functions `forward-to-word', `backward-to-word', | |
489 | `upcase-char', `mark-beginning-of-buffer' and `mark-end-of-buffer' | |
177c0ea7 | 490 | have been removed. Their definitions can be found in file |
a933dad1 | 491 | lisp/unused.el if you need them. |
9a21d88b | 492 | |
a933dad1 DL |
493 | \f |
494 | Upward Compatible Lisp Programming Changes in Emacs 17 | |
495 | ||
496 | * You can now continue after errors and quits. | |
497 | ||
498 | When the debugger is entered because of a C-g, due to | |
499 | a non-`nil' value of `debug-on-quit', the `c' command in the debugger | |
500 | resumes execution of the code that was running when the quit happened. | |
501 | Use the `q' command to go ahead and quit. | |
502 | ||
503 | The same applies to some kinds of errors, but not all. Errors | |
504 | signaled with the Lisp function `signal' can be continued; the `c' | |
505 | command causes `signal' to return. The `r' command causes `signal' to | |
506 | return the value you specify. The `c' command is equivalent to `r' | |
507 | with the value `nil'. | |
508 | ||
509 | For a `wrong-type-argument' error, the value returned with the `r' | |
510 | command is used in place of the invalid argument. If this new value | |
511 | is not valid, another error occurs. | |
512 | ||
513 | Errors signaled with the function `error' cannot be continued. | |
514 | If you try to continue, the error just happens again. | |
515 | ||
516 | * `dot' renamed `point'. | |
517 | ||
518 | The word `dot' has been replaced with `point' in all | |
519 | function and variable names, including: | |
520 | ||
521 | point, point-min, point-max, | |
522 | point-marker, point-min-marker, point-max-marker, | |
523 | window-point, set-window-point, | |
524 | point-to-register, register-to-point, | |
525 | exchange-point-and-mark. | |
526 | ||
527 | The old names are still supported, for now. | |
528 | ||
529 | * `string-match' records position of end of match. | |
530 | ||
531 | After a successful call to `string-match', `(match-end 0)' will | |
532 | return the index in the string of the first character after the match. | |
533 | Also, `match-begin' and `match-end' with nonzero arguments can be | |
534 | used to find the indices of beginnings and ends of substrings matched | |
535 | by subpatterns surrounded by parentheses. | |
536 | ||
537 | * New function `insert-before-markers'. | |
538 | ||
539 | This function is just like `insert' except in the handling of any | |
540 | relocatable markers that are located at the point of insertion. | |
541 | With `insert', such markers end up pointing before the inserted text. | |
542 | With `insert-before-markers', they end up pointing after the inserted | |
543 | text. | |
544 | ||
545 | * New function `copy-alist'. | |
546 | ||
547 | This function takes one argument, a list, and makes a disjoint copy | |
548 | of the alist structure. The list itself is copied, and each element | |
549 | that is a cons cell is copied, but the cars and cdrs of elements | |
550 | remain shared with the original argument. | |
551 | ||
552 | This is what it takes to get two alists disjoint enough that changes | |
553 | in one do not change the result of `assq' on the other. | |
554 | ||
555 | * New function `copy-keymap'. | |
556 | ||
557 | This function takes a keymap as argument and returns a new keymap | |
558 | containing initially the same bindings. Rebindings in either one of | |
559 | them will not alter the bindings in the other. | |
560 | ||
561 | * New function `copy-syntax-table'. | |
562 | ||
563 | This function takes a syntax table as argument and returns a new | |
564 | syntax table containing initially the same syntax settings. Changes | |
565 | in either one of them will not alter the other. | |
566 | ||
567 | * Randomizing the random numbers. | |
568 | ||
569 | `(random t)' causes the random number generator's seed to be set | |
570 | based on the current time and Emacs's process id. | |
571 | ||
572 | * Third argument to `modify-syntax-entry'. | |
573 | ||
574 | The optional third argument to `modify-syntax-entry', if specified | |
575 | should be a syntax table. The modification is made in that syntax table | |
576 | rather than in the current syntax table. | |
577 | ||
578 | * New function `run-hooks'. | |
579 | ||
580 | This function takes any number of symbols as arguments. | |
581 | It processes the symbols in order. For each symbol which | |
582 | has a value (as a variable) that is non-nil, the value is | |
583 | called as a function, with no arguments. | |
584 | ||
585 | This is useful in major mode commands. | |
586 | ||
587 | * Second arg to `switch-to-buffer'. | |
588 | ||
589 | If this function is given a non-`nil' second argument, then the | |
590 | selection being done is not recorded on the selection history. | |
591 | The buffer's position in the history remains unchanged. This | |
592 | feature is used by the view commands, so that the selection history | |
593 | after exiting from viewing is the same as it was before. | |
594 | ||
595 | * Second arg to `display-buffer' and `pop-to-buffer'. | |
596 | ||
597 | These two functions both accept an optional second argument which | |
598 | defaults to `nil'. If the argument is not `nil', it means that | |
599 | another window (not the selected one) must be found or created to | |
600 | display the specified buffer in, even if it is already shown in | |
601 | the selected window. | |
602 | ||
603 | This feature is used by `switch-to-buffer-other-window'. | |
604 | ||
605 | * New variable `completion-ignore-case'. | |
606 | ||
607 | If this variable is non-`nil', completion allows strings | |
608 | in different cases to be considered matching. The global value | |
609 | is `nil' | |
610 | ||
611 | This variable exists for the sake of commands that are completing | |
612 | an argument in which case is not significant. It is possible | |
613 | to change the value globally, but you might not like the consequences | |
614 | in the many situations (buffer names, command names, file names) | |
615 | where case makes a difference. | |
616 | ||
617 | * Major modes related to Text mode call text-mode-hook, then their own hooks. | |
618 | ||
619 | For example, turning on Outline mode first calls the value of | |
620 | `text-mode-hook' as a function, if it exists and is non-`nil', | |
621 | and then does likewise for the variable `outline-mode-hook'. | |
622 | ||
623 | * Defining new command line switches. | |
624 | ||
625 | You can define a new command line switch in your .emacs file | |
626 | by putting elements on the value of `command-switch-alist'. | |
627 | Each element of this list should look like | |
628 | (SWITCHSTRING . FUNCTION) | |
629 | where SWITCHSTRING is a string containing the switch to be | |
630 | defined, such as "-foo", and FUNCTION is a function to be called | |
631 | if such an argument is found in the command line. FUNCTION | |
632 | receives the command line argument, a string, as its argument. | |
633 | ||
634 | To implement a switch that uses up one or more following arguments, | |
635 | use the fact that the remaining command line arguments are kept | |
636 | as a list in the variable `command-line-args'. FUNCTION can | |
637 | examine this variable, and do | |
638 | (setq command-line-args (cdr command-line-args) | |
639 | to "use up" an argument. | |
640 | ||
641 | * New variable `load-in-progress'. | |
642 | ||
643 | This variable is non-`nil' when a file of Lisp code is being read | |
644 | and executed by `load'. | |
645 | ||
646 | * New variable `print-length'. | |
647 | ||
648 | The value of this variable is normally `nil'. It may instead be | |
649 | a number; in that case, when a list is printed by `prin1' or | |
650 | `princ' only that many initial elements are printed; the rest are | |
651 | replaced by `...'. | |
652 | ||
653 | * New variable `find-file-not-found-hook'. | |
654 | ||
655 | If `find-file' or any of its variants is used on a nonexistent file, | |
656 | the value of `find-file-not-found-hook' is called (if it is not `nil') | |
657 | with no arguments, after creating an empty buffer. The file's name | |
658 | can be found as the value of `buffer-file-name'. | |
659 | ||
660 | * Processes without buffers. | |
661 | ||
662 | In the function `start-process', you can now specify `nil' as | |
663 | the process's buffer. You can also set a process's buffer to `nil' | |
664 | using `set-process-buffer'. | |
665 | ||
666 | The reason you might want to do this is to prevent the process | |
667 | from being killed because any particular buffer is killed. | |
668 | When a process has a buffer, killing that buffer kills the | |
669 | process too. | |
670 | ||
671 | When a process has no buffer, its output is lost unless it has a | |
672 | filter, and no indication of its being stopped or killed is given | |
673 | unless it has a sentinel. | |
674 | ||
675 | * New function `user-variable-p'. `v' arg prompting changed. | |
676 | ||
677 | This function takes a symbol as argument and returns `t' if | |
678 | the symbol is defined as a user option variable. This means | |
679 | that it has a `variable-documentation' property whose value is | |
680 | a string starting with `*'. | |
681 | ||
682 | Code `v' in an interactive arg reading string now accepts | |
683 | user variables only, and completion is limited to the space of | |
684 | user variables. | |
685 | ||
686 | The function `read-variable' also now accepts and completes | |
687 | over user variables only. | |
688 | ||
689 | * CBREAK mode input is the default in Unix 4.3 bsd. | |
690 | ||
691 | In Berkeley 4.3 Unix, there are sufficient features for Emacs to | |
692 | work fully correctly using CBREAK mode and not using SIGIO. | |
693 | Therefore, this mode is the default when running under 4.3. | |
694 | This mode corresponds to `nil' as the first argument to | |
695 | `set-input-mode'. You can still select either mode by calling | |
696 | that function. | |
697 | ||
698 | * Information on memory usage. | |
699 | ||
700 | The new variable `data-bytes-used' contains the number | |
701 | of bytes of impure space allocated in Emacs. | |
702 | `data-bytes-free' contains the number of additional bytes | |
703 | Emacs could allocate. Note that space formerly allocated | |
704 | and freed again still counts as `used', since it is still | |
705 | in Emacs's address space. | |
706 | ||
707 | * No limit on size of output from `format'. | |
708 | ||
709 | The string output from `format' used to be truncated to | |
710 | 100 characters in length. Now it can have any length. | |
711 | ||
712 | * New errors `void-variable' and `void-function' replace `void-symbol'. | |
713 | ||
714 | This change makes it possible to have error messages that | |
715 | clearly distinguish undefined variables from undefined functions. | |
716 | It also allows `condition-case' to handle one case without the other. | |
717 | ||
718 | * `replace-match' handling of `\'. | |
719 | ||
720 | In `replace-match', when the replacement is not literal, | |
721 | `\' in the replacement string is always treated as an | |
722 | escape marker. The only two special `\' constructs | |
723 | are `\&' and `\DIGIT', so `\' followed by anything other than | |
724 | `&' or a digit has no effect. `\\' is necessary to include | |
725 | a `\' in the replacement text. | |
726 | ||
727 | This level of escaping is comparable with what goes on in | |
728 | a regular expression. It is over and above the level of `\' | |
729 | escaping that goes on when strings are read in Lisp syntax. | |
730 | ||
731 | * New error `invalid-regexp'. | |
732 | ||
733 | A regexp search signals this type of error if the argument does | |
734 | not meet the rules for regexp syntax. | |
735 | ||
736 | * `kill-emacs' with argument. | |
737 | ||
738 | If the argument is a number, it is returned as the exit status code | |
739 | of the Emacs process. If the argument is a string, its contents | |
740 | are stuffed as pending terminal input, to be read by another program | |
741 | after Emacs is dead. | |
742 | ||
743 | * New fifth argument to `subst-char-in-region'. | |
744 | ||
745 | This argument is optional and defaults to `nil'. If it is not `nil', | |
746 | then the substitutions made by this function are not recorded | |
747 | in the Undo mechanism. | |
748 | ||
749 | This feature should be used with great care. It is now used | |
750 | by Outline mode to make lines visible or invisible. | |
751 | ||
752 | * ` *Backtrace*' buffer renamed to `*Backtrace*'. | |
753 | ||
754 | As a result, you can now reselect this buffer easily if you switch to | |
755 | another while in the debugger. | |
756 | ||
757 | Exiting from the debugger kills the `*Backtrace*' buffer, so you will | |
758 | not try to give commands in it when no longer really in the debugger. | |
759 | ||
760 | * New function `switch-to-buffer-other-window'. | |
761 | ||
762 | This is the new primitive to select a specified buffer (the | |
763 | argument) in another window. It is not quite the same as | |
764 | `pop-to-buffer', because it is guaranteed to create another | |
765 | window (assuming there is room on the screen) so that it can | |
766 | leave the current window's old buffer displayed as well. | |
767 | ||
768 | All functions to select a buffer in another window should | |
769 | do so by calling this new function. | |
770 | ||
771 | * New variable `minibuffer-help-form'. | |
772 | ||
773 | At entry to the minibuffer, the variable `help-form' is bound | |
774 | to the value of `minibuffer-help-form'. | |
775 | ||
776 | `help-form' is expected at all times to contain either `nil' | |
777 | or an expression to be executed when C-h is typed (overriding | |
778 | teh definition of C-h as a command). `minibuffer-help-form' | |
779 | can be used to provide a different default way of handling | |
780 | C-h while in the minibuffer. | |
781 | ||
782 | * New \{...} documentation construct. | |
783 | ||
784 | It is now possible to set up the documentation string for | |
785 | a major mode in such a way that it always describes the contents | |
786 | of the major mode's keymap, as it has been customized. | |
787 | To do this, include in the documentation string the characters `\{' | |
788 | followed by the name of the variable containing the keymap, | |
789 | terminated with `}'. (The `\' at the beginning probably needs to | |
790 | be quoted with a second `\', to include it in the doc string.) | |
791 | This construct is normally used on a line by itself, with no blank | |
792 | lines before or after. | |
793 | ||
794 | For example, the documentation string for the function `c-mode' contains | |
795 | ... | |
796 | Paragraphs are separated by blank lines only. | |
797 | Delete converts tabs to spaces as it moves back. | |
798 | \\{c-mode-map} | |
799 | Variables controlling indentation style: | |
800 | ... | |
801 | ||
802 | * New character syntax class "punctuation". | |
803 | ||
804 | Punctuation characters behave like whitespace in word and | |
805 | list parsing, but can be distinguished in regexps and in the | |
806 | function `char-syntax'. Punctuation syntax is represented by | |
807 | a period in `modify-syntax-entry'. | |
808 | ||
809 | * `auto-mode-alist' no longer needs entries for backup-file names, | |
810 | ||
811 | Backup suffixes of all kinds are now stripped from a file's name | |
812 | before searching `auto-mode-alist'. | |
9a21d88b KS |
813 | |
814 | ||
a933dad1 DL |
815 | \f |
816 | Changes in Emacs 16 | |
817 | ||
818 | * No special code for Ambassadors, VT-100's and Concept-100's. | |
819 | ||
820 | Emacs now controls these terminals based on the termcap entry, like | |
821 | all other terminals. Formerly it did not refer to the termcap entries | |
822 | for those terminal types, and often the termcap entries for those | |
823 | terminals are wrong or inadequate. If you experience worse behavior | |
824 | on these terminals than in version 15, you can probably correct it by | |
825 | fixing up the termcap entry. See ./TERMS for more info. | |
826 | ||
827 | See ./TERMS in any case if you find that some terminal does not work | |
828 | right with Emacs now. | |
829 | ||
830 | * Minibuffer default completion character is TAB (and not ESC). | |
831 | ||
832 | So that ESC can be used in minibuffer for more useful prefix commands. | |
833 | ||
834 | * C-z suspends Emacs in all modes. | |
835 | ||
836 | Formerly, C-z was redefined for other purposes by certain modes, | |
837 | such as Buffer Menu mode. Now other keys are used for those purposes, | |
838 | to keep the meaning of C-z uniform. | |
839 | ||
840 | * C-x ESC (repeat-complex-command) allows editing the command it repeats. | |
841 | ||
842 | Instead of asking for confirmation to re-execute a command from the | |
843 | command history, the command is placed, in its Lisp form, into the | |
844 | minibuffer for editing. You can confirm by typing RETURN, change some | |
845 | arguments and then confirm, or abort with C-g. | |
846 | ||
847 | * Incremental search does less redisplay on slow terminals. | |
848 | ||
849 | If the terminal baud rate is <= the value of `isearch-slow-speed', | |
850 | incremental searching outside the text on the screen creates | |
851 | a single-line window and uses that to display the line on which | |
852 | a match has been found. Exiting or quitting the search restores | |
853 | the previous window configuration and redisplays the window you | |
854 | were searching in. | |
855 | ||
856 | The initial value of `isearch-slow-speed' is 1200. | |
857 | ||
858 | This feature is courtesy of crl@purdue. | |
859 | ||
860 | * Recursive minibuffers not allowed. | |
861 | ||
862 | If the minibuffer window is selected, most commands that would | |
863 | use the minibuffer gets an error instead. (Specific commands | |
864 | may override this feature and therefore still be allowed.) | |
865 | ||
866 | Strictly speaking, recursive entry to the minibuffer is still | |
867 | possible, because you can switch to another window after | |
868 | entering the minibuffer, and then minibuffer-using commands | |
869 | are allowed. This is still allowed by a deliberate decision: | |
870 | if you know enough to switch windows while in the minibuffer, | |
871 | you can probably understand recursive minibuffers. | |
872 | ||
873 | This may be overridden by binding the variable | |
874 | `enable-recursive-minibuffers' to t. | |
875 | ||
876 | * New major mode Emacs-Lisp mode, for editing Lisp code to run in Emacs. | |
877 | ||
878 | The mode in which emacs lisp files is edited is now called emacs-lisp-mode | |
879 | and is distinct from lisp-mode. The latter is intended for use with | |
880 | lisps external to emacs. | |
881 | ||
882 | The hook which is funcalled (if non-nil) on entry to elisp-mode is now | |
883 | called emacs-lisp-mode-hook. A consequence of this changes is that | |
884 | .emacs init files which set the value of lisp-mode-hook may need to be | |
885 | changed to use the new names. | |
886 | ||
887 | * Correct matching of parentheses is checked on insertion. | |
888 | ||
889 | When you insert a close-paren, the matching open-paren | |
890 | is checked for validity. The close paren must be the kind | |
891 | of close-paren that the open-paren says it should match. | |
892 | Otherwise, a warning message is printed. close-paren immediately | |
177c0ea7 | 893 | preceded by quoting backslash syntax character is not matched. |
a933dad1 DL |
894 | |
895 | This feature was originally written by shane@mit-ajax. | |
896 | ||
897 | * M-x list-command-history | |
898 | * M-x command-history-mode | |
899 | * M-x electric-command-history | |
900 | ||
901 | `list-command-history' displays forms from the command history subject | |
902 | to user controlled filtering and limit on number of forms. It leaves | |
903 | the buffer in `command-history-mode'. M-x command-history-mode | |
904 | recomputes the command history each time it is invoked via | |
905 | `list-command-history'. It is like Emacs-Lisp mode except that characters | |
906 | don't insert themselves and provision is made for re-evaluating an | |
907 | expression from the list. `electric-command-history' pops up a type | |
908 | out window with the command history displayed. If the very next | |
909 | character is Space, the window goes away and the previous window | |
910 | configuration is restored. Otherwise you can move around in the | |
911 | history and select an expression for evaluation *inside* the buffer | |
912 | which invoked `electric-command-history'. The original window | |
913 | configuration is restored on exit unless the command selected changes | |
914 | it. | |
915 | ||
916 | * M-x edit-picture | |
917 | ||
918 | Enters a temporary major mode (the previous major mode is remembered | |
919 | and can is restored on exit) designed for editing pictures and tables. | |
920 | Printing characters replace rather than insert themselves with motion | |
921 | afterwards that is user controlled (you can specify any of the 8 | |
922 | compass directions). Special commands for movement are provided. | |
923 | Special commands for hacking tabs and tab stops are provided. Special | |
924 | commands for killing rectangles and overlaying them are provided. See | |
925 | the documentation of function edit-picture for more details. | |
926 | ||
927 | Calls value of `edit-picture-hook' on entry if non-nil. | |
928 | ||
929 | * Stupid C-s/C-q `flow control' supported. | |
930 | ||
931 | Do (set-input-mode nil t) to tell Emacs to use CBREAK mode and interpret | |
932 | C-s and C-q as flow control commands. (set-input-mode t nil) switches | |
933 | back to interrupt-driven input. (set-input-mode nil nil) uses CBREAK | |
934 | mode but no `flow control'; this may make it easier to run Emacs under | |
935 | certain debuggers that have trouble dealing with inferiors that use SIGIO. | |
936 | ||
937 | CBREAK mode has certain inherent disadvantages, which are why it is | |
938 | not the default: | |
939 | ||
940 | Meta-keys are ignored; CBREAK mode discards the 8th bit of | |
941 | input characters. | |
942 | ||
943 | Control-G as keyboard input discards buffered output, | |
944 | and therefore can cause incorrect screen updating. | |
945 | ||
946 | The use of `flow control' has its own additional disadvantage: the | |
947 | characters C-s and C-q are not available as editing commands. You can | |
948 | partially compensate for this by setting up a keyboard-translate-table | |
949 | (see file ONEWS) that maps two other characters (such as C-^ and C-\) into | |
950 | C-s and C-q. Of course, C-^ and C-\ are commonly used as escape | |
951 | characters in remote-terminal programs. You really can't win except | |
952 | by getting rid of this sort of `flow control.' | |
953 | ||
954 | The configuration switch CBREAK_INPUT is now eliminated. | |
955 | INTERRUPT_INPUT exists only to specify the default mode of operation; | |
956 | #define it to make interrupt-driven input the default. | |
957 | ||
958 | * Completion of directory names provides a slash. | |
959 | ||
960 | If file name completion yields the name of a directory, | |
961 | a slash is appended to it. | |
962 | ||
963 | * Undo can clear modified-flag. | |
964 | ||
965 | If you undo changes in a buffer back to a state in which the | |
966 | buffer was not considered "modified", then it is labelled as | |
967 | once again "unmodified". | |
968 | ||
969 | * M-x run-lisp. | |
970 | ||
971 | This command creates an inferior Lisp process whose input and output | |
972 | appear in the Emacs buffer named `*lisp*'. That buffer uses a major mode | |
973 | called inferior-lisp-mode, which has many of the commands of lisp-mode | |
974 | and those of shell-mode. Calls the value of shell-mode-hook and | |
975 | lisp-mode-hook, in that order, if non-nil. | |
976 | ||
977 | Meanwhile, in lisp-mode, the command C-M-x is defined to | |
978 | send the current defun as input to the `*lisp*' subprocess. | |
979 | ||
980 | * Mode line says `Narrow' when buffer is clipped. | |
981 | ||
982 | If a buffer has a clipping restriction (made by `narrow-to-region') | |
983 | then its mode line contains the word `Narrow' after the major and | |
984 | minor modes. | |
985 | ||
986 | * Mode line says `Abbrev' when abbrev mode is on. | |
987 | ||
988 | * add-change-log-entry takes prefix argument | |
989 | ||
990 | Giving a prefix argument makes it prompt for login name, full name, | |
991 | and site name, with defaults. Otherwise the defaults are used | |
992 | with no confirmation. | |
993 | ||
994 | * M-x view-buffer and M-x view-file | |
995 | ||
996 | view-buffer selects the named buffer, view-file finds the named file; the | |
997 | resulting buffer is placed into view-mode (a recursive edit). The normal | |
998 | emacs commands are not available. Instead a set of special commands is | |
999 | provided which faclitate moving around in the buffer, searching and | |
1000 | scrolling by screenfuls. Exiting view-mode returns to the buffer in which | |
1001 | the view-file or view-buffer command was given. | |
1002 | Type ? or h when viewing for a complete list of view commands. | |
1003 | Each calls value of `view-hook' if non-nil on entry. | |
1004 | ||
1005 | written by shane@mit-ajax. | |
1006 | ||
1007 | * New key commands in dired. | |
1008 | ||
1009 | `v' views (like more) the file on the current line. | |
1010 | `#' marks auto-save files for deletion. | |
1011 | `~' marks backup files for deletion. | |
1012 | `r' renames a file and updates the directory listing if the | |
1013 | file is renamed to same directory. | |
1014 | `c' copies a file and updates the directory listing if the file is | |
1015 | copied to the same directory. | |
1016 | ||
1017 | * New function `electric-buffer-list'. | |
1018 | ||
1019 | This pops up a buffer describing the set of emacs buffers. | |
1020 | Immediately typing space makes the buffer list go away and returns | |
1021 | to the buffer and window which were previously selected. | |
1022 | ||
1023 | Otherwise one may use the c-p and c-n commands to move around in the | |
1024 | buffer-list buffer and type Space or C-z to select the buffer on the | |
1025 | cursor's line. There are a number of other commands which are the same | |
1026 | as those of buffer-menu-mode. | |
1027 | ||
1028 | This is a useful thing to bind to c-x c-b in your `.emacs' file if the | |
fffa137c | 1029 | rather non-standard `electric' behavior of the buffer list suits your taste. |
a933dad1 DL |
1030 | Type C-h after invoking electric-buffer-list for more information. |
1031 | ||
1032 | Calls value of `electric-buffer-menu-mode-hook' if non-nil on entry. | |
1033 | Calls value of `after-electric-buffer-menu' on exit (select) if non-nil. | |
1034 | \f | |
1035 | Changes in version 16 for mail reading and sending | |
1036 | ||
1037 | * sendmail prefix character is C-c (and not C-z). New command C-c w. | |
1038 | ||
1039 | For instance C-c C-c (or C-c C-s) sends mail now rather than C-z C-z. | |
1040 | C-c w inserts your `signature' (contents of ~/.signature) at the end | |
1041 | of mail. | |
1042 | ||
1043 | * New feature in C-c y command in sending mail. | |
1044 | ||
1045 | C-c y is the command to insert the message being replied to. | |
1046 | Normally it deletes most header fields and indents everything | |
1047 | by three spaces. | |
1048 | ||
1049 | Now, C-c y does not delete header fields or indent. | |
1050 | C-c y with any other numeric argument does delete most header | |
1051 | fields, but indents by the amount specified in the argument. | |
1052 | ||
1053 | * C-r command in Rmail edits current message. | |
1054 | ||
1055 | It does this by switching to a different major mode | |
1056 | which is nearly the same as Text mode. The only difference | |
1057 | between it and text mode are the two command C-c and C-]. | |
1058 | C-c is defined to switch back to Rmail mode, and C-] | |
1059 | is defined to restore the original contents of the message | |
1060 | and then switch back to Rmail mode. | |
1061 | ||
1062 | C-c and C-] are the only ways "back into Rmail", but you | |
1063 | can switch to other buffers and edit them as usual. | |
1064 | C-r in Rmail changes only the handling of the Rmail buffer. | |
1065 | ||
1066 | * Rmail command `t' toggles header display. | |
1067 | ||
1068 | Normally Rmail reformats messages to hide most header fields. | |
1069 | `t' switches to display of all the header fields of the | |
1070 | current message, as long as it remains current. | |
1071 | Another `t' switches back to the usual display. | |
1072 | ||
1073 | * Rmail command '>' goes to the last message. | |
1074 | ||
1075 | * Rmail commands `a' and `k' set message attributes. | |
1076 | `a' adds an attribute and `k' removes one. You specify | |
1077 | the attrbute by name. You can specify either a built-in | |
1078 | flag such as "deleted" or "filed", or a user-defined keyword | |
1079 | (anything not recognized as built-in). | |
1080 | ||
1081 | * Rmail commands `l' and `L' summarize by attributes. | |
1082 | ||
1083 | These commands create a summary with one line per message, | |
1084 | like `h', but they list only some of the messages. You | |
1085 | specify which attribute (for `l') or attributes (for `L') | |
1086 | the messages should have. | |
1087 | ||
1088 | * Rmail can parse mmdf mail files. | |
1089 | ||
1090 | * Interface to MH mail system. | |
1091 | ||
1092 | mh-e is a front end for GNU emacs and the MH mail system. It | |
1093 | provides a friendly and convient interface to the MH commands. | |
1094 | ||
1095 | To read mail, invoke mh-rmail. This will inc new mail and display the | |
1096 | scan listing on the screen. To see a summary of the mh-e commands, | |
1097 | type ?. Help is available through the usual facilities. | |
1098 | ||
1099 | To send mail, invoke mh-smail. | |
1100 | ||
1101 | mh-e requires a copy of MH.5 that has been compiled with the MHE | |
1102 | compiler switch. | |
1103 | ||
1104 | From larus@berkeley. | |
1105 | \f | |
1106 | New hooks and parameters in version 16 | |
1107 | ||
1108 | * New variable `blink-matching-paren-distance'. | |
1109 | ||
1110 | This is the maximum number of characters to search for | |
1111 | an open-paren to match an inserted close-paren. | |
1112 | The matching open-paren is shown and checked if it is found | |
1113 | within this distance. | |
1114 | ||
1115 | `nil' means search all the way to the beginning of the buffer. | |
1116 | In this case, a warning message is printed if no matching | |
1117 | open-paren is found. | |
1118 | ||
1119 | This feature was originally written by shane@mit-ajax. | |
1120 | ||
1121 | * New variable `find-file-run-dired' | |
1122 | ||
1123 | If nil, find-file will report an error if an attempt to visit a | |
1124 | directory is detected; otherwise, it runs dired on that directory. | |
1125 | The default is t. | |
1126 | ||
1127 | * Variable `dired-listing-switches' holds switches given to `ls' by dired. | |
1128 | ||
1129 | The value should be a string containing `-' followed by letters. | |
1130 | The letter `l' had better be included and letter 'F' had better be excluded! | |
1131 | The default is "-al". | |
1132 | ||
1133 | This feature was originally written by shane@mit-ajax. | |
1134 | ||
1135 | * New variable `display-time-day-and-date'. | |
1136 | ||
1137 | If this variable is set non-`nil', the function M-x display-time | |
1138 | displays the day and date, as well as the time. | |
1139 | ||
1140 | * New parameter `c-continued-statement-indent'. | |
1141 | ||
1142 | This controls the extra indentation given to a line | |
1143 | that continues a C statement started on the previous line. | |
1144 | By default it is 2, which is why you would see | |
1145 | ||
1146 | if (foo) | |
1147 | bar (); | |
1148 | ||
1149 | ||
1150 | * Changed meaning of `c-indent-level'. | |
1151 | ||
1152 | The value of `c-brace-offset' used to be | |
1153 | subtracted from the value of `c-indent-level' whenever | |
1154 | that value was used. Now it is not. | |
1155 | ||
1156 | As a result, `c-indent-level' is now the offset of | |
1157 | statements within a block, relative to the line containing | |
1158 | the open-brace that starts the block. | |
1159 | ||
1160 | * turn-on-auto-fill is useful value for text-mode-hook. | |
1161 | ||
1162 | (setq text-mode-hook 'turn-on-auto-fill) | |
1163 | is all you have to do to make sure Auto Fill mode is turned | |
1164 | on whenever you enter Text mode. | |
1165 | ||
1166 | * Parameter explicit-shell-file-name for M-x shell. | |
1167 | ||
1168 | This variable, if non-nil, specifies the file name to use | |
1169 | for the shell to run if you do M-x shell. | |
1170 | \f | |
1171 | Changes in version 16 affecting Lisp programming: | |
1172 | ||
1173 | * Documentation strings adapt to customization. | |
1174 | ||
1175 | Often the documentation string for a command wants to mention | |
1176 | another command. Simply stating the other command as a | |
1177 | character sequence has a disadvantage: if the user customizes | |
1178 | Emacs by moving that function to a different command, the | |
1179 | cross reference in the documentation becomes wrong. | |
1180 | ||
1181 | A new feature allows you to write the documentation string | |
1182 | using a function name, and the command to run that function | |
1183 | is looked up when the documentation is printed. | |
1184 | ||
1185 | If a documentation string contains `\[' (two characters) then | |
1186 | the following text, up to the next `]', is taken as a function name. | |
1187 | Instead of printing that function name, the command that runs it is printed. | |
1188 | (M-x is used to construct a command if no shorter one exists.) | |
1189 | ||
1190 | For example, instead of putting `C-n' in a documentation string | |
1191 | to refer to the C-n command, put in `\[next-line]'. (In practice | |
1192 | you will need to quote the backslash with another backslash, | |
1193 | due to the syntax for strings in Lisp and C.) | |
1194 | ||
1195 | To include the literal characters `\[' in a documentation string, | |
1196 | precede them with `\='. To include the characters `\=', precede | |
1197 | them with `\='. For example, "\\=\\= is the way to quote \\=\\[" | |
1198 | will come out as `\= is the way to quote \['. | |
1199 | ||
1200 | The new function `substitute-command-keys' takes a string possibly | |
1201 | contaning \[...] constructs and replaces those constructs with | |
1202 | the key sequences they currently stand for. | |
1203 | ||
1204 | * Primitives `find-line-comment' and `find-line-comment-body' flushed. | |
1205 | ||
1206 | Search for the value of `comment-start-skip' if you want to find | |
1207 | whether and where a line has a comment. | |
1208 | ||
1209 | * New function `auto-save-file-name-p' | |
1210 | ||
d95b32a4 | 1211 | Should return non-`nil' if given a string which is the name of an |
a933dad1 DL |
1212 | auto-save file (sans directory name). If you redefine |
1213 | `make-auto-save-file-name', you should redefine this accordingly. By | |
1214 | default, this function returns `t' for filenames beginning with | |
1215 | character `#'. | |
1216 | ||
1217 | * The value of `exec-directory' now ends in a slash. | |
1218 | ||
1219 | This is to be compatible with most directory names in GNU Emacs. | |
1220 | ||
1221 | * Dribble files and termscript files. | |
1222 | ||
1223 | (open-dribble-file FILE) opens a dribble file named FILE. When a | |
1224 | dribble file is open, every character Emacs reads from the terminal is | |
1225 | written to the dribble file. | |
1226 | ||
1227 | (open-termscript FILE) opens a termscript file named FILE. When a | |
1228 | termscript file is open, all characters sent to the terminal by Emacs | |
1229 | are also written in the termscript file. | |
1230 | ||
1231 | The two of these together are very useful for debugging Emacs problems | |
1232 | in redisplay. | |
1233 | ||
1234 | * Upper case command characters by default are same as lower case. | |
1235 | ||
1236 | If a character in a command is an upper case letter, and is not defined, | |
1237 | Emacs uses the definition of the corresponding lower case letter. | |
1238 | For example, if C-x U is not directly undefined, it is treated as | |
1239 | a synonym for C-x u (undo). | |
1240 | ||
1241 | * Undefined function errors versus undefined variable errors. | |
1242 | ||
1243 | Void-symbol errors now say "boundp" if the symbol's value was void | |
1244 | or "fboundp" if the function definition was void. | |
1245 | ||
1246 | * New function `bury-buffer'. | |
1247 | ||
1248 | The new function `bury-buffer' takes one argument, a buffer object, | |
1249 | and puts that buffer at the end of the internal list of buffers. | |
1250 | So it is the least preferred candidate for use as the default value | |
1251 | of C-x b, or for other-buffer to return. | |
1252 | ||
1253 | * Already-displayed buffers have low priority for display. | |
1254 | ||
1255 | When a buffer is chosen automatically for display, or to be the | |
1256 | default in C-x b, buffers already displayed in windows have lower | |
1257 | priority than buffers not currently visible. | |
1258 | ||
1259 | * `set-window-start' accepts a third argument NOFORCE. | |
1260 | ||
1261 | This argument, if non-nil, prevents the window's force_start flag | |
1262 | from being set. Setting the force_start flag causes the next | |
1263 | redisplay to insist on starting display at the specified starting | |
1264 | point, even if dot must be moved to get it onto the screen. | |
1265 | ||
1266 | * New function `send-string-to-terminal'. | |
1267 | ||
1268 | This function takes one argument, a string, and outputs its contents | |
1269 | to the terminal exactly as specified: control characters, escape | |
1270 | sequences, and all. | |
1271 | ||
1272 | * Keypad put in command mode. | |
1273 | ||
1274 | The terminal's keypad is now put into command mode, as opposed to | |
1275 | numeric mode, while Emacs is running. This is done by means of the | |
1276 | termcap `ks' and `ke' strings. | |
1277 | ||
1278 | * New function `generate-new-buffer' | |
1279 | ||
1280 | This function takes a string as an argument NAME and looks for a | |
1281 | creates and returns a buffer called NAME if one did not already exist. | |
1282 | Otherwise, it successively tries appending suffixes of the form "<1>", | |
1283 | "<2>" etc to NAME until it creates a string which does not name an | |
1284 | existing buffer. A new buffer with that name is the created and returned. | |
1285 | ||
1286 | * New function `prin1-to-string' | |
1287 | This function takes one argument, a lisp object, and returns a string | |
1288 | containing that object's printed representation, such as `prin1' | |
1289 | would output. | |
1290 | ||
1291 | * New function `read-from-minibuffer' | |
1292 | Lets you supply a prompt, initial-contents, a keymap, and specify | |
1293 | whether the result should be interpreted as a string or a lisp object. | |
1294 | ||
1295 | Old functions `read-minibuffer', `eval-minibuffer', `read-string' all | |
1296 | take second optional string argument which is initial contents of | |
177c0ea7 | 1297 | minibuffer. |
a933dad1 DL |
1298 | |
1299 | * minibuffer variable names changed (names of keymaps) | |
1300 | ||
1301 | minibuf-local-map -> minibuffer-local-map | |
1302 | minibuf-local-ns-map -> minibuffer-local-ns-map | |
1303 | minibuf-local-completion-map -> minibuffer-local-completion-map | |
1304 | minibuf-local-must-match-map -> minibuffer-local-must-match-map | |
1305 | \f | |
1306 | Changes in version 16 affecting configuring and building Emacs | |
1307 | ||
1308 | * Configuration switch VT100_INVERSE eliminated. | |
1309 | ||
1310 | You can control the use of inverse video on any terminal by setting | |
1311 | the variable `inverse-video', or by changing the termcap entry. If | |
1312 | you like, set `inverse-video' in your `.emacs' file based on | |
1313 | examination of (getenv "TERM"). | |
1314 | ||
1315 | * New switch `-batch' makes Emacs run noninteractively. | |
1316 | ||
1317 | If the switch `-batch' is used, Emacs treats its standard output | |
1318 | and input like ordinary files (even if they are a terminal). | |
1319 | It does not display buffers or windows; the only output to standard output | |
1320 | is what would appear as messages in the echo area, and each | |
1321 | message is followed by a newline. | |
1322 | ||
1323 | The terminal modes are not changed, so that C-z and C-c retain | |
1324 | their normal Unix meanings. Emacs does still read commands from | |
1325 | the terminal, but the idea of `-batch' is that you use it with | |
1326 | other command line arguments that tell Emacs a complete task to perform, | |
1327 | including killing itself. `-kill' used as the last argument is a good | |
1328 | way to accomplish this. | |
1329 | ||
1330 | The Lisp variable `noninteractive' is now defined, to be `nil' | |
1331 | except when `-batch' has been specified. | |
1332 | ||
1333 | * Emacs can be built with output redirected to a file. | |
1334 | ||
1335 | This is because -batch (see above) is now used in building Emacs. | |
9a21d88b KS |
1336 | |
1337 | ||
1338 | \f | |
1339 | Changes in Emacs 15 | |
1340 | ||
1341 | * Emacs now runs on Sun and Megatest 68000 systems; | |
1342 | also on at least one 16000 system running 4.2. | |
1343 | ||
1344 | * Emacs now alters the output-start and output-stop characters | |
1345 | to prevent C-s and C-q from being considered as flow control | |
1346 | by cretinous rlogin software in 4.2. | |
1347 | ||
1348 | * It is now possible convert Mocklisp code (for Gosling Emacs) to Lisp code | |
1349 | that can run in GNU Emacs. M-x convert-mocklisp-buffer | |
1350 | converts the contents of the current buffer from Mocklisp to | |
1351 | GNU Emacs Lisp. You should then save the converted buffer with C-x C-w | |
1352 | under a name ending in ".el" | |
1353 | ||
1354 | There are probably some Mocklisp constructs that are not handled. | |
1355 | If you encounter one, feel free to report the failure as a bug. | |
1356 | The construct will be handled in a future Emacs release, if that is not | |
1357 | not too hard to do. | |
1358 | ||
1359 | Note that lisp code converted from Mocklisp code will not necessarily | |
1360 | run as fast as code specifically written for GNU Emacs, nor will it use | |
1361 | the many features of GNU Emacs which are not present in Gosling's emacs. | |
1362 | (In particular, the byte-compiler (m-x byte-compile-file) knows little | |
1363 | about compilation of code directly converted from mocklisp.) | |
1364 | It is envisaged that old mocklisp code will be incrementally converted | |
1365 | to GNU lisp code, with M-x convert-mocklisp-buffer being the first | |
1366 | step in this process. | |
1367 | ||
1368 | * Control-x n (narrow-to-region) is now by default a disabled command. | |
1369 | ||
1370 | This means that, if you issue this command, it will ask whether | |
1371 | you really mean it. You have the opportunity to enable the | |
1372 | command permanently at that time, so you will not be asked again. | |
1373 | This will place the form "(put 'narrow-to-region 'disabled nil)" in your | |
1374 | .emacs file. | |
1375 | ||
1376 | * Tags now prompts for the tag table file name to use. | |
1377 | ||
1378 | All the tags commands ask for the tag table file name | |
1379 | if you have not yet specified one. | |
1380 | ||
1381 | Also, the command M-x visit-tag-table can now be used to | |
1382 | specify the tag table file name initially, or to switch | |
1383 | to a new tag table. | |
1384 | ||
1385 | * If truncate-partial-width-windows is non-nil (as it intially is), | |
1386 | all windows less than the full screen width (that is, | |
1387 | made by side-by-side splitting) truncate lines rather than continuing | |
1388 | them. | |
1389 | ||
1390 | * Emacs now checks for Lisp stack overflow to avoid fatal errors. | |
1391 | The depth in eval, apply and funcall may not exceed max-lisp-eval-depth. | |
1392 | The depth in variable bindings and unwind-protects may not exceed | |
1393 | max-specpdl-size. If either limit is exceeded, an error occurs. | |
1394 | You can set the limits to larger values if you wish, but if you make them | |
1395 | too large, you are vulnerable to a fatal error if you invoke | |
1396 | Lisp code that does infinite recursion. | |
1397 | ||
1398 | * New hooks find-file-hook and write-file-hook. | |
1399 | Both of these variables if non-nil should be functions of no arguments. | |
1400 | At the time they are called (current-buffer) will be the buffer being | |
1401 | read or written respectively. | |
1402 | ||
1403 | find-file-hook is called whenever a file is read into its own buffer, | |
1404 | such as by calling find-file, revert-buffer, etc. It is not called by | |
1405 | functions such as insert-file which do not read the file into a buffer of | |
1406 | its own. | |
1407 | find-file-hook is called after the file has been read in and its | |
1408 | local variables (if any) have been processed. | |
1409 | ||
1410 | write-file-hook is called just before writing out a file from a buffer. | |
1411 | ||
1412 | * The initial value of shell-prompt-pattern is now "^[^#$%>]*[#$%>] *" | |
1413 | ||
1414 | * If the .emacs file sets inhibit-startup-message to non-nil, | |
1415 | the messages normally printed by Emacs at startup time | |
1416 | are inhibited. | |
1417 | ||
1418 | * Facility for run-time conditionalization on the basis of emacs features. | |
1419 | ||
1420 | The new variable features is a list of symbols which represent "features" | |
1421 | of the executing emacs, for use in run-time conditionalization. | |
1422 | ||
1423 | The function featurep of one argument may be used to test for the | |
1424 | presence of a feature. It is just the same as | |
1425 | (not (null (memq FEATURE features))) where FEATURE is its argument. | |
1426 | For example, (if (featurep 'magic-window-hack) | |
1427 | (transmogrify-window 'vertical) | |
1428 | (split-window-vertically)) | |
1429 | ||
1430 | The function provide of one argument "announces" that FEATURE is present. | |
1431 | It is much the same as (if (not (featurep FEATURE)) | |
1432 | (setq features (cons FEATURE features))) | |
1433 | ||
1434 | The function require with arguments FEATURE and FILE-NAME loads FILE-NAME | |
1435 | (which should contain the form (provide FEATURE)) unless FEATURE is present. | |
1436 | It is much the same as (if (not (featurep FEATURE)) | |
1437 | (progn (load FILE-NAME) | |
1438 | (if (not featurep FEATURE) (error ...)))) | |
1439 | FILE-NAME is optional and defaults to FEATURE. | |
1440 | ||
1441 | * New function load-average. | |
1442 | ||
1443 | This returns a list of three integers, which are | |
1444 | the current 1 minute, 5 minute and 15 minute load averages, | |
1445 | each multiplied by a hundred (since normally they are floating | |
1446 | point numbers). | |
1447 | ||
1448 | * Per-terminal libraries loaded automatically. | |
1449 | ||
1450 | Emacs when starting up on terminal type T automatically loads | |
1451 | a library named term-T. T is the value of the TERM environment variable. | |
1452 | Thus, on terminal type vt100, Emacs would do (load "term-vt100" t t). | |
1453 | Such libraries are good places to set the character translation table. | |
1454 | ||
1455 | It is a bad idea to redefine lots of commands in a per-terminal library, | |
1456 | since this affects all users. Instead, define a command to do the | |
1457 | redefinitions and let the user's init file, which is loaded later, | |
1458 | call that command or not, as the user prefers. | |
1459 | ||
1460 | * Programmer's note: detecting killed buffers. | |
1461 | ||
1462 | Buffers are eliminated by explicitly killing them, using | |
1463 | the function kill-buffer. This does not eliminate or affect | |
1464 | the pointers to the buffer which may exist in list structure. | |
1465 | If you have a pointer to a buffer and wish to tell whether | |
1466 | the buffer has been killed, use the function buffer-name. | |
1467 | It returns nil on a killed buffer, and a string on a live buffer. | |
1468 | ||
1469 | * New ways to access the last command input character. | |
1470 | ||
1471 | The function last-key-struck, which used to return the last | |
1472 | input character that was read by command input, is eliminated. | |
1473 | Instead, you can find this information as the value of the | |
1474 | variable last-command-char. (This variable used to be called | |
1475 | last-key). | |
1476 | ||
1477 | Another new variable, last-input-char, holds the last character | |
1478 | read from the command input stream regardless of what it was | |
1479 | read for. last-input-char and last-command-char are different | |
1480 | only inside a command that has called read-char to read input. | |
1481 | ||
1482 | * The new switch -kill causes Emacs to exit after processing the | |
1483 | preceding command line arguments. Thus, | |
1484 | emacs -l lib data -e do-it -kill | |
1485 | means to load lib, find file data, call do-it on no arguments, | |
1486 | and then exit. | |
1487 | ||
1488 | * The config.h file has been modularized. | |
1489 | ||
1490 | Options that depend on the machine you are running on are defined | |
1491 | in a file whose name starts with "m-", such as m-vax.h. | |
1492 | Options that depend on the operating system software version you are | |
1493 | running on are defined in a file whose name starts with "s-", | |
1494 | such as s-bsd4.2.h. | |
1495 | ||
1496 | config.h includes one m- file and one s- file. It also defines a | |
1497 | few other options whose values do not follow from the machine type | |
1498 | and system type being used. Installers normally will have to | |
1499 | select the correct m- and s- files but will never have to change their | |
1500 | contents. | |
1501 | ||
1502 | * Termcap AL and DL strings are understood. | |
1503 | ||
1504 | If the termcap entry defines AL and DL strings, for insertion | |
1505 | and deletion of multiple lines in one blow, Emacs now uses them. | |
1506 | This matters most on certain bit map display terminals for which | |
1507 | scrolling is comparatively slow. | |
1508 | ||
1509 | * Bias against scrolling screen far on fast terminals. | |
1510 | ||
1511 | Emacs now prefers to redraw a few lines rather than | |
1512 | shift them a long distance on the screen, when the terminal is fast. | |
1513 | ||
1514 | * New major mode, mim-mode. | |
1515 | ||
1516 | This major mode is for editing MDL code. Perhaps a MDL | |
1517 | user can explain why it is not called mdl-mode. | |
1518 | You must load the library mim-mode explicitly to use this. | |
1519 | ||
1520 | * GNU documentation formatter `texinfo'. | |
1521 | ||
1522 | The `texinfo' library defines a format for documentation | |
1523 | files which can be passed through Tex to make a printed manual | |
1524 | or passed through texinfo to make an Info file. Texinfo is | |
1525 | documented fully by its own Info file; compare this file | |
1526 | with its source, texinfo.texinfo, for additional guidance. | |
1527 | ||
1528 | All documentation files for GNU utilities should be written | |
1529 | in texinfo input format. | |
1530 | ||
1531 | Tex processing of texinfo files requires the Botex macro package. | |
1532 | This is not ready for distribution yet, but will appear at | |
1533 | a later time. | |
1534 | ||
1535 | * New function read-from-string (emacs 15.29) | |
1536 | ||
1537 | read-from-string takes three arguments: a string to read from, | |
1538 | and optionally start and end indices which delimit a substring | |
1539 | from which to read. (They default to 0 and the length of the string, | |
1540 | respectively.) | |
1541 | ||
1542 | This function returns a cons cell whose car is the object produced | |
1543 | by reading from the string and whose cdr is a number giving the | |
1544 | index in the string of the first character not read. That index may | |
1545 | be passed as the second argument to a later call to read-from-string | |
1546 | to read the next form represented by the string. | |
1547 | ||
1548 | In addition, the function read now accepts a string as its argument. | |
1549 | In this case, it calls read-from-string on the whole string, and | |
1550 | returns the car of the result. (ie the actual object read.) | |
1551 | ||
1552 | ||
1553 | \f | |
1554 | Changes in Emacs 14 | |
1555 | ||
1556 | * Completion now prints various messages such as [Sole Completion] | |
1557 | or [Next Character Not Unique] to describe the results obtained. | |
1558 | These messages appear after the text in the minibuffer, and remain | |
1559 | on the screen until a few seconds go by or you type a key. | |
1560 | ||
1561 | * The buffer-read-only flag is implemented. | |
1562 | Setting or binding this per-buffer variable to a non-nil value | |
1563 | makes illegal any operation which would modify the textual content of | |
1564 | the buffer. (Such operations signal a buffer-read-only error) | |
1565 | The read-only state of a buffer may be altered using toggle-read-only | |
1566 | (C-x C-q) | |
1567 | The buffers used by Rmail, Dired, Rnews, and Info are now read-only | |
1568 | by default to prevent accidental damage to the information in those | |
1569 | buffers. | |
1570 | ||
1571 | * Functions car-safe and cdr-safe. | |
1572 | These functions are like car and cdr when the argument is a cons. | |
1573 | Given an argument not a cons, car-safe always returns nil, with | |
1574 | no error; the same for cdr-safe. | |
1575 | ||
1576 | * The new function user-real-login-name returns the name corresponding | |
1577 | to the real uid of the Emacs process. This is usually the same | |
1578 | as what user-login-name returns; however, when Emacs is invoked | |
1579 | from su, user-real-login-name returns "root" but user-login-name | |
1580 | returns the name of the user who invoked su. | |
1581 | ||
1582 | ||
1583 | \f | |
1584 | Changes in Emacs 13 | |
1585 | ||
1586 | * There is a new version numbering scheme. | |
1587 | ||
1588 | What used to be the first version number, which was 1, | |
1589 | has been discarded since it does not seem that I need three | |
1590 | levels of version number. | |
1591 | ||
1592 | However, a new third version number has been added to represent | |
1593 | changes by user sites. This number will always be zero in | |
1594 | Emacs when I distribute it; it will be incremented each time | |
1595 | Emacs is built at another site. | |
1596 | ||
1597 | * There is now a reader syntax for Meta characters: | |
1598 | \M-CHAR means CHAR or'ed with the Meta bit. For example: | |
1599 | ||
1600 | ?\M-x is (+ ?x 128) | |
1601 | ?\M-\n is (+ ?\n 128) | |
1602 | ?\M-\^f is (+ ?\^f 128) | |
1603 | ||
1604 | This syntax can be used in strings too. Note, however, that | |
1605 | Meta characters are not meaningful in key sequences being passed | |
1606 | to define-key or lookup-key; you must use ESC characters (\e) | |
1607 | in them instead. | |
1608 | ||
1609 | ?\C- can be used likewise for control characters. (13.9) | |
1610 | ||
1611 | * Installation change | |
1612 | The string "../lisp" now adds to the front of the load-path | |
1613 | used for searching for Lisp files during Emacs initialization. | |
1614 | It used to replace the path specified in paths.h entirely. | |
1615 | Now the directory ../lisp is searched first and the directoris | |
1616 | specified in paths.h are searched afterward. | |
1617 | ||
1618 | ||
1619 | \f | |
1620 | Changes in Emacs 1.12 | |
1621 | ||
1622 | * There is a new installation procedure. | |
1623 | See the file INSTALL that comes in the top level | |
1624 | directory in the tar file or tape. | |
1625 | ||
1626 | * The Meta key is now supported on terminals that have it. | |
1627 | This is a shift key which causes the high bit to be turned on | |
1628 | in all input characters typed while it is held down. | |
1629 | ||
1630 | read-char now returns a value in the range 128-255 if | |
1631 | a Meta character is typed. When interpreted as command | |
1632 | input, a Meta character is equivalent to a two character | |
1633 | sequence, the meta prefix character followed by the un-metized | |
1634 | character (Meta-G unmetized is G). | |
1635 | ||
1636 | The meta prefix character | |
1637 | is specified by the value of the variable meta-prefix-char. | |
1638 | If this character (normally Escape) has been redefined locally | |
1639 | with a non-prefix definition (such as happens in completing | |
1640 | minibuffers) then the local redefinition is suppressed when | |
1641 | the character is not the last one in a key sequence. | |
1642 | So the local redefinition is effective if you type the character | |
1643 | explicitly, but not effective if the character comes from | |
1644 | the use of the Meta key. | |
1645 | ||
1646 | * `-' is no longer a completion command in the minibuffer. | |
1647 | It is an ordinary self-inserting character. | |
1648 | ||
1649 | * The list load-path of directories load to search for Lisp files | |
1650 | is now controlled by the EMACSLOADPATH environment variable | |
1651 | [[ Note this was originally EMACS-LOAD-PATH and has been changed | |
1652 | again; sh does not deal properly with hyphens in env variable names]] | |
1653 | rather than the EPATH environment variable. This is to avoid | |
1654 | conflicts with other Emacses. | |
1655 | ||
1656 | While Emacs is being built initially, the load-path | |
1657 | is now just ("../lisp"), ignoring paths.h. It does not | |
1658 | ignore EMACSLOADPATH, however; you should avoid having | |
1659 | this variable set while building Emacs. | |
1660 | ||
1661 | * You can now specify a translation table for keyboard | |
1662 | input characters, as a way of exchanging or substituting | |
1663 | keys on the keyboard. | |
1664 | ||
1665 | If the value of keyboard-translate-table is a string, | |
1666 | every character received from the keyboard is used as an | |
1667 | index in that string, and the character at that index in | |
1668 | the string is used as input instead of what was actually | |
1669 | typed. If the actual input character is >= the length of | |
1670 | the string, it is used unchanged. | |
1671 | ||
1672 | One way this feature can be used is to fix bad keyboard | |
1673 | designes. For example, on some terminals, Delete is | |
1674 | Shift-Underscore. Since Delete is a more useful character | |
1675 | than Underscore, it is an improvement to make the unshifted | |
1676 | character Delete and the shifted one Underscore. This can | |
1677 | be done with | |
1678 | ||
1679 | ;; First make a translate table that does the identity translation. | |
1680 | (setq keyboard-translate-table (make-string 128 0)) | |
1681 | (let ((i 0)) | |
1682 | (while (< i 128) | |
1683 | (aset keyboard-translate-table i i) | |
1684 | (setq i (1+ i)))) | |
1685 | ||
1686 | ;; Now alter translations of some characters. | |
1687 | (aset keyboard-translate-table ?\_ ?\^?) | |
1688 | (aset keyboard-translate-table ?\^? ?\_) | |
1689 | ||
1690 | If your terminal has a Meta key and can therefore send | |
1691 | codes up to 255, Meta characters are translated through | |
1692 | elements 128 through 255 of the translate table, and therefore | |
1693 | are translated independently of the corresponding non-Meta | |
1694 | characters. You must therefore establish translations | |
1695 | independently for the Meta characters if you want them too: | |
1696 | ||
1697 | ;; First make a translate table that does the identity translation. | |
1698 | (setq keyboard-translate-table (make-string 256 0)) | |
1699 | (let ((i 0)) | |
1700 | (while (< i 256) | |
1701 | (aset keyboard-translate-table i i) | |
1702 | (setq i (1+ i)))) | |
1703 | ||
1704 | ;; Now alter translations of some characters. | |
1705 | (aset keyboard-translate-table ?\_ ?\^?) | |
1706 | (aset keyboard-translate-table ?\^? ?\_) | |
1707 | ||
1708 | ;; Now alter translations of some Meta characters. | |
1709 | (aset keyboard-translate-table (+ 128 ?\_) (+ 128 ?\^?)) | |
1710 | (aset keyboard-translate-table (+ 128 ?\^?) (+ 128 ?\_)) | |
1711 | ||
1712 | * (process-kill-without-query PROCESS) | |
1713 | ||
1714 | This marks the process so that, when you kill Emacs, | |
1715 | you will not on its account be queried about active subprocesses. | |
1716 | ||
1717 | ||
1718 | \f | |
1719 | Changes in Emacs 1.11 | |
1720 | ||
1721 | * The commands C-c and C-z have been interchanged, | |
1722 | for greater compatibility with normal Unix usage. | |
1723 | C-z now runs suspend-emacs and C-c runs exit-recursive-edit. | |
1724 | ||
1725 | * The value returned by file-name-directory now ends | |
1726 | with a slash. (file-name-directory "foo/bar") => "foo/". | |
1727 | This avoids confusing results when dealing with files | |
1728 | in the root directory. | |
1729 | ||
1730 | The value of the per-buffer variable default-directory | |
1731 | is also supposed to have a final slash now. | |
1732 | ||
1733 | * There are now variables to control the switches passed to | |
1734 | `ls' by the C-x C-d command (list-directory). | |
1735 | list-directory-brief-switches is a string, initially "-CF", | |
1736 | used for brief listings, and list-directory-verbose-switches | |
1737 | is a string, initially "-l", used for verbose ones. | |
1738 | ||
1739 | * For Ann Arbor Ambassador terminals, the termcap "ti" string | |
1740 | is now used to initialize the screen geometry on entry to Emacs, | |
1741 | and the "te" string is used to set it back on exit. | |
1742 | If the termcap entry does not define the "ti" or "te" string, | |
1743 | Emacs does what it used to do. | |
1744 | ||
1745 | ||
1746 | \f | |
1747 | Changes in Emacs 1.10 | |
1748 | ||
1749 | * GNU Emacs has been made almost 1/3 smaller. | |
1750 | It now dumps out as only 530kbytes on Vax 4.2bsd. | |
1751 | ||
1752 | * The term "checkpoint" has been replaced by "auto save" | |
1753 | throughout the function names, variable names and documentation | |
1754 | of GNU Emacs. | |
1755 | ||
1756 | * The function load now tries appending ".elc" and ".el" | |
1757 | to the specified filename BEFORE it tries the filename | |
1758 | without change. | |
1759 | ||
1760 | * rmail now makes the mode line display the total number | |
1761 | of messages and the current message number. | |
1762 | The "f" command now means forward a message to another user. | |
1763 | The command to search through all messages for a string is now "F". | |
1764 | The "u" command now means to move back to the previous | |
1765 | message and undelete it. To undelete the selected message, use Meta-u. | |
1766 | ||
1767 | * The hyphen character is now equivalent to a Space while | |
1768 | in completing minibuffers. Both mean to complete an additional word. | |
1769 | ||
1770 | * The Lisp function error now takes args like format | |
1771 | which are used to construct the error message. | |
1772 | ||
1773 | * Redisplay will refuse to start its display at the end of the buffer. | |
1774 | It will pick a new place to display from, rather than use that. | |
1775 | ||
1776 | * The value returned by garbage-collect has been changed. | |
1777 | Its first element is no longer a number but a cons, | |
1778 | whose car is the number of cons cells now in use, | |
1779 | and whose cdr is the number of cons cells that have been | |
1780 | made but are now free. | |
1781 | The second element is similar but describes symbols rather than cons cells. | |
1782 | The third element is similar but describes markers. | |
1783 | ||
1784 | * The variable buffer-name has been eliminated. | |
1785 | The function buffer-name still exists. This is to prevent | |
1786 | user programs from changing buffer names without going | |
1787 | through the rename-buffer function. | |
1788 | ||
1789 | ||
1790 | \f | |
1791 | Changes in Emacs 1.9 | |
1792 | ||
1793 | * When a fill prefix is in effect, paragraphs are started | |
1794 | or separated by lines that do not start with the fill prefix. | |
1795 | Also, a line which consists of the fill prefix followed by | |
1796 | white space separates paragraphs. | |
1797 | ||
1798 | * C-x C-v runs the new function find-alternate-file. | |
1799 | It finds the specified file, switches to that buffer, | |
1800 | and kills the previous current buffer. (It requires | |
1801 | confirmation if that buffer had changes.) This is | |
1802 | most useful after you find the wrong file due to a typo. | |
1803 | ||
1804 | * Exiting the minibuffer moves the cursor to column 0, | |
1805 | to show you that it has really been exited. | |
1806 | ||
1807 | * Meta-g (fill-region) now fills each paragraph in the | |
1808 | region individually. To fill the region as if it were | |
1809 | a single paragraph (for when the paragraph-delimiting mechanism | |
1810 | does the wrong thing), use fill-region-as-paragraph. | |
1811 | ||
1812 | * Tab in text mode now runs the function tab-to-tab-stop. | |
1813 | A new mode called indented-text-mode is like text-mode | |
1814 | except that in it Tab runs the function indent-relative, | |
1815 | which indents the line under the previous line. | |
1816 | If auto fill is enabled while in indented-text-mode, | |
1817 | the new lines that it makes are indented. | |
1818 | ||
1819 | * Functions kill-rectangle and yank-rectangle. | |
1820 | kill-rectangle deletes the rectangle specified by dot and mark | |
1821 | (or by two arguments) and saves it in the variable killed-rectangle. | |
1822 | yank-rectangle inserts the rectangle in that variable. | |
1823 | ||
1824 | Tab characters in a rectangle being saved are replaced | |
1825 | by spaces in such a way that their appearance will | |
1826 | not be changed if the rectangle is later reinserted | |
1827 | at a different column position. | |
1828 | ||
1829 | * `+' in a regular expression now means | |
1830 | to repeat the previous expression one or more times. | |
1831 | `?' means to repeat it zero or one time. | |
1832 | They are in all regards like `*' except for the | |
1833 | number of repetitions they match. | |
1834 | ||
1835 | \< in a regular expression now matches the null string | |
1836 | when it is at the beginning of a word; \> matches | |
1837 | the null string at the end of a word. | |
1838 | ||
1839 | * C-x p narrows the buffer so that only the current page | |
1840 | is visible. | |
1841 | ||
1842 | * C-x ) with argument repeats the kbd macro just | |
1843 | defined that many times, counting the definition | |
1844 | as one repetition. | |
1845 | ||
1846 | * C-x ( with argument begins defining a kbd macro | |
1847 | starting with the last one defined. It executes that | |
1848 | previous kbd macro initially, just as if you began | |
1849 | by typing it over again. | |
1850 | ||
1851 | * C-x q command queries the user during kbd macro execution. | |
1852 | With prefix argument, enters recursive edit, | |
1853 | reading keyboard commands even within a kbd macro. | |
1854 | You can give different commands each time the macro executes. | |
1855 | Without prefix argument, reads a character. Your options are: | |
1856 | Space -- execute the rest of the macro. | |
1857 | Delete -- skip the rest of the macro; start next repetition. | |
1858 | C-d -- skip rest of the macro and don't repeat it any more. | |
1859 | C-r -- enter a recursive edit, then on exit ask again for a character | |
1860 | C-l -- redisplay screen and ask again." | |
1861 | ||
1862 | * write-kbd-macro and append-kbd-macro are used to save | |
1863 | a kbd macro definition in a file (as Lisp code to | |
1864 | redefine the macro when the file is loaded). | |
1865 | These commands differ in that write-kbd-macro | |
1866 | discards the previous contents of the file. | |
1867 | If given a prefix argument, both commands | |
1868 | record the keys which invoke the macro as well as the | |
1869 | macro's definition. | |
1870 | ||
1871 | * The variable global-minor-modes is used to display | |
1872 | strings in the mode line of all buffers. It should be | |
1873 | a list of elements thaht are conses whose cdrs are strings | |
1874 | to be displayed. This complements the variable | |
1875 | minor-modes, which has the same effect but has a separate | |
1876 | value in each buffer. | |
1877 | ||
1878 | * C-x = describes horizontal scrolling in effect, if any. | |
1879 | ||
1880 | * Return now auto-fills the line it is ending, in auto fill mode. | |
1881 | Space with zero as argument auto-fills the line before it | |
1882 | just like Space without an argument. | |
1883 | ||
1884 | ||
1885 | \f | |
1886 | Changes in Emacs 1.8 | |
1887 | ||
1888 | This release mostly fixes bugs. There are a few new features: | |
1889 | ||
1890 | * apropos now sorts the symbols before displaying them. | |
1891 | Also, it returns a list of the symbols found. | |
1892 | ||
1893 | apropos now accepts a second arg PRED which should be a function | |
1894 | of one argument; if PRED is non-nil, each symbol is tested | |
1895 | with PRED and only symbols for which PRED returns non-nil | |
1896 | appear in the output or the returned list. | |
1897 | ||
1898 | If the third argument to apropos is non-nil, apropos does not | |
1899 | display anything; it merely returns the list of symbols found. | |
1900 | ||
1901 | C-h a now runs the new function command-apropos rather than | |
1902 | apropos, and shows only symbols with definitions as commands. | |
1903 | ||
1904 | * M-x shell sends the command | |
1905 | if (-f ~/.emacs_NAME)source ~/.emacs_NAME | |
1906 | invisibly to the shell when it starts. Here NAME | |
1907 | is replaced by the name of shell used, | |
1908 | as it came from your ESHELL or SHELL environment variable | |
1909 | but with directory name, if any, removed. | |
1910 | ||
1911 | * M-, now runs the command tags-loop-continue, which is used | |
1912 | to resume a terminated tags-search or tags-query-replace. | |
1913 | ||
1914 | ||
1915 | \f | |
1916 | Changes in Emacs 1.7 | |
1917 | ||
1918 | It's Beat CCA Week. | |
1919 | ||
1920 | * The initial buffer is now called "*scratch*" instead of "scratch", | |
1921 | so that all buffer names used automatically by Emacs now have *'s. | |
1922 | ||
1923 | * Undo information is now stored separately for each buffer. | |
1924 | The Undo command (C-x u) always applies to the current | |
1925 | buffer only. | |
1926 | ||
1927 | C-_ is now a synonym for C-x u. | |
1928 | ||
1929 | (buffer-flush-undo BUFFER) causes undo information not to | |
1930 | be kept for BUFFER, and frees the space that would have | |
1931 | been used to hold it. In any case, no undo information is | |
1932 | kept for buffers whose names start with spaces. (These | |
1933 | buffers also do not appear in the C-x C-b display.) | |
1934 | ||
1935 | * Rectangle operations are now implemented. | |
1936 | C-x r stores the rectangle described by dot and mark | |
1937 | into a register; it reads the register name from the keyboard. | |
1938 | C-x g, the command to insert the contents of a register, | |
1939 | can be used to reinsert the rectangle elsewhere. | |
1940 | ||
1941 | Other rectangle commands include | |
1942 | open-rectangle: | |
1943 | insert a blank rectangle in the position and size | |
1944 | described by dot and mark, at its corners; | |
1945 | the existing text is pushed to the right. | |
1946 | clear-rectangle: | |
1947 | replace the rectangle described by dot ane mark | |
1948 | with blanks. The previous text is deleted. | |
1949 | delete-rectangle: | |
1950 | delete the text of the specified rectangle, | |
1951 | moving the text beyond it on each line leftward. | |
1952 | ||
1953 | * Side-by-side windows are allowed. Use C-x 5 to split the | |
1954 | current window into two windows side by side. | |
1955 | C-x } makes the selected window ARG columns wider at the | |
1956 | expense of the windows at its sides. C-x { makes the selected | |
1957 | window ARG columns narrower. An argument to C-x 5 specifies | |
1958 | how many columns to give to the leftmost of the two windows made. | |
1959 | ||
1960 | C-x 2 now accepts a numeric argument to specify the number of | |
1961 | lines to give to the uppermost of the two windows it makes. | |
1962 | ||
1963 | * Horizontal scrolling of the lines in a window is now implemented. | |
1964 | C-x < (scroll-left) scrolls all displayed lines left, | |
1965 | with the numeric argument (default 1) saying how far to scroll. | |
1966 | When the window is scrolled left, some amount of the beginning | |
1967 | of each nonempty line is replaced by an "$". | |
1968 | C-x > scrolls right. If a window has no text hidden at the left | |
1969 | margin, it cannot be scrolled any farther right than that. | |
1970 | When nonzero leftwards scrolling is in effect in a window. | |
1971 | lines are automatically truncated at the window's right margin | |
1972 | regardless of the value of the variable truncate-lines in the | |
1973 | buffer being displayed. | |
1974 | ||
1975 | * C-x C-d now uses the default output format of `ls', | |
1976 | which gives just file names in multiple columns. | |
1977 | C-u C-x C-d passes the -l switch to `ls'. | |
1978 | ||
1979 | * C-t at the end of a line now exchanges the two preceding characters. | |
1980 | ||
1981 | All the transpose commands now interpret zero as an argument | |
1982 | to mean to transpose the textual unit after or around dot | |
1983 | with the one after or around the mark. | |
1984 | ||
1985 | * M-! executes a shell command in an inferior shell | |
1986 | and displays the output from it. With a prefix argument, | |
1987 | it inserts the output in the current buffer after dot | |
1988 | and sets the mark after the output. The shell command | |
1989 | gets /dev/null as its standard input. | |
1990 | ||
1991 | M-| is like M-! but passes the contents of the region | |
1992 | as input to the shell command. A prefix argument makes | |
1993 | the output from the command replace the contents of the region. | |
1994 | ||
1995 | * The mode line will now say "Def" after the major mode | |
1996 | while a keyboard macro is being defined. | |
1997 | ||
1998 | * The variable fill-prefix is now used by Meta-q. | |
1999 | Meta-q removes the fill prefix from lines that start with it | |
2000 | before filling, and inserts the fill prefix on each line | |
2001 | after filling. | |
2002 | ||
2003 | The command C-x . sets the fill prefix equal to the text | |
2004 | on the current line before dot. | |
2005 | ||
2006 | * The new command Meta-j (indent-new-comment-line), | |
2007 | is like Linefeed (indent-new-line) except when dot is inside a comment; | |
2008 | in that case, Meta-j inserts a comment starter on the new line, | |
2009 | indented under the comment starter above. It also inserts | |
2010 | a comment terminator at the end of the line above, | |
2011 | if the language being edited calls for one. | |
2012 | ||
2013 | * Rmail should work correctly now, and has some C-h m documentation. | |
2014 | ||
2015 | ||
2016 | \f | |
2017 | Changes in Emacs 1.6 | |
2018 | ||
2019 | * save-buffers-kill-emacs is now on C-x C-c | |
2020 | while C-x C-z does suspend-emacs. This is to make | |
2021 | C-x C-c like the normal Unix meaning of C-c | |
2022 | and C-x C-z linke the normal Unix meaning of C-z. | |
2023 | ||
2024 | * M-ESC (eval-expression) is now a disabled command by default. | |
2025 | This prevents users who type ESC ESC accidentally from | |
2026 | getting confusing results. Put | |
2027 | (put 'eval-expression 'disabled nil) | |
2028 | in your ~/.emacs file to enable the command. | |
2029 | ||
2030 | * Self-inserting text is grouped into bunches for undoing. | |
2031 | Each C-x u command undoes up to 20 consecutive self-inserting | |
2032 | characters. | |
2033 | ||
2034 | * Help f now uses as a default the function being called | |
2035 | in the innermost Lisp expression that dot is in. | |
2036 | This makes it more convenient to use while writing | |
2037 | Lisp code to run in Emacs. | |
2038 | (If the text around dot does not appear to be a call | |
2039 | to a Lisp function, there is no default.) | |
2040 | ||
2041 | Likewise, Help v uses the symbol around or before dot | |
2042 | as a default, if that is a variable name. | |
2043 | ||
2044 | * Commands that read filenames now insert the default | |
2045 | directory in the minibuffer, to become part of your input. | |
2046 | This allows you to see what the default is. | |
2047 | You may type a filename which goes at the end of the | |
2048 | default directory, or you may edit the default directory | |
2049 | as you like to create the input you want to give. | |
2050 | You may also type an absolute pathname (starting with /) | |
2051 | or refer to a home directory (input starting with ~) | |
2052 | after the default; the presence of // or /~ causes | |
2053 | everything up through the slash that precedes your | |
2054 | type-in to be ignored. | |
2055 | ||
2056 | Returning the default directory without change, | |
2057 | including the terminating slash, requests the use | |
2058 | of the default file name (usually the visited file's name). | |
2059 | ||
2060 | Set the variable insert-default-directory to nil | |
2061 | to turn off this feature. | |
2062 | ||
2063 | * M-x shell now uses the environment variable ESHELL, | |
2064 | if it exists, as the file name of the shell to run. | |
2065 | If there is no ESHELL variable, the SHELL variable is used. | |
2066 | This is because some shells do not work properly as inferiors | |
2067 | of Emacs (or anything like Emacs). | |
2068 | ||
2069 | * A new variable minor-modes now exists, with a separate value | |
2070 | in each buffer. Its value should be an alist of elements | |
2071 | (MODE-FUNCTION-SYMBOL . PRETTY-NAME-STRING), one for each | |
2072 | minor mode that is turned on in the buffer. The pretty | |
2073 | name strings are displayed in the mode line after the name of the | |
2074 | major mode (with spaces between them). The mode function | |
2075 | symbols should be symbols whose function definitions will | |
2076 | turn on the minor mode if given 1 as an argument; they are present | |
2077 | so that Help m can find their documentation strings. | |
2078 | ||
2079 | * The format of tag table files has been changed. | |
2080 | The new format enables Emacs to find tags much faster. | |
2081 | ||
2082 | A new program, etags, exists to make the kind of | |
2083 | tag table that Emacs wants. etags is invoked just | |
2084 | like ctags; in fact, if you give it any switches, | |
2085 | it does exactly what ctags would do. Give it the | |
2086 | empty switch ("-") to make it act like ctags with no switches. | |
2087 | ||
2088 | etags names the tag table file "TAGS" rather than "tags", | |
2089 | so that these tag tables and the standard Unix ones | |
2090 | can coexist. | |
2091 | ||
2092 | The tags library can no longer use standard ctags-style | |
2093 | tag tables files. | |
2094 | ||
2095 | * The file of Lisp code Emacs reads on startup is now | |
2096 | called ~/.emacs rather than ~/.emacs_pro. | |
2097 | ||
2098 | * copy-file now gives the copied file the same mode bits | |
2099 | as the original file. | |
2100 | ||
2101 | * Output from a process inserted into the process's buffer | |
2102 | no longer sets the buffer's mark. Instead it sets a | |
2103 | marker associated with the process to point to the end | |
2104 | of the inserted text. You can access this marker with | |
2105 | (process-mark PROCESS) | |
2106 | and then either examine its position with marker-position | |
2107 | or set its position with set-marker. | |
2108 | ||
2109 | * completing-read takes a new optional fifth argument which, | |
2110 | if non-nil, should be a string of text to insert into | |
2111 | the minibuffer before reading user commands. | |
2112 | ||
2113 | * The Lisp function elt now exists: | |
2114 | (elt ARRAY N) is like (aref ARRAY N), | |
2115 | (elt LIST N) is like (nth N LIST). | |
2116 | ||
2117 | * rplaca is now a synonym for setcar, and rplacd for setcdr. | |
2118 | eql is now a synonym for eq; it turns out that the Common Lisp | |
2119 | distinction between eq and eql is insignificant in Emacs. | |
2120 | numberp is a new synonym for integerp. | |
2121 | ||
2122 | * auto-save has been renamed to auto-save-mode. | |
2123 | ||
2124 | * Auto save file names for buffers are now created by the | |
2125 | function make-auto-save-file-name. This is so you can | |
2126 | redefine that function to change the way auto save file names | |
2127 | are chosen. | |
2128 | ||
2129 | * expand-file-name no longer discards a final slash. | |
2130 | (expand-file-name "foo" "/lose") => "/lose/foo" | |
2131 | (expand-file-name "foo/" "/lose") => "/lose/foo/" | |
2132 | ||
2133 | Also, expand-file-name no longer substitutes $ constructs. | |
2134 | A new function substitute-in-file-name does this. Reading | |
2135 | a file name with read-file-name or the `f' or`F' option | |
2136 | of interactive calling uses substitute-in-file-name | |
2137 | on the file name that was read and returns the result. | |
2138 | ||
2139 | All I/O primitives including insert-file-contents and | |
2140 | delete-file call expand-file-name on the file name supplied. | |
2141 | This change makes them considerably faster in the usual case. | |
2142 | ||
2143 | * Interactive calling spec strings allow the new code letter 'D' | |
2144 | which means to read a directory name. It is like 'f' except | |
2145 | that the default if the user makes no change in the minibuffer | |
2146 | is to return the current default directory rather than the | |
2147 | current visited file name. | |
2148 | ||
2149 | ||
2150 | \f | |
2151 | Changes in Emacs 1.5 | |
2152 | ||
2153 | * suspend-emacs now accepts an optional argument | |
2154 | which is a string to be stuffed as terminal input | |
2155 | to be read by Emacs's superior shell after Emacs exits. | |
2156 | ||
2157 | A library called ledit exists which uses this feature | |
2158 | to transmit text to a Lisp job running as a sibling of | |
2159 | Emacs. | |
2160 | ||
2161 | * If find-file is given the name of a directory, | |
2162 | it automatically invokes dired on that directory | |
2163 | rather than reading in the binary data that make up | |
2164 | the actual contents of the directory according to Unix. | |
2165 | ||
2166 | * Saving an Emacs buffer now preserves the file modes | |
2167 | of any previously existing file with the same name. | |
2168 | This works using new Lisp functions file-modes and | |
2169 | set-file-modes, which can be used to read or set the mode | |
2170 | bits of any file. | |
2171 | ||
2172 | * The Lisp function cond now exists, with its traditional meaning. | |
2173 | ||
2174 | * defvar and defconst now permit the documentation string | |
2175 | to be omitted. defvar also permits the initial value | |
2176 | to be omitted; then it acts only as a comment. | |
2177 | ||
2178 | ||
2179 | \f | |
2180 | Changes in Emacs 1.4 | |
2181 | ||
2182 | * Auto-filling now normally indents the new line it creates | |
2183 | by calling indent-according-to-mode. This function, meanwhile, | |
2184 | has in Fundamental and Text modes the effect of making the line | |
2185 | have an indentation of the value of left-margin, a per-buffer variable. | |
2186 | ||
2187 | Tab no longer precisely does indent-according-to-mode; | |
2188 | it does that in all modes that supply their own indentation routine, | |
2189 | but in Fundamental, Text and allied modes it inserts a tab character. | |
2190 | ||
2191 | * The command M-x grep now invokes grep (on arguments | |
2192 | supplied by the user) and reads the output from grep | |
2193 | asynchronously into a buffer. The command C-x ` can | |
2194 | be used to move to the lines that grep has found. | |
2195 | This is an adaptation of the mechanism used for | |
2196 | running compilations and finding the loci of error messages. | |
2197 | ||
2198 | You can now use C-x ` even while grep or compilation | |
2199 | is proceeding; as more matches or error messages arrive, | |
2200 | C-x ` will parse them and be able to find them. | |
2201 | ||
2202 | * M-x mail now provides a command to send the message | |
2203 | and "exit"--that is, return to the previously selected | |
2204 | buffer. It is C-z C-z. | |
2205 | ||
2206 | * Tab in C mode now tries harder to adapt to all indentation styles. | |
2207 | If the line being indented is a statement that is not the first | |
2208 | one in the containing compound-statement, it is aligned under | |
2209 | the beginning of the first statement. | |
2210 | ||
2211 | * The functions screen-width and screen-height return the | |
2212 | total width and height of the screen as it is now being used. | |
2213 | set-screen-width and set-screen-height tell Emacs how big | |
2214 | to assume the screen is; they each take one argument, | |
2215 | an integer. | |
2216 | ||
2217 | * The Lisp function 'function' now exists. function is the | |
2218 | same as quote, except that it serves as a signal to the | |
2219 | Lisp compiler that the argument should be compiled as | |
2220 | a function. Example: | |
2221 | (mapcar (function (lambda (x) (+ x 5))) list) | |
2222 | ||
2223 | * The function set-key has been renamed to global-set-key. | |
2224 | undefine-key and local-undefine-key has been renamed to | |
2225 | global-unset-key and local-unset-key. | |
2226 | ||
2227 | * Emacs now collects input from asynchronous subprocesses | |
2228 | while waiting in the functions sleep-for and sit-for. | |
2229 | ||
2230 | * Shell mode's Newline command attempts to distinguish subshell | |
2231 | prompts from user input when issued in the middle of the buffer. | |
2232 | It no longer reexecutes from dot to the end of the line; | |
2233 | it reeexecutes the entire line minus any prompt. | |
2234 | The prompt is recognized by searching for the value of | |
2235 | shell-prompt-pattern, starting from the beginning of the line. | |
2236 | Anything thus skipped is not reexecuted. | |
2237 | ||
2238 | ||
a933dad1 | 2239 | \f |
9a21d88b | 2240 | Changes in Emacs 1.3 |
a933dad1 | 2241 | |
9a21d88b KS |
2242 | * An undo facility exists now. Type C-x u to undo a batch of |
2243 | changes (usually one command's changes, but some commands | |
2244 | such as query-replace divide their changes into multiple | |
2245 | batches. You can repeat C-x u to undo further. As long | |
2246 | as no commands other than C-x u intervene, each one undoes | |
2247 | another batch. A numeric argument to C-x u acts as a repeat | |
2248 | count. | |
2249 | ||
2250 | If you keep on undoing, eventually you may be told that | |
2251 | you have used up all the recorded undo information. | |
2252 | Some actions, such as reading in files, discard all | |
2253 | undo information. | |
2254 | ||
2255 | The undo information is not currently stored separately | |
2256 | for each buffer, so it is mainly good if you do something | |
2257 | totally spastic. [This has since been fixed.] | |
2258 | ||
2259 | * A learn-by-doing tutorial introduction to Emacs now exists. | |
2260 | Type C-h t to enter it. | |
2261 | ||
2262 | * An Info documentation browser exists. Do M-x info to enter it. | |
2263 | It contains a tutorial introduction so that no more documentation | |
2264 | is needed here. As of now, the only documentation in it | |
2265 | is that of Info itself. | |
2266 | ||
2267 | * Help k and Help c are now different. Help c prints just the | |
2268 | name of the function which the specified key invokes. Help k | |
2269 | prints the documentation of the function as well. | |
2270 | ||
2271 | * A document of the differences between GNU Emacs and Twenex Emacs | |
2272 | now exists. It is called DIFF, in the same directory as this file. | |
2273 | ||
2274 | * C mode can now indent comments better, including multi-line ones. | |
2275 | Meta-Control-q now reindents comment lines within the expression | |
2276 | being aligned. | |
2277 | ||
2278 | * Insertion of a close-parenthesis now shows the matching open-parenthesis | |
2279 | even if it is off screen, by printing the text following it on its line | |
2280 | in the minibuffer. | |
2281 | ||
2282 | * A file can now contain a list of local variable values | |
2283 | to be in effect when the file is edited. See the file DIFF | |
2284 | in the same directory as this file for full details. | |
2285 | ||
2286 | * A function nth is defined. It means the same thing as in Common Lisp. | |
2287 | ||
2288 | * The function install-command has been renamed to set-key. | |
2289 | It now takes the key sequence as the first argument | |
2290 | and the definition for it as the second argument. | |
2291 | Likewise, local-install-command has been renamed to local-set-key. | |
2292 | ||
2293 | ||
2294 | \f | |
2295 | Changes in Emacs 1.2 | |
2296 | ||
2297 | * A Lisp single-stepping and debugging facility exists. | |
2298 | To cause the debugger to be entered when an error | |
2299 | occurs, set the variable debug-on-error non-nil. | |
2300 | ||
2301 | To cause the debugger to be entered whenever function foo | |
2302 | is called, do (debug-on-entry 'foo). To cancel this, | |
2303 | do (cancel-debug-on-entry 'foo). debug-on-entry does | |
2304 | not work for primitives (written in C), only functions | |
2305 | written in Lisp. Most standard Emacs commands are in Lisp. | |
2306 | ||
2307 | When the debugger is entered, the selected window shows | |
2308 | a buffer called " *Backtrace" which displays a series | |
2309 | of stack frames, most recently entered first. For each | |
2310 | frame, the function name called is shown, usually followed | |
2311 | by the argument values unless arguments are still being | |
2312 | calculated. At the beginning of the buffer is a description | |
2313 | of why the debugger was entered: function entry, function exit, | |
2314 | error, or simply that the user called the function `debug'. | |
2315 | ||
2316 | To exit the debugger and return to top level, type `q'. | |
2317 | ||
2318 | In the debugger, you can evaluate Lisp expressions by | |
2319 | typing `e'. This is equivalent to `M-ESC'. | |
2320 | ||
2321 | When the debugger is entered due to an error, that is | |
2322 | all you can do. When it is entered due to function entry | |
2323 | (such as, requested by debug-on-entry), you have two | |
2324 | options: | |
2325 | Continue execution and reenter debugger after the | |
2326 | completion of the function being entered. Type `c'. | |
2327 | Continue execution but enter the debugger before | |
2328 | the next subexpression. Type `d'. | |
2329 | ||
2330 | You will see that some stack frames are marked with *. | |
2331 | This means the debugger will be entered when those | |
2332 | frames exit. You will see the value being returned | |
2333 | in the first line of the backtrace buffer. Your options: | |
2334 | Continue execution, and return that value. Type `c'. | |
2335 | Continue execution, and return a specified value. Type `r'. | |
2336 | ||
2337 | You can mark a frame to enter the debugger on exit | |
2338 | with the `b' command, or clear such a mark with `u'. | |
2339 | ||
2340 | * Lisp macros now exist. | |
2341 | For example, you can write | |
2342 | (defmacro cadr (arg) (list 'car (list 'cdr arg))) | |
2343 | and then the expression | |
2344 | (cadr foo) | |
2345 | will expand into | |
2346 | (car (cdr foo)) | |
2347 | ||
2348 | ||
2349 | \f | |
2350 | Changes in Emacs 1.1 | |
2351 | ||
2352 | * The initial buffer is now called "scratch" and is in a | |
2353 | new major mode, Lisp Interaction mode. This mode is | |
2354 | intended for typing Lisp expressions, evaluating them, | |
2355 | and having the values printed into the buffer. | |
2356 | ||
2357 | Type Linefeed after a Lisp expression, to evaluate the | |
2358 | expression and have its value printed into the buffer, | |
2359 | advancing dot. | |
2360 | ||
2361 | The other commands of Lisp mode are available. | |
2362 | ||
2363 | * The C-x C-e command for evaluating the Lisp expression | |
2364 | before dot has been changed to print the value in the | |
2365 | minibuffer line rather than insert it in the buffer. | |
2366 | A numeric argument causes the printed value to appear | |
2367 | in the buffer instead. | |
2368 | ||
2369 | * In Lisp mode, the command M-C-x evaluates the defun | |
2370 | containing or following dot. The value is printed in | |
2371 | the minibuffer. | |
2372 | ||
2373 | * The value of a Lisp expression evaluated using M-ESC | |
2374 | is now printed in the minibuffer. | |
2375 | ||
2376 | * M-q now runs fill-paragraph, independent of major mode. | |
2377 | ||
2378 | * C-h m now prints documentation on the current buffer's | |
2379 | major mode. What it prints is the documentation of the | |
2380 | major mode name as a function. All major modes have been | |
2381 | equipped with documentation that describes all commands | |
2382 | peculiar to the major mode, for this purpose. | |
2383 | ||
2384 | * You can display a Unix manual entry with | |
2385 | the M-x manual-entry command. | |
2386 | ||
2387 | * You can run a shell, displaying its output in a buffer, | |
2388 | with the M-x shell command. The Return key sends input | |
2389 | to the subshell. Output is printed inserted automatically | |
2390 | in the buffer. Commands C-c, C-d, C-u, C-w and C-z are redefined | |
2391 | for controlling the subshell and its subjobs. | |
2392 | "cd", "pushd" and "popd" commands are recognized as you | |
2393 | enter them, so that the default directory of the Emacs buffer | |
2394 | always remains the same as that of the subshell. | |
2395 | ||
2396 | * C-x $ (that's a real dollar sign) controls line-hiding based | |
2397 | on indentation. With a numeric arg N > 0, it causes all lines | |
2398 | indented by N or more columns to become invisible. | |
2399 | They are, effectively, tacked onto the preceding line, where | |
2400 | they are represented by " ..." on the screen. | |
2401 | (The end of the preceding visible line corresponds to a | |
2402 | screen cursor position before the "...". Anywhere in the | |
2403 | invisible lines that follow appears on the screen as a cursor | |
2404 | position after the "...".) | |
2405 | Currently, all editing commands treat invisible lines just | |
2406 | like visible ones, except for C-n and C-p, which have special | |
2407 | code to count visible lines only. | |
2408 | C-x $ with no argument turns off this mode, which in any case | |
2409 | is remembered separately for each buffer. | |
2410 | ||
2411 | * Outline mode is another form of selective display. | |
2412 | It is a major mode invoked with M-x outline-mode. | |
2413 | It is intended for editing files that are structured as | |
2414 | outlines, with heading lines (lines that begin with one | |
2415 | or more asterisks) and text lines (all other lines). | |
2416 | The number of asterisks in a heading line are its level; | |
2417 | the subheadings of a heading line are all following heading | |
2418 | lines at higher levels, until but not including the next | |
2419 | heading line at the same or a lower level, regardless | |
2420 | of intervening text lines. | |
2421 | ||
2422 | In outline mode, you have commands to hide (remove from display) | |
2423 | or show the text or subheadings under each heading line | |
2424 | independently. Hidden text or subheadings are invisibly | |
2425 | attached to the end of the preceding heading line, so that | |
2426 | if you kill the hading line and yank it back elsewhere | |
2427 | all the invisible lines accompany it. | |
2428 | ||
2429 | All editing commands treat hidden outline-mode lines | |
2430 | as part of the preceding visible line. | |
2431 | ||
2432 | * C-x C-z runs save-buffers-kill-emacs | |
2433 | offers to save each file buffer, then exits. | |
2434 | ||
2435 | * C-c's function is now called suspend-emacs. | |
2436 | ||
2437 | * The command C-x m runs mail, which switches to a buffer *mail* | |
2438 | and lets you compose a message to send. C-x 4 m runs mail in | |
2439 | another window. Type C-z C-s in the mail buffer to send the | |
2440 | message according to what you have entered in the buffer. | |
2441 | ||
2442 | You must separate the headers from the message text with | |
2443 | an empty line. | |
2444 | ||
2445 | * You can now dired partial directories (specified with names | |
2446 | containing *'s, etc, all processed by the shell). Also, you | |
2447 | can dired more than one directory; dired names the buffer | |
2448 | according to the filespec or directory name. Reinvoking | |
2449 | dired on a directory already direded just switches back to | |
2450 | the same directory used last time; do M-x revert if you want | |
2451 | to read in the current contents of the directory. | |
2452 | ||
2453 | C-x d runs dired, and C-x 4 d runs dired in another window. | |
2454 | ||
2455 | C-x C-d (list-directory) also allows partial directories now. | |
2456 | ||
2457 | \f | |
2458 | Lisp programming changes | |
2459 | ||
2460 | * t as an output stream now means "print to the minibuffer". | |
2461 | If there is already text in the minibuffer printed via t | |
2462 | as an output stream, the new text is appended to the old | |
2463 | (or is truncated and lost at the margin). If the minibuffer | |
2464 | contains text put there for some other reason, it is cleared | |
2465 | first. | |
2466 | ||
2467 | t is now the top-level value of standard-output. | |
2468 | ||
2469 | t as an input stream now means "read via the minibuffer". | |
2470 | The minibuffer is used to read a line of input, with editing, | |
2471 | and this line is then parsed. Any excess not used by `read' | |
2472 | is ignored; each `read' from t reads fresh input. | |
2473 | t is now the top-level value of standard-input. | |
2474 | ||
2475 | * A marker may be used as an input stream or an output stream. | |
2476 | The effect is to grab input from where the marker points, | |
2477 | advancing it over the characters read, or to insert output | |
2478 | at the marker and advance it. | |
2479 | ||
2480 | * Output from an asynchronous subprocess is now inserted at | |
2481 | the end of the associated buffer, not at the buffer's dot, | |
2482 | and the buffer's mark is set to the end of the inserted output | |
2483 | each time output is inserted. | |
2484 | ||
2485 | * (pos-visible-in-window-p POS WINDOW) | |
2486 | returns t if position POS in WINDOW's buffer is in the range | |
2487 | that is being displayed in WINDOW; nil if it is scrolled | |
2488 | vertically out of visibility. | |
2489 | ||
2490 | If display in WINDOW is not currently up to date, this function | |
2491 | calculates carefully whether POS would appear if display were | |
2492 | done immediately based on the current (window-start WINDOW). | |
2493 | ||
2494 | POS defaults to (dot), and WINDOW to (selected-window). | |
2495 | ||
2496 | * Variable buffer-alist replaced by function (buffer-list). | |
2497 | The actual alist of buffers used internally by Emacs is now | |
2498 | no longer accessible, to prevent the user from crashing Emacs | |
2499 | by modifying it. The function buffer-list returns a list | |
2500 | of all existing buffers. Modifying this list cannot hurt anything | |
2501 | as a new list is constructed by each call to buffer-list. | |
2502 | ||
2503 | * load now takes an optional third argument NOMSG which, if non-nil, | |
2504 | prevents load from printing a message when it starts and when | |
2505 | it is done. | |
2506 | ||
2507 | * byte-recompile-directory is a new function which finds all | |
2508 | the .elc files in a directory, and regenerates each one which | |
2509 | is older than the corresponding .el (Lisp source) file. | |
2510 | ||
2511 | ||
2512 | \f | |
a933dad1 | 2513 | ---------------------------------------------------------------------- |
5b87ad55 | 2514 | This file is part of GNU Emacs. |
a933dad1 | 2515 | |
ab73e885 | 2516 | GNU Emacs is free software: you can redistribute it and/or modify |
5b87ad55 | 2517 | it under the terms of the GNU General Public License as published by |
ab73e885 GM |
2518 | the Free Software Foundation, either version 3 of the License, or |
2519 | (at your option) any later version. | |
5b87ad55 GM |
2520 | |
2521 | GNU Emacs is distributed in the hope that it will be useful, | |
2522 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
2523 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
2524 | GNU General Public License for more details. | |
a933dad1 | 2525 | |
5b87ad55 | 2526 | You should have received a copy of the GNU General Public License |
ab73e885 | 2527 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
a933dad1 | 2528 | |
a933dad1 DL |
2529 | \f |
2530 | Local variables: | |
2531 | mode: text | |
2532 | end: | |
ab5796a9 MB |
2533 | |
2534 | arch-tag: 33dc900d-9c58-473b-87c9-b6d7222323ea |