Commit | Line | Data |
---|---|---|
3787e12e GM |
1 | Old GNU Emacs NEWS -- history of user-visible changes thru version 15. |
2 | Copyright (C) 1985 Richard M. Stallman. | |
d874e913 | 3 | See the end for copying conditions. |
d874e913 | 4 | \f |
3787e12e GM |
5 | Changes in Emacs 15 |
6 | ||
7 | * Emacs now runs on Sun and Megatest 68000 systems; | |
8 | also on at least one 16000 system running 4.2. | |
9 | ||
10 | * Emacs now alters the output-start and output-stop characters | |
11 | to prevent C-s and C-q from being considered as flow control | |
12 | by cretinous rlogin software in 4.2. | |
13 | ||
14 | * It is now possible convert Mocklisp code (for Gosling Emacs) to Lisp code | |
15 | that can run in GNU Emacs. M-x convert-mocklisp-buffer | |
16 | converts the contents of the current buffer from Mocklisp to | |
17 | GNU Emacs Lisp. You should then save the converted buffer with C-x C-w | |
18 | under a name ending in ".el" | |
19 | ||
20 | There are probably some Mocklisp constructs that are not handled. | |
21 | If you encounter one, feel free to report the failure as a bug. | |
22 | The construct will be handled in a future Emacs release, if that is not | |
23 | not too hard to do. | |
24 | ||
25 | Note that lisp code converted from Mocklisp code will not necessarily | |
26 | run as fast as code specifically written for GNU Emacs, nor will it use | |
27 | the many features of GNU Emacs which are not present in Gosling's emacs. | |
28 | (In particular, the byte-compiler (m-x byte-compile-file) knows little | |
29 | about compilation of code directly converted from mocklisp.) | |
30 | It is envisaged that old mocklisp code will be incrementally converted | |
31 | to GNU lisp code, with M-x convert-mocklisp-buffer being the first | |
32 | step in this process. | |
33 | ||
34 | * Control-x n (narrow-to-region) is now by default a disabled command. | |
35 | ||
36 | This means that, if you issue this command, it will ask whether | |
37 | you really mean it. You have the opportunity to enable the | |
38 | command permanently at that time, so you will not be asked again. | |
39 | This will place the form "(put 'narrow-to-region 'disabled nil)" in your | |
40 | .emacs file. | |
41 | ||
42 | * Tags now prompts for the tag table file name to use. | |
43 | ||
44 | All the tags commands ask for the tag table file name | |
45 | if you have not yet specified one. | |
46 | ||
47 | Also, the command M-x visit-tag-table can now be used to | |
48 | specify the tag table file name initially, or to switch | |
49 | to a new tag table. | |
50 | ||
51 | * If truncate-partial-width-windows is non-nil (as it intially is), | |
52 | all windows less than the full screen width (that is, | |
53 | made by side-by-side splitting) truncate lines rather than continuing | |
54 | them. | |
55 | ||
56 | * Emacs now checks for Lisp stack overflow to avoid fatal errors. | |
57 | The depth in eval, apply and funcall may not exceed max-lisp-eval-depth. | |
58 | The depth in variable bindings and unwind-protects may not exceed | |
59 | max-specpdl-size. If either limit is exceeded, an error occurs. | |
60 | You can set the limits to larger values if you wish, but if you make them | |
61 | too large, you are vulnerable to a fatal error if you invoke | |
62 | Lisp code that does infinite recursion. | |
63 | ||
64 | * New hooks find-file-hook and write-file-hook. | |
65 | Both of these variables if non-nil should be functions of no arguments. | |
66 | At the time they are called (current-buffer) will be the buffer being | |
67 | read or written respectively. | |
68 | ||
69 | find-file-hook is called whenever a file is read into its own buffer, | |
70 | such as by calling find-file, revert-buffer, etc. It is not called by | |
71 | functions such as insert-file which do not read the file into a buffer of | |
72 | its own. | |
73 | find-file-hook is called after the file has been read in and its | |
74 | local variables (if any) have been processed. | |
75 | ||
76 | write-file-hook is called just before writing out a file from a buffer. | |
77 | ||
78 | * The initial value of shell-prompt-pattern is now "^[^#$%>]*[#$%>] *" | |
79 | ||
80 | * If the .emacs file sets inhibit-startup-message to non-nil, | |
81 | the messages normally printed by Emacs at startup time | |
82 | are inhibited. | |
83 | ||
84 | * Facility for run-time conditionalization on the basis of emacs features. | |
85 | ||
86 | The new variable features is a list of symbols which represent "features" | |
87 | of the executing emacs, for use in run-time conditionalization. | |
88 | ||
89 | The function featurep of one argument may be used to test for the | |
90 | presence of a feature. It is just the same as | |
91 | (not (null (memq FEATURE features))) where FEATURE is its argument. | |
92 | For example, (if (featurep 'magic-window-hack) | |
93 | (transmogrify-window 'vertical) | |
94 | (split-window-vertically)) | |
95 | ||
96 | The function provide of one argument "announces" that FEATURE is present. | |
97 | It is much the same as (if (not (featurep FEATURE)) | |
98 | (setq features (cons FEATURE features))) | |
99 | ||
100 | The function require with arguments FEATURE and FILE-NAME loads FILE-NAME | |
101 | (which should contain the form (provide FEATURE)) unless FEATURE is present. | |
102 | It is much the same as (if (not (featurep FEATURE)) | |
103 | (progn (load FILE-NAME) | |
104 | (if (not featurep FEATURE) (error ...)))) | |
105 | FILE-NAME is optional and defaults to FEATURE. | |
106 | ||
107 | * New function load-average. | |
108 | ||
109 | This returns a list of three integers, which are | |
110 | the current 1 minute, 5 minute and 15 minute load averages, | |
111 | each multiplied by a hundred (since normally they are floating | |
112 | point numbers). | |
113 | ||
114 | * Per-terminal libraries loaded automatically. | |
115 | ||
116 | Emacs when starting up on terminal type T automatically loads | |
117 | a library named term-T. T is the value of the TERM environment variable. | |
118 | Thus, on terminal type vt100, Emacs would do (load "term-vt100" t t). | |
119 | Such libraries are good places to set the character translation table. | |
120 | ||
121 | It is a bad idea to redefine lots of commands in a per-terminal library, | |
122 | since this affects all users. Instead, define a command to do the | |
123 | redefinitions and let the user's init file, which is loaded later, | |
124 | call that command or not, as the user prefers. | |
125 | ||
126 | * Programmer's note: detecting killed buffers. | |
127 | ||
128 | Buffers are eliminated by explicitly killing them, using | |
129 | the function kill-buffer. This does not eliminate or affect | |
130 | the pointers to the buffer which may exist in list structure. | |
131 | If you have a pointer to a buffer and wish to tell whether | |
132 | the buffer has been killed, use the function buffer-name. | |
133 | It returns nil on a killed buffer, and a string on a live buffer. | |
134 | ||
135 | * New ways to access the last command input character. | |
136 | ||
137 | The function last-key-struck, which used to return the last | |
138 | input character that was read by command input, is eliminated. | |
139 | Instead, you can find this information as the value of the | |
140 | variable last-command-char. (This variable used to be called | |
141 | last-key). | |
142 | ||
143 | Another new variable, last-input-char, holds the last character | |
144 | read from the command input stream regardless of what it was | |
145 | read for. last-input-char and last-command-char are different | |
146 | only inside a command that has called read-char to read input. | |
147 | ||
148 | * The new switch -kill causes Emacs to exit after processing the | |
149 | preceding command line arguments. Thus, | |
150 | emacs -l lib data -e do-it -kill | |
151 | means to load lib, find file data, call do-it on no arguments, | |
152 | and then exit. | |
153 | ||
154 | * The config.h file has been modularized. | |
155 | ||
156 | Options that depend on the machine you are running on are defined | |
157 | in a file whose name starts with "m-", such as m-vax.h. | |
158 | Options that depend on the operating system software version you are | |
159 | running on are defined in a file whose name starts with "s-", | |
160 | such as s-bsd4.2.h. | |
161 | ||
162 | config.h includes one m- file and one s- file. It also defines a | |
163 | few other options whose values do not follow from the machine type | |
164 | and system type being used. Installers normally will have to | |
165 | select the correct m- and s- files but will never have to change their | |
166 | contents. | |
d874e913 | 167 | |
3787e12e GM |
168 | * Termcap AL and DL strings are understood. |
169 | ||
170 | If the termcap entry defines AL and DL strings, for insertion | |
171 | and deletion of multiple lines in one blow, Emacs now uses them. | |
172 | This matters most on certain bit map display terminals for which | |
173 | scrolling is comparatively slow. | |
d874e913 | 174 | |
3787e12e | 175 | * Bias against scrolling screen far on fast terminals. |
d874e913 | 176 | |
3787e12e GM |
177 | Emacs now prefers to redraw a few lines rather than |
178 | shift them a long distance on the screen, when the terminal is fast. | |
d874e913 | 179 | |
3787e12e GM |
180 | * New major mode, mim-mode. |
181 | ||
182 | This major mode is for editing MDL code. Perhaps a MDL | |
183 | user can explain why it is not called mdl-mode. | |
184 | You must load the library mim-mode explicitly to use this. | |
185 | ||
186 | * GNU documentation formatter `texinfo'. | |
187 | ||
188 | The `texinfo' library defines a format for documentation | |
189 | files which can be passed through Tex to make a printed manual | |
190 | or passed through texinfo to make an Info file. Texinfo is | |
191 | documented fully by its own Info file; compare this file | |
192 | with its source, texinfo.texinfo, for additional guidance. | |
193 | ||
194 | All documentation files for GNU utilities should be written | |
195 | in texinfo input format. | |
196 | ||
197 | Tex processing of texinfo files requires the Botex macro package. | |
198 | This is not ready for distribution yet, but will appear at | |
199 | a later time. | |
200 | ||
201 | * New function read-from-string (emacs 15.29) | |
d874e913 | 202 | |
3787e12e GM |
203 | read-from-string takes three arguments: a string to read from, |
204 | and optionally start and end indices which delimit a substring | |
205 | from which to read. (They default to 0 and the length of the string, | |
206 | respectively.) | |
d874e913 | 207 | |
3787e12e GM |
208 | This function returns a cons cell whose car is the object produced |
209 | by reading from the string and whose cdr is a number giving the | |
210 | index in the string of the first character not read. That index may | |
211 | be passed as the second argument to a later call to read-from-string | |
212 | to read the next form represented by the string. | |
d874e913 | 213 | |
3787e12e GM |
214 | In addition, the function read now accepts a string as its argument. |
215 | In this case, it calls read-from-string on the whole string, and | |
216 | returns the car of the result. (ie the actual object read.) | |
217 | \f | |
218 | Changes in Emacs 14 | |
219 | ||
220 | * Completion now prints various messages such as [Sole Completion] | |
221 | or [Next Character Not Unique] to describe the results obtained. | |
222 | These messages appear after the text in the minibuffer, and remain | |
223 | on the screen until a few seconds go by or you type a key. | |
224 | ||
225 | * The buffer-read-only flag is implemented. | |
226 | Setting or binding this per-buffer variable to a non-nil value | |
227 | makes illegal any operation which would modify the textual content of | |
228 | the buffer. (Such operations signal a buffer-read-only error) | |
229 | The read-only state of a buffer may be altered using toggle-read-only | |
230 | (C-x C-q) | |
231 | The buffers used by Rmail, Dired, Rnews, and Info are now read-only | |
232 | by default to prevent accidental damage to the information in those | |
233 | buffers. | |
234 | ||
235 | * Functions car-safe and cdr-safe. | |
236 | These functions are like car and cdr when the argument is a cons. | |
237 | Given an argument not a cons, car-safe always returns nil, with | |
238 | no error; the same for cdr-safe. | |
239 | ||
240 | * The new function user-real-login-name returns the name corresponding | |
241 | to the real uid of the Emacs process. This is usually the same | |
242 | as what user-login-name returns; however, when Emacs is invoked | |
243 | from su, user-real-login-name returns "root" but user-login-name | |
244 | returns the name of the user who invoked su. | |
245 | \f | |
246 | Changes in Emacs 13 | |
d874e913 | 247 | |
3787e12e | 248 | * There is a new version numbering scheme. |
d874e913 | 249 | |
3787e12e GM |
250 | What used to be the first version number, which was 1, |
251 | has been discarded since it does not seem that I need three | |
252 | levels of version number. | |
d874e913 | 253 | |
3787e12e GM |
254 | However, a new third version number has been added to represent |
255 | changes by user sites. This number will always be zero in | |
256 | Emacs when I distribute it; it will be incremented each time | |
257 | Emacs is built at another site. | |
d874e913 | 258 | |
3787e12e GM |
259 | * There is now a reader syntax for Meta characters: |
260 | \M-CHAR means CHAR or'ed with the Meta bit. For example: | |
d874e913 | 261 | |
3787e12e GM |
262 | ?\M-x is (+ ?x 128) |
263 | ?\M-\n is (+ ?\n 128) | |
264 | ?\M-\^f is (+ ?\^f 128) | |
d874e913 | 265 | |
3787e12e GM |
266 | This syntax can be used in strings too. Note, however, that |
267 | Meta characters are not meaningful in key sequences being passed | |
268 | to define-key or lookup-key; you must use ESC characters (\e) | |
269 | in them instead. | |
d874e913 | 270 | |
3787e12e | 271 | ?\C- can be used likewise for control characters. (13.9) |
d874e913 | 272 | |
3787e12e GM |
273 | * Installation change |
274 | The string "../lisp" now adds to the front of the load-path | |
275 | used for searching for Lisp files during Emacs initialization. | |
276 | It used to replace the path specified in paths.h entirely. | |
277 | Now the directory ../lisp is searched first and the directoris | |
278 | specified in paths.h are searched afterward. | |
d874e913 | 279 | \f |
3787e12e GM |
280 | Changes in Emacs 1.12 |
281 | ||
282 | * There is a new installation procedure. | |
283 | See the file INSTALL that comes in the top level | |
284 | directory in the tar file or tape. | |
285 | ||
286 | * The Meta key is now supported on terminals that have it. | |
287 | This is a shift key which causes the high bit to be turned on | |
288 | in all input characters typed while it is held down. | |
289 | ||
290 | read-char now returns a value in the range 128-255 if | |
291 | a Meta character is typed. When interpreted as command | |
292 | input, a Meta character is equivalent to a two character | |
293 | sequence, the meta prefix character followed by the un-metized | |
294 | character (Meta-G unmetized is G). | |
295 | ||
296 | The meta prefix character | |
297 | is specified by the value of the variable meta-prefix-char. | |
298 | If this character (normally Escape) has been redefined locally | |
299 | with a non-prefix definition (such as happens in completing | |
300 | minibuffers) then the local redefinition is suppressed when | |
301 | the character is not the last one in a key sequence. | |
302 | So the local redefinition is effective if you type the character | |
303 | explicitly, but not effective if the character comes from | |
304 | the use of the Meta key. | |
305 | ||
306 | * `-' is no longer a completion command in the minibuffer. | |
307 | It is an ordinary self-inserting character. | |
308 | ||
309 | * The list load-path of directories load to search for Lisp files | |
310 | is now controlled by the EMACSLOADPATH environment variable | |
311 | [[ Note this was originally EMACS-LOAD-PATH and has been changed | |
312 | again; sh does not deal properly with hyphens in env variable names]] | |
313 | rather than the EPATH environment variable. This is to avoid | |
314 | conflicts with other Emacses. | |
315 | ||
316 | While Emacs is being built initially, the load-path | |
317 | is now just ("../lisp"), ignoring paths.h. It does not | |
318 | ignore EMACSLOADPATH, however; you should avoid having | |
319 | this variable set while building Emacs. | |
320 | ||
321 | * You can now specify a translation table for keyboard | |
322 | input characters, as a way of exchanging or substituting | |
323 | keys on the keyboard. | |
324 | ||
325 | If the value of keyboard-translate-table is a string, | |
326 | every character received from the keyboard is used as an | |
327 | index in that string, and the character at that index in | |
328 | the string is used as input instead of what was actually | |
329 | typed. If the actual input character is >= the length of | |
330 | the string, it is used unchanged. | |
331 | ||
332 | One way this feature can be used is to fix bad keyboard | |
177c0ea7 | 333 | designes. For example, on some terminals, Delete is |
3787e12e GM |
334 | Shift-Underscore. Since Delete is a more useful character |
335 | than Underscore, it is an improvement to make the unshifted | |
336 | character Delete and the shifted one Underscore. This can | |
337 | be done with | |
338 | ||
339 | ;; First make a translate table that does the identity translation. | |
340 | (setq keyboard-translate-table (make-string 128 0)) | |
341 | (let ((i 0)) | |
342 | (while (< i 128) | |
343 | (aset keyboard-translate-table i i) | |
344 | (setq i (1+ i)))) | |
345 | ||
346 | ;; Now alter translations of some characters. | |
347 | (aset keyboard-translate-table ?\_ ?\^?) | |
348 | (aset keyboard-translate-table ?\^? ?\_) | |
349 | ||
350 | If your terminal has a Meta key and can therefore send | |
351 | codes up to 255, Meta characters are translated through | |
352 | elements 128 through 255 of the translate table, and therefore | |
353 | are translated independently of the corresponding non-Meta | |
354 | characters. You must therefore establish translations | |
355 | independently for the Meta characters if you want them too: | |
356 | ||
357 | ;; First make a translate table that does the identity translation. | |
358 | (setq keyboard-translate-table (make-string 256 0)) | |
359 | (let ((i 0)) | |
360 | (while (< i 256) | |
361 | (aset keyboard-translate-table i i) | |
362 | (setq i (1+ i)))) | |
363 | ||
364 | ;; Now alter translations of some characters. | |
365 | (aset keyboard-translate-table ?\_ ?\^?) | |
366 | (aset keyboard-translate-table ?\^? ?\_) | |
367 | ||
368 | ;; Now alter translations of some Meta characters. | |
369 | (aset keyboard-translate-table (+ 128 ?\_) (+ 128 ?\^?)) | |
370 | (aset keyboard-translate-table (+ 128 ?\^?) (+ 128 ?\_)) | |
371 | ||
372 | * (process-kill-without-query PROCESS) | |
373 | ||
374 | This marks the process so that, when you kill Emacs, | |
375 | you will not on its account be queried about active subprocesses. | |
d874e913 | 376 | \f |
3787e12e GM |
377 | Changes in Emacs 1.11 |
378 | ||
379 | * The commands C-c and C-z have been interchanged, | |
380 | for greater compatibility with normal Unix usage. | |
381 | C-z now runs suspend-emacs and C-c runs exit-recursive-edit. | |
382 | ||
383 | * The value returned by file-name-directory now ends | |
384 | with a slash. (file-name-directory "foo/bar") => "foo/". | |
385 | This avoids confusing results when dealing with files | |
386 | in the root directory. | |
387 | ||
388 | The value of the per-buffer variable default-directory | |
389 | is also supposed to have a final slash now. | |
390 | ||
391 | * There are now variables to control the switches passed to | |
392 | `ls' by the C-x C-d command (list-directory). | |
393 | list-directory-brief-switches is a string, initially "-CF", | |
394 | used for brief listings, and list-directory-verbose-switches | |
395 | is a string, initially "-l", used for verbose ones. | |
396 | ||
397 | * For Ann Arbor Ambassador terminals, the termcap "ti" string | |
398 | is now used to initialize the screen geometry on entry to Emacs, | |
399 | and the "te" string is used to set it back on exit. | |
400 | If the termcap entry does not define the "ti" or "te" string, | |
401 | Emacs does what it used to do. | |
d874e913 | 402 | \f |
3787e12e GM |
403 | Changes in Emacs 1.10 |
404 | ||
405 | * GNU Emacs has been made almost 1/3 smaller. | |
406 | It now dumps out as only 530kbytes on Vax 4.2bsd. | |
407 | ||
408 | * The term "checkpoint" has been replaced by "auto save" | |
409 | throughout the function names, variable names and documentation | |
410 | of GNU Emacs. | |
411 | ||
412 | * The function load now tries appending ".elc" and ".el" | |
413 | to the specified filename BEFORE it tries the filename | |
414 | without change. | |
415 | ||
416 | * rmail now makes the mode line display the total number | |
417 | of messages and the current message number. | |
418 | The "f" command now means forward a message to another user. | |
419 | The command to search through all messages for a string is now "F". | |
420 | The "u" command now means to move back to the previous | |
421 | message and undelete it. To undelete the selected message, use Meta-u. | |
422 | ||
423 | * The hyphen character is now equivalent to a Space while | |
424 | in completing minibuffers. Both mean to complete an additional word. | |
425 | ||
426 | * The Lisp function error now takes args like format | |
427 | which are used to construct the error message. | |
428 | ||
429 | * Redisplay will refuse to start its display at the end of the buffer. | |
430 | It will pick a new place to display from, rather than use that. | |
431 | ||
432 | * The value returned by garbage-collect has been changed. | |
433 | Its first element is no longer a number but a cons, | |
434 | whose car is the number of cons cells now in use, | |
435 | and whose cdr is the number of cons cells that have been | |
436 | made but are now free. | |
437 | The second element is similar but describes symbols rather than cons cells. | |
438 | The third element is similar but describes markers. | |
439 | ||
440 | * The variable buffer-name has been eliminated. | |
441 | The function buffer-name still exists. This is to prevent | |
442 | user programs from changing buffer names without going | |
443 | through the rename-buffer function. | |
d874e913 | 444 | \f |
3787e12e GM |
445 | Changes in Emacs 1.9 |
446 | ||
447 | * When a fill prefix is in effect, paragraphs are started | |
448 | or separated by lines that do not start with the fill prefix. | |
449 | Also, a line which consists of the fill prefix followed by | |
450 | white space separates paragraphs. | |
451 | ||
452 | * C-x C-v runs the new function find-alternate-file. | |
453 | It finds the specified file, switches to that buffer, | |
454 | and kills the previous current buffer. (It requires | |
455 | confirmation if that buffer had changes.) This is | |
456 | most useful after you find the wrong file due to a typo. | |
457 | ||
458 | * Exiting the minibuffer moves the cursor to column 0, | |
459 | to show you that it has really been exited. | |
460 | ||
461 | * Meta-g (fill-region) now fills each paragraph in the | |
462 | region individually. To fill the region as if it were | |
463 | a single paragraph (for when the paragraph-delimiting mechanism | |
464 | does the wrong thing), use fill-region-as-paragraph. | |
465 | ||
466 | * Tab in text mode now runs the function tab-to-tab-stop. | |
467 | A new mode called indented-text-mode is like text-mode | |
468 | except that in it Tab runs the function indent-relative, | |
469 | which indents the line under the previous line. | |
470 | If auto fill is enabled while in indented-text-mode, | |
471 | the new lines that it makes are indented. | |
472 | ||
473 | * Functions kill-rectangle and yank-rectangle. | |
474 | kill-rectangle deletes the rectangle specified by dot and mark | |
475 | (or by two arguments) and saves it in the variable killed-rectangle. | |
476 | yank-rectangle inserts the rectangle in that variable. | |
477 | ||
478 | Tab characters in a rectangle being saved are replaced | |
479 | by spaces in such a way that their appearance will | |
480 | not be changed if the rectangle is later reinserted | |
481 | at a different column position. | |
482 | ||
483 | * `+' in a regular expression now means | |
484 | to repeat the previous expression one or more times. | |
485 | `?' means to repeat it zero or one time. | |
486 | They are in all regards like `*' except for the | |
487 | number of repetitions they match. | |
488 | ||
489 | \< in a regular expression now matches the null string | |
490 | when it is at the beginning of a word; \> matches | |
491 | the null string at the end of a word. | |
492 | ||
493 | * C-x p narrows the buffer so that only the current page | |
494 | is visible. | |
495 | ||
496 | * C-x ) with argument repeats the kbd macro just | |
497 | defined that many times, counting the definition | |
498 | as one repetition. | |
499 | ||
500 | * C-x ( with argument begins defining a kbd macro | |
501 | starting with the last one defined. It executes that | |
502 | previous kbd macro initially, just as if you began | |
503 | by typing it over again. | |
504 | ||
505 | * C-x q command queries the user during kbd macro execution. | |
506 | With prefix argument, enters recursive edit, | |
507 | reading keyboard commands even within a kbd macro. | |
508 | You can give different commands each time the macro executes. | |
509 | Without prefix argument, reads a character. Your options are: | |
510 | Space -- execute the rest of the macro. | |
511 | Delete -- skip the rest of the macro; start next repetition. | |
512 | C-d -- skip rest of the macro and don't repeat it any more. | |
513 | C-r -- enter a recursive edit, then on exit ask again for a character | |
514 | C-l -- redisplay screen and ask again." | |
515 | ||
516 | * write-kbd-macro and append-kbd-macro are used to save | |
517 | a kbd macro definition in a file (as Lisp code to | |
518 | redefine the macro when the file is loaded). | |
519 | These commands differ in that write-kbd-macro | |
520 | discards the previous contents of the file. | |
521 | If given a prefix argument, both commands | |
522 | record the keys which invoke the macro as well as the | |
523 | macro's definition. | |
524 | ||
525 | * The variable global-minor-modes is used to display | |
526 | strings in the mode line of all buffers. It should be | |
527 | a list of elements thaht are conses whose cdrs are strings | |
528 | to be displayed. This complements the variable | |
529 | minor-modes, which has the same effect but has a separate | |
530 | value in each buffer. | |
531 | ||
532 | * C-x = describes horizontal scrolling in effect, if any. | |
533 | ||
534 | * Return now auto-fills the line it is ending, in auto fill mode. | |
535 | Space with zero as argument auto-fills the line before it | |
536 | just like Space without an argument. | |
537 | \f | |
538 | Changes in Emacs 1.8 | |
d874e913 | 539 | |
3787e12e | 540 | This release mostly fixes bugs. There are a few new features: |
d874e913 | 541 | |
3787e12e GM |
542 | * apropos now sorts the symbols before displaying them. |
543 | Also, it returns a list of the symbols found. | |
d874e913 | 544 | |
3787e12e GM |
545 | apropos now accepts a second arg PRED which should be a function |
546 | of one argument; if PRED is non-nil, each symbol is tested | |
547 | with PRED and only symbols for which PRED returns non-nil | |
548 | appear in the output or the returned list. | |
d874e913 | 549 | |
3787e12e GM |
550 | If the third argument to apropos is non-nil, apropos does not |
551 | display anything; it merely returns the list of symbols found. | |
d874e913 | 552 | |
3787e12e GM |
553 | C-h a now runs the new function command-apropos rather than |
554 | apropos, and shows only symbols with definitions as commands. | |
d874e913 | 555 | |
177c0ea7 | 556 | * M-x shell sends the command |
3787e12e GM |
557 | if (-f ~/.emacs_NAME)source ~/.emacs_NAME |
558 | invisibly to the shell when it starts. Here NAME | |
559 | is replaced by the name of shell used, | |
560 | as it came from your ESHELL or SHELL environment variable | |
561 | but with directory name, if any, removed. | |
d874e913 | 562 | |
3787e12e GM |
563 | * M-, now runs the command tags-loop-continue, which is used |
564 | to resume a terminated tags-search or tags-query-replace. | |
d874e913 | 565 | \f |
3787e12e GM |
566 | Changes in Emacs 1.7 |
567 | ||
568 | It's Beat CCA Week. | |
569 | ||
570 | * The initial buffer is now called "*scratch*" instead of "scratch", | |
571 | so that all buffer names used automatically by Emacs now have *'s. | |
572 | ||
573 | * Undo information is now stored separately for each buffer. | |
574 | The Undo command (C-x u) always applies to the current | |
575 | buffer only. | |
576 | ||
577 | C-_ is now a synonym for C-x u. | |
578 | ||
579 | (buffer-flush-undo BUFFER) causes undo information not to | |
580 | be kept for BUFFER, and frees the space that would have | |
581 | been used to hold it. In any case, no undo information is | |
582 | kept for buffers whose names start with spaces. (These | |
583 | buffers also do not appear in the C-x C-b display.) | |
584 | ||
585 | * Rectangle operations are now implemented. | |
586 | C-x r stores the rectangle described by dot and mark | |
587 | into a register; it reads the register name from the keyboard. | |
588 | C-x g, the command to insert the contents of a register, | |
589 | can be used to reinsert the rectangle elsewhere. | |
590 | ||
591 | Other rectangle commands include | |
592 | open-rectangle: | |
593 | insert a blank rectangle in the position and size | |
594 | described by dot and mark, at its corners; | |
595 | the existing text is pushed to the right. | |
596 | clear-rectangle: | |
597 | replace the rectangle described by dot ane mark | |
598 | with blanks. The previous text is deleted. | |
599 | delete-rectangle: | |
600 | delete the text of the specified rectangle, | |
601 | moving the text beyond it on each line leftward. | |
602 | ||
603 | * Side-by-side windows are allowed. Use C-x 5 to split the | |
604 | current window into two windows side by side. | |
605 | C-x } makes the selected window ARG columns wider at the | |
606 | expense of the windows at its sides. C-x { makes the selected | |
607 | window ARG columns narrower. An argument to C-x 5 specifies | |
608 | how many columns to give to the leftmost of the two windows made. | |
609 | ||
610 | C-x 2 now accepts a numeric argument to specify the number of | |
611 | lines to give to the uppermost of the two windows it makes. | |
612 | ||
613 | * Horizontal scrolling of the lines in a window is now implemented. | |
614 | C-x < (scroll-left) scrolls all displayed lines left, | |
615 | with the numeric argument (default 1) saying how far to scroll. | |
616 | When the window is scrolled left, some amount of the beginning | |
617 | of each nonempty line is replaced by an "$". | |
618 | C-x > scrolls right. If a window has no text hidden at the left | |
619 | margin, it cannot be scrolled any farther right than that. | |
620 | When nonzero leftwards scrolling is in effect in a window. | |
621 | lines are automatically truncated at the window's right margin | |
622 | regardless of the value of the variable truncate-lines in the | |
623 | buffer being displayed. | |
624 | ||
625 | * C-x C-d now uses the default output format of `ls', | |
626 | which gives just file names in multiple columns. | |
627 | C-u C-x C-d passes the -l switch to `ls'. | |
628 | ||
629 | * C-t at the end of a line now exchanges the two preceding characters. | |
630 | ||
631 | All the transpose commands now interpret zero as an argument | |
632 | to mean to transpose the textual unit after or around dot | |
633 | with the one after or around the mark. | |
634 | ||
635 | * M-! executes a shell command in an inferior shell | |
636 | and displays the output from it. With a prefix argument, | |
637 | it inserts the output in the current buffer after dot | |
638 | and sets the mark after the output. The shell command | |
639 | gets /dev/null as its standard input. | |
640 | ||
641 | M-| is like M-! but passes the contents of the region | |
642 | as input to the shell command. A prefix argument makes | |
643 | the output from the command replace the contents of the region. | |
644 | ||
645 | * The mode line will now say "Def" after the major mode | |
646 | while a keyboard macro is being defined. | |
647 | ||
648 | * The variable fill-prefix is now used by Meta-q. | |
649 | Meta-q removes the fill prefix from lines that start with it | |
650 | before filling, and inserts the fill prefix on each line | |
651 | after filling. | |
652 | ||
653 | The command C-x . sets the fill prefix equal to the text | |
654 | on the current line before dot. | |
655 | ||
656 | * The new command Meta-j (indent-new-comment-line), | |
657 | is like Linefeed (indent-new-line) except when dot is inside a comment; | |
658 | in that case, Meta-j inserts a comment starter on the new line, | |
659 | indented under the comment starter above. It also inserts | |
660 | a comment terminator at the end of the line above, | |
661 | if the language being edited calls for one. | |
662 | ||
663 | * Rmail should work correctly now, and has some C-h m documentation. | |
d874e913 | 664 | \f |
3787e12e GM |
665 | Changes in Emacs 1.6 |
666 | ||
667 | * save-buffers-kill-emacs is now on C-x C-c | |
668 | while C-x C-z does suspend-emacs. This is to make | |
669 | C-x C-c like the normal Unix meaning of C-c | |
670 | and C-x C-z linke the normal Unix meaning of C-z. | |
671 | ||
672 | * M-ESC (eval-expression) is now a disabled command by default. | |
673 | This prevents users who type ESC ESC accidentally from | |
674 | getting confusing results. Put | |
675 | (put 'eval-expression 'disabled nil) | |
676 | in your ~/.emacs file to enable the command. | |
677 | ||
678 | * Self-inserting text is grouped into bunches for undoing. | |
679 | Each C-x u command undoes up to 20 consecutive self-inserting | |
680 | characters. | |
681 | ||
682 | * Help f now uses as a default the function being called | |
683 | in the innermost Lisp expression that dot is in. | |
684 | This makes it more convenient to use while writing | |
685 | Lisp code to run in Emacs. | |
686 | (If the text around dot does not appear to be a call | |
687 | to a Lisp function, there is no default.) | |
688 | ||
689 | Likewise, Help v uses the symbol around or before dot | |
690 | as a default, if that is a variable name. | |
691 | ||
692 | * Commands that read filenames now insert the default | |
693 | directory in the minibuffer, to become part of your input. | |
694 | This allows you to see what the default is. | |
695 | You may type a filename which goes at the end of the | |
696 | default directory, or you may edit the default directory | |
697 | as you like to create the input you want to give. | |
698 | You may also type an absolute pathname (starting with /) | |
699 | or refer to a home directory (input starting with ~) | |
700 | after the default; the presence of // or /~ causes | |
701 | everything up through the slash that precedes your | |
702 | type-in to be ignored. | |
703 | ||
704 | Returning the default directory without change, | |
705 | including the terminating slash, requests the use | |
706 | of the default file name (usually the visited file's name). | |
707 | ||
708 | Set the variable insert-default-directory to nil | |
709 | to turn off this feature. | |
710 | ||
711 | * M-x shell now uses the environment variable ESHELL, | |
712 | if it exists, as the file name of the shell to run. | |
713 | If there is no ESHELL variable, the SHELL variable is used. | |
714 | This is because some shells do not work properly as inferiors | |
715 | of Emacs (or anything like Emacs). | |
716 | ||
717 | * A new variable minor-modes now exists, with a separate value | |
718 | in each buffer. Its value should be an alist of elements | |
719 | (MODE-FUNCTION-SYMBOL . PRETTY-NAME-STRING), one for each | |
720 | minor mode that is turned on in the buffer. The pretty | |
721 | name strings are displayed in the mode line after the name of the | |
722 | major mode (with spaces between them). The mode function | |
723 | symbols should be symbols whose function definitions will | |
724 | turn on the minor mode if given 1 as an argument; they are present | |
725 | so that Help m can find their documentation strings. | |
726 | ||
727 | * The format of tag table files has been changed. | |
728 | The new format enables Emacs to find tags much faster. | |
729 | ||
730 | A new program, etags, exists to make the kind of | |
731 | tag table that Emacs wants. etags is invoked just | |
732 | like ctags; in fact, if you give it any switches, | |
733 | it does exactly what ctags would do. Give it the | |
734 | empty switch ("-") to make it act like ctags with no switches. | |
735 | ||
736 | etags names the tag table file "TAGS" rather than "tags", | |
737 | so that these tag tables and the standard Unix ones | |
738 | can coexist. | |
739 | ||
740 | The tags library can no longer use standard ctags-style | |
741 | tag tables files. | |
742 | ||
743 | * The file of Lisp code Emacs reads on startup is now | |
744 | called ~/.emacs rather than ~/.emacs_pro. | |
745 | ||
746 | * copy-file now gives the copied file the same mode bits | |
747 | as the original file. | |
748 | ||
749 | * Output from a process inserted into the process's buffer | |
750 | no longer sets the buffer's mark. Instead it sets a | |
751 | marker associated with the process to point to the end | |
752 | of the inserted text. You can access this marker with | |
753 | (process-mark PROCESS) | |
754 | and then either examine its position with marker-position | |
755 | or set its position with set-marker. | |
756 | ||
757 | * completing-read takes a new optional fifth argument which, | |
758 | if non-nil, should be a string of text to insert into | |
759 | the minibuffer before reading user commands. | |
760 | ||
761 | * The Lisp function elt now exists: | |
762 | (elt ARRAY N) is like (aref ARRAY N), | |
763 | (elt LIST N) is like (nth N LIST). | |
764 | ||
765 | * rplaca is now a synonym for setcar, and rplacd for setcdr. | |
766 | eql is now a synonym for eq; it turns out that the Common Lisp | |
767 | distinction between eq and eql is insignificant in Emacs. | |
768 | numberp is a new synonym for integerp. | |
769 | ||
770 | * auto-save has been renamed to auto-save-mode. | |
771 | ||
772 | * Auto save file names for buffers are now created by the | |
773 | function make-auto-save-file-name. This is so you can | |
774 | redefine that function to change the way auto save file names | |
775 | are chosen. | |
776 | ||
777 | * expand-file-name no longer discards a final slash. | |
778 | (expand-file-name "foo" "/lose") => "/lose/foo" | |
779 | (expand-file-name "foo/" "/lose") => "/lose/foo/" | |
780 | ||
781 | Also, expand-file-name no longer substitutes $ constructs. | |
782 | A new function substitute-in-file-name does this. Reading | |
783 | a file name with read-file-name or the `f' or`F' option | |
784 | of interactive calling uses substitute-in-file-name | |
785 | on the file name that was read and returns the result. | |
786 | ||
787 | All I/O primitives including insert-file-contents and | |
788 | delete-file call expand-file-name on the file name supplied. | |
789 | This change makes them considerably faster in the usual case. | |
790 | ||
791 | * Interactive calling spec strings allow the new code letter 'D' | |
792 | which means to read a directory name. It is like 'f' except | |
793 | that the default if the user makes no change in the minibuffer | |
794 | is to return the current default directory rather than the | |
795 | current visited file name. | |
d874e913 | 796 | \f |
3787e12e | 797 | Changes in Emacs 1.5 |
d874e913 | 798 | |
3787e12e GM |
799 | * suspend-emacs now accepts an optional argument |
800 | which is a string to be stuffed as terminal input | |
801 | to be read by Emacs's superior shell after Emacs exits. | |
d874e913 | 802 | |
3787e12e GM |
803 | A library called ledit exists which uses this feature |
804 | to transmit text to a Lisp job running as a sibling of | |
805 | Emacs. | |
d874e913 | 806 | |
3787e12e GM |
807 | * If find-file is given the name of a directory, |
808 | it automatically invokes dired on that directory | |
809 | rather than reading in the binary data that make up | |
810 | the actual contents of the directory according to Unix. | |
d874e913 | 811 | |
3787e12e GM |
812 | * Saving an Emacs buffer now preserves the file modes |
813 | of any previously existing file with the same name. | |
814 | This works using new Lisp functions file-modes and | |
815 | set-file-modes, which can be used to read or set the mode | |
816 | bits of any file. | |
d874e913 | 817 | |
3787e12e | 818 | * The Lisp function cond now exists, with its traditional meaning. |
d874e913 | 819 | |
3787e12e GM |
820 | * defvar and defconst now permit the documentation string |
821 | to be omitted. defvar also permits the initial value | |
822 | to be omitted; then it acts only as a comment. | |
d874e913 | 823 | \f |
3787e12e GM |
824 | Changes in Emacs 1.4 |
825 | ||
826 | * Auto-filling now normally indents the new line it creates | |
827 | by calling indent-according-to-mode. This function, meanwhile, | |
828 | has in Fundamental and Text modes the effect of making the line | |
829 | have an indentation of the value of left-margin, a per-buffer variable. | |
830 | ||
831 | Tab no longer precisely does indent-according-to-mode; | |
832 | it does that in all modes that supply their own indentation routine, | |
833 | but in Fundamental, Text and allied modes it inserts a tab character. | |
834 | ||
835 | * The command M-x grep now invokes grep (on arguments | |
836 | supplied by the user) and reads the output from grep | |
837 | asynchronously into a buffer. The command C-x ` can | |
838 | be used to move to the lines that grep has found. | |
839 | This is an adaptation of the mechanism used for | |
840 | running compilations and finding the loci of error messages. | |
841 | ||
842 | You can now use C-x ` even while grep or compilation | |
843 | is proceeding; as more matches or error messages arrive, | |
844 | C-x ` will parse them and be able to find them. | |
845 | ||
846 | * M-x mail now provides a command to send the message | |
847 | and "exit"--that is, return to the previously selected | |
848 | buffer. It is C-z C-z. | |
849 | ||
850 | * Tab in C mode now tries harder to adapt to all indentation styles. | |
851 | If the line being indented is a statement that is not the first | |
852 | one in the containing compound-statement, it is aligned under | |
853 | the beginning of the first statement. | |
854 | ||
855 | * The functions screen-width and screen-height return the | |
856 | total width and height of the screen as it is now being used. | |
857 | set-screen-width and set-screen-height tell Emacs how big | |
858 | to assume the screen is; they each take one argument, | |
859 | an integer. | |
860 | ||
861 | * The Lisp function 'function' now exists. function is the | |
862 | same as quote, except that it serves as a signal to the | |
863 | Lisp compiler that the argument should be compiled as | |
864 | a function. Example: | |
865 | (mapcar (function (lambda (x) (+ x 5))) list) | |
866 | ||
867 | * The function set-key has been renamed to global-set-key. | |
868 | undefine-key and local-undefine-key has been renamed to | |
869 | global-unset-key and local-unset-key. | |
870 | ||
871 | * Emacs now collects input from asynchronous subprocesses | |
872 | while waiting in the functions sleep-for and sit-for. | |
873 | ||
874 | * Shell mode's Newline command attempts to distinguish subshell | |
875 | prompts from user input when issued in the middle of the buffer. | |
876 | It no longer reexecutes from dot to the end of the line; | |
877 | it reeexecutes the entire line minus any prompt. | |
878 | The prompt is recognized by searching for the value of | |
879 | shell-prompt-pattern, starting from the beginning of the line. | |
880 | Anything thus skipped is not reexecuted. | |
d874e913 | 881 | \f |
3787e12e GM |
882 | Changes in Emacs 1.3 |
883 | ||
884 | * An undo facility exists now. Type C-x u to undo a batch of | |
885 | changes (usually one command's changes, but some commands | |
886 | such as query-replace divide their changes into multiple | |
887 | batches. You can repeat C-x u to undo further. As long | |
888 | as no commands other than C-x u intervene, each one undoes | |
889 | another batch. A numeric argument to C-x u acts as a repeat | |
890 | count. | |
891 | ||
892 | If you keep on undoing, eventually you may be told that | |
893 | you have used up all the recorded undo information. | |
894 | Some actions, such as reading in files, discard all | |
895 | undo information. | |
896 | ||
897 | The undo information is not currently stored separately | |
898 | for each buffer, so it is mainly good if you do something | |
899 | totally spastic. [This has since been fixed.] | |
900 | ||
901 | * A learn-by-doing tutorial introduction to Emacs now exists. | |
902 | Type C-h t to enter it. | |
903 | ||
904 | * An Info documentation browser exists. Do M-x info to enter it. | |
905 | It contains a tutorial introduction so that no more documentation | |
906 | is needed here. As of now, the only documentation in it | |
907 | is that of Info itself. | |
908 | ||
909 | * Help k and Help c are now different. Help c prints just the | |
910 | name of the function which the specified key invokes. Help k | |
911 | prints the documentation of the function as well. | |
912 | ||
913 | * A document of the differences between GNU Emacs and Twenex Emacs | |
914 | now exists. It is called DIFF, in the same directory as this file. | |
915 | ||
916 | * C mode can now indent comments better, including multi-line ones. | |
917 | Meta-Control-q now reindents comment lines within the expression | |
918 | being aligned. | |
919 | ||
920 | * Insertion of a close-parenthesis now shows the matching open-parenthesis | |
921 | even if it is off screen, by printing the text following it on its line | |
922 | in the minibuffer. | |
923 | ||
924 | * A file can now contain a list of local variable values | |
925 | to be in effect when the file is edited. See the file DIFF | |
926 | in the same directory as this file for full details. | |
927 | ||
928 | * A function nth is defined. It means the same thing as in Common Lisp. | |
929 | ||
930 | * The function install-command has been renamed to set-key. | |
931 | It now takes the key sequence as the first argument | |
932 | and the definition for it as the second argument. | |
933 | Likewise, local-install-command has been renamed to local-set-key. | |
d874e913 | 934 | \f |
3787e12e GM |
935 | Changes in Emacs 1.2 |
936 | ||
937 | * A Lisp single-stepping and debugging facility exists. | |
938 | To cause the debugger to be entered when an error | |
939 | occurs, set the variable debug-on-error non-nil. | |
940 | ||
941 | To cause the debugger to be entered whenever function foo | |
942 | is called, do (debug-on-entry 'foo). To cancel this, | |
943 | do (cancel-debug-on-entry 'foo). debug-on-entry does | |
944 | not work for primitives (written in C), only functions | |
945 | written in Lisp. Most standard Emacs commands are in Lisp. | |
946 | ||
947 | When the debugger is entered, the selected window shows | |
948 | a buffer called " *Backtrace" which displays a series | |
949 | of stack frames, most recently entered first. For each | |
950 | frame, the function name called is shown, usually followed | |
951 | by the argument values unless arguments are still being | |
952 | calculated. At the beginning of the buffer is a description | |
953 | of why the debugger was entered: function entry, function exit, | |
954 | error, or simply that the user called the function `debug'. | |
955 | ||
956 | To exit the debugger and return to top level, type `q'. | |
957 | ||
177c0ea7 | 958 | In the debugger, you can evaluate Lisp expressions by |
3787e12e GM |
959 | typing `e'. This is equivalent to `M-ESC'. |
960 | ||
961 | When the debugger is entered due to an error, that is | |
962 | all you can do. When it is entered due to function entry | |
963 | (such as, requested by debug-on-entry), you have two | |
964 | options: | |
965 | Continue execution and reenter debugger after the | |
966 | completion of the function being entered. Type `c'. | |
967 | Continue execution but enter the debugger before | |
968 | the next subexpression. Type `d'. | |
969 | ||
970 | You will see that some stack frames are marked with *. | |
971 | This means the debugger will be entered when those | |
972 | frames exit. You will see the value being returned | |
973 | in the first line of the backtrace buffer. Your options: | |
974 | Continue execution, and return that value. Type `c'. | |
975 | Continue execution, and return a specified value. Type `r'. | |
976 | ||
977 | You can mark a frame to enter the debugger on exit | |
978 | with the `b' command, or clear such a mark with `u'. | |
979 | ||
980 | * Lisp macros now exist. | |
981 | For example, you can write | |
982 | (defmacro cadr (arg) (list 'car (list 'cdr arg))) | |
983 | and then the expression | |
984 | (cadr foo) | |
985 | will expand into | |
986 | (car (cdr foo)) | |
d874e913 | 987 | \f |
3787e12e GM |
988 | Changes in Emacs 1.1 |
989 | ||
990 | * The initial buffer is now called "scratch" and is in a | |
991 | new major mode, Lisp Interaction mode. This mode is | |
992 | intended for typing Lisp expressions, evaluating them, | |
993 | and having the values printed into the buffer. | |
994 | ||
995 | Type Linefeed after a Lisp expression, to evaluate the | |
996 | expression and have its value printed into the buffer, | |
997 | advancing dot. | |
998 | ||
999 | The other commands of Lisp mode are available. | |
1000 | ||
1001 | * The C-x C-e command for evaluating the Lisp expression | |
1002 | before dot has been changed to print the value in the | |
1003 | minibuffer line rather than insert it in the buffer. | |
1004 | A numeric argument causes the printed value to appear | |
1005 | in the buffer instead. | |
1006 | ||
1007 | * In Lisp mode, the command M-C-x evaluates the defun | |
1008 | containing or following dot. The value is printed in | |
1009 | the minibuffer. | |
1010 | ||
1011 | * The value of a Lisp expression evaluated using M-ESC | |
1012 | is now printed in the minibuffer. | |
1013 | ||
1014 | * M-q now runs fill-paragraph, independent of major mode. | |
1015 | ||
1016 | * C-h m now prints documentation on the current buffer's | |
1017 | major mode. What it prints is the documentation of the | |
1018 | major mode name as a function. All major modes have been | |
1019 | equipped with documentation that describes all commands | |
1020 | peculiar to the major mode, for this purpose. | |
1021 | ||
1022 | * You can display a Unix manual entry with | |
1023 | the M-x manual-entry command. | |
1024 | ||
1025 | * You can run a shell, displaying its output in a buffer, | |
1026 | with the M-x shell command. The Return key sends input | |
1027 | to the subshell. Output is printed inserted automatically | |
1028 | in the buffer. Commands C-c, C-d, C-u, C-w and C-z are redefined | |
1029 | for controlling the subshell and its subjobs. | |
1030 | "cd", "pushd" and "popd" commands are recognized as you | |
1031 | enter them, so that the default directory of the Emacs buffer | |
1032 | always remains the same as that of the subshell. | |
1033 | ||
1034 | * C-x $ (that's a real dollar sign) controls line-hiding based | |
1035 | on indentation. With a numeric arg N > 0, it causes all lines | |
1036 | indented by N or more columns to become invisible. | |
1037 | They are, effectively, tacked onto the preceding line, where | |
1038 | they are represented by " ..." on the screen. | |
1039 | (The end of the preceding visible line corresponds to a | |
1040 | screen cursor position before the "...". Anywhere in the | |
1041 | invisible lines that follow appears on the screen as a cursor | |
1042 | position after the "...".) | |
1043 | Currently, all editing commands treat invisible lines just | |
1044 | like visible ones, except for C-n and C-p, which have special | |
1045 | code to count visible lines only. | |
1046 | C-x $ with no argument turns off this mode, which in any case | |
1047 | is remembered separately for each buffer. | |
1048 | ||
1049 | * Outline mode is another form of selective display. | |
1050 | It is a major mode invoked with M-x outline-mode. | |
1051 | It is intended for editing files that are structured as | |
1052 | outlines, with heading lines (lines that begin with one | |
1053 | or more asterisks) and text lines (all other lines). | |
1054 | The number of asterisks in a heading line are its level; | |
1055 | the subheadings of a heading line are all following heading | |
177c0ea7 | 1056 | lines at higher levels, until but not including the next |
3787e12e GM |
1057 | heading line at the same or a lower level, regardless |
1058 | of intervening text lines. | |
1059 | ||
1060 | In outline mode, you have commands to hide (remove from display) | |
1061 | or show the text or subheadings under each heading line | |
1062 | independently. Hidden text or subheadings are invisibly | |
1063 | attached to the end of the preceding heading line, so that | |
1064 | if you kill the hading line and yank it back elsewhere | |
1065 | all the invisible lines accompany it. | |
1066 | ||
1067 | All editing commands treat hidden outline-mode lines | |
1068 | as part of the preceding visible line. | |
177c0ea7 | 1069 | |
3787e12e GM |
1070 | * C-x C-z runs save-buffers-kill-emacs |
1071 | offers to save each file buffer, then exits. | |
1072 | ||
1073 | * C-c's function is now called suspend-emacs. | |
1074 | ||
1075 | * The command C-x m runs mail, which switches to a buffer *mail* | |
1076 | and lets you compose a message to send. C-x 4 m runs mail in | |
1077 | another window. Type C-z C-s in the mail buffer to send the | |
1078 | message according to what you have entered in the buffer. | |
1079 | ||
1080 | You must separate the headers from the message text with | |
1081 | an empty line. | |
1082 | ||
1083 | * You can now dired partial directories (specified with names | |
1084 | containing *'s, etc, all processed by the shell). Also, you | |
1085 | can dired more than one directory; dired names the buffer | |
1086 | according to the filespec or directory name. Reinvoking | |
1087 | dired on a directory already direded just switches back to | |
1088 | the same directory used last time; do M-x revert if you want | |
1089 | to read in the current contents of the directory. | |
1090 | ||
1091 | C-x d runs dired, and C-x 4 d runs dired in another window. | |
1092 | ||
1093 | C-x C-d (list-directory) also allows partial directories now. | |
d874e913 | 1094 | \f |
3787e12e GM |
1095 | Lisp programming changes |
1096 | ||
1097 | * t as an output stream now means "print to the minibuffer". | |
1098 | If there is already text in the minibuffer printed via t | |
1099 | as an output stream, the new text is appended to the old | |
1100 | (or is truncated and lost at the margin). If the minibuffer | |
1101 | contains text put there for some other reason, it is cleared | |
1102 | first. | |
1103 | ||
1104 | t is now the top-level value of standard-output. | |
1105 | ||
1106 | t as an input stream now means "read via the minibuffer". | |
1107 | The minibuffer is used to read a line of input, with editing, | |
1108 | and this line is then parsed. Any excess not used by `read' | |
1109 | is ignored; each `read' from t reads fresh input. | |
1110 | t is now the top-level value of standard-input. | |
1111 | ||
1112 | * A marker may be used as an input stream or an output stream. | |
1113 | The effect is to grab input from where the marker points, | |
1114 | advancing it over the characters read, or to insert output | |
1115 | at the marker and advance it. | |
1116 | ||
1117 | * Output from an asynchronous subprocess is now inserted at | |
1118 | the end of the associated buffer, not at the buffer's dot, | |
1119 | and the buffer's mark is set to the end of the inserted output | |
1120 | each time output is inserted. | |
1121 | ||
1122 | * (pos-visible-in-window-p POS WINDOW) | |
1123 | returns t if position POS in WINDOW's buffer is in the range | |
1124 | that is being displayed in WINDOW; nil if it is scrolled | |
1125 | vertically out of visibility. | |
1126 | ||
1127 | If display in WINDOW is not currently up to date, this function | |
1128 | calculates carefully whether POS would appear if display were | |
1129 | done immediately based on the current (window-start WINDOW). | |
1130 | ||
1131 | POS defaults to (dot), and WINDOW to (selected-window). | |
1132 | ||
1133 | * Variable buffer-alist replaced by function (buffer-list). | |
1134 | The actual alist of buffers used internally by Emacs is now | |
1135 | no longer accessible, to prevent the user from crashing Emacs | |
1136 | by modifying it. The function buffer-list returns a list | |
1137 | of all existing buffers. Modifying this list cannot hurt anything | |
1138 | as a new list is constructed by each call to buffer-list. | |
1139 | ||
1140 | * load now takes an optional third argument NOMSG which, if non-nil, | |
1141 | prevents load from printing a message when it starts and when | |
1142 | it is done. | |
1143 | ||
1144 | * byte-recompile-directory is a new function which finds all | |
1145 | the .elc files in a directory, and regenerates each one which | |
1146 | is older than the corresponding .el (Lisp source) file. | |
d874e913 | 1147 | \f |
d874e913 GM |
1148 | ---------------------------------------------------------------------- |
1149 | Copyright information: | |
1150 | ||
3787e12e | 1151 | Copyright (C) 1985 Richard M. Stallman |
d874e913 GM |
1152 | |
1153 | Permission is granted to anyone to make or distribute verbatim copies | |
1154 | of this document as received, in any medium, provided that the | |
1155 | copyright notice and this permission notice are preserved, | |
1156 | thus giving the recipient permission to redistribute in turn. | |
1157 | ||
1158 | Permission is granted to distribute modified versions | |
1159 | of this document, or of portions of it, | |
1160 | under the above conditions, provided also that they | |
1161 | carry prominent notices stating who last changed them. | |
1162 | \f | |
1163 | Local variables: | |
3787e12e | 1164 | mode: text |
d874e913 | 1165 | end: |
ab5796a9 MB |
1166 | |
1167 | arch-tag: c006f958-d769-44c7-a9f4-e2faf070624d |