Annotation of 43BSDReno/contrib/emacs-18.55/etc/NEWS, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.