|
|
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.