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