|
|
1.1 ! root 1: GNU Emacs NEWS -- history of user-visible changes. 3 Feb 1992 ! 2: Copyright (C) 1988, 1990, 1992 Free Software Foundation, Inc. ! 3: See the end for copying conditions. ! 4: ! 5: Changes in version 18.58. ! 6: ! 7: * RMAIL reply now properly parses nested comments in addresses. ! 8: ! 9: * The "visual bell" feature when used with X windows ! 10: now flashes only 1/4 of the window's total area. This is because ! 11: flashing the whole window is too slow on some systems. ! 12: ! 13: * call-process and call-process-region now return an indication ! 14: of the exit status of the subprocess: either a numeric exit code ! 15: or a string describing the signal which caused termination. ! 16: ! 17: * It is possible for regular expression matching to overflow the stack ! 18: of failure points. In the past, such overflow was treated as simple ! 19: failure to match. Now it causes an error. ! 20: ! 21: * You can use C-u to end a numeric argument. Thus, type C-u 1 0 0 C-u 1 ! 22: to insert 100 1's. ! 23: ! 24: * Emacs now knows how to get resource values from the X server. ! 25: ! 26: * Job control commands in shell mode work properly on more systems ! 27: because they now work by "typing" signal characters such as C-c. ! 28: ! 29: * copy-keymap no longer recursively copies keymaps reached through ! 30: symbols' function definitions (i.e., those that have names). It does ! 31: copy nested keymaps that appear directly in the other copied keymaps. ! 32: ! 33: Changes in version 18.56. ! 34: ! 35: * C-g should now work to interrupt a running program ! 36: on all kinds of systems even when using X windows. ! 37: ! 38: * Quitting is inhibited while a filter or sentinel is running. ! 39: Those functions can run asynchronously while Emacs is waiting ! 40: for keyboard input, and if they allow quitting, they ! 41: make the behavior of C-g unpredictable. ! 42: ! 43: * Storing text into the X windows cut buffer ! 44: now clears out any selection. ! 45: ! 46: * The undo facility is completely rewritten, and now ! 47: uses Lisp data structures. It can record much more ! 48: information. You can use the variables undo-threshold ! 49: and undo-high-threshold to control how much. ! 50: ! 51: * There is no longer a maximum screen height or width. ! 52: ! 53: Changes in version 18.52. ! 54: ! 55: * X windows version 10 is supported under system V. ! 56: ! 57: * Pop-up menus are now supported with the same Lisp interface in ! 58: both version 10 and 11 of X windows. ! 59: ! 60: * C-x 4 a is a new command to edit a change-log entry in another window. ! 61: ! 62: * The emacs client program now allows an option +NNN to specify the ! 63: line number to go to in the file whose name follows. Thus, ! 64: emacsclient foo.c +45 bar.c ! 65: will find the files `foo.c' and `bar.c', going to line 45 in `bar.c'. ! 66: ! 67: * Dired allows empty directories to be deleted like files. ! 68: ! 69: * When the terminal type is used to find a terminal-specific file to ! 70: run, Emacs now tries the entire terminal type first. If that doesn't ! 71: yield a file that exists, the last hyphen and what follows it is ! 72: stripped. If that doesn't yield a file that exists, the previous ! 73: hyphen is stripped, and so on until all hyphens are gone. For ! 74: example, if the terminal type is `aaa-48-foo', Emacs will try first ! 75: `term/aaa-48-foo.el', then `term/aaa-48.el' and finally `term/aaa.el'. ! 76: ! 77: Underscores now receive the same treatment as hyphens. ! 78: ! 79: * Texinfo features: @defun, etc. texinfo-show-structure. ! 80: New template commands. texinfo-format-region. ! 81: ! 82: * The special "local variable" `eval' is now ignored if you are running ! 83: as root. ! 84: ! 85: * New command `c-macro-expand' shows the result of C macro expansion ! 86: in the region. It works using the C preprocessor, so its results ! 87: are completely accurate. ! 88: ! 89: * Errors in trying to auto save now flash error messages for a few seconds. ! 90: ! 91: * Killing a buffer now sends SIGHUP to the buffer's process. ! 92: ! 93: * New hooks. ! 94: ! 95: ** `spell-region' now allows you to filter the text before spelling-checking. ! 96: If the value of `spell-filter' is non-nil, it is called, with no arguments, ! 97: looking at a temporary buffer containing a copy of the text to be checked. ! 98: It can alter the text freely before the spell program sees it. ! 99: ! 100: ** The variable `lpr-command' now specifies the command to be used when ! 101: you use the commands to print text (such as M-x print-buffer). ! 102: ! 103: ** Posting netnews now calls the value of `news-inews-hook' (if not nil) ! 104: as a function of no arguments before the actual posting. ! 105: ! 106: ** Rmail now calls the value of `rmail-show-message-hook' (if not nil) ! 107: as a function of no arguments, each time a new message is selected. ! 108: ! 109: ** `kill-emacs' calls the value of `kill-emacs-hook' as a function of no args. ! 110: ! 111: * New libraries. ! 112: See the source code of each library for more information. ! 113: ! 114: ** icon.el: a major mode for editing programs written in Icon. ! 115: ! 116: ** life.el: a simulator for the cellular automaton "life". Load the ! 117: library and run M-x life. ! 118: ! 119: ** doctex.el: a library for converting the Emacs `etc/DOC' file of ! 120: documentation strings into TeX input. ! 121: ! 122: ** saveconf.el: a library which records the arrangement of windows and ! 123: buffers when you exit Emacs, and automatically recreates the same ! 124: setup the next time you start Emacs. ! 125: ! 126: ** uncompress.el: a library that automatically uncompresses files ! 127: when you visit them. ! 128: ! 129: ** c-fill.el: a mode for editing filled comments in C. ! 130: ! 131: ** kermit.el: an extended version of shell-mode designed for running kermit. ! 132: ! 133: ** spook.el: a library for adding some "distract the NSA" keywords to every ! 134: message you send. ! 135: ! 136: ** hideif.el: a library for hiding parts of a C program based on preprocessor ! 137: conditionals. ! 138: ! 139: ** autoinsert.el: a library to put in some initial text when you visit ! 140: a nonexistent file. The text used depends on the major mode, and ! 141: comes from a directory of files created by you. ! 142: ! 143: * New programming features. ! 144: ! 145: ** The variable `window-system-version' now contains the version number ! 146: of the window system you are using (if appropriate). When using X windows, ! 147: its value is either 10 or 11. ! 148: ! 149: ** (interactive "N") uses the prefix argument if any; otherwise, it reads ! 150: a number using the minibuffer. ! 151: ! 152: ** VMS: there are two new functions `vms-system-info' and `shrink-to-icon'. ! 153: The former allows you to get many kinds of system status information. ! 154: See its self-documentation for full details. ! 155: The second is used with the window system: it iconifies the Emacs window. ! 156: ! 157: ** VMS: the new function `define-logical-name' allows you to create ! 158: job-wide logical names. The old function `define-dcl-symbol' has been ! 159: removed. ! 160: ! 161: Changes in version 18.50. ! 162: ! 163: * X windows version 11 is supported. ! 164: ! 165: Define X11 in config.h if you want X version 11 instead of version 10. ! 166: ! 167: * The command M-x gdb runs the GDB debugger as an inferior. ! 168: It asks for the filename of the executable you want to debug. ! 169: ! 170: GDB runs as an inferior with I/O through an Emacs buffer. All the ! 171: facilities of Shell mode are available. In addition, each time your ! 172: program stops, and each time you select a new stack frame, the source ! 173: code is displayed in another window with an arrow added to the line ! 174: where the program is executing. ! 175: ! 176: Special GDB-mode commands include M-s, M-n, M-i, M-u, M-d, and C-c C-f ! 177: which send the GDB commands `step', `next', `stepi', `up', `down' ! 178: and `finish'. ! 179: ! 180: In any source file, the commands C-x SPC tells GDB to set a breakpoint ! 181: on the current line. ! 182: ! 183: * M-x calendar displays a three-month calendar. ! 184: ! 185: * C-u 0 C-x C-s never makes a backup file. ! 186: ! 187: This is a way you can explicitly request not to make a backup. ! 188: ! 189: * `term-setup-hook' is for users only. ! 190: ! 191: Emacs never uses this variable for internal purposes, so you can freely ! 192: set it in your `.emacs' file to make Emacs do something special after ! 193: loading any terminal-specific setup file from `lisp/term'. ! 194: ! 195: * `copy-keymap' now copies recursive submaps. ! 196: ! 197: * New overlay-arrow feature. ! 198: ! 199: If you set the variable `overlay-arrow-string' to a string ! 200: and `overlay-arrow-position' to a marker, that string is displayed on ! 201: the screen at the position of that marker, hiding whatever text would ! 202: have appeared there. If that position isn't on the screen, or if ! 203: the buffer the marker points into isn't displayed, there is no effect. ! 204: ! 205: * -batch mode can read from the terminal. ! 206: ! 207: It now works to use `read-char' to do terminal input in a noninteractive ! 208: Emacs run. End of file causes Emacs to exit. ! 209: ! 210: * Variables `data-bytes-used' and `data-bytes-free' removed. ! 211: ! 212: These variables cannot really work because the 24-bit range of an ! 213: integer in (most ports of) GNU Emacs is not large enough to hold their ! 214: values on many systems. ! 215: ! 216: Changes in version 18.45, since version 18.41. ! 217: ! 218: * C indentation parameter `c-continued-brace-offset'. ! 219: ! 220: This parameter's value is added to the indentation of any ! 221: line that is in a continuation context and starts with an open-brace. ! 222: For example, it applies to the open brace shown here: ! 223: ! 224: if (x) ! 225: { ! 226: ! 227: The default value is zero. ! 228: ! 229: * Dabbrev expansion (Meta-/) preserves case. ! 230: ! 231: When you use Meta-/ to search the buffer for an expansion of an ! 232: abbreviation, if the expansion found is all lower case except perhaps ! 233: for its first letter, then the case pattern of the abbreviation ! 234: is carried over to the expansion that replaces it. ! 235: ! 236: * TeX-mode syntax. ! 237: ! 238: \ is no longer given "escape character" syntax in TeX mode. It now ! 239: has the syntax of an ordinary punctuation character. As a result, ! 240: \[...\] and such like are considered to balance each other. ! 241: ! 242: * Mail-mode automatic Reply-to field. ! 243: ! 244: If the variable `mail-default-reply-to' is non-`nil', then each time ! 245: you start to compose a message, a Reply-to field is inserted with ! 246: its contents taken from the value of `mail-default-reply-to'. ! 247: ! 248: * Where is your .emacs file? ! 249: ! 250: If you run Emacs under `su', so your real and effective uids are ! 251: different, Emacs uses the home directory associated with the real uid ! 252: (the name you actually logged in under) to find the .emacs file. ! 253: ! 254: Otherwise, Emacs uses the environment variable HOME to find the .emacs ! 255: file. ! 256: ! 257: The .emacs file is not loaded at all if -batch is specified. ! 258: ! 259: * Prolog mode is the default for ".pl" files. ! 260: ! 261: * File names are not case-sensitive on VMS. ! 262: ! 263: On VMS systems, all file names that you specify are converted to upper ! 264: case. You can use either upper or lower case indiscriminately. ! 265: ! 266: * VMS-only function 'define-dcl-symbol'. ! 267: ! 268: This is a new name for the function formerly called ! 269: `define-logical-name'. ! 270: ! 271: Editing Changes in Emacs 18 ! 272: ! 273: * Additional systems and machines are supported. ! 274: ! 275: GNU Emacs now runs on Vax VMS. However, many facilities that are normally ! 276: implemented by running subprocesses do not work yet. This includes listing ! 277: a directory and sending mail. There are features for running subprocesses ! 278: but they are incompatible with those on Unix. I hope that some of ! 279: the VMS users can reimplement these features for VMS (compatibly for ! 280: the user, if possible). ! 281: ! 282: VMS wizards are also asked to work on making the subprocess facilities ! 283: more upward compatible with those on Unix, and also to rewrite their ! 284: internals to use the same Lisp objects that are used on Unix to ! 285: represent processes. ! 286: ! 287: In addition, the TI Nu machine running Unix system V, the AT&T 3b, and ! 288: the Wicat, Masscomp, Integrated Solutions, Alliant, Amdahl uts, Mips, ! 289: Altos 3068 and Gould Unix systems are now supported. The IBM PC-RT is ! 290: supported under 4.2, but not yet under system V. The GEC 93 is close ! 291: to working. The port for the Elxsi is partly merged. See the file ! 292: MACHINES for full status information and machine-specific installation ! 293: advice. ! 294: ! 295: * Searching is faster. ! 296: ! 297: Forward search for a text string, or for a regexp that is equivalent ! 298: to a text string, is now several times faster. Motion by lines and ! 299: counting lines is also faster. ! 300: ! 301: * Memory usage improvements. ! 302: ! 303: It is no longer possible to run out of memory during garbage ! 304: collection. As a result, running out of memory is never fatal. This ! 305: is due to a new garbage collection algorithm which compactifies ! 306: strings in place rather than copying them. Another consequence of the ! 307: change is a reduction in total memory usage and a slight increase in ! 308: garbage collection speed. ! 309: ! 310: * Display changes. ! 311: ! 312: ** Editing above top of screen. ! 313: ! 314: When you delete or kill or alter text that reaches to the top of the ! 315: screen or above it, so that display would start in the middle of a ! 316: line, Emacs will usually attempt to scroll the text so that display ! 317: starts at the beginning of a line again. ! 318: ! 319: ** Yanking in the minibuffer. ! 320: ! 321: The message "Mark Set" is no longer printed when the minibuffer is ! 322: active. This is convenient with many commands, including C-y, that ! 323: normally print such a message. ! 324: ! 325: ** Cursor appears in last line during y-or-n questions. ! 326: ! 327: Questions that want a `y' or `n' answer now move the cursor ! 328: to the last line, following the question. ! 329: ! 330: * Library loading changes. ! 331: ! 332: `load' now considers all possible suffixes (`.elc', `.el' and none) ! 333: for each directory in `load-path' before going on to the next directory. ! 334: It now accepts an optional fourth argument which, if non-nil, says to ! 335: use no suffixes; then the file name must be given in full. The search ! 336: of the directories in `load-path' goes on as usual in this case, but ! 337: it too can be prevented by passing an absolute file name. ! 338: ! 339: The value of `load-path' no longer by default includes nil (meaning to ! 340: look in the current default directory). The idea is that `load' should ! 341: be used to search the path only for libraries to be found in the standard ! 342: places. If you want to override system libraries with your own, place ! 343: your own libraries in one special directory and add that directory to the ! 344: front of `load-path'. ! 345: ! 346: The function `load' is no longer a command; that is to say, `M-x load' ! 347: is no longer allowed. Instead, there are two commands for loading files. ! 348: `M-x load-library' is equivalent to the old meaning of `M-x load'. ! 349: `M-x load-file' reads a file name with completion and defaulting ! 350: and then loads exactly that file, with no searching and no suffixes. ! 351: ! 352: * Emulation of other editors. ! 353: ! 354: ** `edt-emulation-on' starts emulating DEC's EDT editor. ! 355: ! 356: Do `edt-emulation-off' to return Emacs to normal. ! 357: ! 358: ** `vi-mode' and `vip-mode' starts emulating vi. ! 359: ! 360: These are two different vi emulations provided by GNU Emacs users. ! 361: We are interested in feedback as to which emulation is preferable. ! 362: ! 363: See the documentation and source code for these functions ! 364: for more information. ! 365: ! 366: ** `set-gosmacs-bindings' emulates Gosling Emacs. ! 367: ! 368: This command changes many global bindings to resemble those of ! 369: Gosling Emacs. The previous bindings are saved and can be restored using ! 370: `set-gnu-bindings'. ! 371: ! 372: * Emulation of a display terminal. ! 373: ! 374: Within Emacs it is now possible to run programs (such as emacs or ! 375: supdup) which expect to do output to a visual display terminal. ! 376: ! 377: See the function `terminal-emulator' for more information. ! 378: ! 379: * New support for keypads and function keys. ! 380: ! 381: There is now a first attempt at terminal-independent support for ! 382: keypad and function keys. ! 383: ! 384: Emacs now defines a standard set of key-names for function and keypad ! 385: keys, and provides standard hooks for defining them. Most of the ! 386: standard key-names have default definitions built into Emacs; you can ! 387: override these in a terminal-independent manner. The default definitions ! 388: and the conventions for redefining them are in the file `lisp/keypad.el'. ! 389: ! 390: These keys on the terminal normally work by sending sequences of ! 391: characters starting with ESC. The exact sequences used vary from ! 392: terminal to terminal. Emacs interprets them in two stages: ! 393: in the first stage, terminal-dependent sequences are mapped into ! 394: the standard key-names; then second stage maps the standard key-names ! 395: into their definitions in a terminal-independent fashion. ! 396: ! 397: The terminal-specific file `term/$TERM.el' now is responsible only for ! 398: establishing the mapping from the terminal's escape sequences into ! 399: standard key-names. It no longer knows what Emacs commands are ! 400: assigned to the standard key-names. ! 401: ! 402: One other change in terminal-specific files: if the value of the TERM ! 403: variable contains a hyphen, only the part before the first hyphen is ! 404: used in forming the name of the terminal-specific file. Thus, for ! 405: terminal type `aaa-48', the file loaded is now `term/aaa.el' rather ! 406: than `term/aaa-48.el'. ! 407: ! 408: * New startup command line options. ! 409: ! 410: `-i FILE' or `-insert FILE' in the command line to Emacs tells Emacs to ! 411: insert the contents of FILE into the current buffer at that point in ! 412: command line processing. This is like using the command M-x insert-file. ! 413: ! 414: `-funcall', `-load', `-user' and `-no-init-file' are new synonyms for ! 415: `-f', `-l', `-u' and `-q'. ! 416: ! 417: `-nw' means don't use a window system. If you are using a terminal ! 418: emulator on the X window system and you want to run Emacs to work through ! 419: the terminal emulator instead of working directly with the window system, ! 420: use this switch. ! 421: ! 422: * Buffer-sorting commands. ! 423: ! 424: Various M-x commands whose names start with `sort-' sort parts of ! 425: the region: ! 426: ! 427: sort-lines divides the region into lines and sorts them alphabetically. ! 428: sort-pages divides into pages and sorts them alphabetically. ! 429: sort-paragraphs divides into paragraphs and sorts them alphabetically. ! 430: sort-fields divides into lines and sorts them alphabetically ! 431: according to one field in the line. ! 432: The numeric argument specifies which field (counting ! 433: from field 1 at the beginning of the line). Fields in a line ! 434: are separated by whitespace. ! 435: sort-numeric-fields ! 436: is similar but converts the specified fields to numbers ! 437: and sorts them numerically. ! 438: sort-columns divides into lines and sorts them according to the contents ! 439: of a specified range of columns. ! 440: ! 441: Refer to the self-documentation of these commands for full usage information. ! 442: ! 443: * Changes in various commands. ! 444: ! 445: ** `tags-query-replace' and `tags-search' change. ! 446: ! 447: These functions now display the name of the file being searched at the moment. ! 448: ! 449: ** `occur' output now serves as a menu. `occur-menu' command deleted. ! 450: ! 451: `M-x occur' now allows you to move quickly to any of the occurrences ! 452: listed. Select the `*Occur*' buffer that contains the output of `occur', ! 453: move point to the occurrence you want, and type C-c C-c. ! 454: This will move point to the same occurrence in the buffer that the ! 455: occurrences were found in. ! 456: ! 457: The command `occur-menu' is thus obsolete, and has been deleted. ! 458: ! 459: One way to get a list of matching lines without line numbers is to ! 460: copy the text to another buffer and use the command `keep-lines'. ! 461: ! 462: ** Incremental search changes. ! 463: ! 464: Ordinary and regexp incremental searches now have distinct default ! 465: search strings. Thus, regexp searches recall only previous regexp ! 466: searches. ! 467: ! 468: If you exit an incremental search when the search string is empty, ! 469: the old default search string is kept. The default does not become ! 470: empty. ! 471: ! 472: Reversing the direction of an incremental search with C-s or C-r ! 473: when the search string is empty now does not get the default search ! 474: string. It leaves the search string empty. A second C-s or C-r ! 475: will get the default search string. As a result, you can do a reverse ! 476: incremental regexp search with C-M-s C-r. ! 477: ! 478: If you add a `*', `?' or `\|' to an incremental search regexp, ! 479: point will back up if that is appropriate. For example, if ! 480: you have searched for `ab' and add a `*', point moves to the ! 481: first match for `ab*', which may be before the match for `ab' ! 482: that was previously found. ! 483: ! 484: If an incremental search is failing and you ask to repeat it, ! 485: it will start again from the beginning of the buffer (or the end, ! 486: if it is a backward search). ! 487: ! 488: The search-controlling parameters `isearch-slow-speed' and ! 489: `isearch-slow-window-lines' have now been renamed to start with ! 490: `search' instead of `isearch'. Now all the parameters' names start ! 491: with `search'. ! 492: ! 493: If `search-slow-window-lines' is negative, the slow search window ! 494: is put at the top of the screen, and the absolute value or the ! 495: negative number specifies the height of it. ! 496: ! 497: ** Undo changes ! 498: ! 499: The undo command now will mark the buffer as unmodified only when it is ! 500: identical to the contents of the visited file. ! 501: ! 502: ** C-M-v in minibuffer. ! 503: ! 504: If while in the minibuffer you request help in a way that uses a ! 505: window to display something, then until you exit the minibuffer C-M-v ! 506: in the minibuffer window scrolls the window of help. ! 507: ! 508: For example, if you request a list of possible completions, C-M-v can ! 509: be used reliably to scroll the completion list. ! 510: ! 511: ** M-TAB command. ! 512: ! 513: Meta-TAB performs completion on the Emacs Lisp symbol names. The sexp ! 514: in the buffer before point is compared against all existing nontrivial ! 515: Lisp symbols and completed as far as is uniquely determined by them. ! 516: Nontrivial symbols are those with either function definitions, values ! 517: or properties. ! 518: ! 519: If there are multiple possibilities for the very next character, a ! 520: list of possible completions is displayed. ! 521: ! 522: ** Dynamic abbreviation package. ! 523: ! 524: The new command Meta-/ expands an abbreviation in the buffer before point ! 525: by searching the buffer for words that start with the abbreviation. ! 526: ! 527: ** Changes in saving kbd macros. ! 528: ! 529: The commands `write-kbd-macro' and `append-kbd-macro' have been ! 530: deleted. The way to save a keyboard macro is to use the new command ! 531: `insert-kbd-macro', which inserts Lisp code to define the macro as ! 532: it is currently defined into the buffer before point. Visit a Lisp ! 533: file such as your Emacs init file `~/.emacs', insert the macro ! 534: definition (perhaps deleting an old definition for the same macro) ! 535: and then save the file. ! 536: ! 537: ** C-x ' command. ! 538: ! 539: The new command C-x ' (expand-abbrev) expands the word before point as ! 540: an abbrev, even if abbrev-mode is not turned on. ! 541: ! 542: ** Sending to inferior Lisp. ! 543: ! 544: The command C-M-x in Lisp mode, which sends the current defun to ! 545: an inferior Lisp process, now works by writing the text into a temporary ! 546: file and actually sending only a `load'-form to load the file. ! 547: As a result, it avoids the Unix bugs that used to strike when the ! 548: text was above a certain length. ! 549: ! 550: With a prefix argument, this command now makes the inferior Lisp buffer ! 551: appear on the screen and scrolls it so that the bottom is showing. ! 552: ! 553: Two variables `inferior-lisp-load-command' and `inferior-lisp-prompt', ! 554: exist to customize these feature for different Lisp implementations. ! 555: ! 556: ** C-x p now disabled. ! 557: ! 558: The command C-x p, a nonrecomended command which narrows to the current ! 559: page, is now initially disabled like C-x n. ! 560: ! 561: * Dealing with files. ! 562: ! 563: ** C-x C-v generalized ! 564: ! 565: This command is now allowed even if the current buffer is not visiting ! 566: a file. As usual, it kills the current buffer and replaces it with a ! 567: newly found file. ! 568: ! 569: ** M-x recover-file improved; auto save file names changed. ! 570: ! 571: M-x recover-file now checks whether the last auto-save file is more ! 572: recent than the real visited file before offering to read in the ! 573: auto-save file. If the auto-save file is newer, a directory listing ! 574: containing the two files is displayed while you are asked whether you ! 575: want the auto save file. ! 576: ! 577: Visiting a file also makes this check. If the auto-save file is more recent, ! 578: a message is printed suggesting that you consider using M-x recover file. ! 579: ! 580: Auto save file names now by default have a `#' at the end as well ! 581: as at the beginning. This is so that `*.c' in a shell command ! 582: will never match auto save files. ! 583: ! 584: On VMS, auto save file names are made by appending `_$' at the front ! 585: and `$' at the end. ! 586: ! 587: When you change the visited file name of a buffer, the auto save file ! 588: is now renamed to belong to the new visited file name. ! 589: ! 590: You can customize the way auto save file names are made by redefining ! 591: the two functions `make-auto-save-file-name' and `auto-save-file-name-p', ! 592: both of which are defined in `files.el'. ! 593: ! 594: ** Modifying a buffer whose file is changed on disk is detected instantly. ! 595: ! 596: On systems where clash detection (locking of files being edited) is ! 597: implemented, Emacs also checks the first time you modify a buffer ! 598: whether the file has changed on disk since it was last visited or saved. ! 599: If it has, you are asked to confirm that you want to change the buffer. ! 600: ! 601: ** Exiting Emacs offers to save `*mail*'. ! 602: ! 603: Emacs can now know about buffers that it should offer to save on exit ! 604: even though they are not visiting files. This is done for any buffer ! 605: which has a non-nil local value of `buffer-offer-save'. By default, ! 606: Mail mode provides such a local value. ! 607: ! 608: ** Backup file changes. ! 609: ! 610: If a backup file cannot be written in the directory of the visited file ! 611: due to fascist file protection, a backup file is now written in your home ! 612: directory as `~/%backup%~'. Only one such file is made, ever, so only ! 613: the most recently made such backup is available. ! 614: ! 615: When backup files are made by copying, the last-modification time of the ! 616: original file is now preserved in the backup copy. ! 617: ! 618: ** Visiting remote files. ! 619: ! 620: On an internet host, you can now visit and save files on any other ! 621: internet host directly from Emacs with the commands M-x ftp-find-file ! 622: and M-x ftp-write-file. Specify an argument of the form HOST:FILENAME. ! 623: Since standard internet FTP is used, the other host may be any kind ! 624: of machine and is not required to have any special facilities. ! 625: ! 626: The first time any one remote host is accessed, you will be asked to ! 627: give the user name and password for use on that host. FTP is reinvoked ! 628: each time you ask to use it, but previously specified user names and ! 629: passwords are remembered automatically. ! 630: ! 631: ** Dired `g' command. ! 632: ! 633: `g' in Dired mode is equivalent to M-x revert-buffer; it causes the ! 634: current contents of the same directory to be read in. ! 635: ! 636: * Changes in major modes. ! 637: ! 638: ** C mode indentation change. ! 639: ! 640: The binding of Linefeed is no longer changed by C mode. It once again ! 641: has its normal meaning, which is to insert a newline and then indent ! 642: afterward. ! 643: ! 644: The old definition did one additional thing: it reindented the line ! 645: before the new newline. This has been removed because it made the ! 646: command twice as slow. The only time it was really useful was after the ! 647: insertion of an `else', since the fact of starting with `else' may change ! 648: the way that line is indented. Now you will have to type TAB again ! 649: yourself to reindent the `else' properly. ! 650: ! 651: If the variable `c-tab-always-indent' is set to `nil', the TAB command ! 652: in C mode, with no argument, will just insert a tab character if there ! 653: is non-whitespace preceding point on the current line. Giving it a ! 654: prefix argument will force reindentation of the line (as well as ! 655: of the compound statement that begins after point, if any). ! 656: ! 657: ** Fortran mode now exists. ! 658: ! 659: This mode provides commands for motion and indentation of Fortran code, ! 660: plus built-in abbrevs for Fortran keywords. For details, see the manual ! 661: or the on-line documentation of the command `fortran-mode'. ! 662: ! 663: ** Scribe mode now exists. ! 664: ! 665: This mode does something useful for editing files of Scribe input. ! 666: It is used automatically for files with names ending in ".mss". ! 667: ! 668: ** Modula2 and Prolog modes now exist. ! 669: ! 670: These modes are for editing programs in the languages of the same names. ! 671: They can be selected with M-x modula-2-mode and M-x prolog-mode. ! 672: ! 673: ** Telnet mode changes. ! 674: ! 675: The telnet mode special commands have now been assigned to C-c keys. ! 676: Most of them are the same as in Shell mode. ! 677: ! 678: ** Picture mode changes. ! 679: ! 680: The special picture-mode commands to specify the direction of cursor ! 681: motion after insertion have been moved to C-c keys. The commands to ! 682: specify diagonal motion were already C-c keys; they are unchanged. ! 683: The keys to specify horizontal or vertical motion are now ! 684: C-c < (left), C-c > (right), C-c ^ (up) and C-c . (down). ! 685: ! 686: ** Nroff mode comments. ! 687: ! 688: Comments are now supported in Nroff mode. The standard comment commands ! 689: such as M-; and C-x ; know how to insert, align and delete comments ! 690: that start with backslash-doublequote. ! 691: ! 692: ** LaTeX mode. ! 693: ! 694: LaTeX mode now exists. Use M-x latex-mode to select this mode, and ! 695: M-x plain-tex-mode to select the previously existing mode for Plain ! 696: TeX. M-x tex-mode attempts to examine the contents of the buffer and ! 697: choose between latex-mode and plain-tex-mode accordingly; if the ! 698: buffer is empty or it cannot tell, the variable `TeX-default-mode' ! 699: controls the choice. Its value should be the symbol for the mode to ! 700: be used. ! 701: ! 702: The facilities for running TeX on all or part of the buffer ! 703: work with LaTeX as well. ! 704: ! 705: Some new commands available in both modes: ! 706: ! 707: C-c C-l recenter the window showing the TeX output buffer ! 708: so most recent line of output can be seen. ! 709: C-c C-k kill the TeX subprocess. ! 710: C-c C-q show the printer queue. ! 711: C-c C-f close a block (appropriate for LaTeX only). ! 712: If the current line contains a \begin{...}, ! 713: this inserts an \end{...} on the following line ! 714: and puts point on a blank line between them. ! 715: ! 716: ** Outline mode changes. ! 717: ! 718: Invisible lines in outline mode are now indicated by `...' at the ! 719: end of the previous visible line. ! 720: ! 721: The special outline heading motion commands are now all on C-c keys. ! 722: A few new ones have been added. Here is a full list: ! 723: ! 724: C-c C-n Move to next visible heading (formerly M-}) ! 725: C-c C-p Move to previous visible heading (formerly M-{) ! 726: C-c C-f Move to next visible heading at the same level. ! 727: Thus, if point is on a level-2 heading line, ! 728: this command moves to the next visible level-2 heading. ! 729: C-c C-b Move to previous visible heading at the same level. ! 730: C-c C-u Move up to previous visible heading at a higher level. ! 731: ! 732: The variable `outline-regexp' now controls recognition of heading lines. ! 733: Any line whose beginning matches this regexp is a heading line. ! 734: The depth in outline structure is determined by the length of ! 735: the string that matches. ! 736: ! 737: A line starting with a ^L (formfeed) is now by default considered ! 738: a header line. ! 739: ! 740: * Mail reading and sending. ! 741: ! 742: ** MH-E changes. ! 743: ! 744: MH-E has been extensively modified and improved since the v17 release. ! 745: It contains many new features, including commands to: extracted failed ! 746: messages, kill a draft message, undo changes to a mail folder, monitor ! 747: delivery of a letter, print multiple messages, page digests backwards, ! 748: insert signatures, and burst digests. Also, many commands have been ! 749: made to able to deal with named sequences of messages, instead of ! 750: single messages. MH-E also has had numerous bugs fixed and commands ! 751: made to run faster. Furthermore, its keybindings have been changed to ! 752: be compatible with Rmail and the rest of GNU Emacs. ! 753: ! 754: ** Mail mode changes. ! 755: ! 756: The C-c commands of mail mode have been rearranged: ! 757: ! 758: C-c s, C-c c, C-c t and C-c b (move point to various header fields) ! 759: have been reassigned as C-c C-f C-s, C-c C-f C-c, C-c C-f C-t and C-c ! 760: C-f C-b. C-c C-f is for "field". ! 761: ! 762: C-c y, C-c w and C-c q have been changed to C-c C-y, C-c C-w and C-c C-q. ! 763: ! 764: Thus, C-c LETTER is always unassigned. ! 765: ! 766: ** Rmail C-r command changed to w. ! 767: ! 768: The Rmail command to edit the current message is now `w'. This change ! 769: has been made because people frequently type C-r while in Rmail hoping ! 770: to do a reverse incremental search. That now works. ! 771: ! 772: * Rnews changes. ! 773: ! 774: ** Caesar rotation added. ! 775: ! 776: The function news-caesar-buffer-body performs encryption and ! 777: decryption of the body of a news message. It defaults to the USENET ! 778: standard of 13, and accepts any numeric arg between 1 to 25 and -25 to -1. ! 779: The function is bound to C-c C-r in both news-mode and news-reply-mode. ! 780: ! 781: ** rmail-output command added. ! 782: ! 783: The C-o command has been bound to rmail-output in news-mode. ! 784: This allows one to append an article to a file which is in either Unix ! 785: mail or RMAIL format. ! 786: ! 787: ** news-reply-mode changes. ! 788: ! 789: The C-c commands of news reply mode have been rearranged and changed, ! 790: so that C-c LETTER is always unassigned: ! 791: ! 792: C-c y, C-c w and C-c q have been changed to C-c C-y, C-c C-w and C-c C-q. ! 793: ! 794: C-c c, C-c t, and C-c b (move to various mail header fields) have been ! 795: deleted (they make no sense for posting and replying to USENET). ! 796: ! 797: C-c s (move to Subject: header field) has been reassigned as C-c C-f ! 798: C-s. C-c C-f is for "field". Several additional move to news header ! 799: field commands have been added. ! 800: ! 801: The local news-reply-mode bindings now look like this: ! 802: ! 803: C-c C-s news-inews (post the message) C-c C-c news-inews ! 804: C-c C-f move to a header field (and create it if there isn't): ! 805: C-c C-f C-n move to Newsgroups: C-c C-f C-s move to Subj: ! 806: C-c C-f C-f move to Followup-To: C-c C-f C-k move to Keywords: ! 807: C-c C-f C-d move to Distribution: C-c C-f C-a move to Summary: ! 808: C-c C-y news-reply-yank-original (insert current message, in NEWS). ! 809: C-c C-q mail-fill-yanked-message (fill what was yanked). ! 810: C-c C-r caesar rotate all letters by 13 places in the article's body (rot13). ! 811: ! 812: * Existing Emacs usable as a server. ! 813: ! 814: Programs such as mailers that invoke "the editor" as an inferior ! 815: to edit some text can now be told to use an existing Emacs process ! 816: instead of creating a new editor. ! 817: ! 818: To do this, you must have an Emacs process running and capable of ! 819: doing terminal I/O at the time you want to invoke it. This means that ! 820: either you are using a window system and give Emacs a separate window ! 821: or you run the other programs as inferiors of Emacs (such as, using ! 822: M-x shell). ! 823: ! 824: First prepare the existing Emacs process by loading the `server' ! 825: library and executing M-x server-start. (Your .emacs can do this ! 826: automatically.) ! 827: ! 828: Now tell the other programs to use, as "the editor", the Emacs client ! 829: program (etc/emacsclient, located in the same directory as this file). ! 830: This can be done by setting the environment variable EDITOR. ! 831: ! 832: When another program invokes the emacsclient as "the editor", the ! 833: client actually transfers the file names to be edited to the existing ! 834: Emacs, which automatically visits the files. ! 835: ! 836: When you are done editing a buffer for a client, do C-x # (server-edit). ! 837: This marks that buffer as done, and selects the next buffer that the client ! 838: asked for. When all the buffers requested by a client are marked in this ! 839: way, Emacs tells the client program to exit, so that the program that ! 840: invoked "the editor" will resume execution. ! 841: ! 842: You can only have one server Emacs at a time, but multiple client programs ! 843: can put in requests at the same time. ! 844: ! 845: The client/server work only on Berkeley Unix, since they use the Berkeley ! 846: sockets mechanism for their communication. ! 847: ! 848: Changes in Lisp programming in Emacs version 18. ! 849: ! 850: * Init file changes. ! 851: ! 852: ** Suffixes no longer accepted on `.emacs'. ! 853: ! 854: Emacs will no longer load a file named `.emacs.el' or `emacs.elc' ! 855: in place of `.emacs'. This is so that it will take less time to ! 856: find `.emacs'. If you want to compile your init file, give it another ! 857: name and make `.emacs' a link to the `.elc' file, or make it contain ! 858: a call to `load' to load the `.elc' file. ! 859: ! 860: ** `default-profile' renamed to `default', and loaded after `.emacs'. ! 861: ! 862: It used to be the case that the file `default-profile' was loaded if ! 863: and only if `.emacs' was not found. ! 864: ! 865: Now the name `default-profile' is not used at all. Instead, a library ! 866: named `default' is loaded after the `.emacs' file. `default' is loaded ! 867: whether the `.emacs' file exists or not. However, loading of `default' ! 868: can be prevented if the `.emacs' file sets `inhibit-default-init' to non-nil. ! 869: ! 870: In fact, you would call the default file `default.el' and probably would ! 871: byte-compile it to speed execution. ! 872: ! 873: Note that for most purposes you are better off using a `site-init' library ! 874: since that will be loaded before the runnable Emacs is dumped. By using ! 875: a `site-init' library, you avoid taking up time each time Emacs is started. ! 876: ! 877: ** inhibit-command-line has been eliminated. ! 878: ! 879: This variable used to exist for .emacs files to set. It has been ! 880: eliminated because you can get the same effect by setting ! 881: command-line-args to nil and setting inhibit-startup-message to t. ! 882: ! 883: * `apply' is more general. ! 884: ! 885: `apply' now accepts any number of arguments. The first one is a function; ! 886: the rest are individual arguments to pass to that function, except for the ! 887: last, which is a list of arguments to pass. ! 888: ! 889: Previously, `apply' required exactly two arguments. Its old behavior ! 890: follows as a special case of the new definition. ! 891: ! 892: * New code-letter for `interactive'. ! 893: ! 894: (interactive "NFoo: ") is like (interactive "nFoo: ") in reading ! 895: a number using the minibuffer to serve as the argument; however, ! 896: if a prefix argument was specified, it uses the prefix argument ! 897: value as the argument, and does not use the minibuffer at all. ! 898: ! 899: This is used by the `goto-line' and `goto-char' commands. ! 900: ! 901: * Semantics of variables. ! 902: ! 903: ** Built-in per-buffer variables improved. ! 904: ! 905: Several built-in variables which in the past had a different value in ! 906: each buffer now behave exactly as if `make-variable-buffer-local' had ! 907: been done to them. ! 908: ! 909: These variables are `tab-width', `ctl-arrow', `truncate-lines', ! 910: `fill-column', `left-margin', `mode-line-format', `abbrev-mode', ! 911: `overwrite-mode', `case-fold-search', `auto-fill-hook', ! 912: `selective-display', `selective-display-ellipses'. ! 913: ! 914: To be precise, each variable has a default value which shows through ! 915: in most buffers and can be accessed with `default-value' and set with ! 916: `set-default'. Setting the variable with `setq' makes the variable ! 917: local to the current buffer. Changing the default value has retroactive ! 918: effect on all buffers in which the variable is not local. ! 919: ! 920: The variables `default-case-fold-search', etc., are now obsolete. ! 921: They now refer to the default value of the variable, which is not ! 922: quite the same behavior as before, but it should enable old init files ! 923: to continue to work. ! 924: ! 925: ** New per-buffer variables. ! 926: ! 927: The variables `fill-prefix', `comment-column' and `indent-tabs-mode' ! 928: are now per-buffer. They work just like `fill-column', etc. ! 929: ! 930: ** New function `setq-default'. ! 931: ! 932: `setq-default' sets the default value of a variable, and uses the ! 933: same syntax that `setq' accepts: the variable name is not evaluated ! 934: and need not be quoted. ! 935: ! 936: `(setq-default case-fold-search nil)' would make searches case-sensitive ! 937: in all buffers that do not have local values for `case-fold-search'. ! 938: ! 939: ** Functions `global-set' and `global-value' deleted. ! 940: ! 941: These functions were never used except by mistake by users expecting ! 942: the functionality of `set-default' and `default-value'. ! 943: ! 944: * Changes in defaulting of major modes. ! 945: ! 946: When `default-major-mode' is `nil', new buffers are supposed to ! 947: get their major mode from the buffer that is current. However, ! 948: certain major modes (such as Dired mode, Rmail mode, Rmail Summary mode, ! 949: and others) are not reasonable to use in this way. ! 950: ! 951: Now such modes' names have been given non-`nil' `mode-class' properties. ! 952: If the current buffer's mode has such a property, Fundamental mode is ! 953: used as the default for newly created buffers. ! 954: ! 955: * `where-is-internal' requires additional arguments. ! 956: ! 957: This function now accepts three arguments, two of them required: ! 958: DEFINITION, the definition to search for; LOCAL-KEYMAP, the keymap ! 959: to use as the local map when doing the searching, and FIRST-ONLY, ! 960: which is nonzero to return only the first key found. ! 961: ! 962: This function returns a list of keys (strings) whose definitions ! 963: (in the LOCAL-KEYMAP or the current global map) are DEFINITION. ! 964: ! 965: If FIRST-ONLY is non-nil, it returns a single key (string). ! 966: ! 967: This function has changed incompatibly in that now two arguments ! 968: are required when previously only one argument was allowed. To get ! 969: the old behavior of this function, write `(current-local-map)' as ! 970: the expression for the second argument. ! 971: ! 972: The incompatibility is sad, but `nil' is a legitimate value for the ! 973: second argument (it means there is no local keymap), so it cannot also ! 974: serve as a default meaning to use the current local keymap. ! 975: ! 976: * Abbrevs with hooks. ! 977: ! 978: When an abbrev defined with a hook is expanded, it now performs the ! 979: usual replacement of the abbrev with the expansion before running the ! 980: hook. Previously the abbrev itself was deleted but the expansion was ! 981: not inserted. ! 982: ! 983: * Function `scan-buffer' deleted. ! 984: ! 985: Use `search-forward' or `search-backward' in place of `scan-buffer'. ! 986: You will have to rearrange the arguments. ! 987: ! 988: * X window interface improvements. ! 989: ! 990: ** Detect release of mouse buttons. ! 991: ! 992: Button-up events can now be detected. See the file `lisp/x-mouse.el' ! 993: for details. ! 994: ! 995: ** New pop-up menu facility. ! 996: ! 997: The new function `x-popup-menu' pops up a menu (in a X window) ! 998: and returns an indication of which selection the user made. ! 999: For more information, see its self-documentation. ! 1000: ! 1001: * M-x disassemble. ! 1002: ! 1003: This command prints the disassembly of a byte-compiled Emacs Lisp function. ! 1004: ! 1005: Would anyone like to interface this to the debugger? ! 1006: ! 1007: * `insert-buffer-substring' can insert part of the current buffer. ! 1008: ! 1009: The old restriction that the text being inserted had to come from ! 1010: a different buffer is now lifted. ! 1011: ! 1012: When inserting text from the current buffer, the text to be inserted ! 1013: is determined from the specified bounds before any copying takes place. ! 1014: ! 1015: * New function `substitute-key-definition'. ! 1016: ! 1017: This is a new way to replace one command with another command as the ! 1018: binding of whatever keys may happen to refer to it. ! 1019: ! 1020: (substitute-key-definition OLDDEF NEWDEF KEYMAP) looks through KEYMAP ! 1021: for keys defined to run OLDDEF, and rebinds those keys to run NEWDEF ! 1022: instead. ! 1023: ! 1024: * New function `insert-char'. ! 1025: ! 1026: Insert a specified character, a specified number of times. ! 1027: ! 1028: * `mark-marker' changed. ! 1029: ! 1030: When there is no mark, this now returns a marker that points ! 1031: nowhere, rather than `nil'. ! 1032: ! 1033: * `ding' accepts argument. ! 1034: ! 1035: When given an argument, the function `ding' does not terminate ! 1036: execution of a keyboard macro. Normally, `ding' does terminate ! 1037: all macros that are currently executing. ! 1038: ! 1039: * New function `minibuffer-depth'. ! 1040: ! 1041: This function returns the current depth in minibuffer activations. ! 1042: The value is zero when the minibuffer is not in use. ! 1043: Values greater than one are possible if the user has entered the ! 1044: minibuffer recursively. ! 1045: ! 1046: * New function `documentation-property'. ! 1047: ! 1048: (documentation-property SYMBOL PROPNAME) is like (get SYMBOL PROPNAME), ! 1049: except that if the property value is a number `documentation-property' ! 1050: will take that number (or its absolute value) as a character position ! 1051: in the DOC file and return the string found there. ! 1052: ! 1053: (documentation-property VAR 'variable-documentation) is the proper ! 1054: way for a Lisp program to get the documentation of variable VAR. ! 1055: ! 1056: * New documentation-string expansion feature. ! 1057: ! 1058: If a documentation string (for a variable or function) contains text ! 1059: of the form `\<FOO>', it means that all command names specified in ! 1060: `\[COMMAND]' construct from that point on should be turned into keys ! 1061: using the value of the variable FOO as the local keymap. Thus, for example, ! 1062: ! 1063: `\<emacs-lisp-mode-map>\[eval-defun] evaluates the defun containing point.' ! 1064: ! 1065: will expand into ! 1066: ! 1067: "ESC C-x evaluates the defun containing point." ! 1068: ! 1069: regardless of the current major mode, because ESC C-x is defined to ! 1070: run `eval-defun' in the keymap `emacs-lisp-mode-map'. The effect is ! 1071: to show the key for `eval-defun' in Emacs Lisp mode regardless of the ! 1072: current major mode. ! 1073: ! 1074: The `\<...>' construct applies to all `\[...]' constructs that follow it, ! 1075: up to the end of the documentation string or the next `\<...>'. ! 1076: ! 1077: Without `\<...>', the keys for commands specified in `\[...]' are found ! 1078: in the current buffer's local map. ! 1079: ! 1080: The current global keymap is always searched second, whether `\<...>' ! 1081: has been used or not. ! 1082: ! 1083: * Multiple hooks allowed in certain contexts. ! 1084: ! 1085: The old hook variables `find-file-hook', `find-file-not-found-hook' and ! 1086: `write-file-hook' have been replaced. ! 1087: ! 1088: The replacements are `find-file-hooks', `find-file-not-found-hooks' ! 1089: and `write-file-hooks'. Each holds a list of functions to be called; ! 1090: by default, `nil', for no functions. The functions are called in ! 1091: order of appearance in the list. ! 1092: ! 1093: In the case of `find-file-hooks', all the functions are executed. ! 1094: ! 1095: In the case of `find-file-not-found-hooks', if any of the functions ! 1096: returns non-`nil', the rest of the functions are not called. ! 1097: ! 1098: In the case of `write-file-hooks', if any of the functions returns ! 1099: non-`nil', the rest of the functions are not called, and the file is ! 1100: considered to have been written already; so actual writing in the ! 1101: usual way is not done. If `write-file-hooks' is local to a buffer, ! 1102: it is set to its global value if `set-visited-file-name' is called ! 1103: (and thus by C-x C-w as well). ! 1104: ! 1105: `find-file-not-found-hooks' and `write-file-hooks' can be used ! 1106: together to implement editing of files that are not stored as Unix ! 1107: files: stored in archives, or inside version control systems, or on ! 1108: other machines running other operating systems and accessible via ftp. ! 1109: ! 1110: * New hooks for suspending Emacs. ! 1111: ! 1112: Suspending Emacs runs the hook `suspend-hook' before suspending ! 1113: and the hook `suspend-resume-hook' if the suspended Emacs is resumed. ! 1114: Running a hook is done by applying the variable's value to no arguments ! 1115: if the variable has a non-`nil' value. If `suspend-hook' returns ! 1116: non-`nil', then suspending is inhibited and so is running the ! 1117: `suspend-resume-hook'. The non-`nil' value means that the `suspend-hook' ! 1118: has done whatever suspending is required. ! 1119: ! 1120: * Disabling commands can print a special message. ! 1121: ! 1122: A command is disabled by giving it a non-`nil' `disabled' property. ! 1123: Now, if this property is a string, it is included in the message ! 1124: printed when the user tries to run the command. ! 1125: ! 1126: * Emacs can open TCP connections. ! 1127: ! 1128: The function `open-network-stream' opens a TCP connection to ! 1129: a specified host and service. Its value is a Lisp object that represents ! 1130: the connection. The object is a kind of "subprocess", and I/O are ! 1131: done like I/O to subprocesses. ! 1132: ! 1133: * Display-related changes. ! 1134: ! 1135: ** New mode-line control features. ! 1136: ! 1137: The display of the mode line used to be controlled by a format-string ! 1138: that was the value of the variable `mode-line-format'. ! 1139: ! 1140: This variable still exists, but it now allows more general values, ! 1141: not just strings. Lists, cons cells and symbols are also meaningful. ! 1142: ! 1143: The mode line contents are created by outputting various mode elements ! 1144: one after the other. Here are the kinds of objects that can be ! 1145: used as mode elements, and what they do in the display: ! 1146: ! 1147: string the contents of the string are output to the mode line, ! 1148: and %-constructs are replaced by other text. ! 1149: ! 1150: t or nil ignored; no output results. ! 1151: ! 1152: symbol the symbol's value is used. If the value is a string, ! 1153: the string is output verbatim to the mode line ! 1154: (so %-constructs are not interpreted). Otherwise, ! 1155: the symbol's value is processed as a mode element. ! 1156: ! 1157: list (whose first element is a string or list or cons cell) ! 1158: the elements of the list are treated as as mode elements, ! 1159: so that the output they generate is concatenated, ! 1160: ! 1161: list (whose car is a symbol) ! 1162: if the symbol's value is non-nil, the second element of the ! 1163: list is treated as a mode element. Otherwise, the third ! 1164: element (if any) of the list is treated as a mode element. ! 1165: ! 1166: cons (whose car is a positive integer) ! 1167: the cdr of the cons is used as a mode element, but ! 1168: the text it produces is padded, if necessary, to have ! 1169: at least the width specified by the integer. ! 1170: ! 1171: cons (whose car is a negative integer) ! 1172: the cdr of the cons is used as a mode element, but ! 1173: the text it produces is truncated, if necessary, to have ! 1174: at most the width specified by the integer. ! 1175: ! 1176: There is always one mode element to start with, that being the value of ! 1177: `mode-line-format', but if this value is a list then it leads to several ! 1178: more mode elements, which can lead to more, and so on. ! 1179: ! 1180: There is one new %-construct for mode elements that are strings: ! 1181: `%n' displays ` Narrow' for a buffer that is narrowed. ! 1182: ! 1183: The default value of `mode-line-format' refers to several other variables. ! 1184: These variables are `mode-name', `mode-line-buffer-identification', ! 1185: `mode-line-process', `mode-line-modified', `global-mode-string' and ! 1186: `minor-mode-alist'. The first four are local in every buffer in which they ! 1187: are changed from the default. ! 1188: ! 1189: mode-name Name of buffer's major mode. Local in every buffer. ! 1190: ! 1191: mode-line-buffer-identification ! 1192: Normally the list ("Emacs: %17b"), it is responsible ! 1193: for displaying text to indicate what buffer is being shown ! 1194: and what kind of editing it is doing. `Emacs' means ! 1195: that a file of characters is being edited. Major modes ! 1196: such as Info and Dired which edit or view other kinds ! 1197: of data often change this value. This variables becomes ! 1198: local to the current buffer if it is setq'd. ! 1199: ! 1200: mode-line-process ! 1201: Normally nil, this variable is responsible for displaying ! 1202: information about the process running in the current buffer. ! 1203: M-x shell-mode and M-x compile alter this variable. ! 1204: ! 1205: mode-line-modified ! 1206: This variable is responsible for displaying the indication ! 1207: of whether the current buffer is modified or read-only. ! 1208: By default its value is `("--%*%*-")'. ! 1209: ! 1210: minor-mode-alist ! 1211: This variable is responsible for displaying text for those ! 1212: minor modes that are currently enabled. Its value ! 1213: is a list of elements of the form (VARIABLE STRING), ! 1214: where STRING is to be displayed if VARIABLE's value ! 1215: (in the buffer whose mode line is being displayed) ! 1216: is non-nil. This variable is not made local to particular ! 1217: buffers, but loading some libraries may add elements to it. ! 1218: ! 1219: global-mode-string ! 1220: This variable is used to display the time, if you ask ! 1221: for that. ! 1222: ! 1223: The idea of these variables is to eliminate the need for major modes ! 1224: to alter mode-line-format itself. ! 1225: ! 1226: ** `window-point' valid for selected window. ! 1227: ! 1228: The value returned by `window-point' used to be incorrect when its ! 1229: argument was the selected window. Now the value is correct. ! 1230: ! 1231: ** Window configurations may be saved as Lisp objects. ! 1232: ! 1233: The function `current-window-configuration' returns a special type of ! 1234: Lisp object that represents the current layout of windows: the ! 1235: sizes and positions of windows, which buffers appear in them, and ! 1236: which parts of the buffers appear on the screen. ! 1237: ! 1238: The function `set-window-configuration' takes one argument, which must ! 1239: be a window configuration object, and restores that configuration. ! 1240: ! 1241: ** New hook `temp-output-buffer-show-hook'. ! 1242: ! 1243: This hook allows you to control how help buffers are displayed. ! 1244: Whenever `with-output-to-temp-buffer' has executed its body and wants ! 1245: to display the temp buffer, if this variable is bound and non-`nil' ! 1246: then its value is called with one argument, the temp buffer. ! 1247: The hook function is solely responsible for displaying the buffer. ! 1248: The standard manner of display--making the buffer appear in a window--is ! 1249: used only if there is no hook function. ! 1250: ! 1251: ** New function `minibuffer-window'. ! 1252: ! 1253: This function returns the window used (sometimes) for displaying ! 1254: the minibuffer. It can be used even when the minibuffer is not active. ! 1255: ! 1256: ** New feature to `next-window'. ! 1257: ! 1258: If the optional second argument is neither `nil' nor `t', the minibuffer ! 1259: window is omitted from consideration even when active; if the starting ! 1260: window was the last non-minibuffer window, the value will be the first ! 1261: non-minibuffer window. ! 1262: ! 1263: ** New variable `minibuffer-scroll-window'. ! 1264: ! 1265: When this variable is non-`nil', the command `scroll-other-window' ! 1266: uses it as the window to be scrolled. Displays of completion-lists ! 1267: set this variable to the window containing the display. ! 1268: ! 1269: ** New argument to `sit-for'. ! 1270: ! 1271: A non-nil second argument to `sit-for' means do not redisplay; ! 1272: just wait for the specified time or until input is available. ! 1273: ! 1274: ** Deleted function `set-minor-mode'; minor modes must be changed. ! 1275: ! 1276: The function `set-minor-mode' has been eliminated. The display ! 1277: of minor mode names in the mode line is now controlled by the ! 1278: variable `minor-mode-alist'. To specify display of a new minor ! 1279: mode, it is sufficient to add an element to this list. Once that ! 1280: is done, you can turn the mode on and off just by setting a variable, ! 1281: and the display will show its status automatically. ! 1282: ! 1283: ** New variable `cursor-in-echo-area'. ! 1284: ! 1285: If this variable is non-nil, the screen cursor appears on the ! 1286: last line of the screen, at the end of the text displayed there. ! 1287: ! 1288: Binding this variable to t is useful at times when reading single ! 1289: characters of input with `read-char'. ! 1290: ! 1291: ** New per-buffer variable `selective-display-ellipses'. ! 1292: ! 1293: If this variable is non-nil, an ellipsis (`...') appears on the screen ! 1294: at the end of each text line that is followed by invisible text. ! 1295: ! 1296: If this variable is nil, no ellipses appear. Then there is no sign ! 1297: on the screen that invisible text is present. ! 1298: ! 1299: Text is made invisible under the control of the variable ! 1300: `selective-display'; this is how Outline mode and C-x $ work. ! 1301: ! 1302: ** New variable `no-redraw-on-reenter'. ! 1303: ! 1304: If you set this variable non-nil, Emacs will not clear the screen when ! 1305: you resume it after suspending it. This is for the sake of terminals ! 1306: with multiple screens of memory, where the termcap entry has been set ! 1307: up to switch between screens when Emacs is suspended and resumed. ! 1308: ! 1309: ** New argument to `set-screen-height' or `set-screen-width'. ! 1310: ! 1311: These functions now take an optional second argument which says ! 1312: what significance the newly specified height or width has. ! 1313: ! 1314: If the argument is nil, or absent, it means that Emacs should ! 1315: believe that the terminal height or width really is as just specified. ! 1316: ! 1317: If the argument is t, it means Emacs should not believe that the ! 1318: terminal really is this high or wide, but it should use the ! 1319: specific height or width as the number of lines or columns to display. ! 1320: Thus, you could display only 24 lines on a screen known to have 48 lines. ! 1321: ! 1322: What practical difference is there between using only 24 lines for display ! 1323: and really believing that the terminal has 24 lines? ! 1324: ! 1325: 1. The ``real'' height of the terminal says what the terminal command ! 1326: to move the cursor to the last line will do. ! 1327: ! 1328: 2. The ``real'' height of the terminal determines how much padding is ! 1329: needed. ! 1330: ! 1331: * File-related changes. ! 1332: ! 1333: ** New parameter `backup-by-copying-when-mismatch'. ! 1334: ! 1335: If this variable is non-`nil', then when Emacs is about to save a ! 1336: file, it will create the backup file by copying if that would avoid ! 1337: changing the file's uid or gid. ! 1338: ! 1339: The default value of this variable is `nil', because usually it is ! 1340: useful to have the uid of a file change according to who edited it ! 1341: last. I recommend thet this variable be left normally `nil' and ! 1342: changed with a local variables list in those particular files where ! 1343: the uid needs to be preserved. ! 1344: ! 1345: ** New parameter `file-precious-flag'. ! 1346: ! 1347: If this variable is non-`nil', saving the buffer tries to avoid ! 1348: leaving an incomplete file due to disk full or other I/O errors. ! 1349: It renames the old file before saving. If saving is successful, ! 1350: the renamed file is deleted; if saving gets an error, the renamed ! 1351: file is renamed back to the name you visited. ! 1352: ! 1353: Backups are always made by copying for such files. ! 1354: ! 1355: ** New variable `buffer-offer-save'. ! 1356: ! 1357: If the value of this variable is non-`nil' in a buffer then exiting ! 1358: Emacs will offer to save the buffer (if it is modified and nonempty) ! 1359: even if the buffer is not visiting a file. This variable is ! 1360: automatically made local to the current buffer whenever it is set. ! 1361: ! 1362: ** `rename-file', `copy-file', `add-name-to-file' and `make-symbolic-link'. ! 1363: ! 1364: The third argument to these functions used to be `t' or `nil'; `t' ! 1365: meaning go ahead even if the specified new file name already has a file, ! 1366: and `nil' meaning to get an error. ! 1367: ! 1368: Now if the third argument is a number it means to ask the user for ! 1369: confirmation in this case. ! 1370: ! 1371: ** New optional argument to `copy-file'. ! 1372: ! 1373: If `copy-file' receives a non-nil fourth argument, it attempts ! 1374: to give the new copy the same time-of-last-modification that the ! 1375: original file has. ! 1376: ! 1377: ** New function `file-newer-than-file-p'. ! 1378: ! 1379: (file-newer-than-file-p FILE1 FILE2) returns non-nil if FILE1 has been ! 1380: modified more recently than FILE2. If FILE1 does not exist, the value ! 1381: is always nil; otherwise, if FILE2 does not exist, the value is t. ! 1382: This is meant for use when FILE2 depends on FILE1, to see if changes ! 1383: in FILE1 make it necessary to recompute FILE2 from it. ! 1384: ! 1385: ** Changed function `file-exists-p'. ! 1386: ! 1387: This function is no longer the same as `file-readable-p'. ! 1388: `file-exists-p' can now return t for a file that exists but which ! 1389: the fascists won't allow you to read. ! 1390: ! 1391: ** New function `file-locked-p'. ! 1392: ! 1393: This function receives a file name as argument and returns `nil' ! 1394: if the file is not locked, `t' if locked by this Emacs, or a ! 1395: string giving the name of the user who has locked it. ! 1396: ! 1397: ** New function `file-name-sans-versions'. ! 1398: ! 1399: (file-name-sans-versions NAME) returns a substring of NAME, with any ! 1400: version numbers or other backup suffixes deleted from the end. ! 1401: ! 1402: ** New functions for directory names. ! 1403: ! 1404: Although a directory is really a kind of file, specifying a directory ! 1405: uses a somewhat different syntax from specifying a file. ! 1406: In Emacs, a directory name is used as part of a file name. ! 1407: ! 1408: On Unix, the difference is small: a directory name ends in a slash, ! 1409: while a file name does not: thus, `/usr/rms/' to name a directory, ! 1410: while `/usr/rms' names the file which holds that directory. ! 1411: ! 1412: On VMS, the difference is considerable: `du:[rms.foo]' specifies a ! 1413: directory, but the name of the file that holds that directory is ! 1414: `du:[rms]foo.dir'. ! 1415: ! 1416: There are two new functions for converting between directory names ! 1417: and file names. `directory-file-name' takes a directory name and ! 1418: returns the name of the file in which that directory's data is stored. ! 1419: `file-name-as-directory' takes the name of a file and returns ! 1420: the corresponding directory name. These always understand Unix file name ! 1421: syntax; on VMS, they understand VMS syntax as well. ! 1422: ! 1423: For example, (file-name-as-directory "/usr/rms") returns "/usr/rms/" ! 1424: and (directory-file-name "/usr/rms/") returns "/usr/rms". ! 1425: On VMS, (file-name-as-directory "du:[rms]foo.dir") returns "du:[rms.foo]" ! 1426: and (directory-file-name "du:[rms.foo]") returns "du:[rms]foo.dir". ! 1427: ! 1428: ** Value of `file-attributes' changed. ! 1429: ! 1430: The function file-attributes returns a list containing many kinds of ! 1431: information about a file. Now the list has eleven elements. ! 1432: ! 1433: The tenth element is `t' if deleting the file and creating another ! 1434: file of the same name would result in a change in the file's group; ! 1435: `nil' if there would be no change. You can also think of this as ! 1436: comparing the file's group with the default group for files created in ! 1437: the same directory by you. ! 1438: ! 1439: The eleventh element is the inode number of the file. ! 1440: ! 1441: ** VMS-only function `file-name-all-versions'. ! 1442: ! 1443: This function returns a list of all the completions, including version ! 1444: number, of a specified version-number-less file name. This is like ! 1445: `file-name-all-completions', except that the latter returns values ! 1446: that do not include version numbers. ! 1447: ! 1448: ** VMS-only variable `vms-stmlf-recfm'. ! 1449: ! 1450: On a VMS system, if this variable is non-nil, Emacs will give newly ! 1451: created files the record format `stmlf'. This is necessary for files ! 1452: that must contain lines of arbitrary length, such as compiled Emacs ! 1453: Lisp. ! 1454: ! 1455: When writing a new version of an existing file, Emacs always keeps ! 1456: the same record format as the previous version; so this variable has ! 1457: no effect. ! 1458: ! 1459: This variable has no effect on Unix systems. ! 1460: ! 1461: ** `insert-file-contents' on an empty file. ! 1462: ! 1463: This no longer sets the buffer's "modified" flag. ! 1464: ! 1465: ** New function (VMS only) `define-logical-name': ! 1466: ! 1467: (define-logical-name LOGICAL TRANSLATION) defines a VMS logical name ! 1468: LOGICAL whose translation is TRANSLATION. The new name applies to ! 1469: the current process only. ! 1470: ! 1471: ** Deleted variable `ask-about-buffer-names'. ! 1472: ! 1473: If you want buffer names for files to be generated in a special way, ! 1474: you must redefine `create-file-buffer'. ! 1475: ! 1476: * Subprocess-related changes. ! 1477: ! 1478: ** New function `process-list'. ! 1479: ! 1480: This function takes no arguments and returns a list of all ! 1481: of Emacs's asynchronous subprocesses. ! 1482: ! 1483: ** New function `process-exit-status'. ! 1484: ! 1485: This function, given a process, process name or buffer as argument, ! 1486: returns the exit status code or signal number of the process. ! 1487: If the process has not yet exited or died, this function returns 0. ! 1488: ! 1489: ** Process output ignores `buffer-read-only'. ! 1490: ! 1491: Output from a process will go into the process's buffer even if the ! 1492: buffer is read only. ! 1493: ! 1494: ** Switching buffers in filter functions and sentinels. ! 1495: ! 1496: Emacs no longer saves and restore the current buffer around calling ! 1497: the filter and sentinel functions, so these functions can now ! 1498: permanently alter the selected buffer in a straightforward manner. ! 1499: ! 1500: ** Specifying environment variables for subprocesses. ! 1501: ! 1502: When a subprocess is started with `start-process' or `call-process', ! 1503: the value of the variable `process-environment' is taken to ! 1504: specify the environment variables to give the subprocess. The ! 1505: value should be a list of strings, each of the form "VAR=VALUE". ! 1506: ! 1507: `process-environment' is initialized when Emacs starts up ! 1508: based on Emacs's environment. ! 1509: ! 1510: ** New variable `process-connection-type'. ! 1511: ! 1512: If this variable is `nil', when a subprocess is created, Emacs uses ! 1513: a pipe rather than a pty to communicate with it. Normally this ! 1514: variable is `t', telling Emacs to use a pty if ptys are supported ! 1515: and one is available. ! 1516: ! 1517: ** New function `waiting-for-user-input-p'. ! 1518: ! 1519: This function, given a subprocess as argument, returns `t' if that ! 1520: subprocess appears to be waiting for input sent from Emacs, ! 1521: or `nil' otherwise. ! 1522: ! 1523: ** New hook `shell-set-directory-error-hook'. ! 1524: ! 1525: The value of this variable is called, with no arguments, whenever ! 1526: Shell mode gets an error trying to keep track of directory-setting ! 1527: commands (such as `cd' and `pushd') used in the shell buffer. ! 1528: ! 1529: * New functions `user-uid' and `user-real-uid'. ! 1530: ! 1531: These functions take no arguments and return, respectively, ! 1532: the effective uid and the real uid of the Emacs process. ! 1533: The value in each case is an integer. ! 1534: ! 1535: * New variable `print-escape-newlines' controls string printing. ! 1536: ! 1537: If this variable is non-`nil', then when a Lisp string is printed ! 1538: by the Lisp printing function `prin1' or `print', newline characters ! 1539: are printed as `\n' rather than as a literal newline. ! 1540: ! 1541: * New function `sysnetunam' on HPUX. ! 1542: ! 1543: This function takes two arguments, a network address PATH and a ! 1544: login string LOGIN, and executes the system call `netunam'. ! 1545: It returns `t' if the call succeeds, otherwise `nil'. ! 1546: ! 1547: News regarding installation: ! 1548: ! 1549: * Many `s-...' file names changed. ! 1550: ! 1551: Many `s-...' files have been renamed. All periods in such names, ! 1552: except the ones just before the final `h', have been changed to ! 1553: hyphens. Thus, `s-bsd4.2.h' has been renamed to `s-bsd4-2.h'. ! 1554: ! 1555: This is so a Unix distribution can be moved mechanically to VMS. ! 1556: ! 1557: * `DOCSTR...' file now called `DOC-...'. ! 1558: ! 1559: The file of on-line documentation strings, that used to be ! 1560: `DOCSTR.mm.nn.oo' in this directory, is now called `DOC-mm.nn.oo'. ! 1561: This is so that it can port to VMS using the standard conventions ! 1562: for translating filenames for VMS. ! 1563: ! 1564: This file also now contains the doc strings for variables as ! 1565: well as functions. ! 1566: ! 1567: * Emacs no longer uses floating point arithmetic. ! 1568: ! 1569: This may make it easier to port to some machines. ! 1570: ! 1571: * Macros `XPNTR' and `XSETPNTR'; flag `DATA_SEG_BITS'. ! 1572: ! 1573: These macros exclusively are used to unpack a pointer from a Lisp_Object ! 1574: and to insert a pointer into a Lisp_Object. Redefining them may help ! 1575: port Emacs to machines in which all pointers to data objects have ! 1576: certain high bits set. ! 1577: ! 1578: If `DATA_SEG_BITS' is defined, it should be a number which contains ! 1579: the high bits to be inclusive or'ed with pointers that are unpacked. ! 1580: ! 1581: * New flag `HAVE_X_MENU'. ! 1582: ! 1583: Define this flag in `config.h' in addition to `HAVE_X_WINDOWS' ! 1584: to enable use of the Emacs interface to X Menus. On some operating ! 1585: systems, the rest of the X interface works properly but X Menus ! 1586: do not work; hence this separate flag. See the file `src/xmenu.c' ! 1587: for more information. ! 1588: ! 1589: * Macros `ARRAY_MARK_FLAG' and `DONT_COPY_FLAG'. ! 1590: ! 1591: * `HAVE_ALLOCA' prevents assembly of `alloca.s'. ! 1592: ! 1593: * `SYSTEM_MALLOC' prevents use of GNU `malloc.c'. ! 1594: ! 1595: SYSTEM_MALLOC, if defined, means use the system's own `malloc' routines ! 1596: rather than those that come with Emacs. ! 1597: ! 1598: Use this only if absolutely necessary, because if it is used you do ! 1599: not get warnings when space is getting low. ! 1600: ! 1601: * New flags to control unexec. ! 1602: ! 1603: See the file `unexec.c' for a long comment on the compilation ! 1604: switches that suffice to make it work on many machines. ! 1605: ! 1606: * `PNTR_COMPARISON_TYPE' ! 1607: ! 1608: Pointers that need to be compared for ordering are converted to this type ! 1609: first. Normally this is `unsigned int'. ! 1610: ! 1611: * `HAVE_VFORK', `HAVE_DUP2' and `HAVE_GETTIMEOFDAY'. ! 1612: ! 1613: These flags just say whether certain system calls are available. ! 1614: ! 1615: * New macros control compiler switches, linker switches and libraries. ! 1616: ! 1617: The m- and s- files can now control in a modular fashion the precise ! 1618: arguments passed to `cc' and `ld'. ! 1619: ! 1620: LIBS_STANDARD defines the standard C libraries. Default is `-lc'. ! 1621: LIBS_DEBUG defines the extra libraries to use when debugging. Default `-lg'. ! 1622: LIBS_SYSTEM can be defined by the s- file to specify extra libraries. ! 1623: LIBS_MACHINE can be defined by the m- file to specify extra libraries. ! 1624: LIBS_TERMCAP defines the libraries for Termcap or Terminfo. ! 1625: It is defined by default in a complicated fashion but the m- or s- file ! 1626: can override it. ! 1627: ! 1628: LD_SWITCH_SYSTEM can be defined by the s- file to specify extra `ld' switches. ! 1629: The default is `-X' on BSD systems except those few that use COFF object files. ! 1630: LD_SWITCH_MACHINE can be defined by the m- file to specify extra `ld' switches. ! 1631: ! 1632: C_DEBUG_SWITCH defines the switches to give `cc' when debugging. Default `-g'. ! 1633: C_OPTIMIZE_SWITCH defines the switches to give `cc' to optimize. Default `-O'. ! 1634: C_SWITCH_MACHINE can be defined by the m- file to specify extra `cc' switches. ! 1635: ! 1636: For older news, see the file ONEWS. ! 1637: ! 1638: ---------------------------------------------------------------------- ! 1639: Copyright information: ! 1640: ! 1641: Copyright (C) 1988, 1990 Free Software Foundation, Inc. ! 1642: ! 1643: Permission is granted to anyone to make or distribute verbatim copies ! 1644: of this document as received, in any medium, provided that the ! 1645: copyright notice and this permission notice are preserved, ! 1646: thus giving the recipient permission to redistribute in turn. ! 1647: ! 1648: Permission is granted to distribute modified versions ! 1649: of this document, or of portions of it, ! 1650: under the above conditions, provided also that they ! 1651: carry prominent notices stating who last changed them. ! 1652: ! 1653: Local variables: ! 1654: mode: text ! 1655: end:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.