|
|
1.1 root 1: Old GNU Emacs NEWS -- history of user-visible changes thru version 15.
2: Copyright (C) 1985 Richard M. Stallman.
3: See the end for copying conditions.
4:
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.
167:
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.
174:
175: * Bias against scrolling screen far on fast terminals.
176:
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.
179:
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)
202:
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.)
207:
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.
213:
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:
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:
246: Changes in Emacs 13
247:
248: * There is a new version numbering scheme.
249:
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.
253:
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.
258:
259: * There is now a reader syntax for Meta characters:
260: \M-CHAR means CHAR or'ed with the Meta bit. For example:
261:
262: ?\M-x is (+ ?x 128)
263: ?\M-\n is (+ ?\n 128)
264: ?\M-\^f is (+ ?\^f 128)
265:
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.
270:
271: ?\C- can be used likewise for control characters. (13.9)
272:
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.
279:
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
333: designes. For example, on some terminals, Delete is
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.
376:
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.
402:
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.
444:
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:
538: Changes in Emacs 1.8
539:
540: This release mostly fixes bugs. There are a few new features:
541:
542: * apropos now sorts the symbols before displaying them.
543: Also, it returns a list of the symbols found.
544:
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.
549:
550: If the third argument to apropos is non-nil, apropos does not
551: display anything; it merely returns the list of symbols found.
552:
553: C-h a now runs the new function command-apropos rather than
554: apropos, and shows only symbols with definitions as commands.
555:
556: * M-x shell sends the command
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.
562:
563: * M-, now runs the command tags-loop-continue, which is used
564: to resume a terminated tags-search or tags-query-replace.
565:
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.
664:
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.
796:
797: Changes in Emacs 1.5
798:
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.
802:
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.
806:
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.
811:
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.
817:
818: * The Lisp function cond now exists, with its traditional meaning.
819:
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.
823:
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.
881:
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.
934:
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:
958: In the debugger, you can evaluate Lisp expressions by
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))
987:
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
1056: lines at higher levels, until but not including the next
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.
1069:
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.
1094:
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.
1147:
1148: ----------------------------------------------------------------------
1149: Copyright information:
1150:
1151: Copyright (C) 1985 Richard M. Stallman
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:
1163: Local variables:
1164: mode: text
1165: end:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.