|
|
1.1 root 1: GNU Emacs NEWS -- history of user-visible changes. 26-Mar-1986
2: Copyright (C) 1986 Richard M. Stallman.
3: See the end for copying conditions.
4:
5: Changes in Emacs 17
6:
7: * Frustrated?
8:
9: Try M-x doctor.
10:
11: * Bored?
12:
13: Try M-x hanoi.
14:
15: * Brain-damaged?
16:
17: Try M-x yow.
18:
19: * Sun3, Tahoe, Apollo, HP9000s300, Celerity, NCR Tower 32,
20: Sequent, Stride, Encore, Plexus and AT&T 7300 machines supported.
21:
22: The Tahoe, Sun3, Sequent and Celerity use 4.2. In regard to the
23: Apollo, see the file APOLLO in this directory. NCR Tower32,
24: HP9000s300, Stride and Nu run forms of System V. System V rel 2 also
25: works on Vaxes now. See etc/MACHINES.
26:
27: * System V Unix supported, including subprocesses.
28:
29: It should be possible now to bring up Emacs on a machine running
30: mere unameliorated system V Unix with no major work; just possible bug
31: fixes. But you can expect to find a handful of those on any machine
32: that Emacs has not been run on before.
33:
34: * Berkeley 4.1 Unix supported.
35:
36: See etc/MACHINES.
37:
38: * Portable `alloca' provided.
39:
40: Emacs can now run on machines that do not and cannot support the library
41: subroutine `alloca' in the canonical fashion, using an `alloca' emulation
42: written in C.
43:
44: * On-line manual.
45:
46: Info now contains an Emacs manual, with essentially the same text
47: as in the printed manual.
48:
49: The manual can now be printed with a standard TeX.
50:
51: Nicely typeset and printed copies of the manual are available
52: from the Free Software Foundation.
53:
54: * Backup file version numbers.
55:
56: Emacs now supports version numbers in backup files.
57:
58: The first time you save a particular file in one editing session,
59: the old file is copied or renamed to serve as a backup file.
60: In the past, the name for the backup file was made by appending `~'
61: to the end of the original file name.
62:
63: Now the backup file name can instead be made by appending ".~NN~" to
64: the original file name, where NN stands for a numeric version. Each
65: time this is done, the new version number is one higher than the
66: highest previously used.
67:
68: Thus, the active, current file does not have a version number.
69: Only the backups have them.
70:
71: This feature is controlled by the variable `version-control'. If it
72: is `nil', as normally, then numbered backups are made only for files
73: that already have numbered backups. Backup names with just `~' are
74: used for files that have no numbered backups.
75:
76: If `version-control' is `never', then the backup file's name is
77: made with just `~' in any case.
78:
79: If `version-control' is not `nil' or `never', numbered backups are
80: made unconditionally.
81:
82: To prevent unlimited consumption of disk space, Emacs can delete
83: old backup versions automatically. Generally Emacs keeps the first
84: few backups and the latest few backups, deleting any in between.
85: This happens every time a new backup is made. The two variables that
86: control the deletion are `kept-old-versions' and `kept-new-versions'.
87: Their values are, respectively, the number of oldest backups to keep
88: and the number of newest ones to keep, each time a new backup is made.
89: The value of `kept-new-versions' includes the backup just created.
90: By default, both values are 2.
91:
92: If `trim-versions-without-asking' is non-`nil', the excess middle versions
93: are deleted without a murmur. If it is `nil', the default, then you
94: are asked whether the excess middle versions should really be deleted.
95:
96: Dired has a new command `.' which marks for deletion all but the latest
97: and oldest few of every numeric series of backups. `kept-old-versions'
98: controls the number of oldest versions to keep, and `dired-kept-versions'
99: controls the number of latest versions to keep. A numeric argument to
100: the `.' command, if positive, specifies the number of latest versions
101: to keep, overriding `dired-kept-versions'. A negative argument specifies
102: the number of oldest versions to keep, using minus the argument to override
103: `kept-old-versions'.
104:
105: * Immediate conflict detection.
106:
107: Emacs now locks the files it is modifying, so that if
108: you start to modify within Emacs a file that is being
109: modified in another Emacs, you get an immediate warning.
110:
111: The warning gives you three choices:
112: 1. Give up, and do not make any changes.
113: 2. Make changes anyway at your own risk.
114: 3. Make changes anyway, and record yourself as
115: the person locking the file (instead of whoever
116: was previously recorded.)
117:
118: Just visiting a file does not lock it. It is locked
119: when you try to change the buffer that is visiting the file.
120: Saving the file unlocks it until you make another change.
121:
122: Locking is done by writing a lock file in a special designated
123: directory. If such a directory is not provided and told to
124: Emacs as part of configuring it for your machine, the lock feature
125: is turned off.
126:
127: * M-x recover-file.
128:
129: This command is used to get a file back from an auto-save
130: (after a system crash, for example). It takes a file name
131: as argument and visits that file, but gets the data from the
132: file's last auto save rather than from the file itself.
133:
134: * M-x normal-mode.
135:
136: This command resets the current buffer's major mode and local
137: variables to be as specified by the visit filename, the -*- line
138: and/or the Local Variables: block at the end of the buffer.
139: It is the same thing normally done when a file is first visited.
140:
141: * Echo area messages disappear shortly if minibuffer is in use.
142:
143: Any message in the echo area disappears after 2 seconds
144: if the minibuffer is active. This allows the minibuffer
145: to become visible again.
146:
147: * C-z on System V runs a subshell.
148:
149: On systems which do not allow programs to be suspended, the C-z command
150: forks a subshell that talks directly to the terminal, and then waits
151: for the subshell to exit. This gets almost the effect of suspending
152: in that you can run other programs and then return to Emacs. However,
153: you cannot log out from the subshell.
154:
155: * C-c is always a prefix character.
156:
157: Also, subcommands of C-c which are letters are always
158: reserved for the user. No standard Emacs major mode
159: defines any of them.
160:
161: * Picture mode C-c commands changed.
162:
163: The old C-c k command is now C-c C-w.
164: The old C-c y command is now C-c C-x.
165:
166: * Shell mode commands changed.
167:
168: All the special commands of Shell mode are now moved onto
169: the C-c prefix. Most are not changed aside from that.
170: Thus, the old Shell mode C-c command (kill current job)
171: is now C-c C-c; the old C-z (suspend current job) is now C-c C-z,
172: etc.
173:
174: The old C-x commands are now C-c commands. C-x C-k (kill output)
175: is now C-c C-o, and C-x C-v (show output) is now C-c C-r.
176:
177: The old M-= (copy previous input) command is now C-c C-y.
178:
179: * Shell mode recognizes aliases for `pushd', `popd' and `cd'.
180:
181: Shell mode now uses the variable `shell-pushd-regexp' as a
182: regular expression to recognize any command name that is
183: equivalent to a `pushd' command. By default it is set up
184: to recognize just `pushd' itself. If you use aliases for
185: `pushd', change the regexp to recognize them as well.
186:
187: There are also `shell-popd-regexp' to recognize commands
188: with the effect of a `popd', and `shell-cd-regexp' to recognize
189: commands with the effect of a `cd'.
190:
191: * "Exit" command in certain modes now C-c C-c.
192:
193: These include electric buffer menu mode, electric command history
194: mode, Info node edit mode, and Rmail edit mode. In all these
195: modes, the command to exit used to be just C-c.
196:
197: * Outline mode changes.
198:
199: Lines that are not heading lines are now called "body" lines.
200: The command `hide-text' is renamed to `hide-body'.
201: The key M-H is renamed to C-c C-h.
202: The key M-S is renamed to C-c C-s.
203: The key M-s is renamed to C-c C-i.
204:
205: Changes of line visibility are no longer undoable. As a result,
206: they no longer use up undo memory and no longer interfere with
207: undoing earlier commands.
208:
209: * Rmail changes.
210:
211: The s and q commands now both expunge deleted messages before saving;
212: use C-x C-s to save without expunging.
213:
214: The u command now undeletes the current message if it is deleted;
215: otherwise, it backs up as far as necessary to reach a deleted message,
216: and undeletes that one. The u command in the summary behaves likewise,
217: but considers only messages listed in the summary. The M-u command
218: has been eliminated.
219:
220: The o and C-o keys' meanings are interchanged.
221: o now outputs to an Rmail file, and C-o to a Unix mail file.
222:
223: The F command (rmail-find) is renamed to M-s (rmail-search).
224: Various new commands and features exist; see the Emacs manual.
225:
226: * Local bindings described first in describe-bindings.
227:
228: * [...], {...} now balance in Fundamental mode.
229:
230: * Nroff mode and TeX mode.
231:
232: The are two new major modes for editing nroff input and TeX input.
233: See the Emacs manual for full information.
234:
235: * New C indentation style variable `c-brace-imaginary-offset'.
236:
237: The value of `c-brace-imaginary-offset', normally zero, controls the
238: indentation of a statement inside a brace-group where the open-brace
239: is not the first thing on a line. The value says where the open-brace
240: is imagined to be, relative to the first nonblank character on the line.
241:
242: * Dired improvements.
243:
244: Dired now normally keeps the cursor at the beginning of the file name,
245: not at the beginning of the line. The most used motion commands are
246: redefined in Dired to position the cursor this way.
247:
248: `n' and `p' are now equivalent in dired to `C-n' and `C-p'.
249:
250: If any files to be deleted cannot be deleted, their names are
251: printed in an error message.
252:
253: If the `v' command is invoked on a file which is a directory,
254: dired is run on that directory.
255:
256: * `visit-tag-table' renamed `visit-tags-table'.
257:
258: This is so apropos of `tags' finds everything you need to
259: know about in connection with Tags.
260:
261: * `mh-e' library uses C-c as prefix.
262:
263: All the special commands of `mh-rmail' now are placed on a
264: C-c prefix rather than on the C-x prefix. This is for
265: consistency with other special modes with their own commands.
266:
267: * M-$ or `spell-word' checks word before point.
268:
269: It used to check the word after point.
270:
271: * Quitting during autoloading no longer causes trouble.
272:
273: Now, when a file is autoloaded, all function redefinitions
274: and `provide' calls are recorded and are undone if you quit
275: before the file is finished loading.
276:
277: As a result, it no longer happens that some of the entry points
278: which are normally autoloading have been defined already, but the
279: entire file is not really present to support them.
280:
281: * `else' can now be indented correctly in C mode.
282:
283: TAB in C mode now knows which `if' statement an `else' matches
284: up with, and can indent the `else' correctly under the `if',
285: even if the `if' contained such things as another `if' statement,
286: or a `while' or `for' statement, with no braces around it.
287:
288: * `batch-byte-compile'
289:
290: Runs byte-compile-file on the files specified on the command line.
291: All the rest of the command line arguments are taken as files to
292: compile (or, if directories, to do byte-recompile-directory on).
293: Must be used only with -batch, and kills emacs on completion.
294: Each file will be processed even if an error occurred previously.
295: For example, invoke `emacs -batch -f batch-byte-compile *.el'.
296:
297: * `-batch' changes.
298:
299: `-batch' now implies `-q': no init file is loaded by Emacs when
300: `-batch' is used. Also, no `term/TERMTYPE.el' file is loaded. Auto
301: saving is not done except in buffers in which it is explicitly
302: requested. Also, many echo-area printouts describing what is going on
303: are inhibited in batch mode, so that the only output you get is the
304: output you program specifically.
305:
306: One echo-area message that is not suppressed is the one that says
307: that a file is being loaded. That is because you can prevent this
308: message by passing `t' as the third argument to `load'.
309:
310: * Display of search string in incremental search.
311:
312: Now, when you type C-s or C-r to reuse the previous search
313: string, that search string is displayed immediately in the echo area.
314:
315: Three dots are displayed after the search string while search
316: is actually going on.
317:
318: * View commands.
319:
320: The commands C-x ], C-x [, C-x /, C-x j and C-x o are now
321: available inside `view-buffer' and `view-file', with their
322: normal meanings.
323:
324: * Full-width windows preferred.
325:
326: The ``other-window'' commands prefer other full width windows,
327: and will split only full width windows.
328:
329: * M-x rename-file can copy if necessary.
330:
331: When used between different file systems, since actual renaming does
332: not work, the old file will be copied and deleted.
333:
334: * Within C-x ESC, you can pick the command to repeat.
335:
336: While editing a previous command to be repeated, inside C-x ESC,
337: you can now use the commands M-p and M-n to pick an earlier or
338: later command to repeat. M-n picks the next earlier command
339: and M-p picks the next later one. The new command appears in
340: the minibuffer, and you can go ahead and edit it, and repeat it
341: when you exit the minibuffer.
342:
343: Using M-n or M-p within C-x ESC is like having used a different
344: numeric argument when you ran C-x ESC in the first place.
345:
346: The command you finally execute using C-x ESC is added to the
347: front of the command history, unless it is identical with the
348: first thing in the command history.
349:
350: * Use C-c C-c to exit from editing within Info.
351:
352: It used to be C-z for this. Somehow this use of C-z was
353: left out when all the others were moved. The intention is that
354: C-z should always suspend Emacs.
355:
356: * Default arg to C-x < and C-x > now window width minus 2.
357:
358: These commands, which scroll the current window horizontally
359: by a specified number of columns, now scroll a considerable
360: distance rather than a single column if used with no argument.
361:
362: * Auto Save Files Deleted.
363:
364: The default value of `delete-auto-save-files' is now `t', so that
365: when you save a file for real, its auto save file is deleted.
366:
367: * Rnews changes.
368:
369: The N, P and J keys in Rnews are renamed to M-n, M-p and M-j.
370: These keys move among newsgroups.
371:
372: The n and p keys for moving sequentially between news articles now
373: accept repeat count arguments, and the + and - keys, made redundant by
374: this change, are eliminated.
375:
376: The s command for outputting the current article to a file
377: is renamed as o, to be compatible with Rmail.
378:
379: * Sendmail changes.
380:
381: If you have a ~/.mailrc file, Emacs searches it for mailing address
382: aliases, and these aliases are expanded when you send mail in Emacs.
383:
384: Fcc fields can now be used in the headers in the *mail* buffer
385: to specify files in which copies of the message should be put.
386: The message is written into those files in Unix mail file format.
387: The message as sent does not contain any Fcc fields in its header.
388: You can use any number of Fcc fields, but only one file name in each one.
389: The variable `mail-archive-file-name', if non-`nil', can be a string
390: which is a file name; an Fcc to that file will be inserted in every
391: message when you begin to compose it.
392:
393: A new command C-c q now exists in Mail mode. It fills the
394: paragraphs of an old message that had been inserted with C-c y.
395:
396: When the *mail* buffer is put in Mail mode, text-mode-hook
397: is now run in addition to mail-mode-hook. text-mode-hook
398: is run first.
399:
400: The new variable `mail-header-separator' now specifies the string
401: to use on the line that goes between the headers and the message text.
402: By default it is still "--text follows this line--".
403:
404: * Command history truncated automatically.
405:
406: Just before each garbage collection, all but the last 30 elements
407: of the command history are discarded.
408:
409: Incompatible Lisp Programming Changes in Emacs 17
410:
411: * `"e' no longer supported.
412:
413: This feature, which allowed Lisp functions to take arguments
414: that were not evaluated, has been eliminated, because it is
415: inescapably hard to make the compiler work properly with such
416: functions.
417:
418: You should use macros instead. A simple way to change any
419: code that uses `"e' is to replace
420:
421: (defun foo ("e x y z) ...
422:
423: with
424:
425: (defmacro foo (x y z)
426: (list 'foo-1 (list 'quote x) (list 'quote y) (list 'quote z)))
427:
428: (defun foo-1 (x y z) ...
429:
430: * Functions `region-to-string' and `region-around-match' removed.
431:
432: These functions were made for compatibility with Gosling Emacs, but it
433: turns out to be undesirable to use them in GNU Emacs because they use
434: the mark. They have been eliminated from Emacs proper, but are
435: present in mlsupport.el for the sake of converted mocklisp programs.
436:
437: If you were using `region-to-string', you should instead use
438: `buffer-substring'; then you can pass the bounds as arguments and
439: can avoid setting the mark.
440:
441: If you were using `region-around-match', you can use instead
442: the two functions `match-beginning' and `match-end'. These give
443: you one bound at a time, as a numeric value, without changing
444: point or the mark.
445:
446: * Function `function-type' removed.
447:
448: This just appeared not to be very useful. It can easily be written in
449: Lisp if you happen to want it. Just use `symbol-function' to get the
450: function definition of a symbol, and look at its data type or its car
451: if it is a list.
452:
453: * Variable `buffer-number' removed.
454:
455: You can still use the function `buffer-number' to find out
456: a buffer's unique number (assigned in order of creation).
457:
458: * Variable `executing-macro' renamed `executing-kbd-macro'.
459:
460: This variable is the currently executing keyboard macro, as
461: a string, or `nil' when no keyboard macro is being executed.
462:
463: * Loading term/$TERM.
464:
465: The library term/$TERM (where $TERM get replaced by your terminal
466: type), which is done by Emacs automatically when it starts up, now
467: happens after the user's .emacs file is loaded.
468:
469: In previous versions of Emacs, these files had names of the form
470: term-$TERM; thus, for example, term-vt100.el, but now they live
471: in a special subdirectory named term, and have names like
472: term/vt100.el.
473:
474: * `command-history' format changed.
475:
476: The elements of this list are now Lisp expressions which can
477: be evaluated directly to repeat a command.
478:
479: * Unused editing commands removed.
480:
481: The functions `forward-to-word', `backward-to-word',
482: `upcase-char', `mark-beginning-of-buffer' and `mark-end-of-buffer'
483: have been removed. Their definitions can be found in file
484: lisp/unused.el if you need them.
485:
486: Upward Compatible Lisp Programming Changes in Emacs 17
487:
488: * You can now continue after errors and quits.
489:
490: When the debugger is entered because of a C-g, due to
491: a non-`nil' value of `debug-on-quit', the `c' command in the debugger
492: resumes execution of the code that was running when the quit happened.
493: Use the `q' command to go ahead and quit.
494:
495: The same applies to some kinds of errors, but not all. Errors
496: signaled with the Lisp function `signal' can be continued; the `c'
497: command causes `signal' to return. The `r' command causes `signal' to
498: return the value you specify. The `c' command is equivalent to `r'
499: with the value `nil'.
500:
501: For a `wrong-type-argument' error, the value returned with the `r'
502: command is used in place of the invalid argument. If this new value
503: is not valid, another error occurs.
504:
505: Errors signaled with the function `error' cannot be continued.
506: If you try to continue, the error just happens again.
507:
508: * `dot' renamed `point'.
509:
510: The word `dot' has been replaced with `point' in all
511: function and variable names, including:
512:
513: point, point-min, point-max,
514: point-marker, point-min-marker, point-max-marker,
515: window-point, set-window-point,
516: point-to-register, register-to-point,
517: exchange-point-and-mark.
518:
519: The old names are still supported, for now.
520:
521: * `string-match' records position of end of match.
522:
523: After a successful call to `string-match', `(match-end 0)' will
524: return the index in the string of the first character after the match.
525: Also, `match-begin' and `match-end' with nonzero arguments can be
526: used to find the indices of beginnings and ends of substrings matched
527: by subpatterns surrounded by parentheses.
528:
529: * New function `insert-before-markers'.
530:
531: This function is just like `insert' except in the handling of any
532: relocatable markers that are located at the point of insertion.
533: With `insert', such markers end up pointing before the inserted text.
534: With `insert-before-markers', they end up pointing after the inserted
535: text.
536:
537: * New function `copy-alist'.
538:
539: This function takes one argument, a list, and makes a disjoint copy
540: of the alist structure. The list itself is copied, and each element
541: that is a cons cell is copied, but the cars and cdrs of elements
542: remain shared with the original argument.
543:
544: This is what it takes to get two alists disjoint enough that changes
545: in one do not change the result of `assq' on the other.
546:
547: * New function `copy-keymap'.
548:
549: This function takes a keymap as argument and returns a new keymap
550: containing initially the same bindings. Rebindings in either one of
551: them will not alter the bindings in the other.
552:
553: * New function `copy-syntax-table'.
554:
555: This function takes a syntax table as argument and returns a new
556: syntax table containing initially the same syntax settings. Changes
557: in either one of them will not alter the other.
558:
559: * Randomizing the random numbers.
560:
561: `(random t)' causes the random number generator's seed to be set
562: based on the current time and Emacs's process id.
563:
564: * Third argument to `modify-syntax-entry'.
565:
566: The optional third argument to `modify-syntax-entry', if specified
567: should be a syntax table. The modification is made in that syntax table
568: rather than in the current syntax table.
569:
570: * New function `run-hooks'.
571:
572: This function takes any number of symbols as arguments.
573: It processes the symbols in order. For each symbol which
574: has a value (as a variable) that is non-nil, the value is
575: called as a function, with no arguments.
576:
577: This is useful in major mode commands.
578:
579: * Second arg to `switch-to-buffer'.
580:
581: If this function is given a non-`nil' second argument, then the
582: selection being done is not recorded on the selection history.
583: The buffer's position in the history remains unchanged. This
584: feature is used by the view commands, so that the selection history
585: after exiting from viewing is the same as it was before.
586:
587: * Second arg to `display-buffer' and `pop-to-buffer'.
588:
589: These two functions both accept an optional second argument which
590: defaults to `nil'. If the argument is not `nil', it means that
591: another window (not the selected one) must be found or created to
592: display the specified buffer in, even if it is already shown in
593: the selected window.
594:
595: This feature is used by `switch-to-buffer-other-window'.
596:
597: * New variable `completion-ignore-case'.
598:
599: If this variable is non-`nil', completion allows strings
600: in different cases to be considered matching. The global value
601: is `nil'
602:
603: This variable exists for the sake of commands that are completing
604: an argument in which case is not significant. It is possible
605: to change the value globally, but you might not like the consequences
606: in the many situations (buffer names, command names, file names)
607: where case makes a difference.
608:
609: * Major modes related to Text mode call text-mode-hook, then their own hooks.
610:
611: For example, turning on Outline mode first calls the value of
612: `text-mode-hook' as a function, if it exists and is non-`nil',
613: and then does likewise for the variable `outline-mode-hook'.
614:
615: * Defining new command line switches.
616:
617: You can define a new command line switch in your .emacs file
618: by putting elements on the value of `command-switch-alist'.
619: Each element of this list should look like
620: (SWITCHSTRING . FUNCTION)
621: where SWITCHSTRING is a string containing the switch to be
622: defined, such as "-foo", and FUNCTION is a function to be called
623: if such an argument is found in the command line. FUNCTION
624: receives the command line argument, a string, as its argument.
625:
626: To implement a switch that uses up one or more following arguments,
627: use the fact that the remaining command line arguments are kept
628: as a list in the variable `command-line-args'. FUNCTION can
629: examine this variable, and do
630: (setq command-line-args (cdr command-line-args)
631: to "use up" an argument.
632:
633: * New variable `load-in-progress'.
634:
635: This variable is non-`nil' when a file of Lisp code is being read
636: and executed by `load'.
637:
638: * New variable `print-length'.
639:
640: The value of this variable is normally `nil'. It may instead be
641: a number; in that case, when a list is printed by `prin1' or
642: `princ' only that many initial elements are printed; the rest are
643: replaced by `...'.
644:
645: * New variable `find-file-not-found-hook'.
646:
647: If `find-file' or any of its variants is used on a nonexistent file,
648: the value of `find-file-not-found-hook' is called (if it is not `nil')
649: with no arguments, after creating an empty buffer. The file's name
650: can be found as the value of `buffer-file-name'.
651:
652: * Processes without buffers.
653:
654: In the function `start-process', you can now specify `nil' as
655: the process's buffer. You can also set a process's buffer to `nil'
656: using `set-process-buffer'.
657:
658: The reason you might want to do this is to prevent the process
659: from being killed because any particular buffer is killed.
660: When a process has a buffer, killing that buffer kills the
661: process too.
662:
663: When a process has no buffer, its output is lost unless it has a
664: filter, and no indication of its being stopped or killed is given
665: unless it has a sentinel.
666:
667: * New function `user-variable-p'. `v' arg prompting changed.
668:
669: This function takes a symbol as argument and returns `t' if
670: the symbol is defined as a user option variable. This means
671: that it has a `variable-documentation' property whose value is
672: a string starting with `*'.
673:
674: Code `v' in an interactive arg reading string now accepts
675: user variables only, and completion is limited to the space of
676: user variables.
677:
678: The function `read-variable' also now accepts and completes
679: over user variables only.
680:
681: * CBREAK mode input is the default in Unix 4.3 bsd.
682:
683: In Berkeley 4.3 Unix, there are sufficient features for Emacs to
684: work fully correctly using CBREAK mode and not using SIGIO.
685: Therefore, this mode is the default when running under 4.3.
686: This mode corresponds to `nil' as the first argument to
687: `set-input-mode'. You can still select either mode by calling
688: that function.
689:
690: * Information on memory usage.
691:
692: The new variable `data-bytes-used' contains the number
693: of bytes of impure space allocated in Emacs.
694: `data-bytes-free' contains the number of additional bytes
695: Emacs could allocate. Note that space formerly allocated
696: and freed again still counts as `used', since it is still
697: in Emacs's address space.
698:
699: * No limit on size of output from `format'.
700:
701: The string output from `format' used to be truncated to
702: 100 characters in length. Now it can have any length.
703:
704: * New errors `void-variable' and `void-function' replace `void-symbol'.
705:
706: This change makes it possible to have error messages that
707: clearly distinguish undefined variables from undefined functions.
708: It also allows `condition-case' to handle one case without the other.
709:
710: * `replace-match' handling of `\'.
711:
712: In `replace-match', when the replacement is not literal,
713: `\' in the replacement string is always treated as an
714: escape marker. The only two special `\' constructs
715: are `\&' and `\DIGIT', so `\' followed by anything other than
716: `&' or a digit has no effect. `\\' is necessary to include
717: a `\' in the replacement text.
718:
719: This level of escaping is comparable with what goes on in
720: a regular expression. It is over and above the level of `\'
721: escaping that goes on when strings are read in Lisp syntax.
722:
723: * New error `invalid-regexp'.
724:
725: A regexp search signals this type of error if the argument does
726: not meet the rules for regexp syntax.
727:
728: * `kill-emacs' with argument.
729:
730: If the argument is a number, it is returned as the exit status code
731: of the Emacs process. If the argument is a string, its contents
732: are stuffed as pending terminal input, to be read by another program
733: after Emacs is dead.
734:
735: * New fifth argument to `subst-char-in-region'.
736:
737: This argument is optional and defaults to `nil'. If it is not `nil',
738: then the substitutions made by this function are not recorded
739: in the Undo mechanism.
740:
741: This feature should be used with great care. It is now used
742: by Outline mode to make lines visible or invisible.
743:
744: * ` *Backtrace*' buffer renamed to `*Backtrace*'.
745:
746: As a result, you can now reselect this buffer easily if you switch to
747: another while in the debugger.
748:
749: Exiting from the debugger kills the `*Backtrace*' buffer, so you will
750: not try to give commands in it when no longer really in the debugger.
751:
752: * New function `switch-to-buffer-other-window'.
753:
754: This is the new primitive to select a specified buffer (the
755: argument) in another window. It is not quite the same as
756: `pop-to-buffer', because it is guaranteed to create another
757: window (assuming there is room on the screen) so that it can
758: leave the current window's old buffer displayed as well.
759:
760: All functions to select a buffer in another window should
761: do so by calling this new function.
762:
763: * New variable `minibuffer-help-form'.
764:
765: At entry to the minibuffer, the variable `help-form' is bound
766: to the value of `minibuffer-help-form'.
767:
768: `help-form' is expected at all times to contain either `nil'
769: or an expression to be executed when C-h is typed (overriding
770: teh definition of C-h as a command). `minibuffer-help-form'
771: can be used to provide a different default way of handling
772: C-h while in the minibuffer.
773:
774: * New \{...} documentation construct.
775:
776: It is now possible to set up the documentation string for
777: a major mode in such a way that it always describes the contents
778: of the major mode's keymap, as it has been customized.
779: To do this, include in the documentation string the characters `\{'
780: followed by the name of the variable containing the keymap,
781: terminated with `}'. (The `\' at the beginning probably needs to
782: be quoted with a second `\', to include it in the doc string.)
783: This construct is normally used on a line by itself, with no blank
784: lines before or after.
785:
786: For example, the documentation string for the function `c-mode' contains
787: ...
788: Paragraphs are separated by blank lines only.
789: Delete converts tabs to spaces as it moves back.
790: \\{c-mode-map}
791: Variables controlling indentation style:
792: ...
793:
794: * New character syntax class "punctuation".
795:
796: Punctuation characters behave like whitespace in word and
797: list parsing, but can be distinguished in regexps and in the
798: function `char-syntax'. Punctuation syntax is represented by
799: a period in `modify-syntax-entry'.
800:
801: * `auto-mode-alist' no longer needs entries for backup-file names,
802:
803: Backup suffixes of all kinds are now stripped from a file's name
804: before searching `auto-mode-alist'.
805:
806: Changes in Emacs 16
807:
808: * No special code for Ambassadors, VT-100's and Concept-100's.
809:
810: Emacs now controls these terminals based on the termcap entry, like
811: all other terminals. Formerly it did not refer to the termcap entries
812: for those terminal types, and often the termcap entries for those
813: terminals are wrong or inadequate. If you experience worse behavior
814: on these terminals than in version 15, you can probably correct it by
815: fixing up the termcap entry. See ./TERMS for more info.
816:
817: See ./TERMS in any case if you find that some terminal does not work
818: right with Emacs now.
819:
820: * Minibuffer default completion character is TAB (and not ESC).
821:
822: So that ESC can be used in minibuffer for more useful prefix commands.
823:
824: * C-z suspends Emacs in all modes.
825:
826: Formerly, C-z was redefined for other purposes by certain modes,
827: such as Buffer Menu mode. Now other keys are used for those purposes,
828: to keep the meaning of C-z uniform.
829:
830: * C-x ESC (repeat-complex-command) allows editing the command it repeats.
831:
832: Instead of asking for confirmation to re-execute a command from the
833: command history, the command is placed, in its Lisp form, into the
834: minibuffer for editing. You can confirm by typing RETURN, change some
835: arguments and then confirm, or abort with C-g.
836:
837: * Incremental search does less redisplay on slow terminals.
838:
839: If the terminal baud rate is <= the value of `isearch-slow-speed',
840: incremental searching outside the text on the screen creates
841: a single-line window and uses that to display the line on which
842: a match has been found. Exiting or quitting the search restores
843: the previous window configuration and redisplays the window you
844: were searching in.
845:
846: The initial value of `isearch-slow-speed' is 1200.
847:
848: This feature is courtesy of crl@purdue.
849:
850: * Recursive minibuffers not allowed.
851:
852: If the minibuffer window is selected, most commands that would
853: use the minibuffer gets an error instead. (Specific commands
854: may override this feature and therefore still be allowed.)
855:
856: Strictly speaking, recursive entry to the minibuffer is still
857: possible, because you can switch to another window after
858: entering the minibuffer, and then minibuffer-using commands
859: are allowed. This is still allowed by a deliberate decision:
860: if you know enough to switch windows while in the minibuffer,
861: you can probably understand recursive minibuffers.
862:
863: This may be overridden by binding the variable
864: `enable-recursive-minibuffers' to t.
865:
866: * New major mode Emacs-Lisp mode, for editing Lisp code to run in Emacs.
867:
868: The mode in which emacs lisp files is edited is now called emacs-lisp-mode
869: and is distinct from lisp-mode. The latter is intended for use with
870: lisps external to emacs.
871:
872: The hook which is funcalled (if non-nil) on entry to elisp-mode is now
873: called emacs-lisp-mode-hook. A consequence of this changes is that
874: .emacs init files which set the value of lisp-mode-hook may need to be
875: changed to use the new names.
876:
877: * Correct matching of parentheses is checked on insertion.
878:
879: When you insert a close-paren, the matching open-paren
880: is checked for validity. The close paren must be the kind
881: of close-paren that the open-paren says it should match.
882: Otherwise, a warning message is printed. close-paren immediately
883: preceded by quoting backslash syntax character is not matched.
884:
885: This feature was originally written by shane@mit-ajax.
886:
887: * M-x list-command-history
888: * M-x command-history-mode
889: * M-x electric-command-history
890:
891: `list-command-history' displays forms from the command history subject
892: to user controlled filtering and limit on number of forms. It leaves
893: the buffer in `command-history-mode'. M-x command-history-mode
894: recomputes the command history each time it is invoked via
895: `list-command-history'. It is like Emacs-Lisp mode except that characters
896: don't insert themselves and provision is made for re-evaluating an
897: expression from the list. `electric-command-history' pops up a type
898: out window with the command history displayed. If the very next
899: character is Space, the window goes away and the previous window
900: configuration is restored. Otherwise you can move around in the
901: history and select an expression for evaluation *inside* the buffer
902: which invoked `electric-command-history'. The original window
903: configuration is restored on exit unless the command selected changes
904: it.
905:
906: * M-x edit-picture
907:
908: Enters a temporary major mode (the previous major mode is remembered
909: and can is restored on exit) designed for editing pictures and tables.
910: Printing characters replace rather than insert themselves with motion
911: afterwards that is user controlled (you can specify any of the 8
912: compass directions). Special commands for movement are provided.
913: Special commands for hacking tabs and tab stops are provided. Special
914: commands for killing rectangles and overlaying them are provided. See
915: the documentation of function edit-picture for more details.
916:
917: Calls value of `edit-picture-hook' on entry if non-nil.
918:
919: * Stupid C-s/C-q `flow control' supported.
920:
921: Do (set-input-mode nil t) to tell Emacs to use CBREAK mode and interpret
922: C-s and C-q as flow control commands. (set-input-mode t nil) switches
923: back to interrupt-driven input. (set-input-mode nil nil) uses CBREAK
924: mode but no `flow control'; this may make it easier to run Emacs under
925: certain debuggers that have trouble dealing with inferiors that use SIGIO.
926:
927: CBREAK mode has certain inherent disadvantages, which are why it is
928: not the default:
929:
930: Meta-keys are ignored; CBREAK mode discards the 8th bit of
931: input characters.
932:
933: Control-G as keyboard input discards buffered output,
934: and therefore can cause incorrect screen updating.
935:
936: The use of `flow control' has its own additional disadvantage: the
937: characters C-s and C-q are not available as editing commands. You can
938: partially compensate for this by setting up a keyboard-translate-table
939: (see file ONEWS) that maps two other characters (such as C-^ and C-\) into
940: C-s and C-q. Of course, C-^ and C-\ are commonly used as escape
941: characters in remote-terminal programs. You really can't win except
942: by getting rid of this sort of `flow control.'
943:
944: The configuration switch CBREAK_INPUT is now eliminated.
945: INTERRUPT_INPUT exists only to specify the default mode of operation;
946: #define it to make interrupt-driven input the default.
947:
948: * Completion of directory names provides a slash.
949:
950: If file name completion yields the name of a directory,
951: a slash is appended to it.
952:
953: * Undo can clear modified-flag.
954:
955: If you undo changes in a buffer back to a state in which the
956: buffer was not considered "modified", then it is labelled as
957: once again "unmodified".
958:
959: * M-x run-lisp.
960:
961: This command creates an inferior Lisp process whose input and output
962: appear in the Emacs buffer named `*lisp*'. That buffer uses a major mode
963: called inferior-lisp-mode, which has many of the commands of lisp-mode
964: and those of shell-mode. Calls the value of shell-mode-hook and
965: lisp-mode-hook, in that order, if non-nil.
966:
967: Meanwhile, in lisp-mode, the command C-M-x is defined to
968: send the current defun as input to the `*lisp*' subprocess.
969:
970: * Mode line says `Narrow' when buffer is clipped.
971:
972: If a buffer has a clipping restriction (made by `narrow-to-region')
973: then its mode line contains the word `Narrow' after the major and
974: minor modes.
975:
976: * Mode line says `Abbrev' when abbrev mode is on.
977:
978: * add-change-log-entry takes prefix argument
979:
980: Giving a prefix argument makes it prompt for login name, full name,
981: and site name, with defaults. Otherwise the defaults are used
982: with no confirmation.
983:
984: * M-x view-buffer and M-x view-file
985:
986: view-buffer selects the named buffer, view-file finds the named file; the
987: resulting buffer is placed into view-mode (a recursive edit). The normal
988: emacs commands are not available. Instead a set of special commands is
989: provided which faclitate moving around in the buffer, searching and
990: scrolling by screenfuls. Exiting view-mode returns to the buffer in which
991: the view-file or view-buffer command was given.
992: Type ? or h when viewing for a complete list of view commands.
993: Each calls value of `view-hook' if non-nil on entry.
994:
995: written by shane@mit-ajax.
996:
997: * New key commands in dired.
998:
999: `v' views (like more) the file on the current line.
1000: `#' marks auto-save files for deletion.
1001: `~' marks backup files for deletion.
1002: `r' renames a file and updates the directory listing if the
1003: file is renamed to same directory.
1004: `c' copies a file and updates the directory listing if the file is
1005: copied to the same directory.
1006:
1007: * New function `electric-buffer-list'.
1008:
1009: This pops up a buffer describing the set of emacs buffers.
1010: Immediately typing space makes the buffer list go away and returns
1011: to the buffer and window which were previously selected.
1012:
1013: Otherwise one may use the c-p and c-n commands to move around in the
1014: buffer-list buffer and type Space or C-z to select the buffer on the
1015: cursor's line. There are a number of other commands which are the same
1016: as those of buffer-menu-mode.
1017:
1018: This is a useful thing to bind to c-x c-b in your `.emacs' file if the
1019: rather non-standard `electric' behaviour of the buffer list suits your taste.
1020: Type C-h after invoking electric-buffer-list for more information.
1021:
1022: Calls value of `electric-buffer-menu-mode-hook' if non-nil on entry.
1023: Calls value of `after-electric-buffer-menu' on exit (select) if non-nil.
1024:
1025: Changes in version 16 for mail reading and sending
1026:
1027: * sendmail prefix character is C-c (and not C-z). New command C-c w.
1028:
1029: For instance C-c C-c (or C-c C-s) sends mail now rather than C-z C-z.
1030: C-c w inserts your `signature' (contents of ~/.signature) at the end
1031: of mail.
1032:
1033: * New feature in C-c y command in sending mail.
1034:
1035: C-c y is the command to insert the message being replied to.
1036: Normally it deletes most header fields and indents everything
1037: by three spaces.
1038:
1039: Now, C-c y does not delete header fields or indent.
1040: C-c y with any other numeric argument does delete most header
1041: fields, but indents by the amount specified in the argument.
1042:
1043: * C-r command in Rmail edits current message.
1044:
1045: It does this by switching to a different major mode
1046: which is nearly the same as Text mode. The only difference
1047: between it and text mode are the two command C-c and C-].
1048: C-c is defined to switch back to Rmail mode, and C-]
1049: is defined to restore the original contents of the message
1050: and then switch back to Rmail mode.
1051:
1052: C-c and C-] are the only ways "back into Rmail", but you
1053: can switch to other buffers and edit them as usual.
1054: C-r in Rmail changes only the handling of the Rmail buffer.
1055:
1056: * Rmail command `t' toggles header display.
1057:
1058: Normally Rmail reformats messages to hide most header fields.
1059: `t' switches to display of all the header fields of the
1060: current message, as long as it remains current.
1061: Another `t' switches back to the usual display.
1062:
1063: * Rmail command '>' goes to the last message.
1064:
1065: * Rmail commands `a' and `k' set message attributes.
1066: `a' adds an attribute and `k' removes one. You specify
1067: the attrbute by name. You can specify either a built-in
1068: flag such as "deleted" or "filed", or a user-defined keyword
1069: (anything not recognized as built-in).
1070:
1071: * Rmail commands `l' and `L' summarize by attributes.
1072:
1073: These commands create a summary with one line per message,
1074: like `h', but they list only some of the messages. You
1075: specify which attribute (for `l') or attributes (for `L')
1076: the messages should have.
1077:
1078: * Rmail can parse mmdf mail files.
1079:
1080: * Interface to MH mail system.
1081:
1082: mh-e is a front end for GNU emacs and the MH mail system. It
1083: provides a friendly and convient interface to the MH commands.
1084:
1085: To read mail, invoke mh-rmail. This will inc new mail and display the
1086: scan listing on the screen. To see a summary of the mh-e commands,
1087: type ?. Help is available through the usual facilities.
1088:
1089: To send mail, invoke mh-smail.
1090:
1091: mh-e requires a copy of MH.5 that has been compiled with the MHE
1092: compiler switch.
1093:
1094: From larus@berkeley.
1095:
1096: New hooks and parameters in version 16
1097:
1098: * New variable `blink-matching-paren-distance'.
1099:
1100: This is the maximum number of characters to search for
1101: an open-paren to match an inserted close-paren.
1102: The matching open-paren is shown and checked if it is found
1103: within this distance.
1104:
1105: `nil' means search all the way to the beginning of the buffer.
1106: In this case, a warning message is printed if no matching
1107: open-paren is found.
1108:
1109: This feature was originally written by shane@mit-ajax.
1110:
1111: * New variable `find-file-run-dired'
1112:
1113: If nil, find-file will report an error if an attempt to visit a
1114: directory is detected; otherwise, it runs dired on that directory.
1115: The default is t.
1116:
1117: * Variable `dired-listing-switches' holds switches given to `ls' by dired.
1118:
1119: The value should be a string containing `-' followed by letters.
1120: The letter `l' had better be included and letter 'F' had better be excluded!
1121: The default is "-al".
1122:
1123: This feature was originally written by shane@mit-ajax.
1124:
1125: * New variable `display-time-day-and-date'.
1126:
1127: If this variable is set non-`nil', the function M-x display-time
1128: displays the day and date, as well as the time.
1129:
1130: * New parameter `c-continued-statement-indent'.
1131:
1132: This controls the extra indentation given to a line
1133: that continues a C statement started on the previous line.
1134: By default it is 2, which is why you would see
1135:
1136: if (foo)
1137: bar ();
1138:
1139:
1140: * Changed meaning of `c-indent-level'.
1141:
1142: The value of `c-brace-offset' used to be
1143: subtracted from the value of `c-indent-level' whenever
1144: that value was used. Now it is not.
1145:
1146: As a result, `c-indent-level' is now the offset of
1147: statements within a block, relative to the line containing
1148: the open-brace that starts the block.
1149:
1150: * turn-on-auto-fill is useful value for text-mode-hook.
1151:
1152: (setq text-mode-hook 'turn-on-auto-fill)
1153: is all you have to do to make sure Auto Fill mode is turned
1154: on whenever you enter Text mode.
1155:
1156: * Parameter explicit-shell-file-name for M-x shell.
1157:
1158: This variable, if non-nil, specifies the file name to use
1159: for the shell to run if you do M-x shell.
1160:
1161: Changes in version 16 affecting Lisp programming:
1162:
1163: * Documentation strings adapt to customization.
1164:
1165: Often the documentation string for a command wants to mention
1166: another command. Simply stating the other command as a
1167: character sequence has a disadvantage: if the user customizes
1168: Emacs by moving that function to a different command, the
1169: cross reference in the documentation becomes wrong.
1170:
1171: A new feature allows you to write the documentation string
1172: using a function name, and the command to run that function
1173: is looked up when the documentation is printed.
1174:
1175: If a documentation string contains `\[' (two characters) then
1176: the following text, up to the next `]', is taken as a function name.
1177: Instead of printing that function name, the command that runs it is printed.
1178: (M-x is used to construct a command if no shorter one exists.)
1179:
1180: For example, instead of putting `C-n' in a documentation string
1181: to refer to the C-n command, put in `\[next-line]'. (In practice
1182: you will need to quote the backslash with another backslash,
1183: due to the syntax for strings in Lisp and C.)
1184:
1185: To include the literal characters `\[' in a documentation string,
1186: precede them with `\='. To include the characters `\=', precede
1187: them with `\='. For example, "\\=\\= is the way to quote \\=\\["
1188: will come out as `\= is the way to quote \['.
1189:
1190: The new function `substitute-command-keys' takes a string possibly
1191: contaning \[...] constructs and replaces those constructs with
1192: the key sequences they currently stand for.
1193:
1194: * Primitives `find-line-comment' and `find-line-comment-body' flushed.
1195:
1196: Search for the value of `comment-start-skip' if you want to find
1197: whether and where a line has a comment.
1198:
1199: * New function `auto-save-file-name-p'
1200:
1201: Should return non-`nil' iff given a string which is the name of an
1202: auto-save file (sans directory name). If you redefine
1203: `make-auto-save-file-name', you should redefine this accordingly. By
1204: default, this function returns `t' for filenames beginning with
1205: character `#'.
1206:
1207: * The value of `exec-directory' now ends in a slash.
1208:
1209: This is to be compatible with most directory names in GNU Emacs.
1210:
1211: * Dribble files and termscript files.
1212:
1213: (open-dribble-file FILE) opens a dribble file named FILE. When a
1214: dribble file is open, every character Emacs reads from the terminal is
1215: written to the dribble file.
1216:
1217: (open-termscript FILE) opens a termscript file named FILE. When a
1218: termscript file is open, all characters sent to the terminal by Emacs
1219: are also written in the termscript file.
1220:
1221: The two of these together are very useful for debugging Emacs problems
1222: in redisplay.
1223:
1224: * Upper case command characters by default are same as lower case.
1225:
1226: If a character in a command is an upper case letter, and is not defined,
1227: Emacs uses the definition of the corresponding lower case letter.
1228: For example, if C-x U is not directly undefined, it is treated as
1229: a synonym for C-x u (undo).
1230:
1231: * Undefined function errors versus undefined variable errors.
1232:
1233: Void-symbol errors now say "boundp" if the symbol's value was void
1234: or "fboundp" if the function definition was void.
1235:
1236: * New function `bury-buffer'.
1237:
1238: The new function `bury-buffer' takes one argument, a buffer object,
1239: and puts that buffer at the end of the internal list of buffers.
1240: So it is the least preferred candidate for use as the default value
1241: of C-x b, or for other-buffer to return.
1242:
1243: * Already-displayed buffers have low priority for display.
1244:
1245: When a buffer is chosen automatically for display, or to be the
1246: default in C-x b, buffers already displayed in windows have lower
1247: priority than buffers not currently visible.
1248:
1249: * `set-window-start' accepts a third argument NOFORCE.
1250:
1251: This argument, if non-nil, prevents the window's force_start flag
1252: from being set. Setting the force_start flag causes the next
1253: redisplay to insist on starting display at the specified starting
1254: point, even if dot must be moved to get it onto the screen.
1255:
1256: * New function `send-string-to-terminal'.
1257:
1258: This function takes one argument, a string, and outputs its contents
1259: to the terminal exactly as specified: control characters, escape
1260: sequences, and all.
1261:
1262: * Keypad put in command mode.
1263:
1264: The terminal's keypad is now put into command mode, as opposed to
1265: numeric mode, while Emacs is running. This is done by means of the
1266: termcap `ks' and `ke' strings.
1267:
1268: * New function `generate-new-buffer'
1269:
1270: This function takes a string as an argument NAME and looks for a
1271: creates and returns a buffer called NAME if one did not already exist.
1272: Otherwise, it successively tries appending suffixes of the form "<1>",
1273: "<2>" etc to NAME until it creates a string which does not name an
1274: existing buffer. A new buffer with that name is the created and returned.
1275:
1276: * New function `prin1-to-string'
1277: This function takes one argument, a lisp object, and returns a string
1278: containing that object's printed representation, such as `prin1'
1279: would output.
1280:
1281: * New function `read-from-minibuffer'
1282: Lets you supply a prompt, initial-contents, a keymap, and specify
1283: whether the result should be interpreted as a string or a lisp object.
1284:
1285: Old functions `read-minibuffer', `eval-minibuffer', `read-string' all
1286: take second optional string argument which is initial contents of
1287: minibuffer.
1288:
1289: * minibuffer variable names changed (names of keymaps)
1290:
1291: minibuf-local-map -> minibuffer-local-map
1292: minibuf-local-ns-map -> minibuffer-local-ns-map
1293: minibuf-local-completion-map -> minibuffer-local-completion-map
1294: minibuf-local-must-match-map -> minibuffer-local-must-match-map
1295:
1296: Changes in version 16 affecting configuring and building Emacs
1297:
1298: * Configuration switch VT100_INVERSE eliminated.
1299:
1300: You can control the use of inverse video on any terminal by setting
1301: the variable `inverse-video', or by changing the termcap entry. If
1302: you like, set `inverse-video' in your `.emacs' file based on
1303: examination of (getenv "TERM").
1304:
1305: * New switch `-batch' makes Emacs run noninteractively.
1306:
1307: If the switch `-batch' is used, Emacs treats its standard output
1308: and input like ordinary files (even if they are a terminal).
1309: It does not display buffers or windows; the only output to standard output
1310: is what would appear as messages in the echo area, and each
1311: message is followed by a newline.
1312:
1313: The terminal modes are not changed, so that C-z and C-c retain
1314: their normal Unix meanings. Emacs does still read commands from
1315: the terminal, but the idea of `-batch' is that you use it with
1316: other command line arguments that tell Emacs a complete task to perform,
1317: including killing itself. `-kill' used as the last argument is a good
1318: way to accomplish this.
1319:
1320: The Lisp variable `noninteractive' is now defined, to be `nil'
1321: except when `-batch' has been specified.
1322:
1323: * Emacs can be built with output redirected to a file.
1324:
1325: This is because -batch (see above) is now used in building Emacs.
1326:
1327: For older news, see the file ONEWS.
1328:
1329: ----------------------------------------------------------------------
1330: Copyright information:
1331:
1332: Copyright (C) 1985 Richard M. Stallman
1333:
1334: Permission is granted to anyone to make or distribute verbatim copies
1335: of this document as received, in any medium, provided that the
1336: copyright notice and this permission notice are preserved,
1337: thus giving the recipient permission to redistribute in turn.
1338:
1339: Permission is granted to distribute modified versions
1340: of this document, or of portions of it,
1341: under the above conditions, provided also that they
1342: carry prominent notices stating who last changed them.
1343:
1344: Local variables:
1345: mode: text
1346: end:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.